<?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>101545</bug_id>
          
          <creation_ts>2012-11-07 22:27:24 -0800</creation_ts>
          <short_desc>LongPress and LongTap gestures should start drag/drop and open context menu respectively.</short_desc>
          <delta_ts>2012-11-26 16:57:23 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Varun Jain">varunjain</reporter>
          <assigned_to name="Varun Jain">varunjain</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>761347</commentid>
    <comment_count>0</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-07 22:27:24 -0800</bug_when>
    <thetext>LongPress and LongTap gestures should start drag/drop and open context menu respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761352</commentid>
    <comment_count>1</comment_count>
      <attachid>172935</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-07 22:35:00 -0800</bug_when>
    <thetext>Created attachment 172935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761523</commentid>
    <comment_count>2</comment_count>
      <attachid>172935</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-08 02:45:16 -0800</bug_when>
    <thetext>Comment on attachment 172935
Patch

Attachment 172935 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14759690</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761747</commentid>
    <comment_count>3</comment_count>
      <attachid>173036</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-08 07:04:40 -0800</bug_when>
    <thetext>Created attachment 173036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761753</commentid>
    <comment_count>4</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-08 07:10:40 -0800</bug_when>
    <thetext>(hopefully) fixed broken builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762518</commentid>
    <comment_count>5</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-08 21:14:26 -0800</bug_when>
    <thetext>i am confused about the difference between LongPress and LongTap. mind to clarify?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762851</commentid>
    <comment_count>6</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-09 05:02:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; i am confused about the difference between LongPress and LongTap. mind to clarify?

Hi Antonio, LongTap is just completion of a tap after a LongPress. So:
LongPress = touch_pressed+wait_for_timeout
LongTap = touch_pressed+wait_for_timeout+touch_released</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765214</commentid>
    <comment_count>7</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-12 21:42:26 -0800</bug_when>
    <thetext>ping@ tonikitoo

(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; i am confused about the difference between LongPress and LongTap. mind to clarify?
&gt; 
&gt; Hi Antonio, LongTap is just completion of a tap after a LongPress. So:
&gt; LongPress = touch_pressed+wait_for_timeout
&gt; LongTap = touch_pressed+wait_for_timeout+touch_released</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765551</commentid>
    <comment_count>8</comment_count>
      <attachid>173036</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-13 06:59:42 -0800</bug_when>
    <thetext>Comment on attachment 173036
Patch

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

It looks reasonable. I have a request that will require another round, so r-&apos;ing for now.

&gt; Source/WebCore/page/EventHandler.cpp:338
&gt; +    , m_didStartDrag(false)

I would like this variable to be named more specific. What started a drag? m_longPressGestureDidStartDrag or something like this.

&gt; Source/WebCore/page/EventHandler.cpp:2620
&gt; +#if !OS(ANDROID)

that made me curious about what port you are testing this on... :)

&gt; Source/WebCore/page/EventHandler.cpp:3312
&gt; +bool EventHandler::handleDrag(const MouseEventWithHitTestResults&amp; event, bool checkForDragHysteresis)

The added bool can very much be an enum (even reuse the existing boolean naming).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774119</commentid>
    <comment_count>9</comment_count>
      <attachid>175713</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 15:46:01 -0800</bug_when>
    <thetext>Created attachment 175713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774121</commentid>
    <comment_count>10</comment_count>
      <attachid>173036</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 15:49:27 -0800</bug_when>
    <thetext>Comment on attachment 173036
Patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:338
&gt;&gt; +    , m_didStartDrag(false)
&gt; 
&gt; I would like this variable to be named more specific. What started a drag? m_longPressGestureDidStartDrag or something like this.

I would be happy to rename the variable. However, consider that this variable simply indicates whether the call to DragController::startDrag returned true (ie successfully started a drag), regardless of what event initiated the drag.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2620
&gt;&gt; +#if !OS(ANDROID)
&gt; 
&gt; that made me curious about what port you are testing this on... :)

This is for general touch support in chrome. I have changed this a bit so that it can now be turned on or off by the embedder. PTAL.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:3312
&gt;&gt; +bool EventHandler::handleDrag(const MouseEventWithHitTestResults&amp; event, bool checkForDragHysteresis)
&gt; 
&gt; The added bool can very much be an enum (even reuse the existing boolean naming).

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774122</commentid>
    <comment_count>11</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 15:51:18 -0800</bug_when>
    <thetext>Hi Antonio.
Sorry for the delay on getting back. I got distracted with some other stuff. I have addressed your comments and changed the CL slightly so that now the embedder has control over whether to start drag on touch or not. PTAL.


(In reply to comment #10)
&gt; (From update of attachment 173036 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173036&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:338
&gt; &gt;&gt; +    , m_didStartDrag(false)
&gt; &gt; 
&gt; &gt; I would like this variable to be named more specific. What started a drag? m_longPressGestureDidStartDrag or something like this.
&gt; 
&gt; I would be happy to rename the variable. However, consider that this variable simply indicates whether the call to DragController::startDrag returned true (ie successfully started a drag), regardless of what event initiated the drag.
&gt; 
&gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:2620
&gt; &gt;&gt; +#if !OS(ANDROID)
&gt; &gt; 
&gt; &gt; that made me curious about what port you are testing this on... :)
&gt; 
&gt; This is for general touch support in chrome. I have changed this a bit so that it can now be turned on or off by the embedder. PTAL.
&gt; 
&gt; &gt;&gt; Source/WebCore/page/EventHandler.cpp:3312
&gt; &gt;&gt; +bool EventHandler::handleDrag(const MouseEventWithHitTestResults&amp; event, bool checkForDragHysteresis)
&gt; &gt; 
&gt; &gt; The added bool can very much be an enum (even reuse the existing boolean naming).
&gt; 
&gt; Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774123</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-22 15:53:00 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774137</commentid>
    <comment_count>13</comment_count>
      <attachid>175717</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 16:42:45 -0800</bug_when>
    <thetext>Created attachment 175717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774176</commentid>
    <comment_count>14</comment_count>
      <attachid>175717</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-22 19:38:20 -0800</bug_when>
    <thetext>Comment on attachment 175717
Patch

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

The sequence is not send a long press then a long tap, once the user lifts its finger?

&gt; Source/WebCore/page/EventHandler.cpp:2665
&gt; +    if (!gestureEvent.area().isEmpty())

There is  a shouldAdjustXXX method for this check now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774182</commentid>
    <comment_count>15</comment_count>
      <attachid>175730</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 20:49:26 -0800</bug_when>
    <thetext>Created attachment 175730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774183</commentid>
    <comment_count>16</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-22 20:50:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 175717 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175717&amp;action=review
&gt; 
&gt; The sequence is not send a long press then a long tap, once the user lifts its finger?

yes... this is the sequence.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2665
&gt; &gt; +    if (!gestureEvent.area().isEmpty())
&gt; 
&gt; There is  a shouldAdjustXXX method for this check now.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774440</commentid>
    <comment_count>17</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-23 04:47:39 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 175717 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175717&amp;action=review
&gt; &gt; 
&gt; &gt; The sequence is not send a long press then a long tap, once the user lifts its finger?
&gt; 
&gt; yes... this is the sequence.

Right, so my point was: if &quot;long press&quot; triggers context menu, and &quot;long tap&quot; would happen after a &quot;long press&quot;, would not the context menu be already triggered by &quot;long press&quot; when &quot;long tap&quot; happens?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774629</commentid>
    <comment_count>18</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-23 09:57:19 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (From update of attachment 175717 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175717&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; The sequence is not send a long press then a long tap, once the user lifts its finger?
&gt; &gt; 
&gt; &gt; yes... this is the sequence.
&gt; 
&gt; Right, so my point was: if &quot;long press&quot; triggers context menu, and &quot;long tap&quot; would happen after a &quot;long press&quot;, would not the context menu be already triggered by &quot;long press&quot; when &quot;long tap&quot; happens?

Typically, if a context menu shows up, the context menu window takes capture and eats all events. So no long tap is received by the EH. But if you&apos;d prefer, I can check for an already invoked context menu in handleGestureLongTap().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774636</commentid>
    <comment_count>19</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-23 10:16:30 -0800</bug_when>
    <thetext>
&gt; &gt; 
&gt; &gt; Right, so my point was: if &quot;long press&quot; triggers context menu, and &quot;long tap&quot; would happen after a &quot;long press&quot;, would not the context menu be already triggered by &quot;long press&quot; when &quot;long tap&quot; happens?
&gt; 
&gt; Typically, if a context menu shows up, the context menu window takes capture and eats all events. So no long tap is received by the EH. But if you&apos;d prefer, I can check for an already invoked context menu in handleGestureLongTap().

So we can have cases where context menu wont be shown by long press, but by long tap instead?

I would prefer to check if context menu is already invoked by ling press first, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774656</commentid>
    <comment_count>20</comment_count>
      <attachid>175829</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-23 11:16:05 -0800</bug_when>
    <thetext>Created attachment 175829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774659</commentid>
    <comment_count>21</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-23 11:19:08 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; &gt; 
&gt; &gt; &gt; Right, so my point was: if &quot;long press&quot; triggers context menu, and &quot;long tap&quot; would happen after a &quot;long press&quot;, would not the context menu be already triggered by &quot;long press&quot; when &quot;long tap&quot; happens?
&gt; &gt; 
&gt; &gt; Typically, if a context menu shows up, the context menu window takes capture and eats all events. So no long tap is received by the EH. But if you&apos;d prefer, I can check for an already invoked context menu in handleGestureLongTap().
&gt; 
&gt; So we can have cases where context menu wont be shown by long press, but by long tap instead?
&gt; 

Yes. If a long press happens on a draggable element, it starts a drag and context menu is show if the user does not drag but just lifts up their finger (trigerring a long tap). If, however, the long press happens over an element that does not trigger drag (such as unselected text), then we show the context menu right away instead of waiting for the long tap. I have documented this behavior in the changelog.

&gt; I would prefer to check if context menu is already invoked by ling press first, yes.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774678</commentid>
    <comment_count>22</comment_count>
      <attachid>175829</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-23 12:01:29 -0800</bug_when>
    <thetext>Comment on attachment 175829
Patch

&lt;tonikitoo&gt; what is the difference between m_didStartDrag and the return value or ::handleDrag?
[15:51]  &lt;varunjain&gt; I think handleDrag is very inclusive.. it returns false only if the event is not a left mouse button drag... it does not necessarily return true only when a drag was actually started
[15:53]  &lt;tonikitoo&gt; so it might return TRUE even if dragging actually did not start
[15:53]  &lt;tonikitoo&gt; ?
[15:58]  &lt;varunjain&gt; yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774721</commentid>
    <comment_count>23</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-23 15:43:15 -0800</bug_when>
    <thetext>Thanks for the review Antonio. Will wait for abarth to review the WebKit API changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774907</commentid>
    <comment_count>24</comment_count>
      <attachid>175829</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-24 18:13:20 -0800</bug_when>
    <thetext>Comment on attachment 175829
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3209
&gt; +void WebViewImpl::enableTouchDragDrop(bool enable)
&gt; +{
&gt; +    if (mainFrameImpl() &amp;&amp; mainFrameImpl()-&gt;frame())
&gt; +        mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;enableTouchDragDrop(enable);
&gt; +}

This appears to be per-frame state in WebCore.  Should the API be on WebFrame rather than WebView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774908</commentid>
    <comment_count>25</comment_count>
      <attachid>175829</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-24 18:14:07 -0800</bug_when>
    <thetext>Comment on attachment 175829
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3209
&gt;&gt; +}
&gt; 
&gt; This appears to be per-frame state in WebCore.  Should the API be on WebFrame rather than WebView?

Another question: why isn&apos;t this a WebCore::Setting (in which case the API would be on WebSettings)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775053</commentid>
    <comment_count>26</comment_count>
      <attachid>175897</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 16:48:43 -0800</bug_when>
    <thetext>Created attachment 175897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775055</commentid>
    <comment_count>27</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 16:50:06 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 175829 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175829&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3209
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; This appears to be per-frame state in WebCore.  Should the API be on WebFrame rather than WebView?
&gt; 
&gt; Another question: why isn&apos;t this a WebCore::Setting (in which case the API would be on WebSettings)?

Agree. Moved to WebSettings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775059</commentid>
    <comment_count>28</comment_count>
      <attachid>175899</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 16:56:06 -0800</bug_when>
    <thetext>Created attachment 175899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775082</commentid>
    <comment_count>29</comment_count>
      <attachid>175899</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-25 18:22:52 -0800</bug_when>
    <thetext>Comment on attachment 175899
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2658
&gt; +#if ENABLE(DRAG_SUPPORT)
&gt; +    if (m_frame-&gt;settings()-&gt;touchDragDropEnabled()) {

Did you add an explanation to the changelog? I remember you mentioning something about a &quot;developers&apos; menu&quot; that would allow users to toggle it on/off?

also does &quot;touch drag&amp;drop&quot; means: use the same code that handles drag&amp;drop for mouse events, but with touch (gesture) events?

&gt; Source/WebCore/page/Settings.h:299
&gt; +        void setTouchDragDropEnabled(bool enabled) { m_touchDragDropEnabled = enabled; }
&gt; +        bool touchDragDropEnabled() { return m_touchDragDropEnabled; }

do not we have Settings.in to be modified instead now?

&gt; Source/WebCore/page/Settings.h:376
&gt; +        bool m_touchDragDropEnabled;

why not bitfy it like the other bools?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775094</commentid>
    <comment_count>30</comment_count>
      <attachid>175912</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 18:55:58 -0800</bug_when>
    <thetext>Created attachment 175912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775095</commentid>
    <comment_count>31</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 19:01:48 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 175899 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175899&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2658
&gt; &gt; +#if ENABLE(DRAG_SUPPORT)
&gt; &gt; +    if (m_frame-&gt;settings()-&gt;touchDragDropEnabled()) {
&gt; 
&gt; Did you add an explanation to the changelog? I remember you mentioning something about a &quot;developers&apos; menu&quot; that would allow users to toggle it on/off?
&gt; 

Updated Changelog. Its up to the platform to enable/disable the setting using whatever method they choose.

&gt; also does &quot;touch drag&amp;drop&quot; means: use the same code that handles drag&amp;drop for mouse events, but with touch (gesture) events?

Yes. The Changelog mentions that the drag/drop is initiated using fake mouse events.

&gt; 
&gt; &gt; Source/WebCore/page/Settings.h:299
&gt; &gt; +        void setTouchDragDropEnabled(bool enabled) { m_touchDragDropEnabled = enabled; }
&gt; &gt; +        bool touchDragDropEnabled() { return m_touchDragDropEnabled; }
&gt; 
&gt; do not we have Settings.in to be modified instead now?

Done. I was not aware of this. Thanks for pointing out. 

&gt; 
&gt; &gt; Source/WebCore/page/Settings.h:376
&gt; &gt; +        bool m_touchDragDropEnabled;
&gt; 
&gt; why not bitfy it like the other bools?

Not necessary now that its defined in Settings.in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775096</commentid>
    <comment_count>32</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-25 19:02:48 -0800</bug_when>
    <thetext>wha!! lightning fast review :P I could not even finish replying to comments! Thanks! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775936</commentid>
    <comment_count>33</comment_count>
      <attachid>175912</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-26 15:04:06 -0800</bug_when>
    <thetext>Comment on attachment 175912
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:2658
&gt; +    if (m_frame-&gt;settings()-&gt;touchDragDropEnabled()) {

Can Settings be 0 here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775940</commentid>
    <comment_count>34</comment_count>
      <attachid>175912</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-26 15:05:14 -0800</bug_when>
    <thetext>Comment on attachment 175912
Patch

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

&gt; Source/WebKit/chromium/src/WebSettingsImpl.h:167
&gt;      virtual void setXSSAuditorEnabled(bool);
&gt; +    virtual void setTouchDragDropEnabled(bool);

This should actually be alphabetical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775964</commentid>
    <comment_count>35</comment_count>
      <attachid>176086</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-26 15:21:29 -0800</bug_when>
    <thetext>Created attachment 176086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775968</commentid>
    <comment_count>36</comment_count>
      <attachid>176089</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-26 15:26:06 -0800</bug_when>
    <thetext>Created attachment 176089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775979</commentid>
    <comment_count>37</comment_count>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-26 15:33:53 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 175912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175912&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:2658
&gt; &gt; +    if (m_frame-&gt;settings()-&gt;touchDragDropEnabled()) {
&gt; 
&gt; Can Settings be 0 here?

Done. Also fixed the ordering mentioned in next comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775982</commentid>
    <comment_count>38</comment_count>
      <attachid>176089</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-26 15:37:04 -0800</bug_when>
    <thetext>Comment on attachment 176089
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by Adam Barth.

This was actually reviewed by tonikitoo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775986</commentid>
    <comment_count>39</comment_count>
      <attachid>176095</attachid>
    <who name="Varun Jain">varunjain</who>
    <bug_when>2012-11-26 15:40:32 -0800</bug_when>
    <thetext>Created attachment 176095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776081</commentid>
    <comment_count>40</comment_count>
      <attachid>176095</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 16:57:17 -0800</bug_when>
    <thetext>Comment on attachment 176095
Patch

Clearing flags on attachment: 176095

Committed r135789: &lt;http://trac.webkit.org/changeset/135789&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776082</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 16:57:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172935</attachid>
            <date>2012-11-07 22:35:00 -0800</date>
            <delta_ts>2012-11-08 07:04:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121108013310.patch</filename>
            <type>text/plain</type>
            <size>17431</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE0YTQ1ODc5NjJjOTU3
NGQ3NDVhMWQyNTIyM2ZjZTQyMjJlMjgzYS4uMGQwNWNiZDJkZGZiMmQyYTRiMjg3NTZkNmZmOWQy
MzVjOTdjZjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTA3ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1RhcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rp
b25PckNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWRqdXN0
R2VzdHVyZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKEV2ZW50SGFu
ZGxlcik6CisKIDIwMTItMTEtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzM4NDEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOTIwNTVhMTIzM2E3ODQ2OTUyYjdiYmNm
YzExYWQ3M2M1YzgzZTk4Zi4uM2VjYmU3ZjVhMDI4MjY1NzMzMWMzMTY0YWQ4ODJlNTE2NmZiMGJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzM1LDYgKzMzNSw3IEBA
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwg
bV9tYXhNb3VzZU1vdmVkRHVyYXRpb24oMCkKICAgICAsIG1fYmFzZUV2ZW50VHlwZShQbGF0Zm9y
bUV2ZW50OjpOb1R5cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkKIHsKIH0KIApAQCAt
Mzg3LDYgKzM4OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjZW5kaWYKICAgICBt
X21heE1vdXNlTW92ZWREdXJhdGlvbiA9IDA7CiAgICAgbV9iYXNlRXZlbnRUeXBlID0gUGxhdGZv
cm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CiB9CiAKIHZvaWQg
RXZlbnRIYW5kbGVyOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBub2RlVG9CZVJlbW92ZWQpCkBA
IC02OTcsNyArNjk5LDcgQEAgc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQpCiB7Ci0gICAgaWYgKGhhbmRsZURyYWcoZXZlbnQpKQorICAgIGlmIChoYW5kbGVE
cmFnKGV2ZW50LCB0cnVlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91
c2VQcmVzc2VkKQpAQCAtMjU2Miw2ICsyNTY0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQog
ICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9u
Z1ByZXNzKGdlc3R1cmVFdmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9u
Z1RhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7
CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICBy
ZXR1cm4gaGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKQEAgLTI2MTYsNiArMjYyMCwxMyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZQogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRm9yVGV4dFNl
bGVjdGlvbk9yQ29udGV4dE1lbnUoZ2VzdHVyZUV2ZW50KTsKIH0KIAorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCit7CisjaWYgIU9TKEFORFJPSUQpCisgICAgcmV0dXJuIHNlbmRDb250ZXh0TWVu
dUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOworI2VuZGlmCit9CisKIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICNpZiBPUyhBTkRST0lEKQpA
QCAtMjYyNyw2ICsyNjM4LDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9y
VGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0CiAgICAgICAgIGlm
IChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorI2Vsc2UKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VEb3duRXZlbnQo
Z2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBM
ZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgIGhhbmRsZU1vdXNlUHJlc3NF
dmVudChtb3VzZURvd25FdmVudCk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRHJhZ0V2
ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24o
KSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VEcmFnRXZl
bnQpOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CisgICAgaGFuZGxlRHJhZyhtZXYsIGZh
bHNlKTsKKyAgICBpZiAobV9kaWRTdGFydERyYWcpCisgICAgICAgIHJldHVybiB0cnVlOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgcmV0dXJuIHNlbmRDb250ZXh0TWVu
dUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOwpAQCAtMjcxMCw2ICsyNzMxLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmFkanVzdEdlc3R1cmVQb3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW4KICAgICAgICAgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBv
aW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCku
d2lkdGgoKSAvIDIsIGdlc3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQ
b2ludCwgdGFyZ2V0Tm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZUxvbmdQcmVzczoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25n
VGFwOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAg
ICAgYmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFyZWEoKS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50
LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zMjc5LDcgKzMzMDEsNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0
U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKICAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsK
IH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgYm9vbCBjaGVja0ZvckRyYWdI
eXN0ZXJlc2lzKQogewogICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0
b24gfHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkg
ewogICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2Ug
dG8gaGFuZGxlIGEgZHJhZwpAQCAtMzM1OCw3ICszMzgwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAg
ICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlm
ICghZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKKyAg
ICBpZiAoY2hlY2tGb3JEcmFnSHlzdGVyZXNpcyAmJiAhZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChl
dmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQg
dG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKQEAgLTM0MDksMTEgKzM0MzEsMTEgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgIERyYWdDb250cm9sbGVy
KiBkcmFnQ29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJvbGxlcigpIDogMDsKLSAg
ICAgICAgYm9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVy
LT5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBt
X21vdXNlRG93blBvcyk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gZHJhZ0NvbnRyb2xsZXIg
JiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3As
IGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3
ZSBjb3VsZCByZWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAg
ICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0
aGUgcGFzdGVib2FyZAogICAgICAgICAvLyBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgotICAgICAg
ICBpZiAoc3RhcnRlZERyYWcpIHsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CiAgICAg
ICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDkz
YzZiMTBlYjk4NzQ0ZmJmNTY3YTgxOWYyODE2OGYzMjJhMWMxYzguLmNkZTk4MjE5Yjc0YTg0ZDBj
MjkzOTNlNGIzY2Y4ZmFhYTRlYmU0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApA
QCAtMTY4LDYgKzE2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZVRhcChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUxvbmdQ
cmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworICAgIGJvb2wgaGFuZGxlR2VzdHVy
ZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdl
c3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29s
IGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsK
ICNlbmRpZgpAQCAtMzAyLDcgKzMwMyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZyZWVDbGlw
Ym9hcmQoKTsKIAotICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJik7CisgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBib29sIGNoZWNrRm9yRHJhZ0h5c3RlcmVzaXMpOwogI2VuZGlmCiAgICAg
Ym9vbCBoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNDYxLDYgKzQ2Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBkb3VibGUgbV9tYXhNb3VzZU1vdmVkRHVyYXRpb247CiAgICAgUGxhdGZvcm1FdmVudDo6
VHlwZSBtX2Jhc2VFdmVudFR5cGU7CisgICAgYm9vbCBtX2RpZFN0YXJ0RHJhZzsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjMzA0ZDA1ODQ0ZjFkMGVkNDc5ODc4MzYyZjNjMDQxZjJkZWViNmVh
Li4zOGE4MDkyNWJhOGRlZWM5ZjI4OTE5Mzk1YTkzMjE3ZGViMmEwZjJlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTItMTEtMDcgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFu
ZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFn
IGJ5IHNlbmRpbmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4g
SWYgYSBkcmFnIGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdn
YWJsZQorICAgICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFk
ICh3aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4g
Rm9yIExvbmdUYXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAg
TG9uZ1ByZXNzIHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Z2VzdHVyZUxvbmdUYXApOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdl
c3R1cmVFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvRXZlbnRTZW5kZXIuaDoKKyAgICAgICAgKEV2ZW50U2VuZGVyKToKKwogMjAxMi0xMS0w
NyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBnYXJkZW4t
by1tYXRpYyBzaG91bGQgaGFuZGxlIGNvbmN1cnJlbnQgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcAppbmRleCA3N2ZjYjc2ZTgzZDU0MmQ5ZjAxZjhkMmYyOTVjYmViMDE3MmRkYTY4Li4w
OWM0OGQ3NzIyYmZlZDlmYTI3ZGZkMzk2Y2RmYTVjZTBjZDFkZWY3IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuY3BwCkBAIC0yOTYsNiArMjk2LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkK
ICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVGFwRG93biIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRh
cERvd24pOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXBDYW5jZWwiLCAmRXZlbnRTZW5kZXI6
Omdlc3R1cmVUYXBDYW5jZWwpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25nUHJlc3MiLCAm
RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MpOworICAgIGJpbmRNZXRob2QoImdlc3R1cmVM
b25nVGFwIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk7CiAgICAgYmluZE1ldGhvZCgi
Z2VzdHVyZVR3b0ZpbmdlclRhcCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcCk7
CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VJbiIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VJbik7
CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VPdXQiLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0
KTsKQEAgLTExMzIsNiArMTEzMywxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1By
ZXNzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIGdl
c3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCBhcmd1bWVudHMpOwog
fQogCit2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworICAgIGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcCwgYXJn
dW1lbnRzKTsKK30KKwogdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtMTIwMSw4ICsxMjA4LDE2IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYKICAgICAgICAgZXZlbnQueCA9IHBvaW50Lng7CiAgICAgICAgIGV2ZW50LnkgPSBw
b2ludC55OwogICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7Ci0gICAgICAgICAg
ICBldmVudC5kYXRhLnRhcERvd24ud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRz
WzJdLnRvRG91YmxlKCkpOwotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3duLmhlaWdodCA9
IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgICAg
ICBldmVudC5kYXRhLmxvbmdQcmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVu
dHNbMl0udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWln
aHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdU
YXA6CisgICAgICAgIGV2ZW50LnggPSBwb2ludC54OworICAgICAgICBldmVudC55ID0gcG9pbnQu
eTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgeworICAgICAgICAgICAgZXZl
bnQuZGF0YS5sb25nUHJlc3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJd
LnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJU
YXA6CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9FdmVudFNlbmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuaAppbmRleCBkMDdlMTRjYzZmMmQwNjc0NDk5Y2RkN2QyODli
ZGIyNGZiZTY2NmIxLi45MTI3NDcxMTEwNGFiMDgyOTg4YTJmZjAxOTU1YWU3ZTBiZDRhMDFjIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9F
dmVudFNlbmRlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0V2ZW50U2VuZGVyLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXN0dXJlVGFwRG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAg
ICAgdm9pZCBnZXN0dXJlVGFwQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIGdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgZ2VzdHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50OjpUeXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDVlMjY0N2QzMGI5MDc2ZjE4YjU1MjQ0MTBmZTY2ZDk4MzNmZTMwN2YuLjIxYmNhZDEwNGU1
YzI3MmJhZGU0YzUyZGFlMjczODAxOTIzY2IzNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMS0wNyAgVmFydW4gSmFpbiAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TG9uZ1ByZXNzIGFuZCBMb25nVGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5k
IG9wZW4gY29udGV4dCBtZW51IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250
ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRy
YWcuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDEyLTExLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMzODQxLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0
LW1lbnUtb24tbG9uZy10YXAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjJiZDAx
ZDUyNWI1OGY3Zjk0NTcyMTEwM2Q3NWEwMGY5NjMyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFw
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMg
c2hvd24gb24gbG9uZyB0YXAgZ2VzdHVyZS48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9k
aXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisK
KyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisKKyAgICB2
YXIgeCA9IHRleHQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyB0ZXh0Lm9mZnNldExlZnQgKyA0
OworICAgIHZhciB5ID0gdGV4dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRU
b3AgKyB0ZXh0Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRl
cikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCkg
eworICAgICAgICBldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCh4LCB5KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdUYXAgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMg
cGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFn
Z2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcwMzZhNjk2YzEz
MTdkMjE1MGZiOTlmNjM3MjA0ZDRlNTViZDg4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxl
bWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEg
bG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9k
cm9wIHNlc3Npb24uPC9wPgorPGRpdiBpZD0idGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij5GQUlMPC9kaXY+Cis8ZGl2IGlkPSJkcmFnZ2FibGVEaXYiIGRyYWdnYWJsZT0ndHJ1
ZSc+RHJhZyBtZTwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgZHJhZ2FibGVE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2dhYmxlRGl2Iik7CisKKyAgICB2YXIg
eCA9IGRyYWdnYWJsZURpdi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRyYWdnYWJsZURpdi5v
ZmZzZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IGRyYWdnYWJsZURpdi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNldFRvcCArIGRyYWdnYWJsZURpdi5vZmZzZXRIZWln
aHQgLyAyOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdQcmVzcykgeworICAgICAgICBldmVudFNl
bmRlci5nZXN0dXJlTG9uZ1ByZXNzKHgsIHkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdlc3R1cmVMb25nUHJlc3Mgbm90IGlt
cGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24t
bG9uZy10YXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ3NTczNWZhZWZlMzgxZTc1Y2RkZmNmZTJiNDIxMjcyYTZmMjViMjQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNvbnRleHQgbWVudSBp
cyBzaG93biBvbiBsb25nIHRhcCBnZXN0dXJlLgorCitUZXN0aW5nCitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzUyYTQ1ZWMwOWZhYjM3NmRhNTJkOGFjMWExNzRkNDc3MzU0M2Y3
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBjaGVja3Mg
dGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50IHN0YXJ0cyBh
IGRyYWcvZHJvcCBzZXNzaW9uLgorCitUZXN0aW5nCitQQVNTCitEcmFnIG1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173036</attachid>
            <date>2012-11-08 07:04:40 -0800</date>
            <delta_ts>2012-11-22 15:49:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121108100248.patch</filename>
            <type>text/plain</type>
            <size>19656</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE0YTQ1ODc5NjJjOTU3
NGQ3NDVhMWQyNTIyM2ZjZTQyMjJlMjgzYS4uMGQwNWNiZDJkZGZiMmQyYTRiMjg3NTZkNmZmOWQy
MzVjOTdjZjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTA3ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1RhcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rp
b25PckNvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWRqdXN0
R2VzdHVyZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKEV2ZW50SGFu
ZGxlcik6CisKIDIwMTItMTEtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzM4NDEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOTIwNTVhMTIzM2E3ODQ2OTUyYjdiYmNm
YzExYWQ3M2M1YzgzZTk4Zi4uY2UzZGIxNmQ1NGMwY2JhYzI4ZTRjODBjOGI5MThkM2U5MDE0ZDI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzM1LDYgKzMzNSw3IEBA
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwg
bV9tYXhNb3VzZU1vdmVkRHVyYXRpb24oMCkKICAgICAsIG1fYmFzZUV2ZW50VHlwZShQbGF0Zm9y
bUV2ZW50OjpOb1R5cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkKIHsKIH0KIApAQCAt
Mzg3LDYgKzM4OCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjZW5kaWYKICAgICBt
X21heE1vdXNlTW92ZWREdXJhdGlvbiA9IDA7CiAgICAgbV9iYXNlRXZlbnRUeXBlID0gUGxhdGZv
cm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CiB9CiAKIHZvaWQg
RXZlbnRIYW5kbGVyOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBub2RlVG9CZVJlbW92ZWQpCkBA
IC02OTcsNyArNjk5LDcgQEAgc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQpCiB7Ci0gICAgaWYgKGhhbmRsZURyYWcoZXZlbnQpKQorICAgIGlmIChoYW5kbGVE
cmFnKGV2ZW50LCB0cnVlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91
c2VQcmVzc2VkKQpAQCAtMjU2Miw2ICsyNTY0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQog
ICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3Jt
RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9u
Z1ByZXNzKGdlc3R1cmVFdmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9u
Z1RhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7
CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICBy
ZXR1cm4gaGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKQEAgLTI2MTMsOSArMjYxNywzNCBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxv
bmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lm
ICFPUyhBTkRST0lEKQorICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQgPSBnZXN0dXJlRXZlbnQu
cG9zaXRpb24oKTsKKyNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKKyAgICBpZiAoIWdlc3R1
cmVFdmVudC5hcmVhKCkuaXNFbXB0eSgpKQorICAgICAgICBhZGp1c3RHZXN0dXJlUG9zaXRpb24o
Z2VzdHVyZUV2ZW50LCBhZGp1c3RlZFBvaW50KTsKKyNlbmRpZgorICAgIFBsYXRmb3JtTW91c2VF
dmVudCBtb3VzZURvd25FdmVudChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9z
aXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKKyAgICBoYW5kbGVN
b3VzZVByZXNzRXZlbnQobW91c2VEb3duRXZlbnQpOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBt
b3VzZURyYWdFdmVudChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24o
KSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgIE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VEcmFnRXZl
bnQpOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CisgICAgaGFuZGxlRHJhZyhtZXYsIGZh
bHNlKTsKKyAgICBpZiAobV9kaWRTdGFydERyYWcpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCiAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVu
dShnZXN0dXJlRXZlbnQpOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxv
bmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyNpZiAh
T1MoQU5EUk9JRCkKKyAgICByZXR1cm4gc2VuZENvbnRleHRNZW51RXZlbnRGb3JHZXN0dXJlKGdl
c3R1cmVFdmVudCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAjaWYgT1MoQU5E
Uk9JRCkKQEAgLTI3MTAsNiArMjczOSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0
dXJlUG9zaXRpb24oY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVuCiAgICAg
ICAgIGJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgSW50U2l6ZShnZXN0dXJlRXZlbnQuYXJlYSgpLndpZHRoKCkgLyAyLCBnZXN0dXJlRXZlbnQu
YXJlYSgpLmhlaWdodCgpIC8gMiksIGFkanVzdGVkUG9pbnQsIHRhcmdldE5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CisgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CiAgICAgICAgIGJlc3RDb250ZXh0TWVudU5vZGVGb3JU
b3VjaFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5h
cmVhKCkud2lkdGgoKSAvIDIsIGdlc3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRq
dXN0ZWRQb2ludCwgdGFyZ2V0Tm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzI3OSw3ICszMzA5
LDcgQEAgc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4pCiAg
ICAgcmV0dXJuIG4gJiYgIShuICYgKG4gLSAxKSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQorYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQsIGJvb2wgY2hlY2tGb3JEcmFnSHlzdGVyZXNpcykKIHsKICAgICBpZiAoZXZl
bnQuZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgp
ICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dl
ZCB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKQEAgLTMzNTgs
NyArMzM4OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9p
bnRlckN1cnNvcigpKTsKICAgICB9CiAKLSAgICBpZiAoIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQo
ZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkgCisgICAgaWYgKGNoZWNrRm9yRHJhZ0h5c3RlcmVz
aXMgJiYgIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBo
eXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBh
IGNsaWNrCkBAIC0zNDA5LDExICszNDM5LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlmICht
X21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdlID8g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcgPSBk
cmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdT
dGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERy
YWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93
blBvcyk7CiAgICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmVlbnRlciB0aGlzIGNvZGUg
YW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQKICAgICAgICAgLy8g
YW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KLSAgICAgICAgaWYgKHN0YXJ0ZWREcmFnKSB7CisgICAg
ICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFy
dERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA5M2M2YjEwZWI5ODc0NGZiZjU2N2E4MTlmMjgx
NjhmMzIyYTFjMWM4Li5jZGU5ODIxOWI3NGE4NGQwYzI5MzkzZTRiM2NmOGZhYWE0ZWJlNGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTE2OCw2ICsxNjgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRl
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKQEAgLTMwMiw3ICszMDMsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBmcmVlQ2xpcGJvYXJkKCk7CiAKLSAgICBib29sIGhhbmRs
ZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOworICAgIGJvb2wgaGFu
ZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgYm9vbCBjaGVja0Zv
ckRyYWdIeXN0ZXJlc2lzKTsKICNlbmRpZgogICAgIGJvb2wgaGFuZGxlTW91c2VVcChjb25zdCBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTQ2MSw2ICs0NjIsNyBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1fbWF4TW91c2VNb3Zl
ZER1cmF0aW9uOwogICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbV9iYXNlRXZlbnRUeXBlOworICAg
IGJvb2wgbV9kaWRTdGFydERyYWc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzMwNGQwNTg0
NGYxZDBlZDQ3OTg3ODM2MmYzYzA0MWYyZGVlYjZlYS4uMzhhODA5MjViYThkZWVjOWYyODkxOTM5
NWE5MzIxN2RlYjJhMGYyZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTA3ICBWYXJ1biBKYWluICA8dmFy
dW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5kIExvbmdUYXAgZ2Vz
dHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1lbnUgcmVzcGVj
dGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEgbW91c2UgZG93biBh
bmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBub3Qgc3RhcnRlZCAo
YmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAgZWxlbWVudCksIHRo
ZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3ZSB1c2UgdGhlIGV4
aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2VzIHRvIHN1bW1vbiB0
aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmg6CisgICAg
ICAgIChFdmVudFNlbmRlcik6CisKIDIwMTItMTEtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgZ2FyZGVuLW8tbWF0aWMgc2hvdWxkIGhhbmRsZSBjb25j
dXJyZW50IHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5kZXggNzdmY2I3NmU4M2Q1
NDJkOWYwMWY4ZDJmMjk1Y2JlYjAxNzJkZGE2OC4uMDljNDhkNzcyMmJmZWQ5ZmEyN2RmZDM5NmNk
ZmE1Y2UwY2QxZGVmNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApAQCAtMjk2LDYgKzI5Niw3
IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVRh
cERvd24iLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXBEb3duKTsKICAgICBiaW5kTWV0aG9kKCJn
ZXN0dXJlVGFwQ2FuY2VsIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwQ2FuY2VsKTsKICAgICBi
aW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1ByZXNzIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1By
ZXNzKTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1RhcCIsICZFdmVudFNlbmRlcjo6Z2Vz
dHVyZUxvbmdUYXApOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUd29GaW5nZXJUYXAiLCAmRXZl
bnRTZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXApOwogICAgIGJpbmRNZXRob2QoInpvb21QYWdl
SW4iLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlSW4pOwogICAgIGJpbmRNZXRob2QoInpvb21QYWdl
T3V0IiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZU91dCk7CkBAIC0xMTMyLDYgKzExMzMsMTIgQEAg
dm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdQcmVzcyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICBnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUxvbmdQcmVzcywgYXJndW1lbnRzKTsKIH0KIAordm9pZCBFdmVudFNlbmRlcjo6Z2Vz
dHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBnZXN0dXJlRXZlbnQoV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUxvbmdUYXAsIGFyZ3VtZW50cyk7Cit9CisKIHZvaWQgRXZlbnRT
ZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTEy
MDEsOCArMTIwOCwxNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQoV2ViSW5wdXRF
dmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgICAgIGV2ZW50Lngg
PSBwb2ludC54OwogICAgICAgICBldmVudC55ID0gcG9pbnQueTsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPj0gNCkgewotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3duLndpZHRo
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKLSAgICAgICAg
ICAgIGV2ZW50LmRhdGEudGFwRG93bi5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1l
bnRzWzNdLnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3Mud2lk
dGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworICAgICAg
ICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFy
Z3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwOgorICAgICAgICBldmVudC54ID0gcG9p
bnQueDsKKyAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CisgICAgICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpID49IDQpIHsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLndpZHRoID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAg
IGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVu
dHNbM10udG9Eb3VibGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKaW5k
ZXggZDA3ZTE0Y2M2ZjJkMDY3NDQ5OWNkZDdkMjg5YmRiMjRmYmU2NjZiMS4uOTEyNzQ3MTExMDRh
YjA4Mjk4OGEyZmYwMTk1NWFlN2UwYmQ0YTAxYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCkBAIC0x
MTAsNiArMTEwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2VzdHVyZVRhcERvd24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVRhcENhbmNlbChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlTG9u
Z1ByZXNzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGdl
c3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIGdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdlYktpdDo6V2ViSW5wdXRFdmVudDo6VHlwZSwg
Y29uc3QgQ3BwQXJndW1lbnRMaXN0Jik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZTI2NDdkMzBiOTA3NmYxOGI1NTI0
NDEwZmU2NmQ5ODMzZmUzMDdmLi4yMWJjYWQxMDRlNWMyNzJiYWRlNGM1MmRhZTI3MzgwMTkyM2Ni
MzQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMDcgIFZhcnVuIEphaW4gIDx2YXJ1
bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0
dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0
aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1v
bi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51
LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0xMS0wNyAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMzg0MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25n
LXRhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4YjYyYmQwMWQ1MjViNThmN2Y5NDU3MjExMDNkNzVhMDBm
OTYzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBj
aGVja3MgdGhhdCB0aGUgY29udGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUu
PC9wPgorPGRpdiBpZD0idGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlM
PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50
Lm9uY29udGV4dG1lbnUgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCA9ICJQQVNTIjsgfQorCisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGV4dCIpOworCisgICAgdmFyIHggPSB0ZXh0Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0ICsgdGV4dC5vZmZzZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IHRleHQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcCArIHRleHQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRIZWlnaHQgLyAy
OworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdUYXApIHsKKyAgICAgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZUxvbmdUYXAoeCwgeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdlc3R1cmVM
b25nVGFwIG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIHBsYXRmb3JtIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2Fi
bGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJh
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3MDM2YTY5NmMxMzE3ZDIxNTBmYjk5ZjYzNzIwNGQ0ZTU1YmQ4
ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBhIGRy
YWdnYWJsZSBlbGVtZW50IHN0YXJ0cyBhIGRyYWcvZHJvcCBzZXNzaW9uLjwvcD4KKzxkaXYgaWQ9
InRleHQiPlRlc3Rpbmc8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgorPGRpdiBp
ZD0iZHJhZ2dhYmxlRGl2IiBkcmFnZ2FibGU9J3RydWUnPkRyYWcgbWU8L2Rpdj4KKzxzY3JpcHQ+
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBm
dW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9
ICJQQVNTIjsgfQorCisgICAgdmFyIGRyYWdhYmxlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRyYWdnYWJsZURpdiIpOworCisgICAgdmFyIHggPSBkcmFnZ2FibGVEaXYub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQgKyBkcmFnZ2FibGVEaXYub2Zmc2V0TGVmdCArIDQ7CisgICAgdmFyIHkg
PSBkcmFnZ2FibGVEaXYub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRyYWdnYWJsZURpdi5vZmZz
ZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGlmICghd2luZG93
LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50U2VuZGVyLmdlc3R1
cmVMb25nUHJlc3MpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdQcmVzcyh4LCB5
KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGRlYnVnKCJnZXN0dXJlTG9uZ1ByZXNzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIHBsYXRmb3Jt
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29u
dGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU3MzVmYWVm
ZTM4MWU3NWNkZGZjZmUyYjQyMTI3MmE2ZjI1YjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0
LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVy
ZS4KKworVGVzdGluZworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJs
ZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MmE0NWVj
MDlmYWIzNzZkYTUyZDhhYzFhMTc0ZDQ3NzM1NDNmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmct
cHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBsb25nIHByZXNzIGdlc3R1cmUg
b24gYSBkcmFnZ2FibGUgZWxlbWVudCBzdGFydHMgYSBkcmFnL2Ryb3Agc2Vzc2lvbi4KKworVGVz
dGluZworUEFTUworRHJhZyBtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dAppbmRleCAxOTUx
Zjk3NjE3MDMyYWYxMGMwY2ZkMTE0ZDYwMTJhYWUzMmM3YTUwLi5jMjIwMzZjODU5N2M1YzY4OTA4
ZDE0M2U3ODU5NWEyNDg3MThkOWIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLVRlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwg
dHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4KK1Rl
c3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGRyYWcv
ZHJvcCB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLmh0bWwKaW5kZXggZGNhOTA3YmZlMDkyYmE4M2Q5NTY5MjZkNWZjYmM0
ZTgzY2FhY2UzMS4uYjZkZjVkODg0YjhhZmQwMjdkNGY2OGQ3NGYwNDMxOWFiMjU5OTI1MCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KLSAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3RpbmcgdGhhdCBhIGNvbnRleHQg
bWVudSB3aWxsIGFwcGVhciBvbiBhIGxvbmcgcHJlc3MgLSBidWcgOTI5MTQ8L3RpdGxlPgorICAg
IDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogVGVzdGluZyB0aGF0IGEgZHJhZy9kcm9wIHdpbGwg
c3RhcnQgb24gYSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KICAgICA8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KICAgICA8
c3R5bGU+CkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChhKTsKICAgICB9KTsKIAotICAgIGRvY3VtZW50Lm9uY29udGV4dG1lbnUgPSBmdW5j
dGlvbigpIHsgZGVidWcoIlBBU1MiKTsgfQorICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVu
Y3Rpb24oZSkgeyBkZWJ1ZygiUEFTUyIpOyBlLnByZXZlbnREZWZhdWx0KCk7fQogCiAgICAgZnVu
Y3Rpb24gdGVzdExvbmdQcmVzcyh0b3VjaHBvaW50KQogICAgIHsKQEAgLTg5LDcgKzg5LDcgQEAK
ICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRU
b0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYg
YSBsb25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgY29udGV4dCBtZW51
IHdoZW4gdG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLicpOworICAgICAgICAgICAgZGVzY3JpcHRp
b24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBh
IGRyYWcvZHJvcCB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsKICAgICAgICAgICAg
IHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7
CiAgICAgICAgICAgICBlLnNhbmRib3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175713</attachid>
            <date>2012-11-22 15:46:01 -0800</date>
            <delta_ts>2012-11-22 16:42:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121122184346.patch</filename>
            <type>text/plain</type>
            <size>27719</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY4MzczOWRiNjdkYjgz
NGE5Nzc5NmYxY2EyMzk4YzkwYjY1Y2NjNi4uZDMzZDM1Yzc0Njk4YmJlNzYyZjYwNmYyYWNhMDc3
OGM0ZWJkMGQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTIyICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKwogMjAxMi0xMS0yMSAg
RGFuIENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIEFkZCBjb250
ZXh0IGNoZWNrcyB0byBXb3JsZENvbnRleHRIYW5kbGUgYW5kIFY4RE9NV2luZG93U2hlbGwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjc3MDNkNjk2ZTc4YzhhNjY0MzI5Y2JmY2NiZGFm
YzM0MzkxMzJiZS4uZjk0MTNjN2E3ODg5Y2JmODcwZmE5NjBkZDAyY2RiMDdiNjNhMzgyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0xMS0yMiAgVmFy
dW4gSmFpbiAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFu
ZCBMb25nVGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4
dCBtZW51IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBh
IG1vdXNlIGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMg
bm90IHN0YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAg
IGVsZW1lbnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRo
ZSBjdXJyZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwg
d2UgdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNl
cyB0byBzdW1tb24gdGhlIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5hYmxlVG91Y2hEcmFnRHJvcCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2Vi
Vmlld0ltcGwpOgorCiAyMDEyLTExLTIxICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIHdlYmtpdF91bml0X3Rlc3RzIHNob3VsZCBkZXBl
bmQgb24gZm9yd2FyZGVyMiBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDAzNDBjMzhhMjdiZjFmMGE2M2FlYjNiNDQzMmIwYTMwOGUzNjRjMDMuLjFlMzMx
NDZiZDUzMmMwZmU2MjM4MGRjOWMxM2VkODZmMzk4NWZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM0OCw2ICszNDgsOCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAsIG1fbW91c2VNb3ZlZER1cmF0aW9uUnVu
bmluZ0F2ZXJhZ2UoMCkKICAgICAsIG1fYmFzZUV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpOb1R5
cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkKKyAgICAsIG1fdG91Y2hEcmFnRHJvcEVu
YWJsZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQwMSw2ICs0MDMsOCBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6Y2xlYXIoKQogI2VuZGlmCiAgICAgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFn
ZSA9IDA7CiAgICAgbV9iYXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAg
IG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CisgICAgbV90b3VjaERyYWdEcm9wRW5hYmxlZCA9IGZh
bHNlOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbm9k
ZVRvQmVSZW1vdmVkKQpAQCAtNzExLDcgKzcxNSw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3Jv
bGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50KSkK
KyAgICBpZiAoaGFuZGxlRHJhZyhldmVudCwgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcykpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFtX21vdXNlUHJlc3NlZCkKQEAgLTEzOTMs
NiArMTM5NywxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXNlSGFuZEN1cnNvcihOb2RlKiBub2Rl
LCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkpCiAgICAgcmV0dXJuICgoaXNPdmVyTGlu
ayB8fCBpc1N1Ym1pdEltYWdlKG5vZGUpKSAmJiAoIWVkaXRhYmxlIHx8IGVkaXRhYmxlTGlua0Vu
YWJsZWQpKTsKIH0KIAordm9pZCBFdmVudEhhbmRsZXI6OmVuYWJsZVRvdWNoRHJhZ0Ryb3AoYm9v
bCBlbmFibGUpCit7CisgICAgbV90b3VjaERyYWdEcm9wRW5hYmxlZCA9IGVuYWJsZTsKK30KKwog
T3B0aW9uYWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAg
IGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9kZSgpKQpAQCAt
MjU5OCw2ICsyNjA3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4g
aGFuZGxlR2VzdHVyZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVM
b25nUHJlc3M6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGdlc3R1cmVF
dmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAg
cmV0dXJuIGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAgICAgY2FzZSBQbGF0
Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4gaGFuZGxlR2Vz
dHVyZVR3b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
R2VzdHVyZURvdWJsZVRhcDoKQEAgLTI2NDgsOSArMjY1OSwzNiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisgICAgaWYgKG1fdG91Y2hEcmFnRHJvcEVuYWJsZWQpIHsKKyAgICAgICAgSW50UG9p
bnQgYWRqdXN0ZWRQb2ludCA9IGdlc3R1cmVFdmVudC5wb3NpdGlvbigpOworI2lmIEVOQUJMRShU
T1VDSF9BREpVU1RNRU5UKQorICAgIGlmICghZ2VzdHVyZUV2ZW50LmFyZWEoKS5pc0VtcHR5KCkp
CisgICAgICAgIGFkanVzdEdlc3R1cmVQb3NpdGlvbihnZXN0dXJlRXZlbnQsIGFkanVzdGVkUG9p
bnQpOworI2VuZGlmCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURvd25FdmVudChh
ZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKKyAgICAgICAgaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1v
dXNlRG93bkV2ZW50KTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRHJhZ0V2ZW50
KGFkanVzdGVkUG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9u
LCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgV1RGOjpjdXJyZW50VGltZSgpKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOworICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRHJhZ0V2ZW50KTsK
KyAgICAgICAgbV9kaWRTdGFydERyYWcgPSBmYWxzZTsKKyAgICAgICAgaGFuZGxlRHJhZyhtZXYs
IERvbnRDaGVja0RyYWdIeXN0ZXJlc2lzKTsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGhhbmRs
ZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShnZXN0dXJlRXZlbnQpOwogfQog
Citib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyNpZiAhT1MoQU5EUk9JRCkKKyAgICByZXR1
cm4gc2VuZENvbnRleHRNZW51RXZlbnRGb3JHZXN0dXJlKGdlc3R1cmVFdmVudCk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
R2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTI3NjEsNiArMjc5
OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24oY29uc3QgUGxh
dGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVuCiAgICAgICAgIGJlc3RDbGlja2FibGVOb2Rl
Rm9yVG91Y2hQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgSW50U2l6ZShnZXN0dXJlRXZl
bnQuYXJlYSgpLndpZHRoKCkgLyAyLCBnZXN0dXJlRXZlbnQuYXJlYSgpLmhlaWdodCgpIC8gMiks
IGFkanVzdGVkUG9pbnQsIHRhcmdldE5vZGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlTG9uZ1RhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJU
YXA6CiAgICAgICAgIGJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVu
dC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdl
c3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMyNiw3ICszMzY1LDcgQEAgc3RhdGljIGJvb2wgRXhh
Y3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4pCiAgICAgcmV0dXJuIG4gJiYgIShuICYg
KG4gLSAxKSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHJh
Z0h5c3RlcmVzaXMgY2hlY2tEcmFnSHlzdGVyZXNpcykKIHsKICAgICBpZiAoZXZlbnQuZXZlbnQo
KS5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgpICE9IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dlZCB0aGUgb3Ro
ZXIgc2lkZSBvZiB0aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKQEAgLTM0MDUsNyArMzQ0NCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRlckN1cnNv
cigpKTsKICAgICB9CiAKLSAgICBpZiAoIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZlbnQuZXZl
bnQoKS5wb3NpdGlvbigpKSkgCisgICAgaWYgKGNoZWNrRHJhZ0h5c3RlcmVzaXMgPT0gU2hvdWxk
Q2hlY2tEcmFnSHlzdGVyZXNpcyAmJiAhZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVu
dCgpLnBvc2l0aW9uKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBPbmNl
IHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQg
dGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKQEAgLTM0NTYsMTEgKzM0OTUsMTEgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgIERyYWdDb250cm9sbGVyKiBkcmFnQ29u
dHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJvbGxlcigpIDogMDsKLSAgICAgICAgYm9v
bCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERy
YWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93
blBvcyk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0Nv
bnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2
ZW50KCksIG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCBy
ZWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAvLyBPbiBP
UyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVi
b2FyZAogICAgICAgICAvLyBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgotICAgICAgICBpZiAoc3Rh
cnRlZERyYWcpIHsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CiAgICAgICAgICAgICBt
X21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KQEAgLTM0ODEsNiArMzUyMCw3IEBAIGNsZWFudXBEcmFnOgogICAgIC8vIE5v
IG1vcmUgZGVmYXVsdCBoYW5kbGluZyAobGlrZSBzZWxlY3Rpb24pLCB3aGV0aGVyIHdlJ3JlIHBh
c3QgdGhlIGh5c3RlcmVzaXMgYm91bmRzIG9yIG5vdAogICAgIHJldHVybiB0cnVlOwogfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgCiBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2
ZW50LCBUZXh0RXZlbnRJbnB1dFR5cGUgaW5wdXRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggZmNiY2Q2MTZiNDg0OTQ2ZjE2ZGE4MTY4ZWJmYTNlYTEzMzE3ZmQ4Mi4uY2I3
ZTBkNGQyNzI3MTI5OTI4MmRmZDY3ZDJhMjMwNTVhODFjYzYxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC05MSw2ICs5MSw3IEBAIGV4dGVybiBjb25zdCBpbnQgR2VuZXJhbERy
YWdIeXN0ZXJlc2lzOwogCiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNj
cm9sbGJhcnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwogZW51bSBBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgeyBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRBcHBlbmRUcmFp
bGluZ1doaXRlc3BhY2UgfTsKK2VudW0gQ2hlY2tEcmFnSHlzdGVyZXNpcyB7IFNob3VsZENoZWNr
RHJhZ0h5c3RlcmVzaXMsIERvbnRDaGVja0RyYWdIeXN0ZXJlc2lzIH07CiAKIGNsYXNzIEV2ZW50
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVyKTsKQEAgLTE3
MCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nUHJlc3Mo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25n
VGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJl
VHdvRmluZ2VyVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5k
bGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAg
Ym9vbCBpc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdDsKQEAgLTI0MCw2ICsyNDIs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgdXNlSGFuZEN1cnNvcihOb2RlKiwgYm9v
bCBpc092ZXJMaW5rLCBib29sIHNoaWZ0S2V5KTsKKyAgICB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ry
b3AoYm9vbCBlbmFibGUpOwogCiBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBA
IC0zMDcsNyArMzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZnJlZUNsaXBib2FyZCgpOwog
Ci0gICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
KTsKKyAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwogI2VuZGlmCiAgICAgYm9vbCBoYW5kbGVNb3VzZVVw
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtNDY4LDYgKzQ3MSw4IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbV9tb3Vz
ZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZTsKICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1f
YmFzZUV2ZW50VHlwZTsKKyAgICBib29sIG1fZGlkU3RhcnREcmFnOworICAgIGJvb2wgbV90b3Vj
aERyYWdEcm9wRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAyZWMxYjFiYWRhMGFlZDlmNTA1M2Nj
N2I4YzIwNjc5MjI4YmUxZDU2Li5hNzZmMjNlODcxZjMyNDg5MDJkOGYyZjc5NzA4MWE4MGM0MTg1
MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0zMjEsNiAr
MzIxLDkgQEAgcHVibGljOgogICAgIC8vIFdlYlZpZXcgKGlmIHRoZXJlIGlzIHN1Y2ggYW4gaW1h
Z2UpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlJbWFnZUF0KGNvbnN0IFdlYlBvaW50JikgPSAwOwog
CisgICAgLy8gRW5hYmxlcy9EaXNhYmxlcyB0b3VjaCBpbml0aWF0ZWQgZHJhZyBhbmQgZHJvcC4K
KyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlVG91Y2hEcmFnRHJvcChib29sIGVuYWJsZSkgPSAwOwor
CiAgICAgLy8gTm90aWZpZXMgdGhlIFdlYlZpZXcgdGhhdCBhIGRyYWcgaGFzIHRlcm1pbmF0ZWQu
CiAgICAgdmlydHVhbCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KAogICAgICAgICBjb25zdCBXZWJQ
b2ludCYgY2xpZW50UG9pbnQsIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBlNmI5MjFjMWM2M2E4Yjlh
MWVlMzc1YWJkYjc0MTA1NDUxODQ0Mzg4Li4xMGI4MWRhN2U5MWU4ZTUxOWJiMmNkOGM4NGMzOTM4
YzdjYTc0YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC0zMjAyLDYgKzMyMDIsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29weUltYWdlQXQoY29u
c3QgV2ViUG9pbnQmIHBvaW50KQogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT5j
b3B5SW1hZ2UocmVzdWx0KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZW5hYmxlVG91Y2hEcmFn
RHJvcChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAobWFpbkZyYW1lSW1wbCgpICYmIG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+ZW5hYmxlVG91Y2hEcmFnRHJvcChlbmFibGUpOworfQorCiB2b2lkIFdlYlZp
ZXdJbXBsOjpkcmFnU291cmNlRW5kZWRBdCgKICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9p
bnQsCiAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNTljMzIwNmU1OGI1ZjNmM2Y2ZGI4YzM3NDkwZjc5
ZjE5N2U3YWQ1Yy4uM2M0OTlmODZhYjlkNzlhOTQ0MGI2YjNmZjY4Y2YwMzVhYzM2MTNmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yNTAsNiArMjUwLDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBXZWJQb2ludCYpOwogICAgIHZpcnR1YWwgV2ViSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXQoY29uc3QgV2ViUG9pbnQmKTsKICAgICB2aXJ0dWFs
IHZvaWQgY29weUltYWdlQXQoY29uc3QgV2ViUG9pbnQmIHBvaW50KTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlVG91Y2hEcmFnRHJvcChib29sIGVuYWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRy
YWdTb3VyY2VFbmRlZEF0KAogICAgICAgICBjb25zdCBXZWJQb2ludCYgY2xpZW50UG9pbnQsCiAg
ICAgICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2ludCwKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMzE0NDVhODExYjNlMzJmNzNhMjUyYmNh
ZjYzNWFkZWY2YTE2M2RkLi42MWI5ZTZhNDFkNjE3N2JkOTAxYzEwNTVmYzQzZmE4OGE5ODA0ZmZi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTItMTEtMjIgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3Rh
cnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3
ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisg
ICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRo
ZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRl
eHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvciBm
b3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25z
IHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdUYXApOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
RXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaDoKKyAgICAgICAgKEV2ZW50U2VuZGVy
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZW5hYmxlVG91Y2hEcmFn
RHJvcCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVu
bmVyKToKKwogMjAxMi0xMS0yMSAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2Fu
dG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBLVVJMIHVuaXQgdGVzdCBjcmFzaGluZyB3
aGVuIHRpbGVkIGJhY2tpbmcgc3RvcmUgaXMgZW5hYmxlZCBvbiBSZWxlYXNlIEJvdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50
U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0V2ZW50U2VuZGVyLmNwcAppbmRleCA3N2ZjYjc2ZTgzZDU0MmQ5ZjAxZjhkMmYyOTVjYmViMDE3
MmRkYTY4Li4wOWM0OGQ3NzIyYmZlZDlmYTI3ZGZkMzk2Y2RmYTVjZTBjZDFkZWY3IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNl
bmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvRXZlbnRTZW5kZXIuY3BwCkBAIC0yOTYsNiArMjk2LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50
U2VuZGVyKCkKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVGFwRG93biIsICZFdmVudFNlbmRlcjo6
Z2VzdHVyZVRhcERvd24pOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXBDYW5jZWwiLCAmRXZl
bnRTZW5kZXI6Omdlc3R1cmVUYXBDYW5jZWwpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25n
UHJlc3MiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MpOworICAgIGJpbmRNZXRob2Qo
Imdlc3R1cmVMb25nVGFwIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk7CiAgICAgYmlu
ZE1ldGhvZCgiZ2VzdHVyZVR3b0ZpbmdlclRhcCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0Zp
bmdlclRhcCk7CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VJbiIsICZFdmVudFNlbmRlcjo6em9v
bVBhZ2VJbik7CiAgICAgYmluZE1ldGhvZCgiem9vbVBhZ2VPdXQiLCAmRXZlbnRTZW5kZXI6Onpv
b21QYWdlT3V0KTsKQEAgLTExMzIsNiArMTEzMywxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0
dXJlTG9uZ1ByZXNzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KgogICAgIGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCBhcmd1
bWVudHMpOwogfQogCit2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworICAgIGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9u
Z1RhcCwgYXJndW1lbnRzKTsKK30KKwogdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0Zpbmdl
clRhcChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtMTIwMSw4ICsxMjA4LDE2IEBAIHZvaWQg
RXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYKICAgICAgICAgZXZlbnQueCA9IHBvaW50Lng7CiAgICAgICAgIGV2
ZW50LnkgPSBwb2ludC55OwogICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7Ci0g
ICAgICAgICAgICBldmVudC5kYXRhLnRhcERvd24ud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3du
LmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7Cisg
ICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0
Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQ
cmVzcy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUxvbmdUYXA6CisgICAgICAgIGV2ZW50LnggPSBwb2ludC54OworICAgICAgICBldmVudC55
ID0gcG9pbnQueTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgeworICAgICAg
ICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJn
dW1lbnRzWzJdLnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3Mu
aGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVU
d29GaW5nZXJUYXA6CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAppbmRleCBlNTU1NzgxNDBiODk5NWZkNmUz
NzNiNjNhOWEyZGYyMDA2ZGQ0NTA3Li5iMDU5NTI0ZWMxOGQyNjc2MzM1OWJiMGUzMWE4YTMzNTk4
NGQxMTlkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9FdmVudFNlbmRlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKQEAgLTExMCw2ICsxMTAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXN0dXJlVGFwRG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAgICAgdm9pZCBnZXN0dXJlVGFwQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZ2VzdHVyZUxvbmdUYXAoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVR3b0ZpbmdlclRh
cChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJl
RXZlbnQoV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpUeXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3Qm
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCAzNzA3ODkyN2Q5OTJiODM1ZDMwYzk1ZmNk
MjZkNDE1OGI5Y2I2YmRkLi5mNjUwNTE5MGVkM2YwMmNmYTY3Zjc5ZTBjMWYxZmJkNmM0MmM3NWNi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtOTgsNiArOTgsNyBAQCBUZXN0UnVubmVyOjpU
ZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZUZXN0UnVu
bmVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmluZE1ldGhvZCgic2V0VGV4dERpcmVjdGlv
biIsICZUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJ0ZXh0
U3Vycm91bmRpbmdOb2RlIiwgJlRlc3RSdW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUpOworICAg
IGJpbmRNZXRob2QoImVuYWJsZVRvdWNoRHJhZ0Ryb3AiLCAmVGVzdFJ1bm5lcjo6ZW5hYmxlVG91
Y2hEcmFnRHJvcCk7CiAKICAgICAvLyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29y
a2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpAQCAtNjY0
LDYgKzY2NSwxNSBAQCB2b2lkIFRlc3RSdW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbgogICAgIHJlc3VsdC0+c2V0KHN1
cnJvdW5kaW5nVGV4dC50ZXh0Q29udGVudCgpLnV0ZjgoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5l
cjo6ZW5hYmxlVG91Y2hEcmFnRHJvcChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpICE9IDEgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV93ZWJWaWV3LT5lbmFibGVUb3VjaERyYWdEcm9wKGFyZ3VtZW50c1sw
XS50b0Jvb2xlYW4oKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQo
Q3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0PGludD4o
V2ViV29ya2VySW5mbzo6ZGVkaWNhdGVkV29ya2VyQ291bnQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5o
CmluZGV4IGY5ZTlmN2EyNDZhMDk3YWNjMWRlYzliM2QyOGFkZWUxODA4MzNiODMuLmE5MWFlMjFl
YTc2YzJhYTNhMzE1MDk0NDI4MTVjYmZiZThiODNlYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAg
LTE0Nyw2ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIC8vIHBvaW50IGNvb3JkaW5hdGVzIHJlbGF0
aXZlIHRvIHRoZSBub2RlIGFuZCB0aGUgZm91cnRoIHRoZSBtYXhpbXVtIHRleHQKICAgICAvLyBs
ZW5ndGggdG8gcmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ry
b3AoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAgICAgLy8gUHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFiNjEwYWVmNjNhYzA3NDE4ZmQy
Y2IxODM5NTNlNGJkYTRhNDQxNzYuLjRjMjgwMDAyMjM2MzRjMzY2ZGQ5NGZjM2YwMjQ2M2E2ZjRi
ODY3OWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0yMiAgVmFydW4gSmFpbiAgPHZh
cnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFuZCBMb25nVGFwIGdl
c3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4dCBtZW51IHJlc3Bl
Y3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRvd24g
YW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0ZWQg
KGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQpLCB0
aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50Cisg
ICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRoZSBl
eGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1tb24g
dGhlIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
Y29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vy
cy1kcmFnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9u
Z3ByZXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlu
a3MtbG9uZ3ByZXNzLmh0bWw6CisKIDIwMTItMTEtMjEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVs
bGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTM1MjEyKTogRml4IGNy
YXNoIGR1ZSB0byBhbiBpbmZpbml0ZSByZWN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmct
dGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjJiZDAxZDUyNWI1OGY3Zjk0NTcyMTEwM2Q3NWEwMGY5
NjMyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVyZS48
L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8
L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQu
b25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisKKyAgICB2YXIgeCA9IHRleHQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyB0ZXh0Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gdGV4dC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldEhlaWdodCAvIDI7
CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCkgeworICAgICAgICBldmVudFNlbmRlci5nZXN0
dXJlTG9uZ1RhcCh4LCB5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxv
bmdUYXAgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJs
ZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFn
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTc0MzE1ZmM2MWYyZTNlNmI0NzMwNDdiODA0ZTE1MTMxM2VkZTRh
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJh
Z2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uPC9wPgorPGRpdiBpZD0i
dGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Cis8ZGl2IGlk
PSJkcmFnZ2FibGVEaXYiIGRyYWdnYWJsZT0ndHJ1ZSc+RHJhZyBtZTwvZGl2PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAodGVzdFJ1bm5lci5lbmFibGVUb3Vj
aERyYWdEcm9wKQorICAgICAgICB0ZXN0UnVubmVyLmVuYWJsZVRvdWNoRHJhZ0Ryb3AodHJ1ZSk7
CisKKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgZHJh
Z2FibGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2dhYmxlRGl2Iik7CisKKyAg
ICB2YXIgeCA9IGRyYWdnYWJsZURpdi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRyYWdnYWJs
ZURpdi5vZmZzZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IGRyYWdnYWJsZURpdi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNldFRvcCArIGRyYWdnYWJsZURpdi5vZmZz
ZXRIZWlnaHQgLyAyOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdQcmVzcykgeworICAgICAgICBl
dmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKHgsIHkpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdlc3R1cmVMb25nUHJlc3Mg
bm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1l
bnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTczNWZhZWZlMzgxZTc1Y2RkZmNmZTJiNDIxMjcyYTZm
MjViMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNvbnRleHQg
bWVudSBpcyBzaG93biBvbiBsb25nIHRhcCBnZXN0dXJlLgorCitUZXN0aW5nCitQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyYTQ1ZWMwOWZhYjM3NmRhNTJkOGFjMWExNzRkNDc3
MzU0M2Y3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVu
dC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBj
aGVja3MgdGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50IHN0
YXJ0cyBhIGRyYWcvZHJvcCBzZXNzaW9uLgorCitUZXN0aW5nCitQQVNTCitEcmFnIG1lCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1s
b25ncHJlc3MtZXhwZWN0ZWQudHh0CmluZGV4IDE5NTFmOTc2MTcwMzJhZjEwYzBjZmQxMTRkNjAx
MmFhZTMyYzdhNTAuLmMyMjAzNmM4NTk3YzVjNjg5MDhkMTQzZTc4NTk1YTI0ODcxOGQ5YjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJl
c3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1s
aW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGVzdHMgaWYgYSBs
b25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgY29udGV4dCBtZW51IHdo
ZW4gdG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLgorVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1
cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4gdG91Y2ggYWRqdXN0bWVu
dCBpcyB1c2VkLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbCBiL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbAppbmRl
eCBkY2E5MDdiZmUwOTJiYTgzZDk1NjkyNmQ1ZmNiYzRlODNjYWFjZTMxLi4zZDMzNDczMmNhYjcx
ZjczNGE2NDYzODI4OThmMmI1ZGYxMjRiNmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sCkBAIC0xLDcgKzEsNyBA
QAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotICAgIDx0aXRsZT5Ub3VjaCBBZGp1
c3RtZW50IDogVGVzdGluZyB0aGF0IGEgY29udGV4dCBtZW51IHdpbGwgYXBwZWFyIG9uIGEgbG9u
ZyBwcmVzcyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CisgICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQg
OiBUZXN0aW5nIHRoYXQgYSBkcmFnL2Ryb3Agd2lsbCBzdGFydCBvbiBhIGxvbmcgcHJlc3MgLSBi
dWcgOTI5MTQ8L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3Vj
aGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZT4KQEAgLTMxLDcgKzMxLDcgQEAK
ICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOwogICAgIH0pOwogCi0g
ICAgZG9jdW1lbnQub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBkZWJ1ZygiUEFTUyIpOyB9
CisgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBmdW5jdGlvbihlKSB7IGRlYnVnKCJQQVNTIik7
IGUucHJldmVudERlZmF1bHQoKTt9CiAKICAgICBmdW5jdGlvbiB0ZXN0TG9uZ1ByZXNzKHRvdWNo
cG9pbnQpCiAgICAgewpAQCAtODksNyArODksOCBAQAogICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
ICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxz
ICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsKLSAg
ICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBs
aW5rcyB3aWxsIHRyaWdnZXIgYSBjb250ZXh0IG1lbnUgd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlz
IHVzZWQuJyk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmVuYWJsZVRvdWNoRHJhZ0Ryb3AodHJ1
ZSk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1
cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4gdG91Y2ggYWRqdXN0bWVu
dCBpcyB1c2VkLicpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKICAgICAgICAg
ICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIGUuc2FuZGJveC5zdHlsZS5k
aXNwbGF5ID0gJ25vbmUnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175717</attachid>
            <date>2012-11-22 16:42:45 -0800</date>
            <delta_ts>2012-11-22 20:49:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121122194029.patch</filename>
            <type>text/plain</type>
            <size>27682</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY4MzczOWRiNjdkYjgz
NGE5Nzc5NmYxY2EyMzk4YzkwYjY1Y2NjNi4uZDMzZDM1Yzc0Njk4YmJlNzYyZjYwNmYyYWNhMDc3
OGM0ZWJkMGQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTIyICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKwogMjAxMi0xMS0yMSAg
RGFuIENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIEFkZCBjb250
ZXh0IGNoZWNrcyB0byBXb3JsZENvbnRleHRIYW5kbGUgYW5kIFY4RE9NV2luZG93U2hlbGwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjc3MDNkNjk2ZTc4YzhhNjY0MzI5Y2JmY2NiZGFm
YzM0MzkxMzJiZS4uZjk0MTNjN2E3ODg5Y2JmODcwZmE5NjBkZDAyY2RiMDdiNjNhMzgyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0xMS0yMiAgVmFy
dW4gSmFpbiAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFu
ZCBMb25nVGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4
dCBtZW51IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBh
IG1vdXNlIGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMg
bm90IHN0YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAg
IGVsZW1lbnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRo
ZSBjdXJyZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwg
d2UgdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNl
cyB0byBzdW1tb24gdGhlIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5hYmxlVG91Y2hEcmFnRHJvcCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2Vi
Vmlld0ltcGwpOgorCiAyMDEyLTExLTIxICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIHdlYmtpdF91bml0X3Rlc3RzIHNob3VsZCBkZXBl
bmQgb24gZm9yd2FyZGVyMiBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDAzNDBjMzhhMjdiZjFmMGE2M2FlYjNiNDQzMmIwYTMwOGUzNjRjMDMuLmY5YThm
ZDQ2NWMyOGQ3NTdlYzVkNDBkYWFmNDkxMjAzOThkNTM0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM0OCw2ICszNDgsOCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAsIG1fbW91c2VNb3ZlZER1cmF0aW9uUnVu
bmluZ0F2ZXJhZ2UoMCkKICAgICAsIG1fYmFzZUV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpOb1R5
cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkKKyAgICAsIG1fdG91Y2hEcmFnRHJvcEVu
YWJsZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQwMSw2ICs0MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6Y2xlYXIoKQogI2VuZGlmCiAgICAgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFn
ZSA9IDA7CiAgICAgbV9iYXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAg
IG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpub2RlV2ls
bEJlUmVtb3ZlZChOb2RlKiBub2RlVG9CZVJlbW92ZWQpCkBAIC03MTEsNyArNzE0LDcgQEAgc3Rh
dGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZl
bnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYg
KGhhbmRsZURyYWcoZXZlbnQpKQorICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50LCBTaG91bGRDaGVj
a0RyYWdIeXN0ZXJlc2lzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91
c2VQcmVzc2VkKQpAQCAtMTM5Myw2ICsxMzk2LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1c2VI
YW5kQ3Vyc29yKE5vZGUqIG5vZGUsIGJvb2wgaXNPdmVyTGluaywgYm9vbCBzaGlmdEtleSkKICAg
ICByZXR1cm4gKChpc092ZXJMaW5rIHx8IGlzU3VibWl0SW1hZ2Uobm9kZSkpICYmICghZWRpdGFi
bGUgfHwgZWRpdGFibGVMaW5rRW5hYmxlZCkpOwogfQogCit2b2lkIEV2ZW50SGFuZGxlcjo6ZW5h
YmxlVG91Y2hEcmFnRHJvcChib29sIGVuYWJsZSkKK3sKKyAgICBtX3RvdWNoRHJhZ0Ryb3BFbmFi
bGVkID0gZW5hYmxlOworfQorCiBPcHRpb25hbEN1cnNvciBFdmVudEhhbmRsZXI6OnNlbGVjdEN1
cnNvcihjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKG1fcmVzaXplTGF5ZXIgJiYgbV9yZXNpemVMYXllci0+
aW5SZXNpemVNb2RlKCkpCkBAIC0yNTk4LDYgKzI2MDYsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlVGFwRG93bigpOwogICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1
cmVMb25nUHJlc3MoZ2VzdHVyZUV2ZW50KTsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1
cmVMb25nVGFwOgorICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUxvbmdUYXAoZ2VzdHVyZUV2
ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CiAgICAg
ICAgIHJldHVybiBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGdlc3R1cmVFdmVudCk7CiAgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgpAQCAtMjY0OCw5ICsyNjU4LDM2
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlVGFwKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlTG9uZ1ByZXNzKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7
CisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKyAgICBpZiAobV90b3VjaERyYWdEcm9wRW5hYmxl
ZCkgeworICAgICAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50ID0gZ2VzdHVyZUV2ZW50LnBvc2l0
aW9uKCk7CisjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCisgICAgaWYgKCFnZXN0dXJlRXZl
bnQuYXJlYSgpLmlzRW1wdHkoKSkKKyAgICAgICAgYWRqdXN0R2VzdHVyZVBvc2l0aW9uKGdlc3R1
cmVFdmVudCwgYWRqdXN0ZWRQb2ludCk7CisjZW5kaWYKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRG93bkV2ZW50KGFkanVzdGVkUG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3Np
dGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgICAgICBoYW5k
bGVNb3VzZVByZXNzRXZlbnQobW91c2VEb3duRXZlbnQpOworICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgbW91c2VEcmFnRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBv
c2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgbW91c2VEcmFnRXZlbnQpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IGZhbHNlOworICAg
ICAgICBoYW5kbGVEcmFnKG1ldiwgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMpOworICAgICAgICBp
ZiAobV9kaWRTdGFydERyYWcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYKICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51
KGdlc3R1cmVFdmVudCk7CiB9CiAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9u
Z1RhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQoreworI2lmICFP
UyhBTkRST0lEKQorICAgIHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUoZ2Vz
dHVyZUV2ZW50KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICNpZiBPUyhBTkRS
T0lEKQpAQCAtMjc2MSw2ICsyNzk4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmFkanVzdEdlc3R1
cmVQb3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW4KICAgICAg
ICAgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
LCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdlc3R1cmVFdmVudC5h
cmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczoKKyAgICBj
YXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAgIGNhc2UgUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgYmVzdENvbnRleHRNZW51Tm9kZUZvclRv
dWNoUG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFy
ZWEoKS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1
c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMzI2LDcgKzMzNjQs
NyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKICAg
ICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCitib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgQ2hlY2tEcmFnSHlzdGVyZXNpcyBjaGVja0RyYWdIeXN0ZXJlc2lzKQogewog
ICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZl
bnQoKS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewogICAgICAgICAvLyBJ
ZiB3ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8gaGFuZGxlIGEgZHJh
ZwpAQCAtMzQwNSw3ICszNDQzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgIHZpZXctPnNl
dEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlmICghZHJhZ0h5c3RlcmVz
aXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKKyAgICBpZiAoY2hlY2tEcmFn
SHlzdGVyZXNpcyA9PSBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzICYmICFkcmFnSHlzdGVyZXNp
c0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBwb2ludCwgd2Ug
ZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawpAQCAtMzQ1NiwxMSAr
MzQ5NCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERy
YWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgRHJh
Z0NvbnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRyYWdDb250cm9sbGVy
KCkgOiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJh
Z0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50
LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgbV9kaWRTdGFydERyYWcgPSBkcmFn
Q29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0
ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwogICAgICAgICAvLyBJ
biBXZWJLaXQyIHdlIGNvdWxkIHJlZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFydCBhbm90aGVyIGRy
YWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3du
ZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkCiAgICAgICAgIC8vIGFuZCB0aGUgcHJvbWlzZWQgdHlw
ZXMuCi0gICAgICAgIGlmIChzdGFydGVkRHJhZykgeworICAgICAgICBpZiAobV9kaWRTdGFydERy
YWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzQ4MSw2ICszNTE5LDcgQEAgY2xl
YW51cERyYWc6CiAgICAgLy8gTm8gbW9yZSBkZWZhdWx0IGhhbmRsaW5nIChsaWtlIHNlbGVjdGlv
biksIHdoZXRoZXIgd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBib3VuZHMgb3Igbm90CiAgICAg
cmV0dXJuIHRydWU7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQs
IEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmY2JjZDYxNmI0ODQ5NDZmMTZkYTgxNjhl
YmZhM2VhMTMzMTdmZDgyLi5jYjdlMGQ0ZDI3MjcxMjk5MjgyZGZkNjdkMmEyMzA1NWE4MWNjNjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgZXh0ZXJu
IGNvbnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAKIGVudW0gSGl0VGVzdFNjcm9sbGJh
cnMgeyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiBl
bnVtIEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB7IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVz
cGFjZSwgRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB9OworZW51bSBDaGVja0RyYWdIeXN0
ZXJlc2lzIHsgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcywgRG9udENoZWNrRHJhZ0h5c3RlcmVz
aXMgfTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShF
dmVudEhhbmRsZXIpOwpAQCAtMTcwLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFu
ZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFu
ZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworICAgIGJv
b2wgaGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAg
ICBib29sIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGlzU2Nyb2xsYmFySGFuZGxpbmdHZXN0dXJlcygpIGNv
bnN0OwpAQCAtMjQwLDYgKzI0Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCB1c2VI
YW5kQ3Vyc29yKE5vZGUqLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkpOworICAgIHZv
aWQgZW5hYmxlVG91Y2hEcmFnRHJvcChib29sIGVuYWJsZSk7CiAKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNyw3ICszMTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBmcmVlQ2xpcGJvYXJkKCk7CiAKLSAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYpOworICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CiAjZW5kaWYKICAg
ICBib29sIGhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYp
OwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00NjgsNiArNDcxLDggQEAgcHJpdmF0ZToK
IAogICAgIGRvdWJsZSBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlOwogICAgIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgbV9iYXNlRXZlbnRUeXBlOworICAgIGJvb2wgbV9kaWRTdGFydERy
YWc7CisgICAgYm9vbCBtX3RvdWNoRHJhZ0Ryb3BFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDJl
YzFiMWJhZGEwYWVkOWY1MDUzY2M3YjhjMjA2NzkyMjhiZTFkNTYuLmE3NmYyM2U4NzFmMzI0ODkw
MmQ4ZjJmNzk3MDgxYTgwYzQxODUxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmgKQEAgLTMyMSw2ICszMjEsOSBAQCBwdWJsaWM6CiAgICAgLy8gV2ViVmlldyAoaWYg
dGhlcmUgaXMgc3VjaCBhbiBpbWFnZSkKICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlQXQoY29u
c3QgV2ViUG9pbnQmKSA9IDA7CiAKKyAgICAvLyBFbmFibGVzL0Rpc2FibGVzIHRvdWNoIGluaXRp
YXRlZCBkcmFnIGFuZCBkcm9wLgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUb3VjaERyYWdEcm9w
KGJvb2wgZW5hYmxlKSA9IDA7CisKICAgICAvLyBOb3RpZmllcyB0aGUgV2ViVmlldyB0aGF0IGEg
ZHJhZyBoYXMgdGVybWluYXRlZC4KICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQo
CiAgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvaW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IGU2YjkyMWMxYzYzYThiOWExZWUzNzVhYmRiNzQxMDU0NTE4NDQzODguLjEwYjgxZGE3ZTkx
ZThlNTE5YmIyY2Q4Yzg0YzM5MzhjN2NhNzRjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMyMDIsNiArMzIwMiwxMiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpjb3B5SW1hZ2VBdChjb25zdCBXZWJQb2ludCYgcG9pbnQpCiAgICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZWRpdG9yKCktPmNvcHlJbWFnZShyZXN1bHQpOwogfQogCit2b2lkIFdlYlZpZXdJ
bXBsOjplbmFibGVUb3VjaERyYWdEcm9wKGJvb2wgZW5hYmxlKQoreworICAgIGlmIChtYWluRnJh
bWVJbXBsKCkgJiYgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpKQorICAgICAgICBtYWluRnJhbWVJ
bXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5lbmFibGVUb3VjaERyYWdEcm9wKGVuYWJs
ZSk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0KAogICAgIGNvbnN0
IFdlYlBvaW50JiBjbGllbnRQb2ludCwKICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA1OWMzMjA2ZTU4
YjVmM2YzZjZkYjhjMzc0OTBmNzlmMTk3ZTdhZDVjLi4zYzQ5OWY4NmFiOWQ3OWE5NDQwYjZiM2Zm
NjhjZjAzNWFjMzYxM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTI1MCw2ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlBvaW50Jik7
CiAgICAgdmlydHVhbCBXZWJIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdChjb25zdCBXZWJQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VBdChjb25zdCBXZWJQb2ludCYgcG9p
bnQpOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUb3VjaERyYWdEcm9wKGJvb2wgZW5hYmxlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoCiAgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBjbGllbnRQb2ludCwKICAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvaW50LApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMzMTQ0
NWE4MTFiM2UzMmY3M2EyNTJiY2FmNjM1YWRlZjZhMTYzZGQuLjYxYjllNmE0MWQ2MTc3YmQ5MDFj
MTA1NWZjNDNmYTg4YTk4MDRmZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMS0yMiAgVmFydW4gSmFpbiAg
PHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFuZCBMb25nVGFw
IGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4dCBtZW51IHJl
c3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRv
d24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0
ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQp
LCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50
CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRo
ZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1t
b24gdGhlIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oOgor
ICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVu
bmVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEyLTExLTIxICBUaGlhZ28gTWFyY29zIFAu
IFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEtVUkwg
dW5pdCB0ZXN0IGNyYXNoaW5nIHdoZW4gdGlsZWQgYmFja2luZyBzdG9yZSBpcyBlbmFibGVkIG9u
IFJlbGVhc2UgQm90cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDc3ZmNiNzZlODNkNTQy
ZDlmMDFmOGQyZjI5NWNiZWIwMTcyZGRhNjguLjA5YzQ4ZDc3MjJiZmVkOWZhMjdkZmQzOTZjZGZh
NWNlMGNkMWRlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTI5Niw2ICsyOTYsNyBA
QCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXBE
b3duIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwRG93bik7CiAgICAgYmluZE1ldGhvZCgiZ2Vz
dHVyZVRhcENhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcENhbmNlbCk7CiAgICAgYmlu
ZE1ldGhvZCgiZ2VzdHVyZUxvbmdQcmVzcyIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdQcmVz
cyk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdUYXAiLCAmRXZlbnRTZW5kZXI6Omdlc3R1
cmVMb25nVGFwKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVHdvRmluZ2VyVGFwIiwgJkV2ZW50
U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZUlu
IiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZUluKTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZU91
dCIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VPdXQpOwpAQCAtMTEzMiw2ICsxMTMzLDEyIEBAIHZv
aWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVMb25nUHJlc3MsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1
cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgZ2VzdHVyZUV2ZW50KFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwLCBhcmd1bWVudHMpOworfQorCiB2b2lkIEV2ZW50U2Vu
ZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkBAIC0xMjAx
LDggKzEyMDgsMTYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdlYklucHV0RXZl
bnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAgICBldmVudC54ID0g
cG9pbnQueDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CiAgICAgICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpID49IDQpIHsKLSAgICAgICAgICAgIGV2ZW50LmRhdGEudGFwRG93bi53aWR0aCA9
IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7Ci0gICAgICAgICAg
ICBldmVudC5kYXRhLnRhcERvd24uaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50
c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLndpZHRo
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICAgICAg
ICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1
bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgZXZlbnQueCA9IHBvaW50
Lng7CisgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OworICAgICAgICBpZiAoYXJndW1lbnRzLnNp
emUoKSA+PSA0KSB7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy53aWR0aCA9IHN0
YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBl
dmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRz
WzNdLnRvRG91YmxlKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCmluZGV4
IGU1NTU3ODE0MGI4OTk1ZmQ2ZTM3M2I2M2E5YTJkZjIwMDZkZDQ1MDcuLmIwNTk1MjRlYzE4ZDI2
NzYzMzU5YmIwZTMxYThhMzM1OTg0ZDExOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaApAQCAtMTEw
LDYgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVUYXBEb3duKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVUYXBDYW5jZWwoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZUxvbmdQ
cmVzcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBnZXN0
dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKICAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJLaXQ6OldlYklucHV0RXZlbnQ6OlR5cGUsIGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MDc4
OTI3ZDk5MmI4MzVkMzBjOTVmY2QyNmQ0MTU4YjljYjZiZGQuLmY2NTA1MTkwZWQzZjAyY2ZhNjdm
NzllMGMxZjFmYmQ2YzQyYzc1Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC05OCw2ICs5
OCw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFBhZ2VW
aXNpYmlsaXR5IiwgJlRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KTsKICAgICBiaW5kTWV0
aG9kKCJzZXRUZXh0RGlyZWN0aW9uIiwgJlRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24pOwog
ICAgIGJpbmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAmVGVzdFJ1bm5lcjo6dGV4dFN1
cnJvdW5kaW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgiZW5hYmxlVG91Y2hEcmFnRHJvcCIsICZU
ZXN0UnVubmVyOjplbmFibGVUb3VjaERyYWdEcm9wKTsKIAogICAgIC8vIFByb3BlcnRpZXMuCiAg
ICAgYmluZFByb3BlcnR5KCJ3b3JrZXJUaHJlYWRDb3VudCIsICZUZXN0UnVubmVyOjp3b3JrZXJU
aHJlYWRDb3VudCk7CkBAIC02NjQsNiArNjY1LDE1IEBAIHZvaWQgVGVzdFJ1bm5lcjo6dGV4dFN1
cnJvdW5kaW5nTm9kZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
CiAgICAgcmVzdWx0LT5zZXQoc3Vycm91bmRpbmdUZXh0LnRleHRDb250ZW50KCkudXRmOCgpKTsK
IH0KIAordm9pZCBUZXN0UnVubmVyOjplbmFibGVUb3VjaERyYWdEcm9wKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBd
LmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlZpZXctPmVuYWJsZVRvdWNo
RHJhZ0Ryb3AoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKK30KKwogdm9pZCBUZXN0UnVubmVy
Ojp3b3JrZXJUaHJlYWRDb3VudChDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5z
ZXQoc3RhdGljX2Nhc3Q8aW50PihXZWJXb3JrZXJJbmZvOjpkZWRpY2F0ZWRXb3JrZXJDb3VudCgp
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0UnVubmVyLmgKaW5kZXggZjllOWY3YTI0NmEwOTdhY2MxZGVjOWIzZDI4YWRl
ZTE4MDgzM2I4My4uYTkxYWUyMWVhNzZjMmFhM2EzMTUwOTQ0MjgxNWNiZmJlOGI4M2VjNyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gcG9p
bnQgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIG5vZGUgYW5kIHRoZSBmb3VydGggdGhlIG1h
eGltdW0gdGV4dAogICAgIC8vIGxlbmd0aCB0byByZXRyaWV2ZS4KICAgICB2b2lkIHRleHRTdXJy
b3VuZGluZ05vZGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZv
aWQgZW5hYmxlVG91Y2hEcmFnRHJvcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBQcm9wZXJ0aWVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWI2MTBhZWY2M2FjMDc0MThmZDJjYjE4Mzk1M2U0YmRhNGE0NDE3Ni4uNGMyODAwMDIyMzYzNGMz
NjZkZDk0ZmMzZjAyNDYzYTZmNGI4Njc5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEx
LTIyICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25n
UHJlc3MgYW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3Bl
biBjb250ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBz
ZW5kaW5nIGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEg
ZHJhZyBpcyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUK
KyAgICAgICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hp
Y2ggaXMgdGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBM
b25nVGFwLCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQ
cmVzcyB1c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdn
YWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9u
Zy10YXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQt
dHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0
bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNo
YWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbDoKKwogMjAxMi0xMS0yMSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIxMzUyMTIpOiBGaXggY3Jhc2ggZHVlIHRvIGFuIGluZmluaXRlIHJlY3QuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1v
bi1sb25nLXRhcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9j
b250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGI2MmJkMDFkNTI1YjU4
ZjdmOTQ1NzIxMTAzZDc1YTAwZjk2MzIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbApA
QCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNvbnRleHQgbWVudSBpcyBzaG93biBv
biBsb25nIHRhcCBnZXN0dXJlLjwvcD4KKzxkaXYgaWQ9InRleHQiPlRlc3Rpbmc8L2Rpdj4KKzxk
aXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsKKworICAgIHZhciB4ID0g
dGV4dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIHRleHQub2Zmc2V0TGVmdCArIDQ7CisgICAg
dmFyIHkgPSB0ZXh0Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldFRvcCArIHRl
eHQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nVGFwKSB7CisgICAg
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nVGFwKHgsIHkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGRlYnVnKCJnZXN0dXJlTG9uZ1RhcCBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9y
bSIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xv
bmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzQzMTVmYzYxZjJlM2U2YjQ3
MzA0N2I4MDRlMTUxMzEzZWRlNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRy
aWdnZXJzLWRyYWcuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBsb25nIHBy
ZXNzIGdlc3R1cmUgb24gYSBkcmFnZ2FibGUgZWxlbWVudCBzdGFydHMgYSBkcmFnL2Ryb3Agc2Vz
c2lvbi48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQi
PkZBSUw8L2Rpdj4KKzxkaXYgaWQ9ImRyYWdnYWJsZURpdiIgZHJhZ2dhYmxlPSd0cnVlJz5EcmFn
IG1lPC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGlmICh0
ZXN0UnVubmVyLmVuYWJsZVRvdWNoRHJhZ0Ryb3ApCisgICAgICAgIHRlc3RSdW5uZXIuZW5hYmxl
VG91Y2hEcmFnRHJvcCh0cnVlKTsKKworICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rp
b24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFT
UyI7IH0KKworICAgIHZhciBkcmFnYWJsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
cmFnZ2FibGVEaXYiKTsKKworICAgIHZhciB4ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0ICsgZHJhZ2dhYmxlRGl2Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gZHJh
Z2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0VG9w
ICsgZHJhZ2dhYmxlRGl2Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVu
dFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9u
Z1ByZXNzKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MoeCwgeSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1
ZygiZ2VzdHVyZUxvbmdQcmVzcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQt
bWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NzM1ZmFlZmUzODFl
NzVjZGRmY2ZlMmI0MjEyNzJhNmYyNWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51
LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgdGhhdCB0aGUgY29udGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuCisK
K1Rlc3RpbmcKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVu
dC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxl
bWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJhNDVlYzA5ZmFi
Mzc2ZGE1MmQ4YWMxYTE3NGQ0NzczNTQzZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNz
LW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEg
ZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uCisKK1Rlc3RpbmcK
K1BBU1MKK0RyYWcgbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90
b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKaW5kZXggMTk1MWY5NzYx
NzAzMmFmMTBjMGNmZDExNGQ2MDEyYWFlMzJjN2E1MC4uYzIyMDM2Yzg1OTdjNWM2ODkwOGQxNDNl
Nzg1OTVhMjQ4NzE4ZDliMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50
L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw0IEBACi1UZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdn
ZXIgYSBjb250ZXh0IG1lbnUgd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCitUZXN0cyBp
ZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Ag
d2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtz
LWxvbmdwcmVzcy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtz
LWxvbmdwcmVzcy5odG1sCmluZGV4IGRjYTkwN2JmZTA5MmJhODNkOTU2OTI2ZDVmY2JjNGU4M2Nh
YWNlMzEuLjNkMzM0NzMyY2FiNzFmNzM0YTY0NjM4Mjg5OGYyYjVkZjEyNGI2ZTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNz
Lmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0g
ICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBjb250ZXh0IG1lbnUg
d2lsbCBhcHBlYXIgb24gYSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KKyAgICA8dGl0
bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3RpbmcgdGhhdCBhIGRyYWcvZHJvcCB3aWxsIHN0YXJ0
IG9uIGEgbG9uZyBwcmVzcyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxl
PgpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoYSk7CiAgICAgfSk7CiAKLSAgICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24o
KSB7IGRlYnVnKCJQQVNTIik7IH0KKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9u
KGUpIHsgZGVidWcoIlBBU1MiKTsgZS5wcmV2ZW50RGVmYXVsdCgpO30KIAogICAgIGZ1bmN0aW9u
IHRlc3RMb25nUHJlc3ModG91Y2hwb2ludCkKICAgICB7CkBAIC04OSw3ICs4OSw4IEBACiAgICAg
ZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
ICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0
Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9u
ZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVu
IHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZW5h
YmxlVG91Y2hEcmFnRHJvcCh0cnVlKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBp
ZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Ag
d2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuJyk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0
VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdEluZGlyZWN0VG91Y2hlcygpOwogICAgICAgICAg
ICAgZS5zYW5kYm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175730</attachid>
            <date>2012-11-22 20:49:26 -0800</date>
            <delta_ts>2012-11-23 11:16:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121122234710.patch</filename>
            <type>text/plain</type>
            <size>27652</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uMTExYjMxNTAzODY5ZjdjZDIyNWM3MzIxZDZhOWRj
NTdiMWY4YTllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTIyICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKwogMjAxMi0xMS0yMiAg
Sm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3Np
emluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYWU3MDVmODc3NTg0NDQyY2UwYzFmNzBjZjA0
MDE4MjI2OWY0NzgwLi45M2E3NDNhOWQwOWZlM2M3ZWUzMzE5YTg5NDlmMGZjOTRmODU3ODRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIyICBW
YXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3Mg
YW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250
ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5n
IGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBp
cyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAg
ICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMg
dGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFw
LCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1
c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogcHVibGljL1dlYlZp
ZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJWaWV3SW1wbCk6CisKIDIwMTItMTEtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgT1MhPSJpb3MiIHRvIGd1YXJkIGZvciBn
Y2NfdmVyc2lvbiBpbiBXZWJLaXQuZ3lwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYWM1MGRlNWM2NWMyZTc1MzNjZmI3YjI4MDJiZDZmNGExYWYxZDUyNi4uNDEwYzFhNGQ5
NzVlYWIwNTAxN2VjMmU0MjVlZmE5ZDUwODdkZmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzQ4LDYgKzM0OCw4IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5n
QXZlcmFnZSgwKQogICAgICwgbV9iYXNlRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSkK
KyAgICAsIG1fZGlkU3RhcnREcmFnKGZhbHNlKQorICAgICwgbV90b3VjaERyYWdEcm9wRW5hYmxl
ZChmYWxzZSkKIHsKIH0KIApAQCAtNDAxLDYgKzQwMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpj
bGVhcigpCiAjZW5kaWYKICAgICBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlID0g
MDsKICAgICBtX2Jhc2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpOb1R5cGU7CisgICAgbV9k
aWRTdGFydERyYWcgPSBmYWxzZTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6Om5vZGVXaWxsQmVS
ZW1vdmVkKE5vZGUqIG5vZGVUb0JlUmVtb3ZlZCkKQEAgLTcxMSw3ICs3MTQsNyBAQCBzdGF0aWMg
Ym9vbCBjYW5BdXRvc2Nyb2xsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChj
b25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKLSAgICBpZiAoaGFu
ZGxlRHJhZyhldmVudCkpCisgICAgaWYgKGhhbmRsZURyYWcoZXZlbnQsIFNob3VsZENoZWNrRHJh
Z0h5c3RlcmVzaXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghbV9tb3VzZVBy
ZXNzZWQpCkBAIC0xMzkzLDYgKzEzOTYsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVzZUhhbmRD
dXJzb3IoTm9kZSogbm9kZSwgYm9vbCBpc092ZXJMaW5rLCBib29sIHNoaWZ0S2V5KQogICAgIHJl
dHVybiAoKGlzT3ZlckxpbmsgfHwgaXNTdWJtaXRJbWFnZShub2RlKSkgJiYgKCFlZGl0YWJsZSB8
fCBlZGl0YWJsZUxpbmtFbmFibGVkKSk7CiB9CiAKK3ZvaWQgRXZlbnRIYW5kbGVyOjplbmFibGVU
b3VjaERyYWdEcm9wKGJvb2wgZW5hYmxlKQoreworICAgIG1fdG91Y2hEcmFnRHJvcEVuYWJsZWQg
PSBlbmFibGU7Cit9CisKIE9wdGlvbmFsQ3Vyc29yIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29y
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBTY3JvbGxiYXIqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAobV9yZXNpemVMYXllciAmJiBtX3Jlc2l6ZUxheWVyLT5pblJl
c2l6ZU1vZGUoKSkKQEAgLTI1OTgsNiArMjYwNiw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
ICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUYXBEb3duKCk7CiAgICAgY2FzZSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUxv
bmdQcmVzcyhnZXN0dXJlRXZlbnQpOworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxv
bmdUYXA6CisgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1RhcChnZXN0dXJlRXZlbnQp
OwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAg
cmV0dXJuIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CkBAIC0yNjQ4LDkgKzI2NTgsMzUgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVM
b25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKKyNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGlmIChtX3RvdWNoRHJhZ0Ryb3BFbmFibGVkKSB7
CisgICAgICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQgPSBnZXN0dXJlRXZlbnQucG9zaXRpb24o
KTsKKyNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKKyAgICAgICAgYWRqdXN0R2VzdHVyZVBv
c2l0aW9uKGdlc3R1cmVFdmVudCwgYWRqdXN0ZWRQb2ludCk7CisjZW5kaWYKKyAgICAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IG1vdXNlRG93bkV2ZW50KGFkanVzdGVkUG9pbnQsIGdlc3R1cmVFdmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNz
ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOwor
ICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VEb3duRXZlbnQpOworICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VEcmFnRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92
ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOwor
ICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7
CisgICAgICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNl
RXZlbnQocmVxdWVzdCwgbW91c2VEcmFnRXZlbnQpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9
IGZhbHNlOworICAgICAgICBoYW5kbGVEcmFnKG1ldiwgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMp
OworICAgICAgICBpZiAobV9kaWRTdGFydERyYWcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25P
ckNvbnRleHRNZW51KGdlc3R1cmVFdmVudCk7CiB9CiAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVHZXN0dXJlTG9uZ1RhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50
KQoreworI2lmICFPUyhBTkRST0lEKQorICAgIHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZv
ckdlc3R1cmUoZ2VzdHVyZUV2ZW50KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9y
Q29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsK
ICNpZiBPUyhBTkRST0lEKQpAQCAtMjc2MSw2ICsyNzk3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmFkanVzdEdlc3R1cmVQb3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW4KICAgICAgICAgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVu
dC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdl
c3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQ
cmVzczoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgYmVzdENvbnRleHRN
ZW51Tm9kZUZvclRvdWNoUG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2Vz
dHVyZUV2ZW50LmFyZWEoKS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQo
KSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MzMxLDcgKzMzNjgsNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VB
Y3Rpb24gbikKICAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKIH0KIAotYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcmFnSHlzdGVyZXNpcyBjaGVja0RyYWdIeXN0
ZXJlc2lzKQogewogICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24g
fHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewog
ICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8g
aGFuZGxlIGEgZHJhZwpAQCAtMzQxMCw3ICszNDQ3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlmICgh
ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKKyAgICBp
ZiAoY2hlY2tEcmFnSHlzdGVyZXNpcyA9PSBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzICYmICFk
cmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNp
cyBwb2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawpA
QCAtMzQ2MSwxMSArMzQ5OCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURv
d25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICAgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRy
YWdDb250cm9sbGVyKCkgOiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRy
b2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwg
c3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgbV9kaWRTdGFy
dERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwog
ICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFy
dCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMg
d2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkCiAgICAgICAgIC8vIGFuZCB0aGUg
cHJvbWlzZWQgdHlwZXMuCi0gICAgICAgIGlmIChzdGFydGVkRHJhZykgeworICAgICAgICBpZiAo
bV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0g
ZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzQ4Niw2ICsz
NTIzLDcgQEAgY2xlYW51cERyYWc6CiAgICAgLy8gTm8gbW9yZSBkZWZhdWx0IGhhbmRsaW5nIChs
aWtlIHNlbGVjdGlvbiksIHdoZXRoZXIgd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBib3VuZHMg
b3Igbm90CiAgICAgcmV0dXJuIHRydWU7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBT
dHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlwZSBp
bnB1dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmY2JjZDYxNmI0ODQ5
NDZmMTZkYTgxNjhlYmZhM2VhMTMzMTdmZDgyLi5jYjdlMGQ0ZDI3MjcxMjk5MjgyZGZkNjdkMmEy
MzA1NWE4MWNjNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTkxLDYgKzkx
LDcgQEAgZXh0ZXJuIGNvbnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAKIGVudW0gSGl0
VGVzdFNjcm9sbGJhcnMgeyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycywgRG9udEhpdFRlc3RTY3Jv
bGxiYXJzIH07CiBlbnVtIEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB7IFNob3VsZEFwcGVuZFRy
YWlsaW5nV2hpdGVzcGFjZSwgRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB9OworZW51bSBD
aGVja0RyYWdIeXN0ZXJlc2lzIHsgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcywgRG9udENoZWNr
RHJhZ0h5c3RlcmVzaXMgfTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShFdmVudEhhbmRsZXIpOwpAQCAtMTcwLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwog
ICAgIGJvb2wgaGFuZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwog
ICAgIGJvb2wgaGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCYpOworICAgIGJvb2wgaGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGlzU2Nyb2xsYmFySGFuZGxpbmdH
ZXN0dXJlcygpIGNvbnN0OwpAQCAtMjQwLDYgKzI0Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgYm9vbCB1c2VIYW5kQ3Vyc29yKE5vZGUqLCBib29sIGlzT3ZlckxpbmssIGJvb2wgc2hpZnRL
ZXkpOworICAgIHZvaWQgZW5hYmxlVG91Y2hEcmFnRHJvcChib29sIGVuYWJsZSk7CiAKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTMwNyw3ICszMTAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBmcmVlQ2xpcGJvYXJkKCk7CiAKLSAgICBib29sIGhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOworICAgIGJvb2wgaGFuZGxlRHJhZyhj
b25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7
CiAjZW5kaWYKICAgICBib29sIGhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00NjgsNiArNDcxLDgg
QEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVy
YWdlOwogICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbV9iYXNlRXZlbnRUeXBlOworICAgIGJvb2wg
bV9kaWRTdGFydERyYWc7CisgICAgYm9vbCBtX3RvdWNoRHJhZ0Ryb3BFbmFibGVkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
dy5oCmluZGV4IDJlYzFiMWJhZGEwYWVkOWY1MDUzY2M3YjhjMjA2NzkyMjhiZTFkNTYuLmE3NmYy
M2U4NzFmMzI0ODkwMmQ4ZjJmNzk3MDgxYTgwYzQxODUxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTMyMSw2ICszMjEsOSBAQCBwdWJsaWM6CiAgICAgLy8g
V2ViVmlldyAoaWYgdGhlcmUgaXMgc3VjaCBhbiBpbWFnZSkKICAgICB2aXJ0dWFsIHZvaWQgY29w
eUltYWdlQXQoY29uc3QgV2ViUG9pbnQmKSA9IDA7CiAKKyAgICAvLyBFbmFibGVzL0Rpc2FibGVz
IHRvdWNoIGluaXRpYXRlZCBkcmFnIGFuZCBkcm9wLgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGVU
b3VjaERyYWdEcm9wKGJvb2wgZW5hYmxlKSA9IDA7CisKICAgICAvLyBOb3RpZmllcyB0aGUgV2Vi
VmlldyB0aGF0IGEgZHJhZyBoYXMgdGVybWluYXRlZC4KICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1Nv
dXJjZUVuZGVkQXQoCiAgICAgICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwgY29uc3Qg
V2ViUG9pbnQmIHNjcmVlblBvaW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDdhYTEyMDQ4ZmI2MGRjZjYyMDk1YjBiMWQ2MjBiOGI5YjgyNTUzZDEu
LmI3NDVhZDg2MGQwOGM4N2NmYjg1NzBlYTMxYzhlOWJkYjE2YWQ5YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMyMDIsNiArMzIwMiwxMiBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpjb3B5SW1hZ2VBdChjb25zdCBXZWJQb2ludCYgcG9pbnQpCiAgICAg
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvcHlJbWFnZShyZXN1bHQpOwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjplbmFibGVUb3VjaERyYWdEcm9wKGJvb2wgZW5hYmxlKQoreworICAg
IGlmIChtYWluRnJhbWVJbXBsKCkgJiYgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpKQorICAgICAg
ICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5lbmFibGVUb3VjaERy
YWdEcm9wKGVuYWJsZSk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdTb3VyY2VFbmRlZEF0
KAogICAgIGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKICAgICBjb25zdCBXZWJQb2ludCYg
c2NyZWVuUG9pbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCBkYTVmNjliOWVkNWU3NDNiNjQzZjM5NzBmMjFhN2NmNjc5MzdmMTQwLi4zOTZmOTIxZjRhOGY1
N2YxYTg3MjUxMTkxZWI4MTExNjhiMzA2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKQEAgLTI1MCw2ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IFdlYlBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRB
dChjb25zdCBXZWJQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VBdChjb25zdCBX
ZWJQb2ludCYgcG9pbnQpOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUb3VjaERyYWdEcm9wKGJv
b2wgZW5hYmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoCiAgICAgICAg
IGNvbnN0IFdlYlBvaW50JiBjbGllbnRQb2ludCwKICAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvaW50LApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDEyMGYxZTNlMjM1NDg0NDhkNjgyMTkyYmM3MzgwYmFlYjY0YWU4YjkuLjhkYmMwMzg4
ZTQxMGI3YWUxODM3YWE4Yzg1MzY4YTJmZjk2Mjk5YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMS0yMiAg
VmFydW4gSmFpbiAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNz
IGFuZCBMb25nVGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29u
dGV4dCBtZW51IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGlu
ZyBhIG1vdXNlIGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcg
aXMgbm90IHN0YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAg
ICAgIGVsZW1lbnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlz
IHRoZSBjdXJyZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1Rh
cCwgd2UgdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3Mg
dXNlcyB0byBzdW1tb24gdGhlIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50
U2VuZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9u
Z1RhcCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5oOgorICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpUZXN0UnVubmVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEyLTExLTIyICBQZXRl
ciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJl
dHVybiBhbiBhY2N1cmF0ZSBleGl0IGNvZGUgd2hlbiBydW5uaW5nIEFuZHJvaWQgc3VpdGVzLCBh
bmQgd2FpdCBhZnRlciByZXN0YXJ0aW5nIGFkYiBhcyByb290CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5j
cHAKaW5kZXggMTcxZTI1ZGRiN2ExMmEyMzYxNjZhYzFjZWIwNjQ2YmJjYWRhZWIwNi4uNzczYTU2
YjE3OTYyZDQzYWQ1NWNiNzU4Y2E4MThhNWMyZDdjZTRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVy
LmNwcApAQCAtMjk2LDYgKzI5Niw3IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiAgICAg
YmluZE1ldGhvZCgiZ2VzdHVyZVRhcERvd24iLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXBEb3du
KTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVGFwQ2FuY2VsIiwgJkV2ZW50U2VuZGVyOjpnZXN0
dXJlVGFwQ2FuY2VsKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1ByZXNzIiwgJkV2ZW50
U2VuZGVyOjpnZXN0dXJlTG9uZ1ByZXNzKTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1Rh
cCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdUYXApOwogICAgIGJpbmRNZXRob2QoImdlc3R1
cmVUd29GaW5nZXJUYXAiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXApOwogICAg
IGJpbmRNZXRob2QoInpvb21QYWdlSW4iLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlSW4pOwogICAg
IGJpbmRNZXRob2QoInpvb21QYWdlT3V0IiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZU91dCk7CkBA
IC0xMTM3LDYgKzExMzgsMTIgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdQcmVzcyhj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICBnZXN0dXJl
RXZlbnQoV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcywgYXJndW1lbnRzKTsKIH0KIAor
dm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
KyAgICBnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdUYXAsIGFyZ3VtZW50
cyk7Cit9CisKIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1
bHQtPnNldE51bGwoKTsKQEAgLTEyMDYsOCArMTIxMywxNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpn
ZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExp
c3QmCiAgICAgICAgIGV2ZW50LnggPSBwb2ludC54OwogICAgICAgICBldmVudC55ID0gcG9pbnQu
eTsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgewotICAgICAgICAgICAgZXZl
bnQuZGF0YS50YXBEb3duLndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50
b0RvdWJsZSgpKTsKLSAgICAgICAgICAgIGV2ZW50LmRhdGEudGFwRG93bi5oZWlnaHQgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZl
bnQuZGF0YS5sb25nUHJlc3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJd
LnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwOgor
ICAgICAgICBldmVudC54ID0gcG9pbnQueDsKKyAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7Cisg
ICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID49IDQpIHsKKyAgICAgICAgICAgIGV2ZW50LmRh
dGEubG9uZ1ByZXNzLndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0Rv
dWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRp
Y19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0V2ZW50U2VuZGVyLmgKaW5kZXggYzVkNzQyYjVmYjY2MjNmNDA0NGQ5MmY5MjBiYjNhMzE1
NDQ0YzYzNC4uYjFkYTY4NDg3NjExMDhiNGE2YzdhNmJmMzE4Njk2YzU5MTVmYmIyYyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9FdmVudFNlbmRlci5oCkBAIC0xMTEsNiArMTExLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2Vz
dHVyZVRhcERvd24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgZ2VzdHVyZVRhcENhbmNlbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBnZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKyAgICB2b2lkIGdlc3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdlYktpdDo6
V2ViSW5wdXRFdmVudDo6VHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0Jik7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHAKaW5kZXggMzcwNzg5MjdkOTkyYjgzNWQzMGM5NWZjZDI2ZDQxNThiOWNiNmJk
ZC4uZjY1MDUxOTBlZDNmMDJjZmE2N2Y3OWUwYzFmMWZiZDZjNDJjNzVjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAg
ICAgYmluZE1ldGhvZCgic2V0UGFnZVZpc2liaWxpdHkiLCAmVGVzdFJ1bm5lcjo6c2V0UGFnZVZp
c2liaWxpdHkpOwogICAgIGJpbmRNZXRob2QoInNldFRleHREaXJlY3Rpb24iLCAmVGVzdFJ1bm5l
cjo6c2V0VGV4dERpcmVjdGlvbik7CiAgICAgYmluZE1ldGhvZCgidGV4dFN1cnJvdW5kaW5nTm9k
ZSIsICZUZXN0UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKTsKKyAgICBiaW5kTWV0aG9kKCJl
bmFibGVUb3VjaERyYWdEcm9wIiwgJlRlc3RSdW5uZXI6OmVuYWJsZVRvdWNoRHJhZ0Ryb3ApOwog
CiAgICAgLy8gUHJvcGVydGllcy4KICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50
IiwgJlRlc3RSdW5uZXI6OndvcmtlclRocmVhZENvdW50KTsKQEAgLTY2NCw2ICs2NjUsMTUgQEAg
dm9pZCBUZXN0UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1RleHQu
dGV4dENvbnRlbnQoKS51dGY4KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmVuYWJsZVRvdWNo
RHJhZ0Ryb3AoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSAhPSAxIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fd2ViVmlldy0+ZW5hYmxlVG91Y2hEcmFnRHJvcChhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkp
OworfQorCiB2b2lkIFRlc3RSdW5uZXI6OndvcmtlclRocmVhZENvdW50KENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICByZXN1bHQtPnNldChzdGF0aWNfY2FzdDxpbnQ+KFdlYldvcmtlckluZm86
OmRlZGljYXRlZFdvcmtlckNvdW50KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCBmOWU5Zjdh
MjQ2YTA5N2FjYzFkZWM5YjNkMjhhZGVlMTgwODMzYjgzLi5hOTFhZTIxZWE3NmMyYWEzYTMxNTA5
NDQyODE1Y2JmYmU4YjgzZWM3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0xNDcsNiArMTQ3LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBwb2ludCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgbm9k
ZSBhbmQgdGhlIGZvdXJ0aCB0aGUgbWF4aW11bSB0ZXh0CiAgICAgLy8gbGVuZ3RoIHRvIHJldHJp
ZXZlLgogICAgIHZvaWQgdGV4dFN1cnJvdW5kaW5nTm9kZShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBlbmFibGVUb3VjaERyYWdEcm9wKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAg
IC8vIFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGUxNGEwYmZlY2IyMWRhYzdkNGQxNzc3NzEwNDVhNDI2
NTAwNzdmLi40Y2MzZjljM2E0Yjc0YzUwYzkyNDQzYzI1ODI4NTY5MGYzODhhOGZhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMjIgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQg
c3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNz
LCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFn
CisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJl
IHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNv
bnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlv
ciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rp
b25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1l
bnUuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1v
bi1sb25nLXRhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVz
cy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5o
dG1sOgorCiAyMDEyLTExLTIyICBKb2huIE1lbGxvciAgPGpvaG5tZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBJbXByb3ZlIGhhbmRsaW5nIG9mIG5lc3RlZCBjb21t
ZW50cyBvbiByZWRkaXQuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OGI2MmJkMDFkNTI1YjU4ZjdmOTQ1NzIxMTAzZDc1YTAwZjk2MzIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250
ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQg
dGhlIGNvbnRleHQgbWVudSBpcyBzaG93biBvbiBsb25nIHRhcCBnZXN0dXJlLjwvcD4KKzxkaXYg
aWQ9InRleHQiPlRlc3Rpbmc8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBkb2N1bWVudC5vbmNvbnRleHRt
ZW51ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRleHQiKTsKKworICAgIHZhciB4ID0gdGV4dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IHRleHQub2Zmc2V0TGVmdCArIDQ7CisgICAgdmFyIHkgPSB0ZXh0Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3AgKyB0ZXh0Lm9mZnNldFRvcCArIHRleHQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAgIGlm
ICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50U2Vu
ZGVyLmdlc3R1cmVMb25nVGFwKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nVGFw
KHgsIHkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJnZXN0dXJlTG9uZ1RhcCBub3Qg
aW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICByZXR1cm47CisgICAgfQor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQt
dHJpZ2dlcnMtZHJhZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNzQzMTVmYzYxZjJlM2U2YjQ3MzA0N2I4MDRlMTUxMzEzZWRlNGE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXBy
ZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbApAQCAtMCwwICsxLDM5
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlz
IHRlc3QgY2hlY2tzIHRoYXQgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gYSBkcmFnZ2FibGUgZWxl
bWVudCBzdGFydHMgYSBkcmFnL2Ryb3Agc2Vzc2lvbi48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0
aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KKzxkaXYgaWQ9ImRyYWdnYWJs
ZURpdiIgZHJhZ2dhYmxlPSd0cnVlJz5EcmFnIG1lPC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKworICAgIGlmICh0ZXN0UnVubmVyLmVuYWJsZVRvdWNoRHJhZ0Ryb3Ap
CisgICAgICAgIHRlc3RSdW5uZXIuZW5hYmxlVG91Y2hEcmFnRHJvcCh0cnVlKTsKKworICAgIGRv
Y3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZhciBkcmFnYWJsZURpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVEaXYiKTsKKworICAgIHZhciB4ID0g
ZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZHJhZ2dhYmxlRGl2Lm9mZnNl
dExlZnQgKyA0OworICAgIHZhciB5ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNldEhlaWdodCAv
IDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKSB7CisgICAgICAgIGV2ZW50U2VuZGVy
Lmdlc3R1cmVMb25nUHJlc3MoeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdQcmVzcyBub3QgaW1wbGVt
ZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25n
LXRhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDc1NzM1ZmFlZmUzODFlNzVjZGRmY2ZlMmI0MjEyNzJhNmYyNWIyNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgY29udGV4dCBtZW51IGlzIHNo
b3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuCisKK1Rlc3RpbmcKK1BBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9u
Zy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
bG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNTJhNDVlYzA5ZmFiMzc2ZGE1MmQ4YWMxYTE3NGQ0NzczNTQzZjc5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJz
LWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJh
Zy9kcm9wIHNlc3Npb24uCisKK1Rlc3RpbmcKK1BBU1MKK0RyYWcgbWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1l
eHBlY3RlZC50eHQKaW5kZXggMTk1MWY5NzYxNzAzMmFmMTBjMGNmZDExNGQ2MDEyYWFlMzJjN2E1
MC4uYzIyMDM2Yzg1OTdjNWM2ODkwOGQxNDNlNzg1OTVhMjQ4NzE4ZDliMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdw
cmVzcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBpZiBhIGxvbmcgcHJlc3Mg
Z2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBjb250ZXh0IG1lbnUgd2hlbiB0b3VjaCBh
ZGp1c3RtZW50IGlzIHVzZWQuCitUZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5r
cyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sCmluZGV4IGRjYTkwN2Jm
ZTA5MmJhODNkOTU2OTI2ZDVmY2JjNGU4M2NhYWNlMzEuLjNkMzM0NzMyY2FiNzFmNzM0YTY0NjM4
Mjg5OGYyYjVkZjEyNGI2ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0gICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBU
ZXN0aW5nIHRoYXQgYSBjb250ZXh0IG1lbnUgd2lsbCBhcHBlYXIgb24gYSBsb25nIHByZXNzIC0g
YnVnIDkyOTE0PC90aXRsZT4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3Rpbmcg
dGhhdCBhIGRyYWcvZHJvcCB3aWxsIHN0YXJ0IG9uIGEgbG9uZyBwcmVzcyAtIGJ1ZyA5MjkxNDwv
dGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVu
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICBl
W2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CiAgICAgfSk7CiAKLSAgICBkb2N1bWVu
dC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJQQVNTIik7IH0KKyAgICBkb2N1
bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKGUpIHsgZGVidWcoIlBBU1MiKTsgZS5wcmV2ZW50
RGVmYXVsdCgpO30KIAogICAgIGZ1bmN0aW9uIHRlc3RMb25nUHJlc3ModG91Y2hwb2ludCkKICAg
ICB7CkBAIC04OSw3ICs4OSw4IEBACiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJu
YWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAg
ZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwg
dHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuZW5hYmxlVG91Y2hEcmFnRHJvcCh0cnVlKTsKKyAgICAg
ICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5r
cyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQu
Jyk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgdGVzdElu
ZGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgZS5zYW5kYm94LnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175829</attachid>
            <date>2012-11-23 11:16:05 -0800</date>
            <delta_ts>2012-11-25 16:48:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121123141348.patch</filename>
            <type>text/plain</type>
            <size>27870</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uMTExYjMxNTAzODY5ZjdjZDIyNWM3MzIxZDZhOWRj
NTdiMWY4YTllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTIyICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKwogMjAxMi0xMS0yMiAg
Sm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3Np
emluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYWU3MDVmODc3NTg0NDQyY2UwYzFmNzBjZjA0
MDE4MjI2OWY0NzgwLi45M2E3NDNhOWQwOWZlM2M3ZWUzMzE5YTg5NDlmMGZjOTRmODU3ODRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIyICBW
YXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3Mg
YW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250
ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5n
IGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBp
cyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAg
ICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMg
dGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFw
LCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1
c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogcHVibGljL1dlYlZp
ZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJWaWV3SW1wbCk6CisKIDIwMTItMTEtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgT1MhPSJpb3MiIHRvIGd1YXJkIGZvciBn
Y2NfdmVyc2lvbiBpbiBXZWJLaXQuZ3lwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYWM1MGRlNWM2NWMyZTc1MzNjZmI3YjI4MDJiZDZmNGExYWYxZDUyNi4uZjQ2MzkyNjRm
ZWMzZjE1NjFiNzdkYWYxYjQ3YTE3ZDc2ZmYxMzQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzQ4LDYgKzM0OCw5IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5n
QXZlcmFnZSgwKQogICAgICwgbV9iYXNlRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSkK
KyAgICAsIG1fZGlkU3RhcnREcmFnKGZhbHNlKQorICAgICwgbV90b3VjaERyYWdEcm9wRW5hYmxl
ZChmYWxzZSkKKyAgICAsIG1fZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnUoZmFsc2UpCiB7
CiB9CiAKQEAgLTQwMSw2ICs0MDQsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2Vu
ZGlmCiAgICAgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSA9IDA7CiAgICAgbV9i
YXNlRXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFn
ID0gZmFsc2U7CisgICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IGZhbHNlOwog
fQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbm9kZVRvQmVS
ZW1vdmVkKQpAQCAtNzExLDcgKzcxNiw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50KSkKKyAgICBp
ZiAoaGFuZGxlRHJhZyhldmVudCwgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcykpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFtX21vdXNlUHJlc3NlZCkKQEAgLTEzOTMsNiArMTM5
OCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXNlSGFuZEN1cnNvcihOb2RlKiBub2RlLCBib29s
IGlzT3ZlckxpbmssIGJvb2wgc2hpZnRLZXkpCiAgICAgcmV0dXJuICgoaXNPdmVyTGluayB8fCBp
c1N1Ym1pdEltYWdlKG5vZGUpKSAmJiAoIWVkaXRhYmxlIHx8IGVkaXRhYmxlTGlua0VuYWJsZWQp
KTsKIH0KIAordm9pZCBFdmVudEhhbmRsZXI6OmVuYWJsZVRvdWNoRHJhZ0Ryb3AoYm9vbCBlbmFi
bGUpCit7CisgICAgbV90b3VjaERyYWdEcm9wRW5hYmxlZCA9IGVuYWJsZTsKK30KKwogT3B0aW9u
YWxDdXJzb3IgRXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewogICAgIGlmICht
X3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmluUmVzaXplTW9kZSgpKQpAQCAtMjU5OCw2
ICsyNjA4LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxl
R2VzdHVyZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJl
c3M6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGdlc3R1cmVFdmVudCk7
CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgcmV0dXJu
IGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVR3
b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZURvdWJsZVRhcDoKQEAgLTI2NDgsOSArMjY2MCwzNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQog
CiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CisgICAgaWYgKG1fdG91Y2hEcmFnRHJvcEVuYWJsZWQpIHsKKyAgICAgICAgSW50UG9pbnQgYWRq
dXN0ZWRQb2ludCA9IGdlc3R1cmVFdmVudC5wb3NpdGlvbigpOworI2lmIEVOQUJMRShUT1VDSF9B
REpVU1RNRU5UKQorICAgICAgICBhZGp1c3RHZXN0dXJlUG9zaXRpb24oZ2VzdHVyZUV2ZW50LCBh
ZGp1c3RlZFBvaW50KTsKKyNlbmRpZgorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VE
b3duRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgICAgIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChtb3VzZURvd25FdmVudCk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3Vz
ZURyYWdFdmVudChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwg
TGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0
IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICAgICAgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZURy
YWdFdmVudCk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7CisgICAgICAgIGhhbmRs
ZURyYWcobWV2LCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CisgICAgICAgIGlmIChtX2RpZFN0
YXJ0RHJhZykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIHJl
dHVybiBoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoZ2VzdHVyZUV2
ZW50KTsKIH0KIAorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit7CisjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpICYmICFPUyhBTkRST0lEKQorICAgIGlmICghbV9kaWRMb25nUHJlc3NJbnZva2VD
b250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVy
ZShnZXN0dXJlRXZlbnQpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAjaWYgT1MoQU5EUk9J
RCkKQEAgLTI2NjQsNiArMjcwMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJl
Rm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0CiAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgbV9kaWRMb25nUHJlc3NJbnZv
a2VDb250ZXh0TWVudSA9IChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdl
c3R1cmVMb25nUHJlc3MpOwogICAgIHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1
cmUoZ2VzdHVyZUV2ZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2MSw2ICsy
ODAwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmFkanVzdEdlc3R1cmVQb3NpdGlvbihjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW4KICAgICAgICAgYmVzdENsaWNrYWJsZU5v
ZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVF
dmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdlc3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAy
KSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVMb25nVGFwOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0Zpbmdl
clRhcDoKICAgICAgICAgYmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoZ2VzdHVyZUV2
ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFyZWEoKS53aWR0aCgpIC8gMiwg
Z2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0YXJnZXRO
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMzMxLDcgKzMzNzEsNyBAQCBzdGF0aWMgYm9vbCBF
eGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKICAgICByZXR1cm4gbiAmJiAhKG4g
JiAobiAtIDEpKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tE
cmFnSHlzdGVyZXNpcyBjaGVja0RyYWdIeXN0ZXJlc2lzKQogewogICAgIGlmIChldmVudC5ldmVu
dCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxh
dGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewogICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBv
dGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8gaGFuZGxlIGEgZHJhZwpAQCAtMzQxMCw3ICszNDUw
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vy
c29yKCkpOwogICAgIH0KIAotICAgIGlmICghZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5l
dmVudCgpLnBvc2l0aW9uKCkpKSAKKyAgICBpZiAoY2hlY2tEcmFnSHlzdGVyZXNpcyA9PSBTaG91
bGRDaGVja0RyYWdIeXN0ZXJlc2lzICYmICFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2
ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIE9u
Y2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBwb2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVh
dCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawpAQCAtMzQ2MSwxMSArMzUwMSwxMSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdD
b250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkgOiAwOwotICAgICAgICBi
b29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0
RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VE
b3duUG9zKTsKKyAgICAgICAgbV9kaWRTdGFydERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFn
Q29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQu
ZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxk
IHJlZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFydCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9u
IE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0
ZWJvYXJkCiAgICAgICAgIC8vIGFuZCB0aGUgcHJvbWlzZWQgdHlwZXMuCi0gICAgICAgIGlmIChz
dGFydGVkRHJhZykgeworICAgICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAg
IG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZmNiY2Q2MTZi
NDg0OTQ2ZjE2ZGE4MTY4ZWJmYTNlYTEzMzE3ZmQ4Mi4uMzdlNDcwZTQ5Yzc5ZDA4YjAwZDNkZDQ4
YzViNGJjZjNiNTdlNzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC05MSw2
ICs5MSw3IEBAIGV4dGVybiBjb25zdCBpbnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogCiBlbnVt
IEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0
U2Nyb2xsYmFycyB9OwogZW51bSBBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgeyBTaG91bGRBcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgfTsKK2Vu
dW0gQ2hlY2tEcmFnSHlzdGVyZXNpcyB7IFNob3VsZENoZWNrRHJhZ0h5c3RlcmVzaXMsIERvbnRD
aGVja0RyYWdIeXN0ZXJlc2lzIH07CiAKIGNsYXNzIEV2ZW50SGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVyKTsKQEAgLTE3MCw2ICsxNzEsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRl
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBpc1Njcm9sbGJhckhhbmRs
aW5nR2VzdHVyZXMoKSBjb25zdDsKQEAgLTI0MCw2ICsyNDIsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIGJvb2wgdXNlSGFuZEN1cnNvcihOb2RlKiwgYm9vbCBpc092ZXJMaW5rLCBib29sIHNo
aWZ0S2V5KTsKKyAgICB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ryb3AoYm9vbCBlbmFibGUpOwogCiBw
cml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMDcsNyArMzEwLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZnJlZUNsaXBib2FyZCgpOwogCi0gICAgYm9vbCBoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKKyAgICBib29sIGhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVz
aXMpOwogI2VuZGlmCiAgICAgYm9vbCBoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNDY4LDYgKzQ3
MSw5IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5n
QXZlcmFnZTsKICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1fYmFzZUV2ZW50VHlwZTsKKyAgICBi
b29sIG1fZGlkU3RhcnREcmFnOworICAgIGJvb2wgbV90b3VjaERyYWdEcm9wRW5hYmxlZDsKKyAg
ICBib29sIG1fZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXgg
MmVjMWIxYmFkYTBhZWQ5ZjUwNTNjYzdiOGMyMDY3OTIyOGJlMWQ1Ni4uYTc2ZjIzZTg3MWYzMjQ4
OTAyZDhmMmY3OTcwODFhODBjNDE4NTEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaApAQCAtMzIxLDYgKzMyMSw5IEBAIHB1YmxpYzoKICAgICAvLyBXZWJWaWV3IChp
ZiB0aGVyZSBpcyBzdWNoIGFuIGltYWdlKQogICAgIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VBdChj
b25zdCBXZWJQb2ludCYpID0gMDsKIAorICAgIC8vIEVuYWJsZXMvRGlzYWJsZXMgdG91Y2ggaW5p
dGlhdGVkIGRyYWcgYW5kIGRyb3AuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ry
b3AoYm9vbCBlbmFibGUpID0gMDsKKwogICAgIC8vIE5vdGlmaWVzIHRoZSBXZWJWaWV3IHRoYXQg
YSBkcmFnIGhhcyB0ZXJtaW5hdGVkLgogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlRW5kZWRB
dCgKICAgICAgICAgY29uc3QgV2ViUG9pbnQmIGNsaWVudFBvaW50LCBjb25zdCBXZWJQb2ludCYg
c2NyZWVuUG9pbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggN2FhMTIwNDhmYjYwZGNmNjIwOTViMGIxZDYyMGI4YjliODI1NTNkMS4uYjc0NWFkODYw
ZDA4Yzg3Y2ZiODU3MGVhMzFjOGU5YmRiMTZhZDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzIwMiw2ICszMjAyLDEyIEBAIHZvaWQgV2ViVmll
d0ltcGw6OmNvcHlJbWFnZUF0KGNvbnN0IFdlYlBvaW50JiBwb2ludCkKICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29weUltYWdlKHJlc3VsdCk7CiB9CiAKK3ZvaWQgV2ViVmll
d0ltcGw6OmVuYWJsZVRvdWNoRHJhZ0Ryb3AoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKG1haW5G
cmFtZUltcGwoKSAmJiBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCkpCisgICAgICAgIG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmVuYWJsZVRvdWNoRHJhZ0Ryb3AoZW5h
YmxlKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ1NvdXJjZUVuZGVkQXQoCiAgICAgY29u
c3QgV2ViUG9pbnQmIGNsaWVudFBvaW50LAogICAgIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb2lu
dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGRhNWY2OWI5
ZWQ1ZTc0M2I2NDNmMzk3MGYyMWE3Y2Y2NzkzN2YxNDAuLjM5NmY5MjFmNGE4ZjU3ZjFhODcyNTEx
OTFlYjgxMTE2OGIzMDY1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViUG9pbnQm
KTsKICAgICB2aXJ0dWFsIFdlYkhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0KGNvbnN0IFdl
YlBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlJbWFnZUF0KGNvbnN0IFdlYlBvaW50JiBw
b2ludCk7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ryb3AoYm9vbCBlbmFibGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkcmFnU291cmNlRW5kZWRBdCgKICAgICAgICAgY29uc3QgV2Vi
UG9pbnQmIGNsaWVudFBvaW50LAogICAgICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9pbnQs
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTIw
ZjFlM2UyMzU0ODQ0OGQ2ODIxOTJiYzczODBiYWViNjRhZThiOS4uOGRiYzAzODhlNDEwYjdhZTE4
MzdhYThjODUzNjhhMmZmOTYyOTliNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTIyICBWYXJ1biBKYWlu
ICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5kIExvbmdU
YXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1lbnUg
cmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEgbW91c2Ug
ZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBub3Qgc3Rh
cnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAgZWxlbWVu
dCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhlIGN1cnJl
bnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3ZSB1c2Ug
dGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2VzIHRvIHN1
bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmg6
CisgICAgICAgIChFdmVudFNlbmRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RS
dW5uZXI6OmVuYWJsZVRvdWNoRHJhZ0Ryb3ApOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTItMTEtMjIgIFBldGVyIEJldmVybG9v
ICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmV0dXJuIGFuIGFj
Y3VyYXRlIGV4aXQgY29kZSB3aGVuIHJ1bm5pbmcgQW5kcm9pZCBzdWl0ZXMsIGFuZCB3YWl0IGFm
dGVyIHJlc3RhcnRpbmcgYWRiIGFzIHJvb3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAppbmRleCAx
NzFlMjVkZGI3YTEyYTIzNjE2NmFjMWNlYjA2NDZiYmNhZGFlYjA2Li43NzNhNTZiMTc5NjJkNDNh
ZDU1Y2I3NThjYTgxOGE1YzJkN2NlNGY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCkBAIC0y
OTYsNiArMjk2LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKICAgICBiaW5kTWV0aG9k
KCJnZXN0dXJlVGFwRG93biIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcERvd24pOwogICAgIGJp
bmRNZXRob2QoImdlc3R1cmVUYXBDYW5jZWwiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXBDYW5j
ZWwpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25nUHJlc3MiLCAmRXZlbnRTZW5kZXI6Omdl
c3R1cmVMb25nUHJlc3MpOworICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25nVGFwIiwgJkV2ZW50
U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVR3b0Zpbmdl
clRhcCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcCk7CiAgICAgYmluZE1ldGhv
ZCgiem9vbVBhZ2VJbiIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VJbik7CiAgICAgYmluZE1ldGhv
ZCgiem9vbVBhZ2VPdXQiLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0KTsKQEAgLTExMzcsNiAr
MTEzOCwxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIGdlc3R1cmVFdmVudChXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCBhcmd1bWVudHMpOwogfQogCit2b2lkIEV2ZW50
U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGdlc3R1
cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcCwgYXJndW1lbnRzKTsKK30KKwog
dm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwpAQCAtMTIwNiw4ICsxMjEzLDE2IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVu
dChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKICAgICAg
ICAgZXZlbnQueCA9IHBvaW50Lng7CiAgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OwogICAgICAg
ICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7Ci0gICAgICAgICAgICBldmVudC5kYXRhLnRh
cERvd24ud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkp
OwotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3duLmhlaWdodCA9IHN0YXRpY19jYXN0PGZs
b2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxv
bmdQcmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUo
KSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdUYXA6CisgICAgICAgIGV2
ZW50LnggPSBwb2ludC54OworICAgICAgICBldmVudC55ID0gcG9pbnQueTsKKyAgICAgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgeworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJl
c3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwor
ICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuaAppbmRleCBjNWQ3NDJiNWZiNjYyM2Y0MDQ0ZDkyZjkyMGJiM2EzMTU0NDRjNjM0Li5i
MWRhNjg0ODc2MTEwOGI0YTZjN2E2YmYzMTg2OTZjNTkxNWZiYjJjIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXN0dXJlVGFwRG93
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJl
VGFwQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lk
IGdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgZ2VzdHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgZ2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViS2l0OjpXZWJJbnB1dEV2
ZW50OjpUeXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cAppbmRleCAzNzA3ODkyN2Q5OTJiODM1ZDMwYzk1ZmNkMjZkNDE1OGI5Y2I2YmRkLi5mNjUwNTE5
MGVkM2YwMmNmYTY3Zjc5ZTBjMWYxZmJkNmM0MmM3NWNiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cApAQCAtOTgsNiArOTgsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0
aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7
CiAgICAgYmluZE1ldGhvZCgic2V0VGV4dERpcmVjdGlvbiIsICZUZXN0UnVubmVyOjpzZXRUZXh0
RGlyZWN0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJ0ZXh0U3Vycm91bmRpbmdOb2RlIiwgJlRlc3RS
dW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUpOworICAgIGJpbmRNZXRob2QoImVuYWJsZVRvdWNo
RHJhZ0Ryb3AiLCAmVGVzdFJ1bm5lcjo6ZW5hYmxlVG91Y2hEcmFnRHJvcCk7CiAKICAgICAvLyBQ
cm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1
bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpAQCAtNjY0LDYgKzY2NSwxNSBAQCB2b2lkIFRlc3RS
dW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbgogICAgIHJlc3VsdC0+c2V0KHN1cnJvdW5kaW5nVGV4dC50ZXh0Q29udGVu
dCgpLnV0ZjgoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6ZW5hYmxlVG91Y2hEcmFnRHJvcChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwg
IWFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJWaWV3
LT5lbmFibGVUb3VjaERyYWdEcm9wKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7Cit9CisKIHZv
aWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQoQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0PGludD4oV2ViV29ya2VySW5mbzo6ZGVkaWNhdGVk
V29ya2VyQ291bnQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGY5ZTlmN2EyNDZhMDk3YWNj
MWRlYzliM2QyOGFkZWUxODA4MzNiODMuLmE5MWFlMjFlYTc2YzJhYTNhMzE1MDk0NDI4MTVjYmZi
ZThiODNlYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwcml2YXRl
OgogICAgIC8vIHBvaW50IGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBub2RlIGFuZCB0aGUg
Zm91cnRoIHRoZSBtYXhpbXVtIHRleHQKICAgICAvLyBsZW5ndGggdG8gcmV0cmlldmUuCiAgICAg
dm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKKyAgICB2b2lkIGVuYWJsZVRvdWNoRHJhZ0Ryb3AoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gUHJvcGVy
dGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDc4ZTE0YTBiZmVjYjIxZGFjN2Q0ZDE3Nzc3MTA0NWE0MjY1MDA3N2YuLjRj
YzNmOWMzYTRiNzRjNTBjOTI0NDNjMjU4Mjg1NjkwZjM4OGE4ZmEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxMi0xMS0yMiAgVmFydW4gSmFpbiAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgTG9uZ1ByZXNzIGFuZCBMb25nVGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFn
L2Ryb3AgYW5kIG9wZW4gY29udGV4dCBtZW51IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVs
YXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAg
ZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMg
bm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51
IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25n
UHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAor
ICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1tb24gdGhlIGNvbnRleHQgbWVudS4KKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFw
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1w
cmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4
dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdn
YWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWw6CisKIDIw
MTItMTEtMjIgIEpvaG4gTWVsbG9yICA8am9obm1lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBU
ZXh0IEF1dG9zaXppbmc6IEltcHJvdmUgaGFuZGxpbmcgb2YgbmVzdGVkIGNvbW1lbnRzIG9uIHJl
ZGRpdC5jb20KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ4YjYyYmQwMWQ1MjViNThmN2Y5NDU3MjExMDNkNzVhMDBmOTYzMjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1v
bi1sb25nLXRhcC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgY29udGV4
dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuPC9wPgorPGRpdiBpZD0idGV4dCI+
VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRvY3VtZW50Lm9uY29udGV4dG1lbnUgPSBmdW5j
dGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQ
QVNTIjsgfQorCisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIp
OworCisgICAgdmFyIHggPSB0ZXh0Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgdGV4dC5vZmZz
ZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IHRleHQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIHRl
eHQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgaWYgKCF3aW5kb3cu
ZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZXZlbnRTZW5kZXIuZ2VzdHVy
ZUxvbmdUYXApIHsKKyAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdUYXAoeCwgeSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdlc3R1cmVMb25nVGFwIG5vdCBpbXBsZW1lbnRl
ZCBieSB0aGlzIHBsYXRmb3JtIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1k
cmFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJl
c3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3
NDMxNWZjNjFmMmUzZTZiNDczMDQ3YjgwNGUxNTEzMTNlZGU0YTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJh
Z2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVj
a3MgdGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50IHN0YXJ0
cyBhIGRyYWcvZHJvcCBzZXNzaW9uLjwvcD4KKzxkaXYgaWQ9InRleHQiPlRlc3Rpbmc8L2Rpdj4K
KzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgorPGRpdiBpZD0iZHJhZ2dhYmxlRGl2IiBkcmFn
Z2FibGU9J3RydWUnPkRyYWcgbWU8L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCisgICAgaWYgKHRlc3RSdW5uZXIuZW5hYmxlVG91Y2hEcmFnRHJvcCkKKyAgICAgICAg
dGVzdFJ1bm5lci5lbmFibGVUb3VjaERyYWdEcm9wKHRydWUpOworCisgICAgZG9jdW1lbnQub25k
cmFnc3RhcnQgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVySFRNTCA9ICJQQVNTIjsgfQorCisgICAgdmFyIGRyYWdhYmxlRGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZURpdiIpOworCisgICAgdmFyIHggPSBkcmFnZ2FibGVE
aXYub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkcmFnZ2FibGVEaXYub2Zmc2V0TGVmdCArIDQ7
CisgICAgdmFyIHkgPSBkcmFnZ2FibGVEaXYub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRyYWdn
YWJsZURpdi5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50
U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUxv
bmdQcmVzcyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGRlYnVnKCJnZXN0dXJlTG9uZ1ByZXNzIG5vdCBpbXBsZW1lbnRlZCBieSB0
aGlzIHBsYXRmb3JtIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzU3MzVmYWVmZTM4MWU3NWNkZGZjZmUyYjQyMTI3MmE2ZjI1YjI0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9u
ZyB0YXAgZ2VzdHVyZS4KKworVGVzdGluZworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9u
LWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNz
LW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM1MmE0NWVjMDlmYWIzNzZkYTUyZDhhYzFhMTc0ZDQ3NzM1NDNmNzkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBsb25nIHBy
ZXNzIGdlc3R1cmUgb24gYSBkcmFnZ2FibGUgZWxlbWVudCBzdGFydHMgYSBkcmFnL2Ryb3Agc2Vz
c2lvbi4KKworVGVzdGluZworUEFTUworRHJhZyBtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4
dAppbmRleCAxOTUxZjk3NjE3MDMyYWYxMGMwY2ZkMTE0ZDYwMTJhYWUzMmM3YTUwLi5jMjIwMzZj
ODU5N2M1YzY4OTA4ZDE0M2U3ODU5NWEyNDg3MThkOWIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9u
IGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFkanVzdG1lbnQg
aXMgdXNlZC4KK1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJp
Z2dlciBhIGRyYWcvZHJvcCB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKaW5kZXggZGNhOTA3YmZlMDkyYmE4M2Q5
NTY5MjZkNWZjYmM0ZTgzY2FhY2UzMS4uM2QzMzQ3MzJjYWI3MWY3MzRhNjQ2MzgyODk4ZjJiNWRm
MTI0YjZlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxp
bmtzLWxvbmdwcmVzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3Vj
aC1saW5rcy1sb25ncHJlc3MuaHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3RpbmcgdGhh
dCBhIGNvbnRleHQgbWVudSB3aWxsIGFwcGVhciBvbiBhIGxvbmcgcHJlc3MgLSBidWcgOTI5MTQ8
L3RpdGxlPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogVGVzdGluZyB0aGF0IGEgZHJh
Zy9kcm9wIHdpbGwgc3RhcnQgb24gYSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c3R5bGU+CkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgIGVbYV0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChhKTsKICAgICB9KTsKIAotICAgIGRvY3VtZW50Lm9uY29udGV4
dG1lbnUgPSBmdW5jdGlvbigpIHsgZGVidWcoIlBBU1MiKTsgfQorICAgIGRvY3VtZW50Lm9uZHJh
Z3N0YXJ0ID0gZnVuY3Rpb24oZSkgeyBkZWJ1ZygiUEFTUyIpOyBlLnByZXZlbnREZWZhdWx0KCk7
fQogCiAgICAgZnVuY3Rpb24gdGVzdExvbmdQcmVzcyh0b3VjaHBvaW50KQogICAgIHsKQEAgLTg5
LDcgKzg5LDggQEAKICAgICBmdW5jdGlvbiBydW5UZXN0cygpCiAgICAgewogICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91Y2hO
b2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdGlv
bignVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEg
Y29udGV4dCBtZW51IHdoZW4gdG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLicpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5lbmFibGVUb3VjaERyYWdEcm9wKHRydWUpOworICAgICAgICAgICAgZGVz
Y3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJp
Z2dlciBhIGRyYWcvZHJvcCB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsKICAgICAg
ICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3Vj
aGVzKCk7CiAgICAgICAgICAgICBlLnNhbmRib3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175897</attachid>
            <date>2012-11-25 16:48:43 -0800</date>
            <delta_ts>2012-11-25 16:56:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121125194623.patch</filename>
            <type>text/plain</type>
            <size>28978</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uMTExYjMxNTAzODY5ZjdjZDIyNWM3MzIxZDZhOWRj
NTdiMWY4YTllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTIyICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdl
L0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKwogMjAxMi0xMS0yMiAg
Sm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3Np
emluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYWU3MDVmODc3NTg0NDQyY2UwYzFmNzBjZjA0
MDE4MjI2OWY0NzgwLi45M2E3NDNhOWQwOWZlM2M3ZWUzMzE5YTg5NDlmMGZjOTRmODU3ODRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIyICBW
YXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3Mg
YW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250
ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5n
IGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBp
cyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAg
ICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMg
dGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFw
LCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1
c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogcHVibGljL1dlYlZp
ZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbmFibGVUb3VjaERyYWdEcm9wKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChX
ZWJWaWV3SW1wbCk6CisKIDIwMTItMTEtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgT1MhPSJpb3MiIHRvIGd1YXJkIGZvciBn
Y2NfdmVyc2lvbiBpbiBXZWJLaXQuZ3lwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggYWM1MGRlNWM2NWMyZTc1MzNjZmI3YjI4MDJiZDZmNGExYWYxZDUyNi4uMDRiZjNjOTcz
YTUyZDUzZWM3NTZlZTAzMTI5NmJiMmEwOGUzZGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzQ4LDYgKzM0OCw4IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5n
QXZlcmFnZSgwKQogICAgICwgbV9iYXNlRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSkK
KyAgICAsIG1fZGlkU3RhcnREcmFnKGZhbHNlKQorICAgICwgbV9kaWRMb25nUHJlc3NJbnZva2VD
b250ZXh0TWVudShmYWxzZSkKIHsKIH0KIApAQCAtNDAxLDYgKzQwMyw4IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpjbGVhcigpCiAjZW5kaWYKICAgICBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdB
dmVyYWdlID0gMDsKICAgICBtX2Jhc2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpOb1R5cGU7
CisgICAgbV9kaWRTdGFydERyYWcgPSBmYWxzZTsKKyAgICBtX2RpZExvbmdQcmVzc0ludm9rZUNv
bnRleHRNZW51ID0gZmFsc2U7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpub2RlV2lsbEJlUmVt
b3ZlZChOb2RlKiBub2RlVG9CZVJlbW92ZWQpCkBAIC03MTEsNyArNzE1LDcgQEAgc3RhdGljIGJv
b2wgY2FuQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKGhhbmRs
ZURyYWcoZXZlbnQpKQorICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50LCBTaG91bGRDaGVja0RyYWdI
eXN0ZXJlc2lzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91c2VQcmVz
c2VkKQpAQCAtMjU5OCw2ICsyNjAyLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAg
ICByZXR1cm4gaGFuZGxlR2VzdHVyZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVMb25nUHJlc3M6CiAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNz
KGdlc3R1cmVFdmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoK
KyAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4g
aGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKQEAgLTI2NDgsOSArMjY1NCwzNSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVz
cyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCisgICAgaWYgKG1fZnJhbWUtPnNldHRpbmdzKCktPmlzVG91Y2hEcmFn
RHJvcEVuYWJsZWQoKSkgeworICAgICAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50ID0gZ2VzdHVy
ZUV2ZW50LnBvc2l0aW9uKCk7CisjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCisgICAgICAg
IGFkanVzdEdlc3R1cmVQb3NpdGlvbihnZXN0dXJlRXZlbnQsIGFkanVzdGVkUG9pbnQpOworI2Vu
ZGlmCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURvd25FdmVudChhZGp1c3RlZFBv
aW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpj
dXJyZW50VGltZSgpKTsKKyAgICAgICAgaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRG93bkV2
ZW50KTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRHJhZ0V2ZW50KGFkanVzdGVk
UG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpj
dXJyZW50VGltZSgpKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkpOworICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRHJhZ0V2ZW50KTsKKyAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBmYWxzZTsKKyAgICAgICAgaGFuZGxlRHJhZyhtZXYsIERvbnRDaGVj
a0RyYWdIeXN0ZXJlc2lzKTsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVG
b3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShnZXN0dXJlRXZlbnQpOwogfQogCitib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgIU9TKEFO
RFJPSUQpCisgICAgaWYgKCFtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51KQorICAgICAg
ICByZXR1cm4gc2VuZENvbnRleHRNZW51RXZlbnRGb3JHZXN0dXJlKGdlc3R1cmVFdmVudCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICNpZiBPUyhBTkRST0lEKQpAQCAtMjY2NCw2ICsyNjk2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JD
b250ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3QKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKyAgICBtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51ID0gKGdl
c3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CiAg
ICAgcmV0dXJuIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOwog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzYxLDYgKzI3OTQsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbgogICAgICAgICBiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQoZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFyZWEoKS53aWR0aCgp
IC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0
YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlTG9uZ1ByZXNzOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA6CiAg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICBiZXN0
Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgSW50
U2l6ZShnZXN0dXJlRXZlbnQuYXJlYSgpLndpZHRoKCkgLyAyLCBnZXN0dXJlRXZlbnQuYXJlYSgp
LmhlaWdodCgpIC8gMiksIGFkanVzdGVkUG9pbnQsIHRhcmdldE5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTMzMzEsNyArMzM2NSw3IEBAIHN0YXRpYyBib29sIEV4YWN0bHlPbmVCaXRTZXQoRHJh
Z1NvdXJjZUFjdGlvbiBuKQogICAgIHJldHVybiBuICYmICEobiAmIChuIC0gMSkpOwogfQogCi1i
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyYWdIeXN0ZXJlc2lzIGNoZWNr
RHJhZ0h5c3RlcmVzaXMpCiB7CiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVm
dEJ1dHRvbiB8fCBldmVudC5ldmVudCgpLnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkKSB7CiAgICAgICAgIC8vIElmIHdlIGFsbG93ZWQgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGJy
aWRnZSB0byBoYW5kbGUgYSBkcmFnCkBAIC0zNDEwLDcgKzM0NDQsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVu
dCkKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgfQogCi0g
ICAgaWYgKCFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkp
IAorICAgIGlmIChjaGVja0RyYWdIeXN0ZXJlc2lzID09IFNob3VsZENoZWNrRHJhZ0h5c3RlcmVz
aXMgJiYgIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBo
eXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBh
IGNsaWNrCkBAIC0zNDYxLDExICszNDk1LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlmICht
X21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdlID8g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcgPSBk
cmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdT
dGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERy
YWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93
blBvcyk7CiAgICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmVlbnRlciB0aGlzIGNvZGUg
YW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQKICAgICAgICAgLy8g
YW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KLSAgICAgICAgaWYgKHN0YXJ0ZWREcmFnKSB7CisgICAg
ICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFy
dERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmY2JjZDYxNmI0ODQ5NDZmMTZkYTgxNjhlYmZh
M2VhMTMzMTdmZDgyLi5jMTU4OThhMDI2NDlkZWFjMWE5MWM5YzdiMGUzZTI5N2U4MTI4Mzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgZXh0ZXJuIGNv
bnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAKIGVudW0gSGl0VGVzdFNjcm9sbGJhcnMg
eyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiBlbnVt
IEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB7IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFj
ZSwgRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB9OworZW51bSBDaGVja0RyYWdIeXN0ZXJl
c2lzIHsgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcywgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMg
fTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVu
dEhhbmRsZXIpOwpAQCAtMTcwLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxl
R2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxl
R2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworICAgIGJvb2wg
aGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBi
b29sIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmKTsKICAgICBib29sIGlzU2Nyb2xsYmFySGFuZGxpbmdHZXN0dXJlcygpIGNvbnN0
OwpAQCAtMzA3LDcgKzMwOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZyZWVDbGlwYm9hcmQo
KTsKIAotICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJik7CisgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKICNlbmRpZgogICAgIGJvb2wgaGFuZGxlTW91
c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKQEAgLTQ2OCw2ICs0NzAsOCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1f
bW91c2VNb3ZlZER1cmF0aW9uUnVubmluZ0F2ZXJhZ2U7CiAgICAgUGxhdGZvcm1FdmVudDo6VHlw
ZSBtX2Jhc2VFdmVudFR5cGU7CisgICAgYm9vbCBtX2RpZFN0YXJ0RHJhZzsKKyAgICBib29sIG1f
ZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDkzNzhjNDhkZTkwZTFhMmM3NmI1OGY1
YWUzODk1NDlhOTFmODQwNGIuLmU0YWQyMjQ5YWUxZWM1MTBjM2IxOWIwNjE2ZDNjZjg2Y2ZmYzI1
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xODcsNiArMTg3LDcgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3RvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0Vu
YWJsZWQoZmFsc2UpCisgICAgLCBtX3RvdWNoRHJhZ0Ryb3BFbmFibGVkKGZhbHNlKQogICAgICwg
bV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lckZpcmVkKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJl
ZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCmluZGV4IGE4NjU1NTA0NmVjZDQ4ZDJmY2RhMTIwZjYzYWIzYWE1OGI4MTli
NmQuLmM2MTljODk3MmI1ZmJhM2JjYTk3MzVhZGJkZjZjMjg1NWY4YTEzODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKQEAgLTI5NSw2ICsyOTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKICAg
ICAgICAgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4g
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOyB9CiAKKyAgICAgICAgdm9pZCBz
ZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV90b3VjaERyYWdEcm9wRW5h
YmxlZCA9IGVuYWJsZWQ7IH0KKyAgICAgICAgYm9vbCBpc1RvdWNoRHJhZ0Ryb3BFbmFibGVkKCkg
eyByZXR1cm4gbV90b3VjaERyYWdEcm9wRW5hYmxlZDsgfQorCiAjaWYgVVNFKEpTQykKICAgICAg
ICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0
ZXJzKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNT
U0F0dHJpYnV0ZVNldHRlcnMoKTsKQEAgLTM3MCw2ICszNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCA6IDE7CiAjZW5k
aWYKICAgICAgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAx
OworICAgICAgICBib29sIG1fdG91Y2hEcmFnRHJvcEVuYWJsZWQ7CiAKICAgICAgICAgVGltZXI8
U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKICAgICAgICAgdm9pZCBp
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAyZDM1NmZhNmExMGRk
OGU3NzRhYWMwMmYwZDhkODRlY2E0NjI4OGI0Li40MmI4ZjA0MDYzNDRmMDBiZDY5NzdkMDFhODA4
NTAxNWZjZTExOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFdl
YkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFdlYlNlY3VyaXR5RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFhTU0F1
ZGl0b3JFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG91Y2hEcmFnRHJv
cEVuYWJsZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gREVQUkVDQVRFRCAocmVuYW1lZC4gcmVtb3Zl
IHRoaXMgYWZ0ZXIgYWxsIGNhbGwgc2l0ZXMgY2hhbmdlZCB0byB0aGUgbmV3IG5hbWUpCiAgICAg
dm9pZCBzZXRBcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihib29sIGVu
YWJsZWQpIHsgc2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihlbmFibGVkKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5k
ZXggMjBmY2MxYjk2MGUzOWJlZTA3MzkxMzhjM2JmY2ZiYjNjMTJlZTQxZS4uNzRmM2M0NTE3YWUy
OTA4OWY4MjcxMmZkOWRjNzUwZDkzNzVmMzU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0yOTIsNiArMjkyLDExIEBAIHZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9z
ZXR0aW5ncy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
bV9zZXR0aW5ncy0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQg
V2ViU2V0dGluZ3NJbXBsOjpzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogICAgIG1fc2V0dGluZ3MtPnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChlbmFibGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggOTg1MjBl
YWRmZDI2ODU0YmJlYmM2Mzg3N2JlOTljMzg3ZTk2OGQ5Ni4uNzBkYmUzMmMyZTkxMDdjNDdiOWRm
OGFmOGZkZDAxYmQyYWJlZjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRYU1NB
dWRpdG9yRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG91Y2hEcmFnRHJvcEVu
YWJsZWQoYm9vbCk7CiAKICAgICBib29sIHNob3dGUFNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4g
bV9zaG93RlBTQ291bnRlcjsgfQogICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCkgY29u
c3QgeyByZXR1cm4gbV9zaG93UGxhdGZvcm1MYXllclRyZWU7IH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMjBmMWUzZTIzNTQ4NDQ4ZDY4MjE5
MmJjNzM4MGJhZWI2NGFlOGI5Li44ZGJjMDM4OGU0MTBiN2FlMTgzN2FhOGM4NTM2OGEyZmY5NjI5
OWI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMTEtMjIgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQg
c3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNz
LCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFn
CisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJl
IHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNv
bnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlv
ciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rp
b25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1l
bnUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9F
dmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdUYXApOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaDoKKyAgICAgICAgKEV2ZW50U2Vu
ZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZW5hYmxlVG91Y2hE
cmFnRHJvcCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0
UnVubmVyKToKKwogMjAxMi0xMS0yMiAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZXR1cm4gYW4gYWNjdXJhdGUgZXhpdCBjb2RlIHdo
ZW4gcnVubmluZyBBbmRyb2lkIHN1aXRlcywgYW5kIHdhaXQgYWZ0ZXIgcmVzdGFydGluZyBhZGIg
YXMgcm9vdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDE3MWUyNWRkYjdhMTJhMjM2MTY2
YWMxY2ViMDY0NmJiY2FkYWViMDYuLjc3M2E1NmIxNzk2MmQ0M2FkNTVjYjc1OGNhODE4YTVjMmQ3
Y2U0ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTI5Niw2ICsyOTYsNyBAQCBFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXBEb3duIiwg
JkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwRG93bik7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVRh
cENhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcENhbmNlbCk7CiAgICAgYmluZE1ldGhv
ZCgiZ2VzdHVyZUxvbmdQcmVzcyIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdQcmVzcyk7Cisg
ICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdUYXAiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25n
VGFwKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVHdvRmluZ2VyVGFwIiwgJkV2ZW50U2VuZGVy
OjpnZXN0dXJlVHdvRmluZ2VyVGFwKTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZUluIiwgJkV2
ZW50U2VuZGVyOjp6b29tUGFnZUluKTsKICAgICBiaW5kTWV0aG9kKCJ6b29tUGFnZU91dCIsICZF
dmVudFNlbmRlcjo6em9vbVBhZ2VPdXQpOwpAQCAtMTEzNyw2ICsxMTM4LDEyIEBAIHZvaWQgRXZl
bnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6Okdlc3R1cmVM
b25nUHJlc3MsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25n
VGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVMb25nVGFwLCBhcmd1bWVudHMpOworfQorCiB2b2lkIEV2ZW50U2VuZGVyOjpn
ZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkBAIC0xMjA2LDggKzEy
MTMsMTYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5
cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAgICBldmVudC54ID0gcG9pbnQu
eDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CiAgICAgICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID49IDQpIHsKLSAgICAgICAgICAgIGV2ZW50LmRhdGEudGFwRG93bi53aWR0aCA9IHN0YXRp
Y19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7Ci0gICAgICAgICAgICBldmVu
dC5kYXRhLnRhcERvd24uaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50
b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLndpZHRoID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2
ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNb
M10udG9Eb3VibGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgZXZlbnQueCA9IHBvaW50Lng7Cisg
ICAgICAgIGV2ZW50LnkgPSBwb2ludC55OworICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
PSA0KSB7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy53aWR0aCA9IHN0YXRpY19j
YXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5k
YXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRv
RG91YmxlKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oCmluZGV4IGM1ZDc0
MmI1ZmI2NjIzZjQwNDRkOTJmOTIwYmIzYTMxNTQ0NGM2MzQuLmIxZGE2ODQ4NzYxMTA4YjRhNmM3
YTZiZjMxODY5NmM1OTE1ZmJiMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaApAQCAtMTExLDYgKzEx
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVUYXBEb3duKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVUYXBDYW5jZWwoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZUxvbmdQcmVzcyhj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBnZXN0dXJlTG9u
Z1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0
dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIGdlc3R1cmVFdmVudChXZWJLaXQ6OldlYklucHV0RXZlbnQ6OlR5cGUsIGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3MDc4OTI3ZDk5
MmI4MzVkMzBjOTVmY2QyNmQ0MTU4YjljYjZiZGQuLjhhYTgxN2EyYmRmNmJkYmNjNWY0MjEzZThk
NmNiZjA3ZWQwZjdiOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC05OCw2ICs5OCw3IEBA
IFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmls
aXR5IiwgJlRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRUZXh0RGlyZWN0aW9uIiwgJlRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24pOwogICAgIGJp
bmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAmVGVzdFJ1bm5lcjo6dGV4dFN1cnJvdW5k
aW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgic2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQiLCAmVGVz
dFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOwogCiAgICAgLy8gUHJvcGVydGllcy4K
ICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50IiwgJlRlc3RSdW5uZXI6Ondvcmtl
clRocmVhZENvdW50KTsKQEAgLTY2NCw2ICs2NjUsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjp0ZXh0
U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW4KICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1RleHQudGV4dENvbnRlbnQoKS51dGY4KCkp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1l
bnRzWzBdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlZpZXctPnNldHRp
bmdzKCktPnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7
Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQoQ3BwVmFyaWFudCogcmVz
dWx0KQogewogICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0PGludD4oV2ViV29ya2VySW5mbzo6
ZGVkaWNhdGVkV29ya2VyQ291bnQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IGY5ZTlmN2Ey
NDZhMDk3YWNjMWRlYzliM2QyOGFkZWUxODA4MzNiODMuLjQ2OTFlNTU3OWI4Nzg1YWJiMGEyZDRj
MzQxZWRhZjljMjExZTFlMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTE0Nyw2ICsxNDcsNyBA
QCBwcml2YXRlOgogICAgIC8vIHBvaW50IGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBub2Rl
IGFuZCB0aGUgZm91cnRoIHRoZSBtYXhpbXVtIHRleHQKICAgICAvLyBsZW5ndGggdG8gcmV0cmll
dmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
ICAgIC8vIFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGUxNGEwYmZlY2IyMWRhYzdkNGQxNzc3NzEwNDVh
NDI2NTAwNzdmLi40Y2MzZjljM2E0Yjc0YzUwYzkyNDQzYzI1ODI4NTY5MGYzODhhOGZhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTEtMjIgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91
bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgTG9uZ1By
ZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBk
cmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1h
eWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93
IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICBiZWhh
dmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVu
Y3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0
IG1lbnUuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVu
dS1vbi1sb25nLXRhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1w
cmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy5odG1sOgorCiAyMDEyLTExLTIyICBKb2huIE1lbGxvciAgPGpvaG5tZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBJbXByb3ZlIGhhbmRsaW5nIG9mIG5lc3RlZCBj
b21tZW50cyBvbiByZWRkaXQuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OGI2MmJkMDFkNTI1YjU4ZjdmOTQ1NzIxMTAzZDc1YTAwZjk2MzIyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9j
b250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRo
YXQgdGhlIGNvbnRleHQgbWVudSBpcyBzaG93biBvbiBsb25nIHRhcCBnZXN0dXJlLjwvcD4KKzxk
aXYgaWQ9InRleHQiPlRlc3Rpbmc8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBkb2N1bWVudC5vbmNvbnRl
eHRtZW51ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5p
bm5lckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRleHQiKTsKKworICAgIHZhciB4ID0gdGV4dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dCArIHRleHQub2Zmc2V0TGVmdCArIDQ7CisgICAgdmFyIHkgPSB0ZXh0Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldFRvcCArIHRleHQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAg
IGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGV2ZW50
U2VuZGVyLmdlc3R1cmVMb25nVGFwKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25n
VGFwKHgsIHkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJnZXN0dXJlTG9uZ1RhcCBu
b3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1l
bnQtdHJpZ2dlcnMtZHJhZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YTQ0MzNjNGU1MWI3NGI3N2ViNWJhMWM5ZjJiNzE0MGNmZTQ2MTRlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25n
LXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5U
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gYSBkcmFnZ2FibGUg
ZWxlbWVudCBzdGFydHMgYSBkcmFnL2Ryb3Agc2Vzc2lvbi48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5U
ZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KKzxkaXYgaWQ9ImRyYWdn
YWJsZURpdiIgZHJhZ2dhYmxlPSd0cnVlJz5EcmFnIG1lPC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKworICAgIGlmICh0ZXN0UnVubmVyLnNldFRvdWNoRHJhZ0Ryb3BF
bmFibGVkKQorICAgICAgICB0ZXN0UnVubmVyLnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKHRydWUp
OworCisgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQQVNTIjsgfQorCisgICAgdmFyIGRy
YWdhYmxlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRyYWdnYWJsZURpdiIpOworCisg
ICAgdmFyIHggPSBkcmFnZ2FibGVEaXYub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkcmFnZ2Fi
bGVEaXYub2Zmc2V0TGVmdCArIDQ7CisgICAgdmFyIHkgPSBkcmFnZ2FibGVEaXYub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcCArIGRyYWdnYWJsZURpdi5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zm
c2V0SGVpZ2h0IC8gMjsKKworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MpIHsKKyAgICAgICAg
ZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdQcmVzcyh4LCB5KTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCJnZXN0dXJlTG9uZ1ByZXNz
IG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIHBsYXRmb3JtIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1t
ZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzU3MzVmYWVmZTM4MWU3NWNkZGZjZmUyYjQyMTI3MmE2
ZjI1YjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0
IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVyZS4KKworVGVzdGluZworUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MmE0NWVjMDlmYWIzNzZkYTUyZDhhYzFhMTc0ZDQ3
NzM1NDNmNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1l
bnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gYSBkcmFnZ2FibGUgZWxlbWVudCBz
dGFydHMgYSBkcmFnL2Ryb3Agc2Vzc2lvbi4KKworVGVzdGluZworUEFTUworRHJhZyBtZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3Mt
bG9uZ3ByZXNzLWV4cGVjdGVkLnR4dAppbmRleCAxOTUxZjk3NjE3MDMyYWYxMGMwY2ZkMTE0ZDYw
MTJhYWUzMmM3YTUwLi5jMjIwMzZjODU5N2M1YzY4OTA4ZDE0M2U3ODU5NWEyNDg3MThkOWIxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3By
ZXNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRlc3RzIGlmIGEg
bG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3
aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4KK1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0
dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGRyYWcvZHJvcCB3aGVuIHRvdWNoIGFkanVzdG1l
bnQgaXMgdXNlZC4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwgYi9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKaW5k
ZXggZGNhOTA3YmZlMDkyYmE4M2Q5NTY5MjZkNWZjYmM0ZTgzY2FhY2UzMS4uZmRhOWM2NmExOTdk
MzYxMjFmZGI3MTUxZmYzMDMzZTY0NWVlN2JhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbApAQCAtMSw3ICsxLDcg
QEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+VG91Y2ggQWRq
dXN0bWVudCA6IFRlc3RpbmcgdGhhdCBhIGNvbnRleHQgbWVudSB3aWxsIGFwcGVhciBvbiBhIGxv
bmcgcHJlc3MgLSBidWcgOTI5MTQ8L3RpdGxlPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50
IDogVGVzdGluZyB0aGF0IGEgZHJhZy9kcm9wIHdpbGwgc3RhcnQgb24gYSBsb25nIHByZXNzIC0g
YnVnIDkyOTE0PC90aXRsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91
Y2hhZGp1c3RtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c3R5bGU+CkBAIC0zMSw3ICszMSw3IEBA
CiAgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKICAgICB9KTsKIAot
ICAgIGRvY3VtZW50Lm9uY29udGV4dG1lbnUgPSBmdW5jdGlvbigpIHsgZGVidWcoIlBBU1MiKTsg
fQorICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rpb24oZSkgeyBkZWJ1ZygiUEFTUyIp
OyBlLnByZXZlbnREZWZhdWx0KCk7fQogCiAgICAgZnVuY3Rpb24gdGVzdExvbmdQcmVzcyh0b3Vj
aHBvaW50KQogICAgIHsKQEAgLTg5LDcgKzg5LDggQEAKICAgICBmdW5jdGlvbiBydW5UZXN0cygp
CiAgICAgewogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFs
cyAmJiBpbnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7Ci0g
ICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1cmUgb24g
bGlua3Mgd2lsbCB0cmlnZ2VyIGEgY29udGV4dCBtZW51IHdoZW4gdG91Y2ggYWRqdXN0bWVudCBp
cyB1c2VkLicpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5hYmxl
ZCh0cnVlKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBhIGxvbmcgcHJlc3Mg
Z2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3VjaCBhZGp1
c3RtZW50IGlzIHVzZWQuJyk7CiAgICAgICAgICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOwogICAg
ICAgICAgICAgdGVzdEluZGlyZWN0VG91Y2hlcygpOwogICAgICAgICAgICAgZS5zYW5kYm94LnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175899</attachid>
            <date>2012-11-25 16:56:06 -0800</date>
            <delta_ts>2012-11-25 18:55:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121125195345.patch</filename>
            <type>text/plain</type>
            <size>29231</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uZDIxNDJmYTcxNDgzMzA2NzQ0NDcwNDY0Yjg0NDhh
NWYwNTliMmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTI1ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVs
ZW1lbnQtdHJpZ2dlcnMtZHJhZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXApOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0
aW9uT3JDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFkanVz
dEdlc3R1cmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRs
ZURyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnRvdWNoRHJhZ0Ryb3BFbmFibGVkKToKKyAgICAgICAgKFNldHRp
bmdzKToKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29t
bWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYWU3MDVm
ODc3NTg0NDQyY2UwYzFmNzBjZjA0MDE4MjI2OWY0NzgwLi44MzY5Nzg5NDI4ZjVmYzA4OGNkNzdm
NzRjMzhmODEzZWU0Njc4OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDEyLTExLTI1ICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBMb25nUHJlc3MgYW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRy
YWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2lt
dWxhdGUgZHJhZyBieSBzZW5kaW5nIGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAg
ICBldmVudHMuIElmIGEgZHJhZyBpcyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBp
cyBubyBkcmFnZ2FibGUKKyAgICAgICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1l
bnUgaW5zdGVhZCAod2hpY2ggaXMgdGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExv
bmdQcmVzcykuIEZvciBMb25nVGFwLCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0
CisgICAgICAgIExvbmdQcmVzcyB1c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisg
ICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0VG91Y2hEcmFn
RHJvcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTExLTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRk
IE9TIT0iaW9zIiB0byBndWFyZCBmb3IgZ2NjX3ZlcnNpb24gaW4gV2ViS2l0Lmd5cApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGFjNTBkZTVjNjVjMmU3NTMzY2ZiN2IyODAy
YmQ2ZjRhMWFmMWQ1MjYuLmVkZDcyY2E3OGM5MWQyNWY5MTkwYTZiMjY4ZTNlZGVlODExZDNhYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0OCw2ICszNDgsOCBAQCBF
dmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAsIG1f
bW91c2VNb3ZlZER1cmF0aW9uUnVubmluZ0F2ZXJhZ2UoMCkKICAgICAsIG1fYmFzZUV2ZW50VHlw
ZShQbGF0Zm9ybUV2ZW50OjpOb1R5cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkKKyAg
ICAsIG1fZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnUoZmFsc2UpCiB7CiB9CiAKQEAgLTQw
MSw2ICs0MDMsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2VuZGlmCiAgICAgbV9t
b3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSA9IDA7CiAgICAgbV9iYXNlRXZlbnRUeXBl
ID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7Cisg
ICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IGZhbHNlOwogfQogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbm9kZVRvQmVSZW1vdmVkKQpAQCAt
NzExLDcgKzcxNSw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
IGV2ZW50KQogewotICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50KSkKKyAgICBpZiAoaGFuZGxlRHJh
ZyhldmVudCwgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKCFtX21vdXNlUHJlc3NlZCkKQEAgLTI1OTgsNiArMjYwMiw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUYXBEb3duKCk7
CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAgICAgICByZXR1
cm4gaGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhnZXN0dXJlRXZlbnQpOworICAgIGNhc2UgUGxhdGZv
cm1FdmVudDo6R2VzdHVyZUxvbmdUYXA6CisgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9u
Z1RhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0Zp
bmdlclRhcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoZ2VzdHVy
ZUV2ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CkBAIC0y
NjQ4LDkgKzI2NTQsMzUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIAogYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmVudCkKIHsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGlmIChtX2ZyYW1l
LT5zZXR0aW5ncygpLT50b3VjaERyYWdEcm9wRW5hYmxlZCgpKSB7CisgICAgICAgIEludFBvaW50
IGFkanVzdGVkUG9pbnQgPSBnZXN0dXJlRXZlbnQucG9zaXRpb24oKTsKKyNpZiBFTkFCTEUoVE9V
Q0hfQURKVVNUTUVOVCkKKyAgICAgICAgYWRqdXN0R2VzdHVyZVBvc2l0aW9uKGdlc3R1cmVFdmVu
dCwgYWRqdXN0ZWRQb2ludCk7CisjZW5kaWYKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1v
dXNlRG93bkV2ZW50KGFkanVzdGVkUG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigp
LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQsIDAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgICAgICBoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQobW91c2VEb3duRXZlbnQpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
bW91c2VEcmFnRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBXVEY6OmN1cnJlbnRUaW1lKCkpOworICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgICAgIE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91
c2VEcmFnRXZlbnQpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IGZhbHNlOworICAgICAgICBo
YW5kbGVEcmFnKG1ldiwgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMpOworICAgICAgICBpZiAobV9k
aWRTdGFydERyYWcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKICAg
ICByZXR1cm4gaGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGdlc3R1
cmVFdmVudCk7CiB9CiAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1RhcChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQoreworI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKSAmJiAhT1MoQU5EUk9JRCkKKyAgICBpZiAoIW1fZGlkTG9uZ1ByZXNzSW52
b2tlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdl
c3R1cmUoZ2VzdHVyZUV2ZW50KTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVu
dShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogI2lmIE9TKEFO
RFJPSUQpCkBAIC0yNjY0LDYgKzI2OTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdAogICAg
IH0KICNlbmRpZgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIG1fZGlkTG9uZ1ByZXNz
SW52b2tlQ29udGV4dE1lbnUgPSAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpHZXN0dXJlTG9uZ1ByZXNzKTsKICAgICByZXR1cm4gc2VuZENvbnRleHRNZW51RXZlbnRGb3JH
ZXN0dXJlKGdlc3R1cmVFdmVudCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NjEs
NiArMjc5NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRpb24oY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVuCiAgICAgICAgIGJlc3RDbGlja2Fi
bGVOb2RlRm9yVG91Y2hQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgSW50U2l6ZShnZXN0
dXJlRXZlbnQuYXJlYSgpLndpZHRoKCkgLyAyLCBnZXN0dXJlRXZlbnQuYXJlYSgpLmhlaWdodCgp
IC8gMiksIGFkanVzdGVkUG9pbnQsIHRhcmdldE5vZGUpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CisgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlTG9uZ1RhcDoKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUd29G
aW5nZXJUYXA6CiAgICAgICAgIGJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAv
IDIsIGdlc3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFy
Z2V0Tm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMzMSw3ICszMzY1LDcgQEAgc3RhdGljIGJv
b2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4pCiAgICAgcmV0dXJuIG4gJiYg
IShuICYgKG4gLSAxKSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQorYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENo
ZWNrRHJhZ0h5c3RlcmVzaXMgY2hlY2tEcmFnSHlzdGVyZXNpcykKIHsKICAgICBpZiAoZXZlbnQu
ZXZlbnQoKS5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmV2ZW50KCkudHlwZSgpICE9
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpIHsKICAgICAgICAgLy8gSWYgd2UgYWxsb3dlZCB0
aGUgb3RoZXIgc2lkZSBvZiB0aGUgYnJpZGdlIHRvIGhhbmRsZSBhIGRyYWcKQEAgLTM0MTAsNyAr
MzQ0NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgICAgICB2aWV3LT5zZXRDdXJzb3IocG9pbnRl
ckN1cnNvcigpKTsKICAgICB9CiAKLSAgICBpZiAoIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZl
bnQuZXZlbnQoKS5wb3NpdGlvbigpKSkgCisgICAgaWYgKGNoZWNrRHJhZ0h5c3RlcmVzaXMgPT0g
U2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcyAmJiAhZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVu
dC5ldmVudCgpLnBvc2l0aW9uKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAv
LyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8g
dHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKQEAgLTM0NjEsMTEgKzM0OTUsMTEgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgIERyYWdDb250cm9sbGVyKiBk
cmFnQ29udHJvbGxlciA9IHBhZ2UgPyBwYWdlLT5kcmFnQ29udHJvbGxlcigpIDogMDsKLSAgICAg
ICAgYm9vbCBzdGFydGVkRHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5z
dGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21v
dXNlRG93blBvcyk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYg
ZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2
ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBj
b3VsZCByZWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAv
LyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUg
cGFzdGVib2FyZAogICAgICAgICAvLyBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgotICAgICAgICBp
ZiAoc3RhcnRlZERyYWcpIHsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CiAgICAgICAg
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGZjYmNk
NjE2YjQ4NDk0NmYxNmRhODE2OGViZmEzZWExMzMxN2ZkODIuLmMxNTg5OGEwMjY0OWRlYWMxYTkx
YzljN2IwZTNlMjk3ZTgxMjgzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAt
OTEsNiArOTEsNyBAQCBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKIAog
ZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzLCBEb250SGl0
VGVzdFNjcm9sbGJhcnMgfTsKIGVudW0gQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIHsgU2hvdWxk
QXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlLCBEb250QXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlIH07
CitlbnVtIENoZWNrRHJhZ0h5c3RlcmVzaXMgeyBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzLCBE
b250Q2hlY2tEcmFnSHlzdGVyZXNpcyB9OwogCiBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50SGFuZGxlcik7CkBAIC0xNzAsNiArMTcxLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50Jik7CisgICAgYm9vbCBoYW5kbGVHZXN0dXJlTG9uZ1RhcChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZVR3b0ZpbmdlclRhcChjb25z
dCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlR2VzdHVyZVNjcm9sbFVw
ZGF0ZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaXNTY3JvbGxiYXJI
YW5kbGluZ0dlc3R1cmVzKCkgY29uc3Q7CkBAIC0zMDcsNyArMzA5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZnJlZUNsaXBib2FyZCgpOwogCi0gICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKKyAgICBib29sIGhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwogI2Vu
ZGlmCiAgICAgYm9vbCBoYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNDY4LDYgKzQ3MCw4IEBAIHBy
aXZhdGU6CiAKICAgICBkb3VibGUgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZTsK
ICAgICBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1fYmFzZUV2ZW50VHlwZTsKKyAgICBib29sIG1fZGlk
U3RhcnREcmFnOworICAgIGJvb2wgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXgg
OTM3OGM0OGRlOTBlMWEyYzc2YjU4ZjVhZTM4OTU0OWE5MWY4NDA0Yi4uZTRhZDIyNDlhZTFlYzUx
MGMzYjE5YjA2MTZkM2NmODZjZmZjMjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTE4Nyw2ICsxODcsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
dG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fdG91Y2hEcmFnRHJv
cEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhp
cywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiB7CiAgICAgLy8g
QSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0
aGUgQXRvbWljU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggYTg2NTU1MDQ2ZWNkNDhk
MmZjZGExMjBmNjNhYjNhYTU4YjgxOWI2ZC4uYjM4Y2VlMDlkMjQ3OGM2OTU1MTYzOGRkOTNhNTZm
YWZjODU1NzliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjk1LDYgKzI5NSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoKSB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJs
ZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGJvb2wgZW5hYmxl
ZCkgeyBtX3RvdWNoRHJhZ0Ryb3BFbmFibGVkID0gZW5hYmxlZDsgfQorICAgICAgICBib29sIHRv
dWNoRHJhZ0Ryb3BFbmFibGVkKCkgeyByZXR1cm4gbV90b3VjaERyYWdEcm9wRW5hYmxlZDsgfQor
CiAjaWYgVVNFKEpTQykKICAgICAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkUmVzcGVjdFByaW9y
aXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKGJvb2wpOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91
bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKTsKQEAgLTM3MCw2ICszNzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV90b3VjaEV2ZW50RW11bGF0
aW9uRW5hYmxlZCA6IDE7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX3Njcm9sbGluZ1BlcmZvcm1h
bmNlTG9nZ2luZ0VuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fdG91Y2hEcmFnRHJvcEVuYWJs
ZWQ7CiAKICAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NU
aW1lcjsKICAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8
U2V0dGluZ3M+Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAppbmRleCAyZDM1NmZhNmExMGRkOGU3NzRhYWMwMmYwZDhkODRlY2E0NjI4OGI0Li40MmI4ZjA0
MDYzNDRmMDBiZDY5NzdkMDFhODA4NTAxNWZjZTExOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTE2OSw2ICsxNjksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYlNlY3VyaXR5RW5hYmxlZChib29sKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gREVQUkVD
QVRFRCAocmVuYW1lZC4gcmVtb3ZlIHRoaXMgYWZ0ZXIgYWxsIGNhbGwgc2l0ZXMgY2hhbmdlZCB0
byB0aGUgbmV3IG5hbWUpCiAgICAgdm9pZCBzZXRBcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcihib29sIGVuYWJsZWQpIHsgc2V0QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcihlbmFibGVkKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKaW5kZXggMjBmY2MxYjk2MGUzOWJlZTA3MzkxMzhjM2JmY2ZiYjNj
MTJlZTQxZS4uNzRmM2M0NTE3YWUyOTA4OWY4MjcxMmZkOWRjNzUwZDkzNzVmMzU2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0yOTIs
NiArMjkyLDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChi
b29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChi
b29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQo
ZW5hYmxlZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRETlNQcmVmZXRjaGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEROU1ByZWZldGNoaW5n
RW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKaW5kZXggOTg1MjBlYWRmZDI2ODU0YmJlYmM2Mzg3N2JlOTljMzg3ZTk2OGQ5Ni4u
NzBkYmUzMmMyZTkxMDdjNDdiOWRmOGFmOGZkZDAxYmQyYWJlZjU4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoYm9vbCk7CiAKICAgICBib29sIHNob3dGUFNDb3Vu
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zaG93RlBTQ291bnRlcjsgfQogICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UGxhdGZvcm1MYXllclRyZWU7
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAx
MjBmMWUzZTIzNTQ4NDQ4ZDY4MjE5MmJjNzM4MGJhZWI2NGFlOGI5Li41YTE0MTJjZGQzOGMxMWJi
NDIzOWI4N2FmNmI0NTc2ZTBmZjY2NDJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTEtMjUgIFZhcnVuIEph
aW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9u
Z1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVu
dSByZXNwZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3Vz
ZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBz
dGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVt
ZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3Vy
cmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVz
ZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8g
c3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdUYXApOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIu
aDoKKyAgICAgICAgKEV2ZW50U2VuZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTItMTEtMjIgIFBldGVyIEJl
dmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmV0dXJu
IGFuIGFjY3VyYXRlIGV4aXQgY29kZSB3aGVuIHJ1bm5pbmcgQW5kcm9pZCBzdWl0ZXMsIGFuZCB3
YWl0IGFmdGVyIHJlc3RhcnRpbmcgYWRiIGFzIHJvb3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApp
bmRleCAxNzFlMjVkZGI3YTEyYTIzNjE2NmFjMWNlYjA2NDZiYmNhZGFlYjA2Li43NzNhNTZiMTc5
NjJkNDNhZDU1Y2I3NThjYTgxOGE1YzJkN2NlNGY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3Bw
CkBAIC0yOTYsNiArMjk2LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKICAgICBiaW5k
TWV0aG9kKCJnZXN0dXJlVGFwRG93biIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcERvd24pOwog
ICAgIGJpbmRNZXRob2QoImdlc3R1cmVUYXBDYW5jZWwiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVU
YXBDYW5jZWwpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25nUHJlc3MiLCAmRXZlbnRTZW5k
ZXI6Omdlc3R1cmVMb25nUHJlc3MpOworICAgIGJpbmRNZXRob2QoImdlc3R1cmVMb25nVGFwIiwg
JkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVR3
b0ZpbmdlclRhcCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcCk7CiAgICAgYmlu
ZE1ldGhvZCgiem9vbVBhZ2VJbiIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VJbik7CiAgICAgYmlu
ZE1ldGhvZCgiem9vbVBhZ2VPdXQiLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0KTsKQEAgLTEx
MzcsNiArMTEzOCwxMiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1ByZXNzKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIGdlc3R1cmVFdmVu
dChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzLCBhcmd1bWVudHMpOwogfQogCit2b2lk
IEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
IGdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcCwgYXJndW1lbnRzKTsK
K30KKwogdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+
c2V0TnVsbCgpOwpAQCAtMTIwNiw4ICsxMjEzLDE2IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1
cmVFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYK
ICAgICAgICAgZXZlbnQueCA9IHBvaW50Lng7CiAgICAgICAgIGV2ZW50LnkgPSBwb2ludC55Owog
ICAgICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7Ci0gICAgICAgICAgICBldmVudC5k
YXRhLnRhcERvd24ud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91
YmxlKCkpOwotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3duLmhlaWdodCA9IHN0YXRpY19j
YXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5k
YXRhLmxvbmdQcmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9E
b3VibGUoKSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdUYXA6CisgICAg
ICAgIGV2ZW50LnggPSBwb2ludC54OworICAgICAgICBldmVudC55ID0gcG9pbnQueTsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgeworICAgICAgICAgICAgZXZlbnQuZGF0YS5s
b25nUHJlc3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91Ymxl
KCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
RXZlbnRTZW5kZXIuaAppbmRleCBjNWQ3NDJiNWZiNjYyM2Y0MDQ0ZDkyZjkyMGJiM2EzMTU0NDRj
NjM0Li5iMWRhNjg0ODc2MTEwOGI0YTZjN2E2YmYzMTg2OTZjNTkxNWZiYjJjIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2
ZW50U2VuZGVyLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXN0dXJl
VGFwRG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBn
ZXN0dXJlVGFwQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIGdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgZ2VzdHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVR3b0ZpbmdlclRhcChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViS2l0OjpXZWJJ
bnB1dEV2ZW50OjpUeXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcAppbmRleCAzNzA3ODkyN2Q5OTJiODM1ZDMwYzk1ZmNkMjZkNDE1OGI5Y2I2YmRkLi44
YWE4MTdhMmJkZjZiZGJjYzVmNDIxM2U4ZDZjYmYwN2VkMGY3YjlmIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcApAQCAtOTgsNiArOTgsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBi
aW5kTWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJp
bGl0eSk7CiAgICAgYmluZE1ldGhvZCgic2V0VGV4dERpcmVjdGlvbiIsICZUZXN0UnVubmVyOjpz
ZXRUZXh0RGlyZWN0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJ0ZXh0U3Vycm91bmRpbmdOb2RlIiwg
JlRlc3RSdW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUpOworICAgIGJpbmRNZXRob2QoInNldFRv
dWNoRHJhZ0Ryb3BFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVk
KTsKIAogICAgIC8vIFByb3BlcnRpZXMuCiAgICAgYmluZFByb3BlcnR5KCJ3b3JrZXJUaHJlYWRD
b3VudCIsICZUZXN0UnVubmVyOjp3b3JrZXJUaHJlYWRDb3VudCk7CkBAIC02NjQsNiArNjY1LDE1
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6dGV4dFN1cnJvdW5kaW5nTm9kZShjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFuCiAgICAgcmVzdWx0LT5zZXQoc3Vycm91bmRpbmdU
ZXh0LnRleHRDb250ZW50KCkudXRmOCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRUb3Vj
aERyYWdEcm9wRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVu
dHMuc2l6ZSgpICE9IDEgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZChh
cmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OndvcmtlclRo
cmVhZENvdW50KENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldChzdGF0aWNf
Y2FzdDxpbnQ+KFdlYldvcmtlckluZm86OmRlZGljYXRlZFdvcmtlckNvdW50KCkpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuaAppbmRleCBmOWU5ZjdhMjQ2YTA5N2FjYzFkZWM5YjNkMjhhZGVlMTgwODMzYjgz
Li40NjkxZTU1NzliODc4NWFiYjBhMmQ0YzM0MWVkYWY5YzIxMWUxZTA2IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBwb2ludCBjb29yZGlu
YXRlcyByZWxhdGl2ZSB0byB0aGUgbm9kZSBhbmQgdGhlIGZvdXJ0aCB0aGUgbWF4aW11bSB0ZXh0
CiAgICAgLy8gbGVuZ3RoIHRvIHJldHJpZXZlLgogICAgIHZvaWQgdGV4dFN1cnJvdW5kaW5nTm9k
ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRUb3Vj
aERyYWdEcm9wRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
ICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAvLyBQcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzhlMTRh
MGJmZWNiMjFkYWM3ZDRkMTc3NzcxMDQ1YTQyNjUwMDc3Zi4uOTFhMmY1Y2MxOTdkYTdjYmYxZTYy
YzgyNWRlMzZlYWRhOGE1YTllZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTI1ICBW
YXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3Mg
YW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250
ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5n
IGEgbW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBp
cyBub3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAg
ICAgZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMg
dGhlIGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFw
LCB3ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1
c2VzIHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LgorCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dl
cnMtZHJhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90
b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0
bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbDoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxs
b3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1w
cm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24t
bG9uZy10YXAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29u
dGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjJiZDAxZDUyNWI1OGY3
Zjk0NTcyMTEwM2Q3NWEwMGY5NjMyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKQEAg
LTAsMCArMSwzNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24g
bG9uZyB0YXAgZ2VzdHVyZS48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2
IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCisgICAgZG9jdW1lbnQub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIg
dGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisKKyAgICB2YXIgeCA9IHRl
eHQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyB0ZXh0Lm9mZnNldExlZnQgKyA0OworICAgIHZh
ciB5ID0gdGV4dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRUb3AgKyB0ZXh0
Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCkgeworICAgICAg
ICBldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCh4LCB5KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkZWJ1ZygiZ2VzdHVyZUxvbmdUYXAgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25n
LXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxl
bWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE0NDMzYzRlNTFiNzRiNzdlYjVi
YTFjOWYyYjcxNDBjZmU0NjE0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVz
cyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Np
b24uPC9wPgorPGRpdiBpZD0idGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5G
QUlMPC9kaXY+Cis8ZGl2IGlkPSJkcmFnZ2FibGVEaXYiIGRyYWdnYWJsZT0ndHJ1ZSc+RHJhZyBt
ZTwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAodGVz
dFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZCkKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRU
b3VjaERyYWdEcm9wRW5hYmxlZCh0cnVlKTsKKworICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0g
ZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
PSAiUEFTUyI7IH0KKworICAgIHZhciBkcmFnYWJsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkcmFnZ2FibGVEaXYiKTsKKworICAgIHZhciB4ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0ICsgZHJhZ2dhYmxlRGl2Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5
ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zm
c2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRv
dy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0
dXJlTG9uZ1ByZXNzKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MoeCwg
eSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBkZWJ1ZygiZ2VzdHVyZUxvbmdQcmVzcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9y
bSIpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2Nv
bnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NzM1ZmFl
ZmUzODFlNzVjZGRmY2ZlMmI0MjEyNzJhNmYyNWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4
dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVz
dCBjaGVja3MgdGhhdCB0aGUgY29udGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1
cmUuCisKK1Rlc3RpbmcKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUt
ZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2Fi
bGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJhNDVl
YzA5ZmFiMzc2ZGE1MmQ4YWMxYTE3NGQ0NzczNTQzZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25n
LXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJl
IG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uCisKK1Rl
c3RpbmcKK1BBU1MKK0RyYWcgbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKaW5kZXggMTk1
MWY5NzYxNzAzMmFmMTBjMGNmZDExNGQ2MDEyYWFlMzJjN2E1MC4uYzIyMDM2Yzg1OTdjNWM2ODkw
OGQxNDNlNzg1OTVhMjQ4NzE4ZDliMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1
c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKQEAg
LTEsNCArMSw0IEBACi1UZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxs
IHRyaWdnZXIgYSBjb250ZXh0IG1lbnUgd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCitU
ZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFn
L2Ryb3Agd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNo
LWxpbmtzLWxvbmdwcmVzcy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNo
LWxpbmtzLWxvbmdwcmVzcy5odG1sCmluZGV4IGRjYTkwN2JmZTA5MmJhODNkOTU2OTI2ZDVmY2Jj
NGU4M2NhYWNlMzEuLmZkYTljNjZhMTk3ZDM2MTIxZmRiNzE1MWZmMzAzM2U2NDVlZTdiYWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJl
c3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9u
Z3ByZXNzLmh0bWwKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhl
YWQ+Ci0gICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBjb250ZXh0
IG1lbnUgd2lsbCBhcHBlYXIgb24gYSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KKyAg
ICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3RpbmcgdGhhdCBhIGRyYWcvZHJvcCB3aWxs
IHN0YXJ0IG9uIGEgbG9uZyBwcmVzcyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CiAgICAgPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHN0eWxlPgpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoYSk7CiAgICAgfSk7CiAKLSAgICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVu
Y3Rpb24oKSB7IGRlYnVnKCJQQVNTIik7IH0KKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1
bmN0aW9uKGUpIHsgZGVidWcoIlBBU1MiKTsgZS5wcmV2ZW50RGVmYXVsdCgpO30KIAogICAgIGZ1
bmN0aW9uIHRlc3RMb25nUHJlc3ModG91Y2hwb2ludCkKICAgICB7CkBAIC04OSw3ICs4OSw4IEBA
CiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVk
VG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlm
IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVu
dSB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkZXNjcmlwdGlv
bignVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEg
ZHJhZy9kcm9wIHdoZW4gdG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLicpOwogICAgICAgICAgICAg
dGVzdERpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsK
ICAgICAgICAgICAgIGUuc2FuZGJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175912</attachid>
            <date>2012-11-25 18:55:58 -0800</date>
            <delta_ts>2012-11-26 15:21:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121125215337.patch</filename>
            <type>text/plain</type>
            <size>28583</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uNDU1NDM1MDVhODJhMmU0ODliYTEwZjY2YTFiMDdl
YTRhZTljYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTI1ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LiBMb25nUHJlc3MgaW5pdGlhdGVkIGRyYWcgYW5k
CisgICAgICAgIGRyb3AgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgYnkgdGhlIHBsYXRmb3JtIHVz
aW5nIHRoZSBTZXR0aW5nCisgICAgICAgIHRvdWNoRHJhZ0Ryb3BFbmFibGVkIHdoaWNoIGlzIGRp
c2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlTG9uZ1RhcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRl
eHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxq
b2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBo
YW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBkYWU3MDVmODc3NTg0NDQyY2UwYzFmNzBjZjA0MDE4MjI2OWY0NzgwLi5l
NGU0MDdmOGJjMzQwYWMxMzAwZjQwZDNmNjFhZmVlZTVmNmQ5YzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI1ICBWYXJ1biBKYWluICA8dmFy
dW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5kIExvbmdUYXAgZ2Vz
dHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1lbnUgcmVzcGVj
dGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEgbW91c2UgZG93biBh
bmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBub3Qgc3RhcnRlZCAo
YmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAgZWxlbWVudCksIHRo
ZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3ZSB1c2UgdGhlIGV4
aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2VzIHRvIHN1bW1vbiB0
aGUgY29udGV4dCBtZW51LiBMb25nUHJlc3MgaW5pdGlhdGVkIGRyYWcgYW5kCisgICAgICAgIGRy
b3AgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgYnkgdGhlIHBsYXRmb3JtIHVzaW5nIHRoZSBTZXR0
aW5nCisgICAgICAgIHRvdWNoRHJhZ0Ryb3BFbmFibGVkIHdoaWNoIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMv
V2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpz
ZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisKIDIwMTIt
MTEtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBBZGQgT1MhPSJpb3MiIHRvIGd1YXJkIGZvciBnY2NfdmVyc2lvbiBpbiBXZWJLaXQu
Z3lwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWM1MGRlNWM2NWMyZTc1
MzNjZmI3YjI4MDJiZDZmNGExYWYxZDUyNi4uZWRkNzJjYTc4YzkxZDI1ZjkxOTBhNmIyNjhlM2Vk
ZWU4MTFkM2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzQ4LDYg
KzM0OCw4IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRp
ZgogICAgICwgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSgwKQogICAgICwgbV9i
YXNlRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSkKKyAgICAsIG1fZGlkU3RhcnREcmFn
KGZhbHNlKQorICAgICwgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudShmYWxzZSkKIHsK
IH0KIApAQCAtNDAxLDYgKzQwMyw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjZW5k
aWYKICAgICBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlID0gMDsKICAgICBtX2Jh
c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpOb1R5cGU7CisgICAgbV9kaWRTdGFydERyYWcg
PSBmYWxzZTsKKyAgICBtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51ID0gZmFsc2U7CiB9
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBub2RlVG9CZVJl
bW92ZWQpCkBAIC03MTEsNyArNzE1LDcgQEAgc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKGhhbmRsZURyYWcoZXZlbnQpKQorICAgIGlm
IChoYW5kbGVEcmFnKGV2ZW50LCBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91c2VQcmVzc2VkKQpAQCAtMjU5OCw2ICsyNjAy
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVy
ZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CiAg
ICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGdlc3R1cmVFdmVudCk7CisgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVR3b0Zpbmdl
clRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJs
ZVRhcDoKQEAgLTI2NDgsOSArMjY1NCwzNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAg
aWYgKG1fZnJhbWUtPnNldHRpbmdzKCktPnRvdWNoRHJhZ0Ryb3BFbmFibGVkKCkpIHsKKyAgICAg
ICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IGdlc3R1cmVFdmVudC5wb3NpdGlvbigpOworI2lm
IEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQorICAgICAgICBhZGp1c3RHZXN0dXJlUG9zaXRpb24o
Z2VzdHVyZUV2ZW50LCBhZGp1c3RlZFBvaW50KTsKKyNlbmRpZgorICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgbW91c2VEb3duRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2VzdHVyZUV2ZW50Lmdsb2Jh
bFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgICAg
IGhhbmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZURvd25FdmVudCk7CisgICAgICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBtb3VzZURyYWdFdmVudChhZGp1c3RlZFBvaW50LCBnZXN0dXJlRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRpbWUoKSk7CisgICAgICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVwYXJlTW91c2VFdmVudChy
ZXF1ZXN0LCBtb3VzZURyYWdFdmVudCk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7
CisgICAgICAgIGhhbmRsZURyYWcobWV2LCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CisgICAg
ICAgIGlmIChtX2RpZFN0YXJ0RHJhZykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyNlbmRpZgogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4
dE1lbnUoZ2VzdHVyZUV2ZW50KTsKIH0KIAorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit7Cisj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmICFPUyhBTkRST0lEKQorICAgIGlmICghbV9kaWRM
b25nUHJlc3NJbnZva2VDb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuIHNlbmRDb250ZXh0TWVu
dUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25P
ckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7
CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTI2NjQsNiArMjY5Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZv
cm1HZXN0CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgbV9k
aWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpOwogICAgIHJldHVybiBzZW5kQ29udGV4dE1l
bnVFdmVudEZvckdlc3R1cmUoZ2VzdHVyZUV2ZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjc2MSw2ICsyNzk0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmFkanVzdEdlc3R1cmVQ
b3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW4KICAgICAgICAg
YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBJ
bnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdlc3R1cmVFdmVudC5hcmVh
KCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczoKKyAgICBjYXNl
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgYmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNo
UG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFyZWEo
KS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1c3Rl
ZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMzMxLDcgKzMzNjUsNyBA
QCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VBY3Rpb24gbikKICAgICBy
ZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCitib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcmFnSHlzdGVyZXNpcyBjaGVja0RyYWdIeXN0ZXJlc2lzKQogewogICAg
IGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuZXZlbnQo
KS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewogICAgICAgICAvLyBJZiB3
ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8gaGFuZGxlIGEgZHJhZwpA
QCAtMzQxMCw3ICszNDQ0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAgICAgIHZpZXctPnNldEN1
cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlmICghZHJhZ0h5c3RlcmVzaXNF
eGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKKyAgICBpZiAoY2hlY2tEcmFnSHlz
dGVyZXNpcyA9PSBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzICYmICFkcmFnSHlzdGVyZXNpc0V4
Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBwb2ludCwgd2UgZG9u
J3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawpAQCAtMzQ2MSwxMSArMzQ5
NSwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcp
IHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgRHJhZ0Nv
bnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkg
OiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRyb2xsZXIgJiYgZHJhZ0Nv
bnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2
ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgbV9kaWRTdGFydERyYWcgPSBkcmFnQ29u
dHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgp
LCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwogICAgICAgICAvLyBJbiBX
ZWJLaXQyIHdlIGNvdWxkIHJlZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFydCBhbm90aGVyIGRyYWcu
CiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3duZXJz
aGlwIG9mIHRoZSBwYXN0ZWJvYXJkCiAgICAgICAgIC8vIGFuZCB0aGUgcHJvbWlzZWQgdHlwZXMu
Ci0gICAgICAgIGlmIChzdGFydGVkRHJhZykgeworICAgICAgICBpZiAobV9kaWRTdGFydERyYWcp
IHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
aW5kZXggZmNiY2Q2MTZiNDg0OTQ2ZjE2ZGE4MTY4ZWJmYTNlYTEzMzE3ZmQ4Mi4uYzE1ODk4YTAy
NjQ5ZGVhYzFhOTFjOWM3YjBlM2UyOTdlODEyODM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCkBAIC05MSw2ICs5MSw3IEBAIGV4dGVybiBjb25zdCBpbnQgR2VuZXJhbERyYWdIeXN0
ZXJlc2lzOwogCiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJh
cnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwogZW51bSBBcHBlbmRUcmFpbGluZ1doaXRlc3Bh
Y2UgeyBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRBcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgfTsKK2VudW0gQ2hlY2tEcmFnSHlzdGVyZXNpcyB7IFNob3VsZENoZWNrRHJhZ0h5
c3RlcmVzaXMsIERvbnRDaGVja0RyYWdIeXN0ZXJlc2lzIH07CiAKIGNsYXNzIEV2ZW50SGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVyKTsKQEAgLTE3MCw2ICsx
NzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVUYXAoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdlc3R1cmVMb25nVGFwKGNv
bnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlVHdvRmlu
Z2VyVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVHZXN0
dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBp
c1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdDsKQEAgLTMwNyw3ICszMDksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBmcmVlQ2xpcGJvYXJkKCk7CiAKLSAgICBib29sIGhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOworICAgIGJvb2wgaGFuZGxl
RHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVy
ZXNpcyk7CiAjZW5kaWYKICAgICBib29sIGhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC00NjgsNiAr
NDcwLDggQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5p
bmdBdmVyYWdlOwogICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbV9iYXNlRXZlbnRUeXBlOworICAg
IGJvb2wgbV9kaWRTdGFydERyYWc7CisgICAgYm9vbCBtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRl
eHRNZW51OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aW4KaW5kZXggODhkNTFjNDE2NzUyNmU4YmUyMjA2NmNkZmMzMzdiOTcxNjhkMzMxMC4uMTI2NjMw
YzMzYWMxOTUxM2FjOWU5MDA4ZGEwYTY4MDZlZWJiOTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCkBAIC0xNjQsMyArMTY0LDcgQEAgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCBpbml0aWFsPWZh
bHNlCiBhbGxvd0N1c3RvbVNjcm9sbGJhckluTWFpbkZyYW1lIGluaXRpYWw9dHJ1ZQogd2ViU2Vj
dXJpdHlFbmFibGVkIGluaXRpYWw9dHJ1ZQogc3BhdGlhbE5hdmlnYXRpb25FbmFibGVkIGluaXRp
YWw9ZmFsc2UKKworIyBUaGlzIHNldHRpbmcgYWRkcyBhIG1lYW5zIHRvIGVuYWJsZS9kaXNhYmxl
IHRvdWNoIGluaXRpYXRlZCBkcmFnICYgZHJvcC4gSWYKKyMgZW5hYmxlZCwgdGhlIHVzZXIgY2Fu
IGluaXRpYXRlIGRyYWcgdXNpbmcgbG9uZyBwcmVzcy4KK3RvdWNoRHJhZ0Ryb3BFbmFibGVkIGlu
aXRpYWw9ZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CmluZGV4IDJkMzU2ZmE2YTEwZGQ4ZTc3NGFhYzAyZjBkOGQ4NGVjYTQ2Mjg4YjQuLjQyYjhmMDQw
NjM0NGYwMGJkNjk3N2QwMWE4MDg1MDE1ZmNlMTE4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTY5LDYgKzE2OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0V2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0V2ViU2VjdXJpdHlFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sKSA9IDA7CiAKICAgICAvLyBERVBSRUNB
VEVEIChyZW5hbWVkLiByZW1vdmUgdGhpcyBhZnRlciBhbGwgY2FsbCBzaXRlcyBjaGFuZ2VkIHRv
IHRoZSBuZXcgbmFtZSkKICAgICB2b2lkIHNldEFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKGJvb2wgZW5hYmxlZCkgeyBzZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yKGVuYWJsZWQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAppbmRleCAyMGZjYzFiOTYwZTM5YmVlMDczOTEzOGMzYmZjZmJiM2Mx
MmVlNDFlLi43NGYzYzQ1MTdhZTI5MDg5ZjgyNzEyZmQ5ZGM3NTBkOTM3NWYzNTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTI5Miw2
ICsyOTIsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChlbmFibGVk
KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZChl
bmFibGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEROU1ByZWZldGNoaW5nRW5h
YmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdF
bmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaAppbmRleCA5ODUyMGVhZGZkMjY4NTRiYmViYzYzODc3YmU5OWMzODdlOTY4ZDk2Li43
MGRiZTMyYzJlOTEwN2M0N2I5ZGY4YWY4ZmRkMDFiZDJhYmVmNThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0V2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRXZWJTZWN1cml0eUVuYWJsZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sKTsKIAogICAgIGJvb2wgc2hvd0ZQU0NvdW50
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nob3dGUFNDb3VudGVyOyB9CiAgICAgYm9vbCBzaG93UGxh
dGZvcm1MYXllclRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEy
MGYxZTNlMjM1NDg0NDhkNjgyMTkyYmM3MzgwYmFlYjY0YWU4YjkuLmUzMDhkNDkyNjk4MmEwMjA5
ZTU1MmU5MmFkODhiZjU1MjA2ZGY4ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0xMS0yNSAgVmFydW4gSmFp
biAgPHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFuZCBMb25n
VGFwIGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4dCBtZW51
IHJlc3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNl
IGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0
YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1l
bnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJy
ZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNl
IHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBz
dW1tb24gdGhlIGNvbnRleHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAorICAg
ICAgICBkcm9wIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2luZyB0
aGUgU2V0dGluZworICAgICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNhYmxl
ZCBieSBkZWZhdWx0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmg6CisgICAgICAg
IChFdmVudFNlbmRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVu
bmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNl
dFRvdWNoRHJhZ0Ryb3BFbmFibGVkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoK
KyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEyLTExLTIyICBQZXRlciBCZXZlcmxvbyAgPHBl
dGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJldHVybiBhbiBhY2N1cmF0
ZSBleGl0IGNvZGUgd2hlbiBydW5uaW5nIEFuZHJvaWQgc3VpdGVzLCBhbmQgd2FpdCBhZnRlciBy
ZXN0YXJ0aW5nIGFkYiBhcyByb290CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5kZXggMTcxZTI1
ZGRiN2ExMmEyMzYxNjZhYzFjZWIwNjQ2YmJjYWRhZWIwNi4uNzczYTU2YjE3OTYyZDQzYWQ1NWNi
NzU4Y2E4MThhNWMyZDdjZTRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApAQCAtMjk2LDYg
KzI5Niw3IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiAgICAgYmluZE1ldGhvZCgiZ2Vz
dHVyZVRhcERvd24iLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXBEb3duKTsKICAgICBiaW5kTWV0
aG9kKCJnZXN0dXJlVGFwQ2FuY2VsIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwQ2FuY2VsKTsK
ICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1ByZXNzIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJl
TG9uZ1ByZXNzKTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJlTG9uZ1RhcCIsICZFdmVudFNlbmRl
cjo6Z2VzdHVyZUxvbmdUYXApOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVUd29GaW5nZXJUYXAi
LCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXApOwogICAgIGJpbmRNZXRob2QoInpv
b21QYWdlSW4iLCAmRXZlbnRTZW5kZXI6Onpvb21QYWdlSW4pOwogICAgIGJpbmRNZXRob2QoInpv
b21QYWdlT3V0IiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZU91dCk7CkBAIC0xMTM3LDYgKzExMzgs
MTIgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUxvbmdQcmVzcyhjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICBnZXN0dXJlRXZlbnQoV2ViSW5wdXRF
dmVudDo6R2VzdHVyZUxvbmdQcmVzcywgYXJndW1lbnRzKTsKIH0KIAordm9pZCBFdmVudFNlbmRl
cjo6Z2VzdHVyZUxvbmdUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBnZXN0dXJlRXZl
bnQoV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdUYXAsIGFyZ3VtZW50cyk7Cit9CisKIHZvaWQg
RXZlbnRTZW5kZXI6Omdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsK
QEAgLTEyMDYsOCArMTIxMywxNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQoV2Vi
SW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgICAgIGV2
ZW50LnggPSBwb2ludC54OwogICAgICAgICBldmVudC55ID0gcG9pbnQueTsKICAgICAgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPj0gNCkgewotICAgICAgICAgICAgZXZlbnQuZGF0YS50YXBEb3du
LndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKLSAg
ICAgICAgICAgIGV2ZW50LmRhdGEudGFwRG93bi5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJl
c3Mud2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwor
ICAgICAgICAgICAgZXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwOgorICAgICAgICBldmVudC54
ID0gcG9pbnQueDsKKyAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CisgICAgICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID49IDQpIHsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLndp
ZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICAg
ICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0Pihh
cmd1bWVudHNbM10udG9Eb3VibGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVy
LmgKaW5kZXggYzVkNzQyYjVmYjY2MjNmNDA0NGQ5MmY5MjBiYjNhMzE1NDQ0YzYzNC4uYjFkYTY4
NDg3NjExMDhiNGE2YzdhNmJmMzE4Njk2YzU5MTVmYmIyYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
CkBAIC0xMTEsNiArMTExLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2VzdHVyZVRhcERvd24oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVRhcENh
bmNlbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0
dXJlTG9uZ1ByZXNzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2
b2lkIGdlc3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
ICAgICB2b2lkIGdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdlYktpdDo6V2ViSW5wdXRFdmVudDo6
VHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0Jik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggMzcwNzg5MjdkOTkyYjgzNWQzMGM5NWZjZDI2ZDQxNThiOWNiNmJkZC4uOGFhODE3YTJiZGY2
YmRiY2M1ZjQyMTNlOGQ2Y2JmMDdlZDBmN2I5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAg
LTk4LDYgKzk4LDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1ldGhvZCgi
c2V0UGFnZVZpc2liaWxpdHkiLCAmVGVzdFJ1bm5lcjo6c2V0UGFnZVZpc2liaWxpdHkpOwogICAg
IGJpbmRNZXRob2QoInNldFRleHREaXJlY3Rpb24iLCAmVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVj
dGlvbik7CiAgICAgYmluZE1ldGhvZCgidGV4dFN1cnJvdW5kaW5nTm9kZSIsICZUZXN0UnVubmVy
Ojp0ZXh0U3Vycm91bmRpbmdOb2RlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRUb3VjaERyYWdEcm9w
RW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk7CiAKICAgICAv
LyBQcm9wZXJ0aWVzLgogICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVz
dFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQpOwpAQCAtNjY0LDYgKzY2NSwxNSBAQCB2b2lkIFRl
c3RSdW5uZXI6OnRleHRTdXJyb3VuZGluZ05vZGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbgogICAgIHJlc3VsdC0+c2V0KHN1cnJvdW5kaW5nVGV4dC50ZXh0Q29u
dGVudCgpLnV0ZjgoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVu
YWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAh
PSAxIHx8ICFhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
d2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoYXJndW1lbnRzWzBd
LnRvQm9vbGVhbigpKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjp3b3JrZXJUaHJlYWRDb3VudChD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoc3RhdGljX2Nhc3Q8aW50PihX
ZWJXb3JrZXJJbmZvOjpkZWRpY2F0ZWRXb3JrZXJDb3VudCgpKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
aW5kZXggZjllOWY3YTI0NmEwOTdhY2MxZGVjOWIzZDI4YWRlZTE4MDgzM2I4My4uNDY5MWU1NTc5
Yjg3ODVhYmIwYTJkNGMzNDFlZGFmOWMyMTFlMWUwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAt
MTQ3LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gcG9pbnQgY29vcmRpbmF0ZXMgcmVsYXRp
dmUgdG8gdGhlIG5vZGUgYW5kIHRoZSBmb3VydGggdGhlIG1heGltdW0gdGV4dAogICAgIC8vIGxl
bmd0aCB0byByZXRyaWV2ZS4KICAgICB2b2lkIHRleHRTdXJyb3VuZGluZ05vZGUoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0VG91Y2hEcmFnRHJvcEVu
YWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAgICAgLy8gUHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc4ZTE0YTBiZmVjYjIxZGFj
N2Q0ZDE3Nzc3MTA0NWE0MjY1MDA3N2YuLmNiODliNDY3NGFkYjlhZTA4N2E3ZTI5Njc2MzAyZWI0
NGExMTkzOTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0xMS0yNSAgVmFydW4gSmFpbiAg
PHZhcnVuamFpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTG9uZ1ByZXNzIGFuZCBMb25nVGFw
IGdlc3R1cmVzIHNob3VsZCBzdGFydCBkcmFnL2Ryb3AgYW5kIG9wZW4gY29udGV4dCBtZW51IHJl
c3BlY3RpdmVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRv
d24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0
ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQp
LCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50
CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRo
ZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1t
b24gdGhlIGNvbnRleHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAorICAgICAg
ICBkcm9wIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2luZyB0aGUg
U2V0dGluZworICAgICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0
LW1lbnUtb24tbG9uZy10YXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xv
bmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3Mt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MuaHRtbDoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0
ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFw
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDhiNjJiZDAxZDUyNWI1OGY3Zjk0NTcyMTEwM2Q3NWEwMGY5NjMy
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNr
cyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVyZS48L3A+
Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rp
dj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQub25j
b250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0Iik7CisKKyAgICB2YXIgeCA9IHRleHQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQgKyB0ZXh0Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gdGV4dC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldEhlaWdodCAvIDI7CisK
KyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChl
dmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCkgeworICAgICAgICBldmVudFNlbmRlci5nZXN0dXJl
TG9uZ1RhcCh4LCB5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdU
YXAgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmE0NDMzYzRlNTFiNzRiNzdlYjViYTFjOWYyYjcxNDBjZmU0NjE0ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
bG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dh
YmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uPC9wPgorPGRpdiBpZD0idGV4
dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Cis8ZGl2IGlkPSJk
cmFnZ2FibGVEaXYiIGRyYWdnYWJsZT0ndHJ1ZSc+RHJhZyBtZTwvZGl2PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAodGVzdFJ1bm5lci5zZXRUb3VjaERyYWdE
cm9wRW5hYmxlZCkKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZCh0
cnVlKTsKKworICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZh
ciBkcmFnYWJsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVEaXYiKTsK
KworICAgIHZhciB4ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZHJh
Z2dhYmxlRGl2Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gZHJhZ2dhYmxlRGl2Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0VG9wICsgZHJhZ2dhYmxlRGl2
Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKSB7CisgICAg
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MoeCwgeSk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdQ
cmVzcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRl
eHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRh
cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NzM1ZmFlZmUzODFlNzVjZGRmY2ZlMmI0MjEy
NzJhNmYyNWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgY29u
dGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuCisKK1Rlc3RpbmcKK1BBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3Rv
dWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFn
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1k
cmFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJhNDVlYzA5ZmFiMzc2ZGE1MmQ4YWMxYTE3
NGQ0NzczNTQzZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1l
bGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVsZW1l
bnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uCisKK1Rlc3RpbmcKK1BBU1MKK0RyYWcgbWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxp
bmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKaW5kZXggMTk1MWY5NzYxNzAzMmFmMTBjMGNmZDEx
NGQ2MDEyYWFlMzJjN2E1MC4uYzIyMDM2Yzg1OTdjNWM2ODkwOGQxNDNlNzg1OTVhMjQ4NzE4ZDli
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxv
bmdwcmVzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Rv
dWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBp
ZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBjb250ZXh0IG1l
bnUgd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCitUZXN0cyBpZiBhIGxvbmcgcHJlc3Mg
Z2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3VjaCBhZGp1
c3RtZW50IGlzIHVzZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1s
IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1s
CmluZGV4IGRjYTkwN2JmZTA5MmJhODNkOTU2OTI2ZDVmY2JjNGU4M2NhYWNlMzEuLmZkYTljNjZh
MTk3ZDM2MTIxZmRiNzE1MWZmMzAzM2U2NDVlZTdiYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKQEAgLTEsNyAr
MSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0gICAgPHRpdGxlPlRvdWNo
IEFkanVzdG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBjb250ZXh0IG1lbnUgd2lsbCBhcHBlYXIgb24g
YSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0
bWVudCA6IFRlc3RpbmcgdGhhdCBhIGRyYWcvZHJvcCB3aWxsIHN0YXJ0IG9uIGEgbG9uZyBwcmVz
cyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgpAQCAtMzEsNyArMzEs
NyBAQAogICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CiAgICAgfSk7
CiAKLSAgICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJQQVNT
Iik7IH0KKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKGUpIHsgZGVidWcoIlBB
U1MiKTsgZS5wcmV2ZW50RGVmYXVsdCgpO30KIAogICAgIGZ1bmN0aW9uIHRlc3RMb25nUHJlc3Mo
dG91Y2hwb2ludCkKICAgICB7CkBAIC04OSw3ICs4OSw4IEBACiAgICAgZnVuY3Rpb24gcnVuVGVz
dHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRl
cm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkg
ewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJl
IG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFkanVzdG1l
bnQgaXMgdXNlZC4nKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VG91Y2hEcmFnRHJvcEVu
YWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYgYSBsb25nIHBy
ZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4gdG91Y2gg
YWRqdXN0bWVudCBpcyB1c2VkLicpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsK
ICAgICAgICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIGUuc2FuZGJv
eC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176086</attachid>
            <date>2012-11-26 15:21:29 -0800</date>
            <delta_ts>2012-11-26 15:26:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121126181907.patch</filename>
            <type>text/plain</type>
            <size>28764</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uNDU1NDM1MDVhODJhMmU0ODliYTEwZjY2YTFiMDdl
YTRhZTljYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTI1ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEg
bW91c2UgZG93biBhbmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBu
b3Qgc3RhcnRlZCAoYmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAg
ZWxlbWVudCksIHRoZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhl
IGN1cnJlbnQKKyAgICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3
ZSB1c2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2Vz
IHRvIHN1bW1vbiB0aGUgY29udGV4dCBtZW51LiBMb25nUHJlc3MgaW5pdGlhdGVkIGRyYWcgYW5k
CisgICAgICAgIGRyb3AgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgYnkgdGhlIHBsYXRmb3JtIHVz
aW5nIHRoZSBTZXR0aW5nCisgICAgICAgIHRvdWNoRHJhZ0Ryb3BFbmFibGVkIHdoaWNoIGlzIGRp
c2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVHZXN0dXJlTG9uZ1RhcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRl
eHRNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxq
b2hubWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBo
YW5kbGluZyBvZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBkYWU3MDVmODc3NTg0NDQyY2UwYzFmNzBjZjA0MDE4MjI2OWY0NzgwLi5l
NGU0MDdmOGJjMzQwYWMxMzAwZjQwZDNmNjFhZmVlZTVmNmQ5YzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI1ICBWYXJ1biBKYWluICA8dmFy
dW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5kIExvbmdUYXAgZ2Vz
dHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1lbnUgcmVzcGVj
dGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIExvbmdQcmVzcywgd2Ugc2ltdWxhdGUgZHJhZyBieSBzZW5kaW5nIGEgbW91c2UgZG93biBh
bmQgbW91c2UgZHJhZworICAgICAgICBldmVudHMuIElmIGEgZHJhZyBpcyBub3Qgc3RhcnRlZCAo
YmVjYXVzZSBtYXliZSB0aGVyZSBpcyBubyBkcmFnZ2FibGUKKyAgICAgICAgZWxlbWVudCksIHRo
ZW4gd2Ugc2hvdyBjb250ZXh0IG1lbnUgaW5zdGVhZCAod2hpY2ggaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgYmVoYXZpb3IgZm9yIExvbmdQcmVzcykuIEZvciBMb25nVGFwLCB3ZSB1c2UgdGhlIGV4
aXN0aW5nIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIExvbmdQcmVzcyB1c2VzIHRvIHN1bW1vbiB0
aGUgY29udGV4dCBtZW51LiBMb25nUHJlc3MgaW5pdGlhdGVkIGRyYWcgYW5kCisgICAgICAgIGRy
b3AgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgYnkgdGhlIHBsYXRmb3JtIHVzaW5nIHRoZSBTZXR0
aW5nCisgICAgICAgIHRvdWNoRHJhZ0Ryb3BFbmFibGVkIHdoaWNoIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMv
V2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpz
ZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisKIDIwMTIt
MTEtMjIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBBZGQgT1MhPSJpb3MiIHRvIGd1YXJkIGZvciBnY2NfdmVyc2lvbiBpbiBXZWJLaXQu
Z3lwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWM1MGRlNWM2NWMyZTc1
MzNjZmI3YjI4MDJiZDZmNGExYWYxZDUyNi4uY2Y0ZWQyMjg1NWNiZjZmZGUxOGE2ZmI4N2ExMjg1
YWI2Y2Q5YjU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzQ4LDYg
KzM0OCw4IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNlbmRp
ZgogICAgICwgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSgwKQogICAgICwgbV9i
YXNlRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSkKKyAgICAsIG1fZGlkU3RhcnREcmFn
KGZhbHNlKQorICAgICwgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudShmYWxzZSkKIHsK
IH0KIApAQCAtNDAxLDYgKzQwMyw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjZW5k
aWYKICAgICBtX21vdXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlID0gMDsKICAgICBtX2Jh
c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpOb1R5cGU7CisgICAgbV9kaWRTdGFydERyYWcg
PSBmYWxzZTsKKyAgICBtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51ID0gZmFsc2U7CiB9
CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBub2RlVG9CZVJl
bW92ZWQpCkBAIC03MTEsNyArNzE1LDcgQEAgc3RhdGljIGJvb2wgY2FuQXV0b3Njcm9sbChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQpCiB7Ci0gICAgaWYgKGhhbmRsZURyYWcoZXZlbnQpKQorICAgIGlm
IChoYW5kbGVEcmFnKGV2ZW50LCBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fbW91c2VQcmVzc2VkKQpAQCAtMjU5OCw2ICsyNjAy
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVy
ZVRhcERvd24oKTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M6CiAg
ICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzKGdlc3R1cmVFdmVudCk7CisgICAg
Y2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZUdlc3R1cmVMb25nVGFwKGdlc3R1cmVFdmVudCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZVR3b0Zpbmdl
clRhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZURvdWJs
ZVRhcDoKQEAgLTI2NDgsOSArMjY1NCwzNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogCiBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogeworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAg
aWYgKG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+dG91Y2hEcmFn
RHJvcEVuYWJsZWQoKSkgeworICAgICAgICBJbnRQb2ludCBhZGp1c3RlZFBvaW50ID0gZ2VzdHVy
ZUV2ZW50LnBvc2l0aW9uKCk7CisjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCisgICAgICAg
IGFkanVzdEdlc3R1cmVQb3NpdGlvbihnZXN0dXJlRXZlbnQsIGFkanVzdGVkUG9pbnQpOworI2Vu
ZGlmCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURvd25FdmVudChhZGp1c3RlZFBv
aW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpj
dXJyZW50VGltZSgpKTsKKyAgICAgICAgaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRG93bkV2
ZW50KTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRHJhZ0V2ZW50KGFkanVzdGVk
UG9pbnQsIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RGOjpj
dXJyZW50VGltZSgpKTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkpOworICAgICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRHJhZ0V2ZW50KTsKKyAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBmYWxzZTsKKyAgICAgICAgaGFuZGxlRHJhZyhtZXYsIERvbnRDaGVj
a0RyYWdIeXN0ZXJlc2lzKTsKKyAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVG
b3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudShnZXN0dXJlRXZlbnQpOwogfQogCitib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgIU9TKEFO
RFJPSUQpCisgICAgaWYgKCFtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51KQorICAgICAg
ICByZXR1cm4gc2VuZENvbnRleHRNZW51RXZlbnRGb3JHZXN0dXJlKGdlc3R1cmVFdmVudCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICNpZiBPUyhBTkRST0lEKQpAQCAtMjY2NCw2ICsyNjk2
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JD
b250ZXh0TWVudShjb25zdCBQbGF0Zm9ybUdlc3QKICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKKyAgICBtX2RpZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51ID0gKGdl
c3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CiAg
ICAgcmV0dXJuIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOwog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzYxLDYgKzI3OTQsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6YWRqdXN0R2VzdHVyZVBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbgogICAgICAgICBiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQoZ2Vz
dHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2VzdHVyZUV2ZW50LmFyZWEoKS53aWR0aCgp
IC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQoKSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0
YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlTG9uZ1ByZXNzOgorICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA6CiAg
ICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICBiZXN0
Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgSW50
U2l6ZShnZXN0dXJlRXZlbnQuYXJlYSgpLndpZHRoKCkgLyAyLCBnZXN0dXJlRXZlbnQuYXJlYSgp
LmhlaWdodCgpIC8gMiksIGFkanVzdGVkUG9pbnQsIHRhcmdldE5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTMzMzEsNyArMzM2NSw3IEBAIHN0YXRpYyBib29sIEV4YWN0bHlPbmVCaXRTZXQoRHJh
Z1NvdXJjZUFjdGlvbiBuKQogICAgIHJldHVybiBuICYmICEobiAmIChuIC0gMSkpOwogfQogCi1i
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBldmVudCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyYWdIeXN0ZXJlc2lzIGNoZWNr
RHJhZ0h5c3RlcmVzaXMpCiB7CiAgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gTGVm
dEJ1dHRvbiB8fCBldmVudC5ldmVudCgpLnR5cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkKSB7CiAgICAgICAgIC8vIElmIHdlIGFsbG93ZWQgdGhlIG90aGVyIHNpZGUgb2YgdGhlIGJy
aWRnZSB0byBoYW5kbGUgYSBkcmFnCkBAIC0zNDEwLDcgKzM0NDQsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVu
dCkKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgfQogCi0g
ICAgaWYgKCFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkp
IAorICAgIGlmIChjaGVja0RyYWdIeXN0ZXJlc2lzID09IFNob3VsZENoZWNrRHJhZ0h5c3RlcmVz
aXMgJiYgIWRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBo
eXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBh
IGNsaWNrCkBAIC0zNDYxLDExICszNDk1LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogICAgIGlmICht
X21vdXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIgPSBwYWdlID8g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKSA6IDA7Ci0gICAgICAgIGJvb2wgc3RhcnRlZERyYWcgPSBk
cmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJhbWUsIGRyYWdT
dGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IGRyYWdDb250cm9sbGVyICYmIGRyYWdDb250cm9sbGVyLT5zdGFydERy
YWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93
blBvcyk7CiAgICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmVlbnRlciB0aGlzIGNvZGUg
YW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQKICAgICAgICAgLy8g
YW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KLSAgICAgICAgaWYgKHN0YXJ0ZWREcmFnKSB7CisgICAg
ICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFy
dERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmY2JjZDYxNmI0ODQ5NDZmMTZkYTgxNjhlYmZh
M2VhMTMzMTdmZDgyLi5jMTU4OThhMDI2NDlkZWFjMWE5MWM5YzdiMGUzZTI5N2U4MTI4Mzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgZXh0ZXJuIGNv
bnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAKIGVudW0gSGl0VGVzdFNjcm9sbGJhcnMg
eyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiBlbnVt
IEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB7IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFj
ZSwgRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSB9OworZW51bSBDaGVja0RyYWdIeXN0ZXJl
c2lzIHsgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcywgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMg
fTsKIAogY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVu
dEhhbmRsZXIpOwpAQCAtMTcwLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZUdl
c3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxl
R2VzdHVyZVRhcChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogICAgIGJvb2wgaGFuZGxl
R2VzdHVyZUxvbmdQcmVzcyhjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworICAgIGJvb2wg
aGFuZGxlR2VzdHVyZUxvbmdUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBi
b29sIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
KTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVTY3JvbGxVcGRhdGUoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmKTsKICAgICBib29sIGlzU2Nyb2xsYmFySGFuZGxpbmdHZXN0dXJlcygpIGNvbnN0
OwpAQCAtMzA3LDcgKzMwOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZyZWVDbGlwYm9hcmQo
KTsKIAotICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJik7CisgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKICNlbmRpZgogICAgIGJvb2wgaGFuZGxlTW91
c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKQEAgLTQ2OCw2ICs0NzAsOCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1f
bW91c2VNb3ZlZER1cmF0aW9uUnVubmluZ0F2ZXJhZ2U7CiAgICAgUGxhdGZvcm1FdmVudDo6VHlw
ZSBtX2Jhc2VFdmVudFR5cGU7CisgICAgYm9vbCBtX2RpZFN0YXJ0RHJhZzsKKyAgICBib29sIG1f
ZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA4OGQ1MWM0MTY3NTI2ZThiZTIyMDY2Y2Rm
YzMzN2I5NzE2OGQzMzEwLi4xMjY2MzBjMzNhYzE5NTEzYWM5ZTkwMDhkYTBhNjgwNmVlYmI5NzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTE2NCwzICsxNjQsNyBAQCBmcmFtZUZsYXR0
ZW5pbmdFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGFsbG93Q3VzdG9tU2Nyb2xsYmFySW5NYWluRnJh
bWUgaW5pdGlhbD10cnVlCiB3ZWJTZWN1cml0eUVuYWJsZWQgaW5pdGlhbD10cnVlCiBzcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWQgaW5pdGlhbD1mYWxzZQorCisjIFRoaXMgc2V0dGluZyBhZGRzIGEg
bWVhbnMgdG8gZW5hYmxlL2Rpc2FibGUgdG91Y2ggaW5pdGlhdGVkIGRyYWcgJiBkcm9wLiBJZgor
IyBlbmFibGVkLCB0aGUgdXNlciBjYW4gaW5pdGlhdGUgZHJhZyB1c2luZyBsb25nIHByZXNzLgor
dG91Y2hEcmFnRHJvcEVuYWJsZWQgaW5pdGlhbD1mYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggMmQzNTZmYTZhMTBkZDhlNzc0YWFjMDJmMGQ4
ZDg0ZWNhNDYyODhiNC4uNGM5ZDBjYzY0YzRkYmI3MWUyNDUzNmQxOTk4M2YzNmEyOGZhNzEwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xNTgs
NiArMTU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0Vu
YWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0ZvbnRT
Y2FsZUZhY3RvcihmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9u
U3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBXZWJVUkwmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFVzZXNFbmNvZGluZ0RldGVjdG9yKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDIwZmNjMWI5NjBl
MzliZWUwNzM5MTM4YzNiZmNmYmIzYzEyZWU0MWUuLjE2NDg4MGFhN2E1NmRlMDIzODdjYmI5ODU2
MGU0MjMzMmFlMGZkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcApAQCAtMzQ2LDYgKzM0NiwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6
c2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKQog
ICAgIG1fc2V0dGluZ3MtPnNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3Io
V2ViQ29yZTo6VGV4dERpcmVjdGlvblN1Ym1lbnVOZXZlckluY2x1ZGVkKTsKIH0KIAordm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtX3NldHRpbmdzLT5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZChlbmFibGVkKTsKK30KKwog
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAppbmRleCA5ODUyMGVhZGZkMjY4NTRiYmViYzYzODc3YmU5OWMzODdl
OTY4ZDk2Li5hYjkyNTYyZmE5NWM3OWUyOWZkYmZjMmUwZTIzMGViNDRhOTNkNjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTUzLDYgKzE1
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVk
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3Rv
cihmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVz
aW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFRvdWNoRHJh
Z0Ryb3BFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKGNvbnN0IFdlYlVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VzRW5jb2RpbmdEZXRl
Y3Rvcihib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxMjBmMWUzZTIzNTQ4NDQ4ZDY4MjE5MmJjNzM4MGJhZWI2NGFlOGI5Li5lMzA4ZDQ5
MjY5ODJhMDIwOWU1NTJlOTJhZDg4YmY1NTIwNmRmOGUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTEtMjUg
IFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVz
cyBhbmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNv
bnRleHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRp
bmcgYSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFn
IGlzIG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAg
ICAgICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBp
cyB0aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdU
YXAsIHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNz
IHVzZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJh
ZyBhbmQKKyAgICAgICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZv
cm0gdXNpbmcgdGhlIFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2gg
aXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
OgorICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKwogMjAxMi0xMS0yMiAgUGV0ZXIgQmV2
ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZXR1cm4g
YW4gYWNjdXJhdGUgZXhpdCBjb2RlIHdoZW4gcnVubmluZyBBbmRyb2lkIHN1aXRlcywgYW5kIHdh
aXQgYWZ0ZXIgcmVzdGFydGluZyBhZGIgYXMgcm9vdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmlu
ZGV4IDE3MWUyNWRkYjdhMTJhMjM2MTY2YWMxY2ViMDY0NmJiY2FkYWViMDYuLjc3M2E1NmIxNzk2
MmQ0M2FkNTVjYjc1OGNhODE4YTVjMmQ3Y2U0ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAK
QEAgLTI5Niw2ICsyOTYsNyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIGJpbmRN
ZXRob2QoImdlc3R1cmVUYXBEb3duIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwRG93bik7CiAg
ICAgYmluZE1ldGhvZCgiZ2VzdHVyZVRhcENhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRh
cENhbmNlbCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdQcmVzcyIsICZFdmVudFNlbmRl
cjo6Z2VzdHVyZUxvbmdQcmVzcyk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdUYXAiLCAm
RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVHdv
RmluZ2VyVGFwIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKTsKICAgICBiaW5k
TWV0aG9kKCJ6b29tUGFnZUluIiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZUluKTsKICAgICBiaW5k
TWV0aG9kKCJ6b29tUGFnZU91dCIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VPdXQpOwpAQCAtMTEz
Nyw2ICsxMTM4LDEyIEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50
KFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQg
RXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAg
Z2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwLCBhcmd1bWVudHMpOwor
fQorCiB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CkBAIC0xMjA2LDggKzEyMTMsMTYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVy
ZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0Jgog
ICAgICAgICBldmVudC54ID0gcG9pbnQueDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CiAg
ICAgICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID49IDQpIHsKLSAgICAgICAgICAgIGV2ZW50LmRh
dGEudGFwRG93bi53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3Vi
bGUoKSk7Ci0gICAgICAgICAgICBldmVudC5kYXRhLnRhcERvd24uaGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRh
dGEubG9uZ1ByZXNzLndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0Rv
dWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRp
Y19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAg
ICAgZXZlbnQueCA9IHBvaW50Lng7CisgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OworICAgICAg
ICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7CisgICAgICAgICAgICBldmVudC5kYXRhLmxv
bmdQcmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUo
KSk7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50
U2VuZGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9F
dmVudFNlbmRlci5oCmluZGV4IGM1ZDc0MmI1ZmI2NjIzZjQwNDRkOTJmOTIwYmIzYTMxNTQ0NGM2
MzQuLmIxZGE2ODQ4NzYxMTA4YjRhNmM3YTZiZjMxODY5NmM1OTE1ZmJiMmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZl
bnRTZW5kZXIuaApAQCAtMTExLDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVU
YXBEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdl
c3R1cmVUYXBDYW5jZWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAg
IHZvaWQgZ2VzdHVyZUxvbmdQcmVzcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJLaXQ6OldlYklu
cHV0RXZlbnQ6OlR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYpOwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDM3MDc4OTI3ZDk5MmI4MzVkMzBjOTVmY2QyNmQ0MTU4YjljYjZiZGQuLjhh
YTgxN2EyYmRmNmJkYmNjNWY0MjEzZThkNmNiZjA3ZWQwZjdiOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwCkBAIC05OCw2ICs5OCw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJp
bmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5IiwgJlRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmls
aXR5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRUZXh0RGlyZWN0aW9uIiwgJlRlc3RSdW5uZXI6OnNl
dFRleHREaXJlY3Rpb24pOwogICAgIGJpbmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAm
VGVzdFJ1bm5lcjo6dGV4dFN1cnJvdW5kaW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgic2V0VG91
Y2hEcmFnRHJvcEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQp
OwogCiAgICAgLy8gUHJvcGVydGllcy4KICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENv
dW50IiwgJlRlc3RSdW5uZXI6OndvcmtlclRocmVhZENvdW50KTsKQEAgLTY2NCw2ICs2NjUsMTUg
QEAgdm9pZCBUZXN0UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1Rl
eHQudGV4dENvbnRlbnQoKS51dGY4KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNo
RHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGFy
Z3VtZW50c1swXS50b0Jvb2xlYW4oKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhy
ZWFkQ291bnQoQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KHN0YXRpY19j
YXN0PGludD4oV2ViV29ya2VySW5mbzo6ZGVkaWNhdGVkV29ya2VyQ291bnQoKSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IGY5ZTlmN2EyNDZhMDk3YWNjMWRlYzliM2QyOGFkZWUxODA4MzNiODMu
LjQ2OTFlNTU3OWI4Nzg1YWJiMGEyZDRjMzQxZWRhZjljMjExZTFlMDYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIC8vIHBvaW50IGNvb3JkaW5h
dGVzIHJlbGF0aXZlIHRvIHRoZSBub2RlIGFuZCB0aGUgZm91cnRoIHRoZSBtYXhpbXVtIHRleHQK
ICAgICAvLyBsZW5ndGggdG8gcmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2Rl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFRvdWNo
RHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAog
ICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGUxNGEw
YmZlY2IyMWRhYzdkNGQxNzc3NzEwNDVhNDI2NTAwNzdmLi5jYjg5YjQ2NzRhZGI5YWUwODdhN2Uy
OTY3NjMwMmViNDRhMTE5Mzk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMjUgIFZh
cnVuIEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBh
bmQgTG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRl
eHQgbWVudSByZXNwZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcg
YSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlz
IG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAg
ICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0
aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAs
IHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVz
ZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJhZyBh
bmQKKyAgICAgICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZvcm0g
dXNpbmcgdGhlIFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2ggaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3Mt
bG9uZ3ByZXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLmh0bWw6CisKIDIwMTItMTEtMjIgIEpvaG4gTWVsbG9yICA8am9obm1l
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEltcHJvdmUgaGFuZGxp
bmcgb2YgbmVzdGVkIGNvbW1lbnRzIG9uIHJlZGRpdC5jb20KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1v
bi1sb25nLXRhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4YjYyYmQwMWQ1MjViNThmN2Y5NDU3MjExMDNk
NzVhMDBmOTYzMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC5odG1sCkBAIC0wLDAgKzEsMzQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPlRoaXMg
dGVzdCBjaGVja3MgdGhhdCB0aGUgY29udGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdl
c3R1cmUuPC9wPgorPGRpdiBpZD0idGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0
Ij5GQUlMPC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGRv
Y3VtZW50Lm9uY29udGV4dG1lbnUgPSBmdW5jdGlvbigpIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQQVNTIjsgfQorCisgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIpOworCisgICAgdmFyIHggPSB0ZXh0Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0ICsgdGV4dC5vZmZzZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IHRleHQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIHRleHQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRIZWln
aHQgLyAyOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdUYXApIHsKKyAgICAgICAgZXZlbnRTZW5k
ZXIuZ2VzdHVyZUxvbmdUYXAoeCwgeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdl
c3R1cmVMb25nVGFwIG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIHBsYXRmb3JtIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1k
cmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dl
cnMtZHJhZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNDQzM2M0ZTUxYjc0Yjc3ZWI1YmExYzlmMmI3MTQw
Y2ZlNDYxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy5o
dG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
dGVzdCgpIj4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBv
biBhIGRyYWdnYWJsZSBlbGVtZW50IHN0YXJ0cyBhIGRyYWcvZHJvcCBzZXNzaW9uLjwvcD4KKzxk
aXYgaWQ9InRleHQiPlRlc3Rpbmc8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2Pgor
PGRpdiBpZD0iZHJhZ2dhYmxlRGl2IiBkcmFnZ2FibGU9J3RydWUnPkRyYWcgbWU8L2Rpdj4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHRlc3RSdW5uZXIuc2V0
VG91Y2hEcmFnRHJvcEVuYWJsZWQpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VG91Y2hEcmFnRHJv
cEVuYWJsZWQodHJ1ZSk7CisKKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKCkg
eyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9
CisKKyAgICB2YXIgZHJhZ2FibGVEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHJhZ2dh
YmxlRGl2Iik7CisKKyAgICB2YXIgeCA9IGRyYWdnYWJsZURpdi5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdCArIGRyYWdnYWJsZURpdi5vZmZzZXRMZWZ0ICsgNDsKKyAgICB2YXIgeSA9IGRyYWdnYWJs
ZURpdi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNldFRvcCArIGRy
YWdnYWJsZURpdi5vZmZzZXRIZWlnaHQgLyAyOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoZXZlbnRTZW5kZXIuZ2VzdHVyZUxvbmdQcmVz
cykgeworICAgICAgICBldmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKHgsIHkpOworICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoImdl
c3R1cmVMb25nUHJlc3Mgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUt
b24tbG9uZy10YXAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NTczNWZhZWZlMzgxZTc1Y2Rk
ZmNmZTJiNDIxMjcyYTZmMjViMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1s
b25nLXRhcC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgdGhlIGNvbnRleHQgbWVudSBpcyBzaG93biBvbiBsb25nIHRhcCBnZXN0dXJlLgorCitUZXN0
aW5nCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJp
Z2dlcnMtZHJhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQt
dHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyYTQ1ZWMwOWZhYjM3NmRh
NTJkOGFjMWExNzRkNDc3MzU0M2Y3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1k
cmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBhIGRyYWdn
YWJsZSBlbGVtZW50IHN0YXJ0cyBhIGRyYWcvZHJvcCBzZXNzaW9uLgorCitUZXN0aW5nCitQQVNT
CitEcmFnIG1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gt
bGlua3MtbG9uZ3ByZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVu
dC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0CmluZGV4IDE5NTFmOTc2MTcwMzJh
ZjEwYzBjZmQxMTRkNjAxMmFhZTMyYzdhNTAuLmMyMjAzNmM4NTk3YzVjNjg5MDhkMTQzZTc4NTk1
YTI0ODcxOGQ5YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3Vj
aC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRq
dXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBA
QAotVGVzdHMgaWYgYSBsb25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEg
Y29udGV4dCBtZW51IHdoZW4gdG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLgorVGVzdHMgaWYgYSBs
b25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4g
dG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MuaHRtbAppbmRleCBkY2E5MDdiZmUwOTJiYTgzZDk1NjkyNmQ1ZmNiYzRlODNjYWFjZTMx
Li5mZGE5YzY2YTE5N2QzNjEyMWZkYjcxNTFmZjMwMzNlNjQ1ZWU3YmFjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1s
CkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotICAgIDx0
aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogVGVzdGluZyB0aGF0IGEgY29udGV4dCBtZW51IHdpbGwg
YXBwZWFyIG9uIGEgbG9uZyBwcmVzcyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CisgICAgPHRpdGxlPlRv
dWNoIEFkanVzdG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBkcmFnL2Ryb3Agd2lsbCBzdGFydCBvbiBh
IGxvbmcgcHJlc3MgLSBidWcgOTI5MTQ8L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzdHlsZT4KQEAg
LTMxLDcgKzMxLDcgQEAKICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEp
OwogICAgIH0pOwogCi0gICAgZG9jdW1lbnQub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBk
ZWJ1ZygiUEFTUyIpOyB9CisgICAgZG9jdW1lbnQub25kcmFnc3RhcnQgPSBmdW5jdGlvbihlKSB7
IGRlYnVnKCJQQVNTIik7IGUucHJldmVudERlZmF1bHQoKTt9CiAKICAgICBmdW5jdGlvbiB0ZXN0
TG9uZ1ByZXNzKHRvdWNocG9pbnQpCiAgICAgewpAQCAtODksNyArODksOCBAQAogICAgIGZ1bmN0
aW9uIHJ1blRlc3RzKCkKICAgICB7CiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyBpZiBhIGxvbmcgcHJl
c3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBjb250ZXh0IG1lbnUgd2hlbiB0b3Vj
aCBhZGp1c3RtZW50IGlzIHVzZWQuJyk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFRvdWNo
RHJhZ0Ryb3BFbmFibGVkKHRydWUpOworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlm
IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGRyYWcvZHJvcCB3
aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMgdXNlZC4nKTsKICAgICAgICAgICAgIHRlc3REaXJlY3RU
b3VjaGVzKCk7CiAgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7CiAgICAgICAgICAg
ICBlLnNhbmRib3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176089</attachid>
            <date>2012-11-26 15:26:06 -0800</date>
            <delta_ts>2012-11-26 15:40:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121126182344.patch</filename>
            <type>text/plain</type>
            <size>28748</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uYjI2YThkNmYzMzAwOTI4YjQzYmY5MjhkNTk4YTQy
OGQwNzZmM2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTI1ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3Vz
ZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBz
dGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVt
ZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3Vy
cmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVz
ZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8g
c3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJhZyBhbmQKKyAg
ICAgICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZvcm0gdXNpbmcg
dGhlIFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2ggaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJz
LWRyYWcuaHRtbAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlRHJhZ2dlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlR2VzdHVyZUxvbmdQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZUdlc3R1cmVMb25nVGFwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1l
bnUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmluOgorCiAyMDEyLTExLTIyICBKb2huIE1lbGxvciAgPGpvaG5t
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBJbXByb3ZlIGhhbmRs
aW5nIG9mIG5lc3RlZCBjb21tZW50cyBvbiByZWRkaXQuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGRhZTcwNWY4Nzc1ODQ0NDJjZTBjMWY3MGNmMDQwMTgyMjY5ZjQ3ODAuLmNkNWQ4
ZjQyMmQ5OGQ0NWEwNGY3M2Q2YTJjNzJmYjZlM2ZhZDlhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMjUgIFZhcnVuIEphaW4gIDx2YXJ1bmph
aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0dXJl
cyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0aXZl
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEZvciBMb25n
UHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRvd24gYW5kIG1vdXNl
IGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0ZWQgKGJlY2F1c2Ug
bWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQpLCB0aGVuIHdlIHNo
b3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50CisgICAgICAgIGJl
aGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRoZSBleGlzdGluZyBm
dW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1tb24gdGhlIGNvbnRl
eHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAorICAgICAgICBkcm9wIGNhbiBi
ZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2luZyB0aGUgU2V0dGluZworICAg
ICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Lgor
CisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0VG91Y2hE
cmFnRHJvcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTExLTIyICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
QWRkIE9TIT0iaW9zIiB0byBndWFyZCBmb3IgZ2NjX3ZlcnNpb24gaW4gV2ViS2l0Lmd5cApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGFjNTBkZTVjNjVjMmU3NTMzY2ZiN2Iy
ODAyYmQ2ZjRhMWFmMWQ1MjYuLmNmNGVkMjI4NTVjYmY2ZmRlMThhNmZiODdhMTI4NWFiNmNkOWI1
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0OCw2ICszNDgsOCBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAs
IG1fbW91c2VNb3ZlZER1cmF0aW9uUnVubmluZ0F2ZXJhZ2UoMCkKICAgICAsIG1fYmFzZUV2ZW50
VHlwZShQbGF0Zm9ybUV2ZW50OjpOb1R5cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhmYWxzZSkK
KyAgICAsIG1fZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnUoZmFsc2UpCiB7CiB9CiAKQEAg
LTQwMSw2ICs0MDMsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2VuZGlmCiAgICAg
bV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSA9IDA7CiAgICAgbV9iYXNlRXZlbnRU
eXBlID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFnID0gZmFsc2U7
CisgICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IGZhbHNlOwogfQogCiB2b2lk
IEV2ZW50SGFuZGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbm9kZVRvQmVSZW1vdmVkKQpA
QCAtNzExLDcgKzcxNSw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50KQogewotICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50KSkKKyAgICBpZiAoaGFuZGxl
RHJhZyhldmVudCwgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgaWYgKCFtX21vdXNlUHJlc3NlZCkKQEAgLTI1OTgsNiArMjYwMiw4IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUYXBEb3du
KCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAgICAgICBy
ZXR1cm4gaGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhnZXN0dXJlRXZlbnQpOworICAgIGNhc2UgUGxh
dGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA6CisgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJl
TG9uZ1RhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3
b0ZpbmdlclRhcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJUYXAoZ2Vz
dHVyZUV2ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CkBA
IC0yNjQ4LDkgKzI2NTQsMzUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVUYXAo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIAogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQm
IGdlc3R1cmVFdmVudCkKIHsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGlmIChtX2Zy
YW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPnRvdWNoRHJhZ0Ryb3BFbmFi
bGVkKCkpIHsKKyAgICAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IGdlc3R1cmVFdmVudC5w
b3NpdGlvbigpOworI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQorICAgICAgICBhZGp1c3RH
ZXN0dXJlUG9zaXRpb24oZ2VzdHVyZUV2ZW50LCBhZGp1c3RlZFBvaW50KTsKKyNlbmRpZgorICAg
ICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VEb3duRXZlbnQoYWRqdXN0ZWRQb2ludCwgZ2Vz
dHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRp
bWUoKSk7CisgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZURvd25FdmVudCk7Cisg
ICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURyYWdFdmVudChhZGp1c3RlZFBvaW50LCBn
ZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRp
bWUoKSk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5KTsKKyAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBwcmVw
YXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZURyYWdFdmVudCk7CisgICAgICAgIG1fZGlkU3Rh
cnREcmFnID0gZmFsc2U7CisgICAgICAgIGhhbmRsZURyYWcobWV2LCBEb250Q2hlY2tEcmFnSHlz
dGVyZXNpcyk7CisgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRm9yVGV4dFNl
bGVjdGlvbk9yQ29udGV4dE1lbnUoZ2VzdHVyZUV2ZW50KTsKIH0KIAorYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCit7CisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmICFPUyhBTkRST0lEKQor
ICAgIGlmICghbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJu
IHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOworI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUZv
clRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiB7CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTI2NjQsNiArMjY5Niw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1l
bnUoY29uc3QgUGxhdGZvcm1HZXN0CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCisgICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IChnZXN0dXJlRXZl
bnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpOwogICAgIHJldHVy
biBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUoZ2VzdHVyZUV2ZW50KTsKICNlbHNlCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2MSw2ICsyNzk0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmFkanVzdEdlc3R1cmVQb3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW4KICAgICAgICAgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1cmVFdmVu
dC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAvIDIsIGdl
c3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFyZ2V0Tm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQ
cmVzczoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAgIGNhc2Ug
UGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgYmVzdENvbnRleHRN
ZW51Tm9kZUZvclRvdWNoUG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNpemUoZ2Vz
dHVyZUV2ZW50LmFyZWEoKS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5oZWlnaHQo
KSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MzMxLDcgKzMzNjUsNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdTb3VyY2VB
Y3Rpb24gbikKICAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKIH0KIAotYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcmFnSHlzdGVyZXNpcyBjaGVja0RyYWdIeXN0
ZXJlc2lzKQogewogICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRCdXR0b24g
fHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCkgewog
ICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2UgdG8g
aGFuZGxlIGEgZHJhZwpAQCAtMzQxMCw3ICszNDQ0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiAgICAg
ICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAgIGlmICgh
ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAKKyAgICBp
ZiAoY2hlY2tEcmFnSHlzdGVyZXNpcyA9PSBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lzICYmICFk
cmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNp
cyBwb2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawpA
QCAtMzQ2MSwxMSArMzQ5NSwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9tb3VzZURv
d25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICAgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBhZ2UtPmRy
YWdDb250cm9sbGVyKCkgOiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJhZ0NvbnRy
b2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwg
c3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgbV9kaWRTdGFy
dERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Qb3MpOwog
ICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFy
dCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMg
d2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkCiAgICAgICAgIC8vIGFuZCB0aGUg
cHJvbWlzZWQgdHlwZXMuCi0gICAgICAgIGlmIChzdGFydGVkRHJhZykgeworICAgICAgICBpZiAo
bV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0g
ZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKaW5kZXggZmNiY2Q2MTZiNDg0OTQ2ZjE2ZGE4MTY4ZWJmYTNlYTEzMzE3
ZmQ4Mi4uYzE1ODk4YTAyNjQ5ZGVhYzFhOTFjOWM3YjBlM2UyOTdlODEyODM4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC05MSw2ICs5MSw3IEBAIGV4dGVybiBjb25zdCBpbnQg
R2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogCiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxk
SGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwogZW51bSBBcHBlbmRU
cmFpbGluZ1doaXRlc3BhY2UgeyBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UsIERvbnRB
cHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgfTsKK2VudW0gQ2hlY2tEcmFnSHlzdGVyZXNpcyB7IFNo
b3VsZENoZWNrRHJhZ0h5c3RlcmVzaXMsIERvbnRDaGVja0RyYWdIeXN0ZXJlc2lzIH07CiAKIGNs
YXNzIEV2ZW50SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVy
KTsKQEAgLTE3MCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVU
YXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdlc3R1cmVM
b25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICBib29sIGhhbmRsZUdl
c3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5k
bGVHZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAg
Ym9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
Jik7CiAgICAgYm9vbCBpc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdDsKQEAgLTMw
Nyw3ICszMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmcmVlQ2xpcGJvYXJkKCk7CiAKLSAg
ICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwor
ICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwg
Q2hlY2tEcmFnSHlzdGVyZXNpcyk7CiAjZW5kaWYKICAgICBib29sIGhhbmRsZU1vdXNlVXAoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCkBAIC00NjgsNiArNDcwLDggQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21vdXNlTW92
ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlOwogICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbV9iYXNl
RXZlbnRUeXBlOworICAgIGJvb2wgbV9kaWRTdGFydERyYWc7CisgICAgYm9vbCBtX2RpZExvbmdQ
cmVzc0ludm9rZUNvbnRleHRNZW51OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggODhkNTFjNDE2NzUyNmU4YmUyMjA2NmNkZmMzMzdiOTcx
NjhkMzMxMC4uMTI2NjMwYzMzYWMxOTUxM2FjOWU5MDA4ZGEwYTY4MDZlZWJiOTcxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xNjQsMyArMTY0LDcgQEAgZnJhbWVGbGF0dGVuaW5nRW5h
YmxlZCBpbml0aWFsPWZhbHNlCiBhbGxvd0N1c3RvbVNjcm9sbGJhckluTWFpbkZyYW1lIGluaXRp
YWw9dHJ1ZQogd2ViU2VjdXJpdHlFbmFibGVkIGluaXRpYWw9dHJ1ZQogc3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkIGluaXRpYWw9ZmFsc2UKKworIyBUaGlzIHNldHRpbmcgYWRkcyBhIG1lYW5zIHRv
IGVuYWJsZS9kaXNhYmxlIHRvdWNoIGluaXRpYXRlZCBkcmFnICYgZHJvcC4gSWYKKyMgZW5hYmxl
ZCwgdGhlIHVzZXIgY2FuIGluaXRpYXRlIGRyYWcgdXNpbmcgbG9uZyBwcmVzcy4KK3RvdWNoRHJh
Z0Ryb3BFbmFibGVkIGluaXRpYWw9ZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCmluZGV4IDJkMzU2ZmE2YTEwZGQ4ZTc3NGFhYzAyZjBkOGQ4NGVjYTQ2
Mjg4YjQuLjRjOWQwY2M2NGM0ZGJiNzFlMjQ1MzZkMTk5ODNmMzZhMjhmYTcxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTU4LDYgKzE1OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0
b3IoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgV2ViVVJMJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRVc2VzRW5jb2RpbmdEZXRlY3Rvcihib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAyMGZjYzFiOTYwZTM5YmVlMDcz
OTEzOGMzYmZjZmJiM2MxMmVlNDFlLi4xNjQ4ODBhYTdhNTZkZTAyMzg3Y2JiOTg1NjBlNDIzMzJh
ZTBmZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKQEAgLTM0Niw2ICszNDYsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFRleHRE
aXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCkKICAgICBtX3Nl
dHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKFdlYkNvcmU6
OlRleHREaXJlY3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9z
ZXR0aW5ncy0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKaW5kZXggOTg1MjBlYWRmZDI2ODU0YmJlYmM2Mzg3N2JlOTljMzg3ZTk2OGQ5Ni4u
YWI5MjU2MmZhOTVjNzllMjlmZGJmYzJlMGUyMzBlYjQ0YTkzZDY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3IoZmxvYXQp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2
aW9yTmV2ZXJJbmNsdWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb3VjaERyYWdEcm9wRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25z
dCBXZWJVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlc0VuY29kaW5nRGV0ZWN0b3IoYm9v
bCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MTIwZjFlM2UyMzU0ODQ0OGQ2ODIxOTJiYzczODBiYWViNjRhZThiOS4uYjdjNTYxMDIyMDU5Nzcw
MTMyODAyZWUzMjFjZGRlODkyODRiOGM0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTI1ICBWYXJ1biBK
YWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5kIExv
bmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0IG1l
bnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBtb3VzZSBk
b3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5vdCBzdGFy
dGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBlbGVtZW50
KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUgY3VycmVu
dAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdlIHVzZSB0
aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMgdG8gc3Vt
bW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJhZyBhbmQKKyAgICAg
ICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZvcm0gdXNpbmcgdGhl
IFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2ggaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oOgorICAgICAgICAo
RXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRU
b3VjaERyYWdEcm9wRW5hYmxlZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmg6Cisg
ICAgICAgIChUZXN0UnVubmVyKToKKwogMjAxMi0xMS0yMiAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRl
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZXR1cm4gYW4gYWNjdXJhdGUg
ZXhpdCBjb2RlIHdoZW4gcnVubmluZyBBbmRyb2lkIHN1aXRlcywgYW5kIHdhaXQgYWZ0ZXIgcmVz
dGFydGluZyBhZGIgYXMgcm9vdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDE3MWUyNWRk
YjdhMTJhMjM2MTY2YWMxY2ViMDY0NmJiY2FkYWViMDYuLjc3M2E1NmIxNzk2MmQ0M2FkNTVjYjc1
OGNhODE4YTVjMmQ3Y2U0ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTI5Niw2ICsy
OTYsNyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIGJpbmRNZXRob2QoImdlc3R1
cmVUYXBEb3duIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwRG93bik7CiAgICAgYmluZE1ldGhv
ZCgiZ2VzdHVyZVRhcENhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcENhbmNlbCk7CiAg
ICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdQcmVzcyIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZUxv
bmdQcmVzcyk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdUYXAiLCAmRXZlbnRTZW5kZXI6
Omdlc3R1cmVMb25nVGFwKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVHdvRmluZ2VyVGFwIiwg
JkV2ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKTsKICAgICBiaW5kTWV0aG9kKCJ6b29t
UGFnZUluIiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZUluKTsKICAgICBiaW5kTWV0aG9kKCJ6b29t
UGFnZU91dCIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VPdXQpOwpAQCAtMTEzNyw2ICsxMTM4LDEy
IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVMb25nUHJlc3MsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXI6
Omdlc3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgZ2VzdHVyZUV2ZW50
KFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwLCBhcmd1bWVudHMpOworfQorCiB2b2lkIEV2
ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkBA
IC0xMjA2LDggKzEyMTMsMTYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdlYklu
cHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAgICBldmVu
dC54ID0gcG9pbnQueDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CiAgICAgICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID49IDQpIHsKLSAgICAgICAgICAgIGV2ZW50LmRhdGEudGFwRG93bi53
aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7Ci0gICAg
ICAgICAgICBldmVudC5kYXRhLnRhcERvd24uaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFy
Z3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNz
LndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAg
ICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAgZXZlbnQueCA9
IHBvaW50Lng7CisgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OworICAgICAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+PSA0KSB7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy53aWR0
aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAgICAg
ICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJn
dW1lbnRzWzNdLnRvRG91YmxlKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5o
CmluZGV4IGM1ZDc0MmI1ZmI2NjIzZjQwNDRkOTJmOTIwYmIzYTMxNTQ0NGM2MzQuLmIxZGE2ODQ4
NzYxMTA4YjRhNmM3YTZiZjMxODY5NmM1OTE1ZmJiMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuaApA
QCAtMTExLDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVUYXBEb3duKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVUYXBDYW5j
ZWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVy
ZUxvbmdQcmVzcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAg
ICAgdm9pZCBnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJLaXQ6OldlYklucHV0RXZlbnQ6OlR5
cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDM3MDc4OTI3ZDk5MmI4MzVkMzBjOTVmY2QyNmQ0MTU4YjljYjZiZGQuLjhhYTgxN2EyYmRmNmJk
YmNjNWY0MjEzZThkNmNiZjA3ZWQwZjdiOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC05
OCw2ICs5OCw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNl
dFBhZ2VWaXNpYmlsaXR5IiwgJlRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KTsKICAgICBi
aW5kTWV0aG9kKCJzZXRUZXh0RGlyZWN0aW9uIiwgJlRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rp
b24pOwogICAgIGJpbmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAmVGVzdFJ1bm5lcjo6
dGV4dFN1cnJvdW5kaW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgic2V0VG91Y2hEcmFnRHJvcEVu
YWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOwogCiAgICAgLy8g
UHJvcGVydGllcy4KICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50IiwgJlRlc3RS
dW5uZXI6OndvcmtlclRocmVhZENvdW50KTsKQEAgLTY2NCw2ICs2NjUsMTUgQEAgdm9pZCBUZXN0
UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW4KICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1RleHQudGV4dENvbnRl
bnQoKS51dGY4KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFi
bGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0g
MSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dl
YlZpZXctPnNldHRpbmdzKCktPnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGFyZ3VtZW50c1swXS50
b0Jvb2xlYW4oKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQoQ3Bw
VmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0PGludD4oV2Vi
V29ya2VySW5mbzo6ZGVkaWNhdGVkV29ya2VyQ291bnQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmlu
ZGV4IGY5ZTlmN2EyNDZhMDk3YWNjMWRlYzliM2QyOGFkZWUxODA4MzNiODMuLjQ2OTFlNTU3OWI4
Nzg1YWJiMGEyZDRjMzQxZWRhZjljMjExZTFlMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTE0
Nyw2ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIC8vIHBvaW50IGNvb3JkaW5hdGVzIHJlbGF0aXZl
IHRvIHRoZSBub2RlIGFuZCB0aGUgZm91cnRoIHRoZSBtYXhpbXVtIHRleHQKICAgICAvLyBsZW5n
dGggdG8gcmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFi
bGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGUxNGEwYmZlY2IyMWRhYzdk
NGQxNzc3NzEwNDVhNDI2NTAwNzdmLi5jMmZmZmY5ZDNhMWMxNjNlN2RkMTgxNjRiMjdjMmYwY2Rk
NzE1ZWI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMjUgIFZhcnVuIEphaW4gIDx2
YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBn
ZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNw
ZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEZv
ciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRvd24gYW5k
IG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0ZWQgKGJl
Y2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQpLCB0aGVu
IHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50CisgICAg
ICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRoZSBleGlz
dGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1tb24gdGhl
IGNvbnRleHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAorICAgICAgICBkcm9w
IGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2luZyB0aGUgU2V0dGlu
ZworICAgICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZh
dWx0LgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUt
b24tbG9uZy10YXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2xvbmctcHJl
c3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3Mu
aHRtbDoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxqb2hubWVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBoYW5kbGluZyBvZiBuZXN0ZWQgY29t
bWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDhiNjJiZDAxZDUyNWI1OGY3Zjk0NTcyMTEwM2Q3NWEwMGY5NjMyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29u
dGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVyZS48L3A+Cis8ZGl2
IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8L2Rpdj4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1lbnQub25jb250ZXh0
bWVudSA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXh0Iik7CisKKyAgICB2YXIgeCA9IHRleHQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQg
KyB0ZXh0Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gdGV4dC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgdGV4dC5vZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudFNl
bmRlci5nZXN0dXJlTG9uZ1RhcCkgeworICAgICAgICBldmVudFNlbmRlci5nZXN0dXJlTG9uZ1Rh
cCh4LCB5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdUYXAgbm90
IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50
LXRyaWdnZXJzLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1
cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmE0NDMzYzRlNTFiNzRiNzdlYjViYTFjOWYyYjcxNDBjZmU0NjE0ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1w
cmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwKQEAgLTAsMCArMSwz
OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVs
ZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uPC9wPgorPGRpdiBpZD0idGV4dCI+VGVz
dGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Cis8ZGl2IGlkPSJkcmFnZ2Fi
bGVEaXYiIGRyYWdnYWJsZT0ndHJ1ZSc+RHJhZyBtZTwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAodGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5h
YmxlZCkKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZCh0cnVlKTsK
KworICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rpb24oKSB7IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KKworICAgIHZhciBkcmFn
YWJsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVEaXYiKTsKKworICAg
IHZhciB4ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZHJhZ2dhYmxl
RGl2Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0VG9wICsgZHJhZ2dhYmxlRGl2Lm9mZnNl
dEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKSB7CisgICAgICAgIGV2
ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MoeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVyZUxvbmdQcmVzcyBu
b3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVu
dS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NzM1ZmFlZmUzODFlNzVjZGRmY2ZlMmI0MjEyNzJhNmYy
NWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgY29udGV4dCBt
ZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuCisKK1Rlc3RpbmcKK1BBU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJhNDVlYzA5ZmFiMzc2ZGE1MmQ4YWMxYTE3NGQ0Nzcz
NTQzZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50
LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQgc3Rh
cnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uCisKK1Rlc3RpbmcKK1BBU1MKK0RyYWcgbWUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxv
bmdwcmVzcy1leHBlY3RlZC50eHQKaW5kZXggMTk1MWY5NzYxNzAzMmFmMTBjMGNmZDExNGQ2MDEy
YWFlMzJjN2E1MC4uYzIyMDM2Yzg1OTdjNWM2ODkwOGQxNDNlNzg1OTVhMjQ4NzE4ZDliMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxp
bmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBpZiBhIGxv
bmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBjb250ZXh0IG1lbnUgd2hl
biB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCitUZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVy
ZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3VjaCBhZGp1c3RtZW50
IGlzIHVzZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sIGIvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy5odG1sCmluZGV4
IGRjYTkwN2JmZTA5MmJhODNkOTU2OTI2ZDVmY2JjNGU4M2NhYWNlMzEuLmZkYTljNjZhMTk3ZDM2
MTIxZmRiNzE1MWZmMzAzM2U2NDVlZTdiYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKQEAgLTEsNyArMSw3IEBA
CiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0gICAgPHRpdGxlPlRvdWNoIEFkanVz
dG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBjb250ZXh0IG1lbnUgd2lsbCBhcHBlYXIgb24gYSBsb25n
IHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6
IFRlc3RpbmcgdGhhdCBhIGRyYWcvZHJvcCB3aWxsIHN0YXJ0IG9uIGEgbG9uZyBwcmVzcyAtIGJ1
ZyA5MjkxNDwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNo
YWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgpAQCAtMzEsNyArMzEsNyBAQAog
ICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CiAgICAgfSk7CiAKLSAg
ICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJQQVNTIik7IH0K
KyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKGUpIHsgZGVidWcoIlBBU1MiKTsg
ZS5wcmV2ZW50RGVmYXVsdCgpO30KIAogICAgIGZ1bmN0aW9uIHRlc3RMb25nUHJlc3ModG91Y2hw
b2ludCkKICAgICB7CkBAIC04OSw3ICs4OSw4IEBACiAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQog
ICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMg
JiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9kZSkgewotICAg
ICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGxp
bmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFkanVzdG1lbnQgaXMg
dXNlZC4nKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQo
dHJ1ZSk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYgYSBsb25nIHByZXNzIGdl
c3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4gdG91Y2ggYWRqdXN0
bWVudCBpcyB1c2VkLicpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKICAgICAg
ICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIGUuc2FuZGJveC5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176095</attachid>
            <date>2012-11-26 15:40:32 -0800</date>
            <delta_ts>2012-11-26 16:57:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101545-20121126183810.patch</filename>
            <type>text/plain</type>
            <size>28760</size>
            <attacher name="Varun Jain">varunjain</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFmNjEwMTkyM2Y4ZmRj
ZGMzOWQ2NGZjMDEyNzk2YWM1NmU4MWRmYy4uM2RmYTkyOWMwYTAyMjA4ODk2ZDg1ZDQ5NDAxMzVh
ZTU4OTZjMTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTI1ICBWYXJ1
biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3MgYW5k
IExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250ZXh0
IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4K
KworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcgYSBt
b3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlzIG5v
dCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAgICBl
bGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0aGUg
Y3VycmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAsIHdl
IHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVzZXMg
dG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJhZyBhbmQK
KyAgICAgICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZvcm0gdXNp
bmcgdGhlIFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2ggaXMgZGlz
YWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdn
ZXJzLWRyYWcuaHRtbAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmhhbmRsZUdlc3R1cmVMb25nVGFwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4
dE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphZGp1c3RHZXN0dXJlUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBwYWdlL1NldHRpbmdzLmluOgorCiAyMDEyLTExLTIyICBKb2huIE1lbGxvciAgPGpv
aG5tZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBJbXByb3ZlIGhh
bmRsaW5nIG9mIG5lc3RlZCBjb21tZW50cyBvbiByZWRkaXQuY29tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGRhZTcwNWY4Nzc1ODQ0NDJjZTBjMWY3MGNmMDQwMTgyMjY5ZjQ3ODAuLmZj
NTU4NTA4ZDBlMDIzMDVkYzY3NDcxNDZhYTI4M2Q2NThhNDNjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMjUgIFZhcnVuIEphaW4gIDx2YXJ1
bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQgTG9uZ1RhcCBnZXN0
dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQgbWVudSByZXNwZWN0
aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIEZv
ciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1vdXNlIGRvd24gYW5k
IG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90IHN0YXJ0ZWQgKGJl
Y2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVsZW1lbnQpLCB0aGVu
IHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBjdXJyZW50CisgICAg
ICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2UgdXNlIHRoZSBleGlz
dGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0byBzdW1tb24gdGhl
IGNvbnRleHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAorICAgICAgICBkcm9w
IGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2luZyB0aGUgU2V0dGlu
ZworICAgICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNhYmxlZCBieSBkZWZh
dWx0LgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0
VG91Y2hEcmFnRHJvcEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
V2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTEx
LTIyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQWRkIE9TIT0iaW9zIiB0byBndWFyZCBmb3IgZ2NjX3ZlcnNpb24gaW4gV2ViS2l0Lmd5
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGFjNTBkZTVjNjVjMmU3NTMz
Y2ZiN2IyODAyYmQ2ZjRhMWFmMWQ1MjYuLmNmNGVkMjI4NTVjYmY2ZmRlMThhNmZiODdhMTI4NWFi
NmNkOWI1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM0OCw2ICsz
NDgsOCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjZW5kaWYK
ICAgICAsIG1fbW91c2VNb3ZlZER1cmF0aW9uUnVubmluZ0F2ZXJhZ2UoMCkKICAgICAsIG1fYmFz
ZUV2ZW50VHlwZShQbGF0Zm9ybUV2ZW50OjpOb1R5cGUpCisgICAgLCBtX2RpZFN0YXJ0RHJhZyhm
YWxzZSkKKyAgICAsIG1fZGlkTG9uZ1ByZXNzSW52b2tlQ29udGV4dE1lbnUoZmFsc2UpCiB7CiB9
CiAKQEAgLTQwMSw2ICs0MDMsOCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2VuZGlm
CiAgICAgbV9tb3VzZU1vdmVkRHVyYXRpb25SdW5uaW5nQXZlcmFnZSA9IDA7CiAgICAgbV9iYXNl
RXZlbnRUeXBlID0gUGxhdGZvcm1FdmVudDo6Tm9UeXBlOworICAgIG1fZGlkU3RhcnREcmFnID0g
ZmFsc2U7CisgICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IGZhbHNlOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbm9kZVRvQmVSZW1v
dmVkKQpAQCAtNzExLDcgKzcxNSw3IEBAIHN0YXRpYyBib29sIGNhbkF1dG9zY3JvbGwoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50KQogewotICAgIGlmIChoYW5kbGVEcmFnKGV2ZW50KSkKKyAgICBpZiAo
aGFuZGxlRHJhZyhldmVudCwgU2hvdWxkQ2hlY2tEcmFnSHlzdGVyZXNpcykpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKCFtX21vdXNlUHJlc3NlZCkKQEAgLTI1OTgsNiArMjYwMiw4
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVU
YXBEb3duKCk7CiAgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAg
ICAgICByZXR1cm4gaGFuZGxlR2VzdHVyZUxvbmdQcmVzcyhnZXN0dXJlRXZlbnQpOworICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA6CisgICAgICAgIHJldHVybiBoYW5kbGVH
ZXN0dXJlTG9uZ1RhcChnZXN0dXJlRXZlbnQpOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVUd29GaW5nZXJU
YXAoZ2VzdHVyZUV2ZW50KTsKICAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVEb3VibGVU
YXA6CkBAIC0yNjQ4LDkgKzI2NTQsMzUgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1
cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIAogYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIGlm
IChtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPnRvdWNoRHJhZ0Ry
b3BFbmFibGVkKCkpIHsKKyAgICAgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpOworI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQorICAgICAgICBh
ZGp1c3RHZXN0dXJlUG9zaXRpb24oZ2VzdHVyZUV2ZW50LCBhZGp1c3RlZFBvaW50KTsKKyNlbmRp
ZgorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbW91c2VEb3duRXZlbnQoYWRqdXN0ZWRQb2lu
dCwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3Vy
cmVudFRpbWUoKSk7CisgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZURvd25FdmVu
dCk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBtb3VzZURyYWdFdmVudChhZGp1c3RlZFBv
aW50LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3Vy
cmVudFRpbWUoKSk7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5KTsKKyAgICAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYg
PSBwcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBtb3VzZURyYWdFdmVudCk7CisgICAgICAgIG1f
ZGlkU3RhcnREcmFnID0gZmFsc2U7CisgICAgICAgIGhhbmRsZURyYWcobWV2LCBEb250Q2hlY2tE
cmFnSHlzdGVyZXNpcyk7CisgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRm9y
VGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoZ2VzdHVyZUV2ZW50KTsKIH0KIAorYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbnQpCit7CisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmICFPUyhBTkRS
T0lEKQorICAgIGlmICghbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSkKKyAgICAgICAg
cmV0dXJuIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yR2VzdHVyZShnZXN0dXJlRXZlbnQpOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2Vz
dHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAjaWYgT1MoQU5EUk9JRCkKQEAgLTI2NjQsNiArMjY5Niw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29u
dGV4dE1lbnUoY29uc3QgUGxhdGZvcm1HZXN0CiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCisgICAgbV9kaWRMb25nUHJlc3NJbnZva2VDb250ZXh0TWVudSA9IChnZXN0
dXJlRXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpOwogICAg
IHJldHVybiBzZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUoZ2VzdHVyZUV2ZW50KTsKICNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2MSw2ICsyNzk0LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmFkanVzdEdlc3R1cmVQb3NpdGlvbihjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW4KICAgICAgICAgYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGdlc3R1
cmVFdmVudC5wb3NpdGlvbigpLCBJbnRTaXplKGdlc3R1cmVFdmVudC5hcmVhKCkud2lkdGgoKSAv
IDIsIGdlc3R1cmVFdmVudC5hcmVhKCkuaGVpZ2h0KCkgLyAyKSwgYWRqdXN0ZWRQb2ludCwgdGFy
Z2V0Tm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVy
ZUxvbmdQcmVzczoKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAg
IGNhc2UgUGxhdGZvcm1FdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgYmVzdENv
bnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIEludFNp
emUoZ2VzdHVyZUV2ZW50LmFyZWEoKS53aWR0aCgpIC8gMiwgZ2VzdHVyZUV2ZW50LmFyZWEoKS5o
ZWlnaHQoKSAvIDIpLCBhZGp1c3RlZFBvaW50LCB0YXJnZXROb2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC0zMzMxLDcgKzMzNjUsNyBAQCBzdGF0aWMgYm9vbCBFeGFjdGx5T25lQml0U2V0KERyYWdT
b3VyY2VBY3Rpb24gbikKICAgICByZXR1cm4gbiAmJiAhKG4gJiAobiAtIDEpKTsKIH0KIAotYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcmFnSHlzdGVyZXNpcyBjaGVja0Ry
YWdIeXN0ZXJlc2lzKQogewogICAgIGlmIChldmVudC5ldmVudCgpLmJ1dHRvbigpICE9IExlZnRC
dXR0b24gfHwgZXZlbnQuZXZlbnQoKS50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZCkgewogICAgICAgICAvLyBJZiB3ZSBhbGxvd2VkIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlk
Z2UgdG8gaGFuZGxlIGEgZHJhZwpAQCAtMzQxMCw3ICszNDQ0LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQp
CiAgICAgICAgIHZpZXctPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwogICAgIH0KIAotICAg
IGlmICghZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKSAK
KyAgICBpZiAoY2hlY2tEcmFnSHlzdGVyZXNpcyA9PSBTaG91bGRDaGVja0RyYWdIeXN0ZXJlc2lz
ICYmICFkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGV2ZW50LmV2ZW50KCkucG9zaXRpb24oKSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlz
dGVyZXNpcyBwb2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBj
bGljawpAQCAtMzQ2MSwxMSArMzQ5NSwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJh
Zyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKICAgICBpZiAobV9t
b3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKICAgICAgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdDb250cm9sbGVyID0gcGFnZSA/IHBh
Z2UtPmRyYWdDb250cm9sbGVyKCkgOiAwOwotICAgICAgICBib29sIHN0YXJ0ZWREcmFnID0gZHJh
Z0NvbnRyb2xsZXIgJiYgZHJhZ0NvbnRyb2xsZXItPnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3Rh
dGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duUG9zKTsKKyAgICAgICAgbV9k
aWRTdGFydERyYWcgPSBkcmFnQ29udHJvbGxlciAmJiBkcmFnQ29udHJvbGxlci0+c3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Q
b3MpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlZW50ZXIgdGhpcyBjb2RlIGFu
ZCBzdGFydCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJv
YmxlbXMgd2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkCiAgICAgICAgIC8vIGFu
ZCB0aGUgcHJvbWlzZWQgdHlwZXMuCi0gICAgICAgIGlmIChzdGFydGVkRHJhZykgeworICAgICAg
ICBpZiAobV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnRE
cmFnID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZmNiY2Q2MTZiNDg0OTQ2ZjE2ZGE4MTY4ZWJmYTNl
YTEzMzE3ZmQ4Mi4uYzE1ODk4YTAyNjQ5ZGVhYzFhOTFjOWM3YjBlM2UyOTdlODEyODM4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC05MSw2ICs5MSw3IEBAIGV4dGVybiBjb25z
dCBpbnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogCiBlbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsg
U2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwogZW51bSBB
cHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgeyBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Us
IERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgfTsKK2VudW0gQ2hlY2tEcmFnSHlzdGVyZXNp
cyB7IFNob3VsZENoZWNrRHJhZ0h5c3RlcmVzaXMsIERvbnRDaGVja0RyYWdIeXN0ZXJlc2lzIH07
CiAKIGNsYXNzIEV2ZW50SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRI
YW5kbGVyKTsKQEAgLTE3MCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0
dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdl
c3R1cmVUYXAoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZUdl
c3R1cmVMb25nUHJlc3MoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyAgICBib29sIGhh
bmRsZUdlc3R1cmVMb25nVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAgICAgYm9v
bCBoYW5kbGVHZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7
CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlU2Nyb2xsVXBkYXRlKGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAgICAgYm9vbCBpc1Njcm9sbGJhckhhbmRsaW5nR2VzdHVyZXMoKSBjb25zdDsK
QEAgLTMwNyw3ICszMDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmcmVlQ2xpcGJvYXJkKCk7
CiAKLSAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYpOworICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CiAjZW5kaWYKICAgICBib29sIGhhbmRsZU1vdXNl
VXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCkBAIC00NjgsNiArNDcwLDggQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21v
dXNlTW92ZWREdXJhdGlvblJ1bm5pbmdBdmVyYWdlOwogICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUg
bV9iYXNlRXZlbnRUeXBlOworICAgIGJvb2wgbV9kaWRTdGFydERyYWc7CisgICAgYm9vbCBtX2Rp
ZExvbmdQcmVzc0ludm9rZUNvbnRleHRNZW51OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggODhkNTFjNDE2NzUyNmU4YmUyMjA2NmNkZmMz
MzdiOTcxNjhkMzMxMC4uMTI2NjMwYzMzYWMxOTUxM2FjOWU5MDA4ZGEwYTY4MDZlZWJiOTcxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC0xNjQsMyArMTY0LDcgQEAgZnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCBpbml0aWFsPWZhbHNlCiBhbGxvd0N1c3RvbVNjcm9sbGJhckluTWFpbkZyYW1l
IGluaXRpYWw9dHJ1ZQogd2ViU2VjdXJpdHlFbmFibGVkIGluaXRpYWw9dHJ1ZQogc3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkIGluaXRpYWw9ZmFsc2UKKworIyBUaGlzIHNldHRpbmcgYWRkcyBhIG1l
YW5zIHRvIGVuYWJsZS9kaXNhYmxlIHRvdWNoIGluaXRpYXRlZCBkcmFnICYgZHJvcC4gSWYKKyMg
ZW5hYmxlZCwgdGhlIHVzZXIgY2FuIGluaXRpYXRlIGRyYWcgdXNpbmcgbG9uZyBwcmVzcy4KK3Rv
dWNoRHJhZ0Ryb3BFbmFibGVkIGluaXRpYWw9ZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDJkMzU2ZmE2YTEwZGQ4ZTc3NGFhYzAyZjBkOGQ4
NGVjYTQ2Mjg4YjQuLjRjOWQwY2M2NGM0ZGJiNzFlMjQ1MzZkMTk5ODNmMzZhMjhmYTcxMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTU4LDYg
KzE1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdFbmFi
bGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2Nh
bGVGYWN0b3IoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVjdGlvblN1
Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgV2ViVVJMJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRVc2VzRW5jb2RpbmdEZXRlY3Rvcihib29sKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAyMGZjYzFiOTYwZTM5
YmVlMDczOTEzOGMzYmZjZmJiM2MxMmVlNDFlLi4xNjQ4ODBhYTdhNTZkZTAyMzg3Y2JiOTg1NjBl
NDIzMzJhZTBmZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAKQEAgLTM0Niw2ICszNDYsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCkKICAg
ICBtX3NldHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKFdl
YkNvcmU6OlRleHREaXJlY3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZCk7CiB9CiAKK3ZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgbV9zZXR0aW5ncy0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZv
aWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKaW5kZXggOTg1MjBlYWRmZDI2ODU0YmJlYmM2Mzg3N2JlOTljMzg3ZTk2
OGQ5Ni4uYWI5MjU2MmZhOTVjNzllMjlmZGJmYzJlMGUyMzBlYjQ0YTkzZDY5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE1Myw2ICsxNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3Io
ZmxvYXQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lv
bkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb3VjaERyYWdE
cm9wRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihjb25zdCBXZWJVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlc0VuY29kaW5nRGV0ZWN0
b3IoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMTIwZjFlM2UyMzU0ODQ0OGQ2ODIxOTJiYzczODBiYWViNjRhZThiOS4uNDY1NjgxMjkx
MmM3NTM3NDFiODVkMTE0MDNlMTIyNmEwNTEwMjkwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTI1ICBW
YXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBMb25nUHJlc3Mg
YW5kIExvbmdUYXAgZ2VzdHVyZXMgc2hvdWxkIHN0YXJ0IGRyYWcvZHJvcCBhbmQgb3BlbiBjb250
ZXh0IG1lbnUgcmVzcGVjdGl2ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KKworICAgICAgICBGb3IgTG9uZ1ByZXNzLCB3ZSBzaW11bGF0ZSBkcmFnIGJ5IHNlbmRpbmcg
YSBtb3VzZSBkb3duIGFuZCBtb3VzZSBkcmFnCisgICAgICAgIGV2ZW50cy4gSWYgYSBkcmFnIGlz
IG5vdCBzdGFydGVkIChiZWNhdXNlIG1heWJlIHRoZXJlIGlzIG5vIGRyYWdnYWJsZQorICAgICAg
ICBlbGVtZW50KSwgdGhlbiB3ZSBzaG93IGNvbnRleHQgbWVudSBpbnN0ZWFkICh3aGljaCBpcyB0
aGUgY3VycmVudAorICAgICAgICBiZWhhdmlvciBmb3IgTG9uZ1ByZXNzKS4gRm9yIExvbmdUYXAs
IHdlIHVzZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgTG9uZ1ByZXNzIHVz
ZXMgdG8gc3VtbW9uIHRoZSBjb250ZXh0IG1lbnUuIExvbmdQcmVzcyBpbml0aWF0ZWQgZHJhZyBh
bmQKKyAgICAgICAgZHJvcCBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBieSB0aGUgcGxhdGZvcm0g
dXNpbmcgdGhlIFNldHRpbmcKKyAgICAgICAgdG91Y2hEcmFnRHJvcEVuYWJsZWQgd2hpY2ggaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1RhcCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5oOgor
ICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVu
bmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKwogMjAxMi0xMS0yMiAgUGV0ZXIgQmV2ZXJs
b28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZXR1cm4gYW4g
YWNjdXJhdGUgZXhpdCBjb2RlIHdoZW4gcnVubmluZyBBbmRyb2lkIHN1aXRlcywgYW5kIHdhaXQg
YWZ0ZXIgcmVzdGFydGluZyBhZGIgYXMgcm9vdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4
IDE3MWUyNWRkYjdhMTJhMjM2MTY2YWMxY2ViMDY0NmJiY2FkYWViMDYuLjc3M2E1NmIxNzk2MmQ0
M2FkNTVjYjc1OGNhODE4YTVjMmQ3Y2U0ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAg
LTI5Niw2ICsyOTYsNyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIGJpbmRNZXRo
b2QoImdlc3R1cmVUYXBEb3duIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVGFwRG93bik7CiAgICAg
YmluZE1ldGhvZCgiZ2VzdHVyZVRhcENhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVRhcENh
bmNlbCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdQcmVzcyIsICZFdmVudFNlbmRlcjo6
Z2VzdHVyZUxvbmdQcmVzcyk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUxvbmdUYXAiLCAmRXZl
bnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlVHdvRmlu
Z2VyVGFwIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKTsKICAgICBiaW5kTWV0
aG9kKCJ6b29tUGFnZUluIiwgJkV2ZW50U2VuZGVyOjp6b29tUGFnZUluKTsKICAgICBiaW5kTWV0
aG9kKCJ6b29tUGFnZU91dCIsICZFdmVudFNlbmRlcjo6em9vbVBhZ2VPdXQpOwpAQCAtMTEzNyw2
ICsxMTM4LDEyIEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVMb25nUHJlc3MoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgZ2VzdHVyZUV2ZW50KFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MsIGFyZ3VtZW50cyk7CiB9CiAKK3ZvaWQgRXZl
bnRTZW5kZXI6Omdlc3R1cmVMb25nVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgZ2Vz
dHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwLCBhcmd1bWVudHMpOworfQor
CiB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CkBAIC0xMjA2LDggKzEyMTMsMTYgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2
ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAg
ICAgICBldmVudC54ID0gcG9pbnQueDsKICAgICAgICAgZXZlbnQueSA9IHBvaW50Lnk7CiAgICAg
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID49IDQpIHsKLSAgICAgICAgICAgIGV2ZW50LmRhdGEu
dGFwRG93bi53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUo
KSk7Ci0gICAgICAgICAgICBldmVudC5kYXRhLnRhcERvd24uaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEu
bG9uZ1ByZXNzLndpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJs
ZSgpKTsKKyAgICAgICAgICAgIGV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IHN0YXRpY19j
YXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKKyAgICAgICAg
ZXZlbnQueCA9IHBvaW50Lng7CisgICAgICAgIGV2ZW50LnkgPSBwb2ludC55OworICAgICAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+PSA0KSB7CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQ
cmVzcy53aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7
CisgICAgICAgICAgICBldmVudC5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5oCmluZGV4IGM1ZDc0MmI1ZmI2NjIzZjQwNDRkOTJmOTIwYmIzYTMxNTQ0NGM2MzQu
LmIxZGE2ODQ4NzYxMTA4YjRhNmM3YTZiZjMxODY5NmM1OTE1ZmJiMmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRT
ZW5kZXIuaApAQCAtMTExLDYgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVUYXBE
b3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1
cmVUYXBDYW5jZWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgZ2VzdHVyZUxvbmdQcmVzcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBnZXN0dXJlTG9uZ1RhcChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAgICAgdm9pZCBnZXN0dXJlVHdvRmluZ2VyVGFwKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJLaXQ6OldlYklucHV0
RXZlbnQ6OlR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDM3MDc4OTI3ZDk5MmI4MzVkMzBjOTVmY2QyNmQ0MTU4YjljYjZiZGQuLjhhYTgx
N2EyYmRmNmJkYmNjNWY0MjEzZThkNmNiZjA3ZWQwZjdiOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
Y3BwCkBAIC05OCw2ICs5OCw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRN
ZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5IiwgJlRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5
KTsKICAgICBiaW5kTWV0aG9kKCJzZXRUZXh0RGlyZWN0aW9uIiwgJlRlc3RSdW5uZXI6OnNldFRl
eHREaXJlY3Rpb24pOwogICAgIGJpbmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAmVGVz
dFJ1bm5lcjo6dGV4dFN1cnJvdW5kaW5nTm9kZSk7CisgICAgYmluZE1ldGhvZCgic2V0VG91Y2hE
cmFnRHJvcEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOwog
CiAgICAgLy8gUHJvcGVydGllcy4KICAgICBiaW5kUHJvcGVydHkoIndvcmtlclRocmVhZENvdW50
IiwgJlRlc3RSdW5uZXI6OndvcmtlclRocmVhZENvdW50KTsKQEAgLTY2NCw2ICs2NjUsMTUgQEAg
dm9pZCBUZXN0UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW4KICAgICByZXN1bHQtPnNldChzdXJyb3VuZGluZ1RleHQu
dGV4dENvbnRlbnQoKS51dGY4KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNoRHJh
Z0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5z
aXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGFyZ3Vt
ZW50c1swXS50b0Jvb2xlYW4oKSk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFk
Q291bnQoQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KHN0YXRpY19jYXN0
PGludD4oV2ViV29ya2VySW5mbzo6ZGVkaWNhdGVkV29ya2VyQ291bnQoKSkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oCmluZGV4IGY5ZTlmN2EyNDZhMDk3YWNjMWRlYzliM2QyOGFkZWUxODA4MzNiODMuLjQ2
OTFlNTU3OWI4Nzg1YWJiMGEyZDRjMzQxZWRhZjljMjExZTFlMDYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVy
LmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIC8vIHBvaW50IGNvb3JkaW5hdGVz
IHJlbGF0aXZlIHRvIHRoZSBub2RlIGFuZCB0aGUgZm91cnRoIHRoZSBtYXhpbXVtIHRleHQKICAg
ICAvLyBsZW5ndGggdG8gcmV0cmlldmUuCiAgICAgdm9pZCB0ZXh0U3Vycm91bmRpbmdOb2RlKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFRvdWNoRHJh
Z0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIFByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OGUxNGEwYmZl
Y2IyMWRhYzdkNGQxNzc3NzEwNDVhNDI2NTAwNzdmLi5hODQyNDhhN2ZkMjVkY2M4ZDYwMDdlOTEy
NjBhMWE3MmZkZGRjMjYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMjUgIFZhcnVu
IEphaW4gIDx2YXJ1bmphaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIExvbmdQcmVzcyBhbmQg
TG9uZ1RhcCBnZXN0dXJlcyBzaG91bGQgc3RhcnQgZHJhZy9kcm9wIGFuZCBvcGVuIGNvbnRleHQg
bWVudSByZXNwZWN0aXZlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDE1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgor
CisgICAgICAgIEZvciBMb25nUHJlc3MsIHdlIHNpbXVsYXRlIGRyYWcgYnkgc2VuZGluZyBhIG1v
dXNlIGRvd24gYW5kIG1vdXNlIGRyYWcKKyAgICAgICAgZXZlbnRzLiBJZiBhIGRyYWcgaXMgbm90
IHN0YXJ0ZWQgKGJlY2F1c2UgbWF5YmUgdGhlcmUgaXMgbm8gZHJhZ2dhYmxlCisgICAgICAgIGVs
ZW1lbnQpLCB0aGVuIHdlIHNob3cgY29udGV4dCBtZW51IGluc3RlYWQgKHdoaWNoIGlzIHRoZSBj
dXJyZW50CisgICAgICAgIGJlaGF2aW9yIGZvciBMb25nUHJlc3MpLiBGb3IgTG9uZ1RhcCwgd2Ug
dXNlIHRoZSBleGlzdGluZyBmdW5jdGlvbnMgdGhhdAorICAgICAgICBMb25nUHJlc3MgdXNlcyB0
byBzdW1tb24gdGhlIGNvbnRleHQgbWVudS4gTG9uZ1ByZXNzIGluaXRpYXRlZCBkcmFnIGFuZAor
ICAgICAgICBkcm9wIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGJ5IHRoZSBwbGF0Zm9ybSB1c2lu
ZyB0aGUgU2V0dGluZworICAgICAgICB0b3VjaERyYWdEcm9wRW5hYmxlZCB3aGljaCBpcyBkaXNh
YmxlZCBieSBkZWZhdWx0LgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9j
b250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdnYWJsZS1lbGVtZW50LXRyaWdnZXJz
LWRyYWcuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL2xvbmctcHJlc3Mtb24tZHJhZ2dhYmxlLWVsZW1lbnQtdHJpZ2dlcnMtZHJhZy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25n
cHJlc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC90b3VjaC1saW5r
cy1sb25ncHJlc3MuaHRtbDoKKwogMjAxMi0xMS0yMiAgSm9obiBNZWxsb3IgIDxqb2hubWVAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogSW1wcm92ZSBoYW5kbGluZyBv
ZiBuZXN0ZWQgY29tbWVudHMgb24gcmVkZGl0LmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9jb250ZXh0LW1lbnUtb24tbG9uZy10YXAuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxv
bmctdGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjJiZDAxZDUyNWI1OGY3Zjk0NTcyMTEwM2Q3NWEw
MGY5NjMyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmctdGFwLmh0bWwKQEAgLTAsMCArMSwzNCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSBjb250ZXh0IG1lbnUgaXMgc2hvd24gb24gbG9uZyB0YXAgZ2VzdHVy
ZS48L3A+Cis8ZGl2IGlkPSJ0ZXh0Ij5UZXN0aW5nPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPkZB
SUw8L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgZG9jdW1l
bnQub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikuaW5uZXJIVE1MID0gIlBBU1MiOyB9CisKKyAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisKKyAgICB2YXIgeCA9IHRleHQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQgKyB0ZXh0Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gdGV4dC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgdGV4dC5vZmZzZXRUb3AgKyB0ZXh0Lm9mZnNldEhlaWdodCAv
IDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1RhcCkgeworICAgICAgICBldmVudFNlbmRlci5n
ZXN0dXJlTG9uZ1RhcCh4LCB5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVy
ZUxvbmdUYXAgbm90IGltcGxlbWVudGVkIGJ5IHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdn
YWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1k
cmFnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE0NDMzYzRlNTFiNzRiNzdlYjViYTFjOWYyYjcxNDBjZmU0
NjE0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vycy1kcmFnLmh0bWwK
QEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0
KCkiPgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEg
ZHJhZ2dhYmxlIGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uPC9wPgorPGRpdiBp
ZD0idGV4dCI+VGVzdGluZzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+Cis8ZGl2
IGlkPSJkcmFnZ2FibGVEaXYiIGRyYWdnYWJsZT0ndHJ1ZSc+RHJhZyBtZTwvZGl2PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAodGVzdFJ1bm5lci5zZXRUb3Vj
aERyYWdEcm9wRW5hYmxlZCkKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRUb3VjaERyYWdEcm9wRW5h
YmxlZCh0cnVlKTsKKworICAgIGRvY3VtZW50Lm9uZHJhZ3N0YXJ0ID0gZnVuY3Rpb24oKSB7IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7IH0KKwor
ICAgIHZhciBkcmFnYWJsZURpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnZ2FibGVE
aXYiKTsKKworICAgIHZhciB4ID0gZHJhZ2dhYmxlRGl2Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZHJhZ2dhYmxlRGl2Lm9mZnNldExlZnQgKyA0OworICAgIHZhciB5ID0gZHJhZ2dhYmxlRGl2
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkcmFnZ2FibGVEaXYub2Zmc2V0VG9wICsgZHJhZ2dh
YmxlRGl2Lm9mZnNldEhlaWdodCAvIDI7CisKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChldmVudFNlbmRlci5nZXN0dXJlTG9uZ1ByZXNzKSB7
CisgICAgICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVMb25nUHJlc3MoeCwgeSk7CisgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiZ2VzdHVy
ZUxvbmdQcmVzcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L2NvbnRleHQtbWVudS1vbi1sb25nLXRhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL2NvbnRleHQtbWVudS1vbi1s
b25nLXRhcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1NzM1ZmFlZmUzODFlNzVjZGRmY2Zl
MmI0MjEyNzJhNmYyNWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvY29udGV4dC1tZW51LW9uLWxvbmct
dGFwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0
aGUgY29udGV4dCBtZW51IGlzIHNob3duIG9uIGxvbmcgdGFwIGdlc3R1cmUuCisKK1Rlc3RpbmcK
K1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmlnZ2Vy
cy1kcmFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvbG9uZy1wcmVzcy1vbi1kcmFnZ2FibGUtZWxlbWVudC10cmln
Z2Vycy1kcmFnLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJhNDVlYzA5ZmFiMzc2ZGE1MmQ4
YWMxYTE3NGQ0NzczNTQzZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9sb25nLXByZXNzLW9uLWRyYWdn
YWJsZS1lbGVtZW50LXRyaWdnZXJzLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAor
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGEgbG9uZyBwcmVzcyBnZXN0dXJlIG9uIGEgZHJhZ2dhYmxl
IGVsZW1lbnQgc3RhcnRzIGEgZHJhZy9kcm9wIHNlc3Npb24uCisKK1Rlc3RpbmcKK1BBU1MKK0Ry
YWcgbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5r
cy1sb25ncHJlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Rv
dWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKaW5kZXggMTk1MWY5NzYxNzAzMmFmMTBj
MGNmZDExNGQ2MDEyYWFlMzJjN2E1MC4uYzIyMDM2Yzg1OTdjNWM2ODkwOGQxNDNlNzg1OTVhMjQ4
NzE4ZDliMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxp
bmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVzcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1U
ZXN0cyBpZiBhIGxvbmcgcHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBjb250
ZXh0IG1lbnUgd2hlbiB0b3VjaCBhZGp1c3RtZW50IGlzIHVzZWQuCitUZXN0cyBpZiBhIGxvbmcg
cHJlc3MgZ2VzdHVyZSBvbiBsaW5rcyB3aWxsIHRyaWdnZXIgYSBkcmFnL2Ryb3Agd2hlbiB0b3Vj
aCBhZGp1c3RtZW50IGlzIHVzZWQuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3RvdWNoLWxpbmtzLWxvbmdwcmVz
cy5odG1sCmluZGV4IGRjYTkwN2JmZTA5MmJhODNkOTU2OTI2ZDVmY2JjNGU4M2NhYWNlMzEuLmZk
YTljNjZhMTk3ZDM2MTIxZmRiNzE1MWZmMzAzM2U2NDVlZTdiYWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC90b3VjaC1saW5rcy1sb25ncHJlc3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvdG91Y2gtbGlua3MtbG9uZ3ByZXNzLmh0bWwKQEAg
LTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci0gICAgPHRpdGxl
PlRvdWNoIEFkanVzdG1lbnQgOiBUZXN0aW5nIHRoYXQgYSBjb250ZXh0IG1lbnUgd2lsbCBhcHBl
YXIgb24gYSBsb25nIHByZXNzIC0gYnVnIDkyOTE0PC90aXRsZT4KKyAgICA8dGl0bGU+VG91Y2gg
QWRqdXN0bWVudCA6IFRlc3RpbmcgdGhhdCBhIGRyYWcvZHJvcCB3aWxsIHN0YXJ0IG9uIGEgbG9u
ZyBwcmVzcyAtIGJ1ZyA5MjkxNDwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHN0eWxlPgpAQCAtMzEs
NyArMzEsNyBAQAogICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CiAg
ICAgfSk7CiAKLSAgICBkb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24oKSB7IGRlYnVn
KCJQQVNTIik7IH0KKyAgICBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKGUpIHsgZGVi
dWcoIlBBU1MiKTsgZS5wcmV2ZW50RGVmYXVsdCgpO30KIAogICAgIGZ1bmN0aW9uIHRlc3RMb25n
UHJlc3ModG91Y2hwb2ludCkKICAgICB7CkBAIC04OSw3ICs4OSw4IEBACiAgICAgZnVuY3Rpb24g
cnVuVGVzdHMoKQogICAgIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRv
dy5pbnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxl
Tm9kZSkgewotICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIGlmIGEgbG9uZyBwcmVzcyBn
ZXN0dXJlIG9uIGxpbmtzIHdpbGwgdHJpZ2dlciBhIGNvbnRleHQgbWVudSB3aGVuIHRvdWNoIGFk
anVzdG1lbnQgaXMgdXNlZC4nKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VG91Y2hEcmFn
RHJvcEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbignVGVzdHMgaWYgYSBs
b25nIHByZXNzIGdlc3R1cmUgb24gbGlua3Mgd2lsbCB0cmlnZ2VyIGEgZHJhZy9kcm9wIHdoZW4g
dG91Y2ggYWRqdXN0bWVudCBpcyB1c2VkLicpOwogICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNo
ZXMoKTsKICAgICAgICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsKICAgICAgICAgICAgIGUu
c2FuZGJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>