<?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>86720</bug_id>
          
          <creation_ts>2012-05-17 04:58:12 -0700</creation_ts>
          <short_desc>[EFL][DRT] Implement touch event</short_desc>
          <delta_ts>2012-05-22 19:36:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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="Kangil Han">kangil.han</reporter>
          <assigned_to name="Kangil Han">kangil.han</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>626464</commentid>
    <comment_count>0</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 04:58:12 -0700</bug_when>
    <thetext>Implement touch event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626466</commentid>
    <comment_count>1</comment_count>
      <attachid>142453</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 05:05:29 -0700</bug_when>
    <thetext>Created attachment 142453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626479</commentid>
    <comment_count>2</comment_count>
      <attachid>142453</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-17 05:26:49 -0700</bug_when>
    <thetext>Comment on attachment 142453
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:654
&gt; +static JSValueRef touchStartCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)

Almost code of touchStartCallback, touchMoveCallback, touchCancelCallback, touchEndCallback are similar.

Can we share codes?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; +        Ewk_Touch_Point* event = new Ewk_Touch_Point;

you looks missing &apos;delete&apos;

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:668
&gt; +        if (touchPointList.at(i).state == TouchPressed)
&gt; +            event-&gt;state = EWK_TOUCH_POINT_PRESSED;
&gt; +        else
&gt; +            event-&gt;state = EWK_TOUCH_POINT_STATIONARY;

EWK_TOUCH_XXX and TouchXXX will be same and AssertMatchingEnums.cpp assure that.

IMO, just casting will be usefull if we can share codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626495</commentid>
    <comment_count>3</comment_count>
      <attachid>142459</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 05:56:58 -0700</bug_when>
    <thetext>Created attachment 142459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626496</commentid>
    <comment_count>4</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 06:00:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 142453 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142453&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:654
&gt; &gt; +static JSValueRef touchStartCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
&gt; 
&gt; Almost code of touchStartCallback, touchMoveCallback, touchCancelCallback, touchEndCallback are similar.
&gt; 
&gt; Can we share codes?

Done!

&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; &gt; +        Ewk_Touch_Point* event = new Ewk_Touch_Point;
&gt; 
&gt; you looks missing &apos;delete&apos;

List will be freed with &apos;EINA_LIST_FREE&apos; in &apos;PlatformTouchEventEfl.cpp&apos;

&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:668
&gt; &gt; +        if (touchPointList.at(i).state == TouchPressed)
&gt; &gt; +            event-&gt;state = EWK_TOUCH_POINT_PRESSED;
&gt; &gt; +        else
&gt; &gt; +            event-&gt;state = EWK_TOUCH_POINT_STATIONARY;
&gt; 
&gt; EWK_TOUCH_XXX and TouchXXX will be same and AssertMatchingEnums.cpp assure that.
&gt; 
&gt; IMO, just casting will be usefull if we can share codes.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627145</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-17 17:27:44 -0700</bug_when>
    <thetext>&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; &gt; &gt; +        Ewk_Touch_Point* event = new Ewk_Touch_Point;
&gt; &gt; 
&gt; &gt; you looks missing &apos;delete&apos;
&gt; 
&gt; List will be freed with &apos;EINA_LIST_FREE&apos; in &apos;PlatformTouchEventEfl.cpp&apos;

No, data itself should be freed by yourself.

And PlatformTouchEventEfl.cpp should not use EINA_LIST_FREE because of freeing user-provided list.

IMO, you&apos;d better to change EINA_LIST_FREE to EINA_LIST_FOREACH in PlatformTouchEventEfl.cpp and call EINA_LIST_FREE to free events in EventSender.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627202</commentid>
    <comment_count>6</comment_count>
      <attachid>142603</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 18:33:29 -0700</bug_when>
    <thetext>Created attachment 142603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627204</commentid>
    <comment_count>7</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 18:34:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; &gt; &gt; &gt; +        Ewk_Touch_Point* event = new Ewk_Touch_Point;
&gt; &gt; &gt; 
&gt; &gt; &gt; you looks missing &apos;delete&apos;
&gt; &gt; 
&gt; &gt; List will be freed with &apos;EINA_LIST_FREE&apos; in &apos;PlatformTouchEventEfl.cpp&apos;
&gt; 
&gt; No, data itself should be freed by yourself.
&gt; 
&gt; And PlatformTouchEventEfl.cpp should not use EINA_LIST_FREE because of freeing user-provided list.
&gt; 
&gt; IMO, you&apos;d better to change EINA_LIST_FREE to EINA_LIST_FOREACH in PlatformTouchEventEfl.cpp and call EINA_LIST_FREE to free events in EventSender.cpp.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627213</commentid>
    <comment_count>8</comment_count>
      <attachid>142603</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-17 18:48:34 -0700</bug_when>
    <thetext>Comment on attachment 142603
Patch

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

Looks quite better than before.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:155
&gt; +    TouchEventInfo(Ewk_Touch_Point_Type state, WebCore::IntPoint point, unsigned id)

nitpick, const WebCore::IntPoint&amp; ?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:167
&gt; +static Vector&lt;TouchEventInfo&gt; touchPointList;

Should we need DEFINE_STATIC_LOCAL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627255</commentid>
    <comment_count>9</comment_count>
      <attachid>142617</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 19:54:25 -0700</bug_when>
    <thetext>Created attachment 142617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627257</commentid>
    <comment_count>10</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 19:55:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 142603 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142603&amp;action=review
&gt; 
&gt; Looks quite better than before.
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:155
&gt; &gt; +    TouchEventInfo(Ewk_Touch_Point_Type state, WebCore::IntPoint point, unsigned id)
&gt; 
&gt; nitpick, const WebCore::IntPoint&amp; ?
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:167
&gt; &gt; +static Vector&lt;TouchEventInfo&gt; touchPointList;
&gt; 
&gt; Should we need DEFINE_STATIC_LOCAL?

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627274</commentid>
    <comment_count>11</comment_count>
      <attachid>142620</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 20:08:09 -0700</bug_when>
    <thetext>Created attachment 142620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627275</commentid>
    <comment_count>12</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-17 20:10:22 -0700</bug_when>
    <thetext>Try again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627279</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-05-17 20:12:53 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Try again!

looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627301</commentid>
    <comment_count>14</comment_count>
      <attachid>142620</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-17 21:09:33 -0700</bug_when>
    <thetext>Comment on attachment 142620
Patch

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

Have you run all layout tests and made sure this does not cause any regression?

&gt; Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp:39
&gt; +    : PlatformEvent(type, !!(metaState &amp; ShiftKey), !!(metaState &amp; CtrlKey), !!(metaState &amp; AltKey), !!(metaState &amp; MetaKey), currentTime())

The documentation for ewk_frame_feed_touch_event is not being updated, and metaState is still marked as deprecated and with no description of what value it is supposed to have. Please document it properly (and optionally change its API to accept separate parameters for each meaningful modifier).

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:155
&gt; +    TouchEventInfo(Ewk_Touch_Point_Type state, const WebCore::IntPoint&amp; point, unsigned id)

Nit: most of us are used to passing any &quot;id&quot; field as the first parameter to functions.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:167
&gt; +static int touchModifiers;

Why isn&apos;t it a PlatformEvent::Modifiers?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:643
&gt; +    for (unsigned i = 0; i &lt; touchPointList().size(); i++) {
&gt; +        if (touchPointList().at(i).state == EWK_TOUCH_POINT_RELEASED) {
&gt; +            touchPointList().remove(i);
&gt; +            i--;

You could probably remove this back and forth of the value of `i&apos; by using iterators.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:651
&gt; +    if (argumentCount &lt; 2)

!= 2 is safer.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:659
&gt; +    WebCore::IntPoint position(x, y);

Nit: could be const. Why is it called position instead of point?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:665
&gt; +    unsigned lowestId = 0;
&gt; +    for (unsigned i = 0; i &lt; touchPointList().size(); i++) {
&gt; +        if (touchPointList().at(i).id == lowestId)
&gt; +            lowestId++;
&gt; +    }

I don&apos;t understand this. Why not
  const unsigned id = touchPointList().isEmpty() ? 0 : touchPointList().last().id + 1;
?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:676
&gt; +    sendTouchEvent(EWK_TOUCH_START);
&gt; +    postTouchEvent();

Since these two are always called together, why not merge them?

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:682
&gt; +    if (argumentCount &lt; 3)

!= is safer.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:712
&gt; +    if (argumentCount &lt; 1)

!= 1 is safer.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:733
&gt; +    if (argumentCount &lt; 1)

!= 1 is safer.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:761
&gt; +    if (argumentCount &lt; 2)

!= 2 is safer.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:766
&gt; +    int mask = 0;

Why not a PlatformEvent::Modifiers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627307</commentid>
    <comment_count>15</comment_count>
      <attachid>142620</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-17 21:15:32 -0700</bug_when>
    <thetext>Comment on attachment 142620
Patch

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

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:640
&gt; +    for (unsigned i = 0; i &lt; touchPointList().size(); i++) {

Though, as far as I know, there is no difference from the point of view of functionality, generally, it looks WebKit prefers to use ++i instead of i++.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:643
&gt; +            i--;

I don&apos;t understand why you add this line. If we modify loop counter both  *for(;;)* condition and loop body, I think this may make problem.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:765
&gt; +    bool enable = JSValueToBoolean(context, arguments[1]);

It seems to me this is better to move 765 line to 777 line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627446</commentid>
    <comment_count>16</comment_count>
      <attachid>142659</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-18 01:02:52 -0700</bug_when>
    <thetext>Created attachment 142659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627448</commentid>
    <comment_count>17</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-18 01:06:03 -0700</bug_when>
    <thetext>gyuyoung, rakuco: Thanks for review!
FOA, checked no regression and done fixing for reviewed point! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627624</commentid>
    <comment_count>18</comment_count>
      <attachid>142659</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-18 06:10:08 -0700</bug_when>
    <thetext>Comment on attachment 142659
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_frame.h:853
&gt; + * @param metaState touch event modifiers

This still isn&apos;t helpful -- if I am an API user and check this documentation, I still won&apos;t know what this means and what values I can pass.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:649
&gt; +    postTouchEvent();

I think it makes sense to just merge both functions.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:668
&gt; +    unsigned lowestId = 0;
&gt; +    for (unsigned i = 0; i &lt; touchPointList().size(); ++i) {
&gt; +        if (touchPointList().at(i).id == lowestId)
&gt; +            ++lowestId;
&gt; +    }

My question about using last() has not been answered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628540</commentid>
    <comment_count>19</comment_count>
      <attachid>142891</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-19 21:03:33 -0700</bug_when>
    <thetext>Created attachment 142891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628541</commentid>
    <comment_count>20</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-19 21:04:19 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 142659 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142659&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.h:853
&gt; &gt; + * @param metaState touch event modifiers
&gt; 
&gt; This still isn&apos;t helpful -- if I am an API user and check this documentation, I still won&apos;t know what this means and what values I can pass.
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:649
&gt; &gt; +    postTouchEvent();
&gt; 
&gt; I think it makes sense to just merge both functions.
&gt; 
&gt; &gt; Tools/DumpRenderTree/efl/EventSender.cpp:668
&gt; &gt; +    unsigned lowestId = 0;
&gt; &gt; +    for (unsigned i = 0; i &lt; touchPointList().size(); ++i) {
&gt; &gt; +        if (touchPointList().at(i).id == lowestId)
&gt; &gt; +            ++lowestId;
&gt; &gt; +    }
&gt; 
&gt; My question about using last() has not been answered.

All done, thanks! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628617</commentid>
    <comment_count>21</comment_count>
      <attachid>142891</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-20 13:07:23 -0700</bug_when>
    <thetext>Comment on attachment 142891
Patch

Thank you for working on this. I still don&apos;t like the way metaState is used or documented (AltKey and the other values do not make any sense to an API user, as they are not part of any public header).

I suggest using the modifier values defined in Ecore_Input.h (ECORE_EVENT_MODIFIER_SHIFT etc). This approach does require more code but is definitely more portable and useful for users:

 - In Source/cmake/FindEFL.cmake, look for ecore-input.
 - Add the dependency to the &quot;Requires&quot; line in Source/WebKit/efl/ewk/ewebkit.pc.in
 - Make ewk_frame_feed_touch_event() take an unsigned int instead of an int for metaState, and rename it to modifiers.
   - Properly document that users are expected to pass ORed values of the ECORE_EVENT_MODIFIER macros in Ecore_Input.h, such as ECORE_EVENT_MODIFIER_ALT or ECORE_EVENT_MODIFIER_SHIFT.
 - You can then parse the value in either ewk_frame_feed_touch_event() or relay it to PlatformTouchEventEfl.
 - Adjust EventSender accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628673</commentid>
    <comment_count>22</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-20 17:28:03 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 142891 [details])
&gt; Thank you for working on this. I still don&apos;t like the way metaState is used or documented (AltKey and the other values do not make any sense to an API user, as they are not part of any public header).
&gt; 

FOA, thanks for your review and I agree with your point.
The only reason why I was holding metaState argument is that I just wanted to keep a API form to prevent further confusion.
But, if we should modify API, then I put my two cents on your #14 comment.
  - &quot;Please document it properly (and optionally change its API to accept separate parameters for each meaningful modifier).&quot;
If you are okay with this, then I will remove &apos;metaState&apos; and add 4 boolean type arguments(bool altKey, bool ctrlKey, bool metaKey, bool shiftKey).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628688</commentid>
    <comment_count>23</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-20 18:03:47 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; But, if we should modify API, then I put my two cents on your #14 comment.
&gt;   - &quot;Please document it properly (and optionally change its API to accept separate parameters for each meaningful modifier).&quot;
&gt; If you are okay with this, then I will remove &apos;metaState&apos; and add 4 boolean type arguments(bool altKey, bool ctrlKey, bool metaKey, bool shiftKey).

While that works in theory, it doesn&apos;t match the usual behavior when specifying key modifiers in other toolkits and also in the EFL themselves (see Ecore_Event_Key or Evas_Event_Key_Down, for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628961</commentid>
    <comment_count>24</comment_count>
      <attachid>142994</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 04:42:16 -0700</bug_when>
    <thetext>Created attachment 142994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628962</commentid>
    <comment_count>25</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 04:43:01 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 142891 [details])
&gt; Thank you for working on this. I still don&apos;t like the way metaState is used or documented (AltKey and the other values do not make any sense to an API user, as they are not part of any public header).
&gt; 
&gt; I suggest using the modifier values defined in Ecore_Input.h (ECORE_EVENT_MODIFIER_SHIFT etc). This approach does require more code but is definitely more portable and useful for users:
&gt; 
&gt;  - In Source/cmake/FindEFL.cmake, look for ecore-input.
&gt;  - Add the dependency to the &quot;Requires&quot; line in Source/WebKit/efl/ewk/ewebkit.pc.in
&gt;  - Make ewk_frame_feed_touch_event() take an unsigned int instead of an int for metaState, and rename it to modifiers.
&gt;    - Properly document that users are expected to pass ORed values of the ECORE_EVENT_MODIFIER macros in Ecore_Input.h, such as ECORE_EVENT_MODIFIER_ALT or ECORE_EVENT_MODIFIER_SHIFT.
&gt;  - You can then parse the value in either ewk_frame_feed_touch_event() or relay it to PlatformTouchEventEfl.
&gt;  - Adjust EventSender accordingly.

All done, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629366</commentid>
    <comment_count>26</comment_count>
      <attachid>142994</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-21 12:16:46 -0700</bug_when>
    <thetext>Comment on attachment 142994
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:983
&gt; +    WebCore::PlatformEvent::Modifiers touchModifiers =static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(0);

Nit: Missing a space after the &apos;=&apos;, and the cast is not needed.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:985
&gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::AltKey);

The cast is unneeded.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:987
&gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::CtrlKey);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:989
&gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::ShiftKey);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:991
&gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::MetaKey);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:993
&gt; +    WebCore::PlatformTouchEvent touchEvent(points, WebCore::IntPoint(x, y), type, touchModifiers);

Since you already have a PlatformEvent::Modifiers here, you can simplify the PlatformTouchEvent constructor by accepting Modifiers instead of an int as an argument, similarly to one of PlatformEvent&apos;s constructor.

&gt; Tools/DumpRenderTree/efl/EventSender.cpp:754
&gt; +    unsigned mask = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(0);

The cast is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629788</commentid>
    <comment_count>27</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 17:54:07 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:985
&gt; &gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::AltKey);
&gt; 
&gt; The cast is unneeded.
&gt; 

w/o casting I always meet this error:
error: invalid conversion from ‘int’ to ‘WebCore::PlatformEvent::Modifiers’ [-fpermissive]
Any idea on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629801</commentid>
    <comment_count>28</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-21 18:08:19 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:985
&gt; &gt; &gt; +        touchModifiers = static_cast&lt;WebCore::PlatformEvent::Modifiers&gt;(touchModifiers | WebCore::PlatformEvent::AltKey);
&gt; &gt; 
&gt; &gt; The cast is unneeded.
&gt; 
&gt; w/o casting I always meet this error:
&gt; error: invalid conversion from ‘int’ to ‘WebCore::PlatformEvent::Modifiers’ [-fpermissive]
&gt; Any idea on this?

Sorry for overlooking that. Your `touchModifiers&apos; variable should be an int (or an unsigned) so that you can do bitwise operations like the ones you do. For a more detailed explanation, please see &lt;http://www.parashift.com/c++-faq/newbie.html#faq-29.20&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629817</commentid>
    <comment_count>29</comment_count>
      <attachid>143159</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 18:26:08 -0700</bug_when>
    <thetext>Created attachment 143159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629818</commentid>
    <comment_count>30</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 18:28:08 -0700</bug_when>
    <thetext>&gt; Sorry for overlooking that. Your `touchModifiers&apos; variable should be an int (or an unsigned) so that you can do bitwise operations like the ones you do. For a more detailed explanation, please see &lt;http://www.parashift.com/c++-faq/newbie.html#faq-29.20&gt;.

Thanks for the link and all done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629858</commentid>
    <comment_count>31</comment_count>
      <attachid>143159</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-21 19:20:35 -0700</bug_when>
    <thetext>Comment on attachment 143159
Patch

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

&gt; Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp:39
&gt;  PlatformTouchEvent::PlatformTouchEvent(Eina_List* points, const IntPoint pos, PlatformEvent::Type type, int metaState)
&gt; -    : PlatformEvent(type, false, false, false, false, currentTime())
&gt; +    : PlatformEvent(type, !!(metaState &amp; ShiftKey), !!(metaState &amp; CtrlKey), !!(metaState &amp; AltKey), !!(metaState &amp; MetaKey), currentTime())

We&apos;re almost there. As I mentioned a few comments ago, there is no point in doing these bitwise checks again since you already created a proper value in ewk_view_feed_touch_event(). You can simplify this constructor to:

  PlatforTouchEvent::PlatformTouchEvent(const Eina_List* points, const IntPoint pos, PlatformEvent::Type type, PlatformEvent::Modifiers modifiers)
      : PlatformEvent(type, modifiers, currentTime())

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:983
&gt; +    int touchModifiers = 0;

Since PlatformEvent&apos;s m_modifiers is an unsigned and you use an unsigned in EventSender, it&apos;d be good to use an unsigned here as well for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629876</commentid>
    <comment_count>32</comment_count>
      <attachid>143176</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 19:53:38 -0700</bug_when>
    <thetext>Created attachment 143176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629877</commentid>
    <comment_count>33</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 19:55:19 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 143159 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143159&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/efl/PlatformTouchEventEfl.cpp:39
&gt; &gt;  PlatformTouchEvent::PlatformTouchEvent(Eina_List* points, const IntPoint pos, PlatformEvent::Type type, int metaState)
&gt; &gt; -    : PlatformEvent(type, false, false, false, false, currentTime())
&gt; &gt; +    : PlatformEvent(type, !!(metaState &amp; ShiftKey), !!(metaState &amp; CtrlKey), !!(metaState &amp; AltKey), !!(metaState &amp; MetaKey), currentTime())
&gt; 
&gt; We&apos;re almost there. As I mentioned a few comments ago, there is no point in doing these bitwise checks again since you already created a proper value in ewk_view_feed_touch_event(). You can simplify this constructor to:
&gt; 
&gt;   PlatforTouchEvent::PlatformTouchEvent(const Eina_List* points, const IntPoint pos, PlatformEvent::Type type, PlatformEvent::Modifiers modifiers)
&gt;       : PlatformEvent(type, modifiers, currentTime())
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:983
&gt; &gt; +    int touchModifiers = 0;
&gt; 
&gt; Since PlatformEvent&apos;s m_modifiers is an unsigned and you use an unsigned in EventSender, it&apos;d be good to use an unsigned here as well for consistency.

All done, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629880</commentid>
    <comment_count>34</comment_count>
      <attachid>143176</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-05-21 19:57:39 -0700</bug_when>
    <thetext>Comment on attachment 143176
Patch

At last! Informal r+, thanks for all the hard work :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629886</commentid>
    <comment_count>35</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-21 20:06:41 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 143176 [details])
&gt; At last! Informal r+, thanks for all the hard work :)

Many thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631055</commentid>
    <comment_count>36</comment_count>
      <attachid>143176</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 18:38:39 -0700</bug_when>
    <thetext>Comment on attachment 143176
Patch

rubberstamping based on the informal r+...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631062</commentid>
    <comment_count>37</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-05-22 18:45:48 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 143176 [details])
&gt; rubberstamping based on the informal r+...

morrita: Thanks!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631086</commentid>
    <comment_count>38</comment_count>
      <attachid>143176</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 19:36:47 -0700</bug_when>
    <thetext>Comment on attachment 143176
Patch

Clearing flags on attachment: 143176

Committed r118103: &lt;http://trac.webkit.org/changeset/118103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631087</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 19:36:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142453</attachid>
            <date>2012-05-17 05:05:29 -0700</date>
            <delta_ts>2012-05-17 05:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120517210528.patch</filename>
            <type>text/plain</type>
            <size>19281</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiNzg5NDg3OTc4YmEx
YmM0YTZlYTEzM2MzNzM4OTBiNzc4NjkxOC4uZmRmMWNlZmZmNTdhOWQ5NGEzODkzOGQ0Y2E3ZDc4
OGEyYTE4NGY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIENvbnZlcnQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZSB0byB1c2UgSW50ZXJuYWxTZXR0aW5ncyBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggMjNhMGZi
ZGZmMmQ5YzA0MzMzYzJkNWVmODA4NmY4YzdmZGJlNTlhNi4uYzYyOWQ2OWYxMGMxNWQzNzg1NjE3
ZjM0YjcxYWE2MzVlMTVlODQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQo
RWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEludFBvaW50IHBvcywgUGxhdGZvcm1FdmVudDo6VHlw
ZSB0eXBlLCBpbnQgbWV0YVN0YXRlKQotICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQo
dHlwZSwgISEobWV0YVN0YXRlICYgU2hpZnRLZXkpLCAhIShtZXRhU3RhdGUgJiBDdHJsS2V5KSwg
ISEobWV0YVN0YXRlICYgQWx0S2V5KSwgISEobWV0YVN0YXRlICYgTWV0YUtleSksIGN1cnJlbnRU
aW1lKCkpCiB7CiAgICAgdm9pZCogaXRlbTsKIApAQCAtNDYsOCArNDYsNiBAQCBQbGF0Zm9ybVRv
dWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgSW50
UG9pbnQgcG9zLCBQbAogCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91
Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3VjaFBvaW50OjpT
dGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBkb24ndCBz
dXBwb3J0IG1ldGFTdGF0ZSBmb3Igbm93LgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4
IGQ4NDhjOThlZGQ5YzYxMzA2ZGRlMTVkMjhkNDEzOGI0NDY5YmFlNjkuLjBjMTEwZGRmZDE1MDkx
YzkwODg1MTU1YmI1MjkyZDFhZGZmNmNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03Nyw2
ICs3Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JL
X0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9W
SVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX1ZJREVPX1RSQUNLIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY4M2E2NDcwY2Y0YjI3M2U1ZTk0ZTM4YjIzNzFhMmY4Y2M2
OWVlOWQuLjk3YzZlZWQ3YmRmMmQ1NjMyODY5YjE0ZTY2YTA5ZTRhMDA3MjRlNmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBA
QAorMjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBz
dXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxl
ZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAo
VG91Y2hFdmVudEluZm86OlRvdWNoRXZlbnRJbmZvKToKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZv
KToKKyAgICAgICAgKHBvc3RUb3VjaEV2ZW50KToKKyAgICAgICAgKGFkZFRvdWNoUG9pbnRDYWxs
YmFjayk6CisgICAgICAgICh0b3VjaFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAodXBkYXRlVG91
Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoTW92ZUNhbGxiYWNrKToKKyAgICAgICAg
KGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaENhbmNlbENhbGxiYWNr
KToKKyAgICAgICAgKHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hF
bmRDYWxsYmFjayk6CisgICAgICAgIChjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2spOgorICAgICAg
ICAoc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMDUtMTcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBDb252ZXJ0IHNldERvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3JVUkxTY2hlbWUgdG8gdXNlIEludGVybmFsU2V0dGluZ3MgaW50ZXJmYWNlCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCAxNmQ5MTE4Yzk4MGMx
YTBkZTU5ZDYwZjM5M2Y4NDU0ZTc5NTJkZjNlLi4wODdhMzljNTJkYjRkZjljOWEyNzNjMDJlNzIw
NmIyMzEzYWQxOWQ0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAK
QEAgLTM2LDggKzM2LDEwIEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlQ2hyb21lLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJKU1N0cmluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+CkBAIC0xMDgsNiArMTEwLDE1IEBAIGVudW0gRXZlbnRRdWV1ZVN0cmF0ZWd5IHsK
ICAgICBEb05vdEZlZWRRdWV1ZWRFdmVudHMKIH07CiAKK2VudW0gVG91Y2hFdmVudFN0YXRlIHsK
KyAgICBUb3VjaFVuZGVmaW5lZCwKKyAgICBUb3VjaFJlbGVhc2VkLAorICAgIFRvdWNoUHJlc3Nl
ZCwKKyAgICBUb3VjaE1vdmVkLAorICAgIFRvdWNoU3RhdGlvbmFyeSwKKyAgICBUb3VjaENhbmNl
bGxlZAorfTsKKwogc3RydWN0IEtleUV2ZW50SW5mbyB7CiAgICAgS2V5RXZlbnRJbmZvKGNvbnN0
IENTdHJpbmcmIGtleU5hbWUsIGNvbnN0IENTdHJpbmcmIGtleVN0cmluZywgRXZhc0tleU1vZGlm
aWVyIG1vZGlmaWVycykKICAgICAgICAgOiBrZXlOYW1lKGtleU5hbWUpCkBAIC0xNDksNiArMTYw
LDIyIEBAIHN0cnVjdCBEZWxheWVkRXZlbnQgewogICAgIHVuc2lnbmVkIGxvbmcgZGVsYXk7CiB9
OwogCitzdHJ1Y3QgVG91Y2hFdmVudEluZm8geworICAgIFRvdWNoRXZlbnRJbmZvKFRvdWNoRXZl
bnRTdGF0ZSBzdGF0ZSwgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVuc2lnbmVkIGlkKQorICAg
ICAgICA6IHN0YXRlKHN0YXRlKQorICAgICAgICAsIHBvaW50KHBvaW50KQorICAgICAgICAsIGlk
KGlkKQorICAgIHsKKyAgICB9CisKKyAgICBUb3VjaEV2ZW50U3RhdGUgc3RhdGU7CisgICAgV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgdW5zaWduZWQgaWQ7Cit9OworCitzdGF0aWMgVmVj
dG9yPFRvdWNoRXZlbnRJbmZvPiB0b3VjaFBvaW50TGlzdDsKK3N0YXRpYyBpbnQgdG91Y2hNb2Rp
ZmllcnM7CisKIFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4mIGRlbGF5ZWRFdmVudFF1ZXVlKCkK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4sIHN0
YXRpY0RlbGF5ZWRFdmVudFF1ZXVlLCAoKSk7CkBAIC01ODksNiArNjE2LDIyMSBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAorc3RhdGljIHZvaWQgcG9zdFRvdWNoRXZlbnQoKQoreworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAo
dG91Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPT0gVG91Y2hSZWxlYXNlZCkgeworICAgICAgICAg
ICAgdG91Y2hQb2ludExpc3QucmVtb3ZlKGkpOworICAgICAgICAgICAgaS0tOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHRvdWNoUG9pbnRMaXN0LmF0KGkpLnN0YXRlID0gVG91Y2hTdGF0
aW9uYXJ5OworICAgIH0KK30KKworc3RhdGljIEpTVmFsdWVSZWYgYWRkVG91Y2hQb2ludENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3Vu
dCA8IDIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKwor
ICAgIGludCB4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2Vw
dGlvbik7CisgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8
ICEqZXhjZXB0aW9uKTsKKworICAgIFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKHgsIHkpOwor
CisgICAgdW5zaWduZWQgbG93ZXN0SWQgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAodG91Y2hQb2ludExp
c3QuYXQoaSkuaWQgPT0gbG93ZXN0SWQpCisgICAgICAgICAgICBsb3dlc3RJZCsrOworICAgIH0K
KworICAgIFRvdWNoRXZlbnRJbmZvIGV2ZW50SW5mbyhUb3VjaFByZXNzZWQsIHBvc2l0aW9uLCBs
b3dlc3RJZCk7CisgICAgdG91Y2hQb2ludExpc3QuYXBwZW5kKGV2ZW50SW5mbyk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHRvdWNoU3RhcnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgRWluYV9MaXN0KiBldmVudExpc3QgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRvdWNoUG9pbnRMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgIEV3a19Ub3VjaF9Qb2lu
dCogZXZlbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OworICAgICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCA9IHRvdWNoUG9pbnRMaXN0LmF0KGkpLnBvaW50OworICAgICAgICBldmVudC0+aWQg
PSB0b3VjaFBvaW50TGlzdC5hdChpKS5pZDsKKyAgICAgICAgZXZlbnQtPnggPSBwb2ludC54KCk7
CisgICAgICAgIGV2ZW50LT55ID0gcG9pbnQueSgpOworCisgICAgICAgIGlmICh0b3VjaFBvaW50
TGlzdC5hdChpKS5zdGF0ZSA9PSBUb3VjaFByZXNzZWQpCisgICAgICAgICAgICBldmVudC0+c3Rh
dGUgPSBFV0tfVE9VQ0hfUE9JTlRfUFJFU1NFRDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXZlbnQtPnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1NUQVRJT05BUlk7CisKKyAgICAgICAgZXZl
bnRMaXN0ID0gZWluYV9saXN0X2FwcGVuZChldmVudExpc3QsIGV2ZW50KTsKKyAgICB9CisKKyAg
ICBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChicm93c2VyLT5tYWluRnJhbWUoKSwgRVdLX1RP
VUNIX1NUQVJULCBldmVudExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKKyAgICBwb3N0VG91Y2hFdmVu
dCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3Rh
dGljIEpTVmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRp
Y19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0
aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB4
ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7Cisg
ICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1
bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0
aW9uKTsKKworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3Quc2l6
ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQgPSB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkucG9p
bnQ7CisgICAgcG9pbnQuc2V0WCh4KTsKKyAgICBwb2ludC5zZXRZKHkpOworICAgIHRvdWNoUG9p
bnRMaXN0LmF0KGluZGV4KS5zdGF0ZSA9IFRvdWNoTW92ZWQ7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoTW92
ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBFaW5hX0xpc3Qq
IGV2ZW50TGlzdCA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2lu
dExpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IG5l
dyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50ID0gdG91
Y2hQb2ludExpc3QuYXQoaSkucG9pbnQ7CisgICAgICAgIGV2ZW50LT5pZCA9IHRvdWNoUG9pbnRM
aXN0LmF0KGkpLmlkOworICAgICAgICBldmVudC0+eCA9IHBvaW50LngoKTsKKyAgICAgICAgZXZl
bnQtPnkgPSBwb2ludC55KCk7CisKKyAgICAgICAgaWYgKHRvdWNoUG9pbnRMaXN0LmF0KGkpLnN0
YXRlID09IFRvdWNoTW92ZWQpCisgICAgICAgICAgICBldmVudC0+c3RhdGUgPSBFV0tfVE9VQ0hf
UE9JTlRfTU9WRUQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50LT5zdGF0ZSA9IEVX
S19UT1VDSF9QT0lOVF9TVEFUSU9OQVJZOworCisgICAgICAgIGV2ZW50TGlzdCA9IGVpbmFfbGlz
dF9hcHBlbmQoZXZlbnRMaXN0LCBldmVudCk7CisgICAgfQorCisgICAgZXdrX2ZyYW1lX2ZlZWRf
dG91Y2hfZXZlbnQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIEVXS19UT1VDSF9NT1ZFLCBldmVudExp
c3QsIHRvdWNoTW9kaWZpZXJzKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2Fu
Y2VsVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJU
KCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkuc3RhdGUgPSBU
b3VjaENhbmNlbGxlZDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoQ2FuY2VsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEVpbmFfTGlzdCogZXZlbnRMaXN0ID0gMDsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykgewor
ICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIGV2ZW50ID0gbmV3IEV3a19Ub3VjaF9Qb2ludDsKKyAg
ICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQgPSB0b3VjaFBvaW50TGlzdC5hdChpKS5wb2lu
dDsKKyAgICAgICAgZXZlbnQtPmlkID0gdG91Y2hQb2ludExpc3QuYXQoaSkuaWQ7CisgICAgICAg
IGV2ZW50LT54ID0gcG9pbnQueCgpOworICAgICAgICBldmVudC0+eSA9IHBvaW50LnkoKTsKKwor
ICAgICAgICBpZiAodG91Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPT0gVG91Y2hDYW5jZWxsZWQp
CisgICAgICAgICAgICBldmVudC0+c3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfQ0FOQ0VMTEVEOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudC0+c3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRf
U1RBVElPTkFSWTsKKworICAgICAgICBldmVudExpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50
TGlzdCwgZXZlbnQpOworICAgIH0KKworICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJy
b3dzZXItPm1haW5GcmFtZSgpLCBFV0tfVE9VQ0hfQ0FOQ0VMLCBldmVudExpc3QsIHRvdWNoTW9k
aWZpZXJzKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVsZWFzZVRvdWNoUG9p
bnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisKKyAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9u
IHx8ICEqZXhjZXB0aW9uKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRvdWNoUG9p
bnRMaXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworCisgICAgdG91Y2hQb2ludExpc3QuYXQoaW5kZXgpLnN0YXRlID0gVG91Y2hSZWxlYXNl
ZDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHRvdWNoRW5kQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIEVpbmFfTGlzdCogZXZlbnRMaXN0ID0gMDsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICBFd2tfVG91
Y2hfUG9pbnQqIGV2ZW50ID0gbmV3IEV3a19Ub3VjaF9Qb2ludDsKKyAgICAgICAgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQgPSB0b3VjaFBvaW50TGlzdC5hdChpKS5wb2ludDsKKyAgICAgICAgZXZl
bnQtPmlkID0gdG91Y2hQb2ludExpc3QuYXQoaSkuaWQ7CisgICAgICAgIGV2ZW50LT54ID0gcG9p
bnQueCgpOworICAgICAgICBldmVudC0+eSA9IHBvaW50LnkoKTsKKworICAgICAgICBpZiAodG91
Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPT0gVG91Y2hSZWxlYXNlZCkKKyAgICAgICAgICAgIGV2
ZW50LT5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNFRDsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZXZlbnQtPnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1NUQVRJT05BUlk7CisKKyAg
ICAgICAgZXZlbnRMaXN0ID0gZWluYV9saXN0X2FwcGVuZChldmVudExpc3QsIGV2ZW50KTsKKyAg
ICB9CisKKyAgICBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChicm93c2VyLT5tYWluRnJhbWUo
KSwgRVdLX1RPVUNIX0VORCwgZXZlbnRMaXN0LCB0b3VjaE1vZGlmaWVycyk7CisgICAgcG9zdFRv
dWNoRXZlbnQoKTsKKyAgICB0b3VjaE1vZGlmaWVycyA9IDA7CisgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhclRvdWNo
UG9pbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRvdWNo
UG9pbnRMaXN0LmNsZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUb3VjaE1vZGlmaWVyQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMikK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTW9kaWZpZXIoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBib29sIGVuYWJsZSA9
IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzFdKTsKKyAgICBpbnQgbWFzayA9
IDA7CisKKyAgICBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJhbHQiKSkKKyAgICAgICAgbWFzayB8
PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpz
TW9kaWZpZXIsICJjdHJsIikpCisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6Q3RybEtleTsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgIm1ldGEiKSkKKyAg
ICAgICAgbWFzayB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OworICAgIGVsc2Ug
aWYgKGVxdWFscyhqc01vZGlmaWVyLCAic2hpZnQiKSkKKyAgICAgICAgbWFzayB8PSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKworICAgIGlmIChlbmFibGUpCisgICAgICAgIHRv
dWNoTW9kaWZpZXJzIHw9IG1hc2s7CisgICAgZWxzZQorICAgICAgICB0b3VjaE1vZGlmaWVycyAm
PSB+bWFzazsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAi
bW91c2VTY3JvbGxCeSIsIG1vdXNlU2Nyb2xsQnlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgImNv
bnRpbnVvdXNNb3VzZVNjcm9sbEJ5IiwgY29udGludW91c01vdXNlU2Nyb2xsQnlDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApAQCAtNjA0LDYgKzg0NiwxNiBAQCBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0
aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJ0ZXh0Wm9vbU91dCIsIHRleHRab29tT3V0Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICB7ICJ6b29tUGFnZUluIiwgem9vbVBhZ2VJbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgeyAiem9vbVBhZ2VPdXQiLCB6b29tUGFnZU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAiYWRkVG91Y2hQb2ludCIsIGFkZFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
IHsgInRvdWNoU3RhcnQiLCB0b3VjaFN0YXJ0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ1cGRh
dGVUb3VjaFBvaW50IiwgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAi
dG91Y2hNb3ZlIiwgdG91Y2hNb3ZlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJyZWxlYXNlVG91
Y2hQb2ludCIsIHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0b3Vj
aEVuZCIsIHRvdWNoRW5kQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJjYW5jZWxUb3VjaFBvaW50
IiwgY2FuY2VsVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidG91Y2hDYW5jZWwi
LCB0b3VjaENhbmNlbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAiY2xlYXJUb3VjaFBvaW50cyIs
IGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInNldFRvdWNoTW9kaWZp
ZXIiLCBzZXRUb3VjaE1vZGlmaWVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7IDAsIDAsIDAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNhNGRkNzI1
NWU0MDVjNDQ1YTMyZTg1YjlmZDdjOThkNWQzODEyNzYuLjEzMTExM2Y0ZDAxMjQ2ZmE4NTY0YWNh
N2U1MmExMWEyMDk0MjFhOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KQEAgLTMyNiw3ICszMjYsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4g
IldURl9VU0VfVElMRURfQkFDS0lOR19TVE9SRSIsIGRlZmF1bHQgPT4gaXNRdCgpLCB2YWx1ZSA9
PiBcJHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gInRvdWNo
LWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBFdmVudHMgc3VwcG9ydCIsCi0gICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc1F0KCkgfHwgaXNC
bGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAorICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNRdCgpIHx8IGlzQmxh
Y2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAog
CiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGluZyIsIGRlc2MgPT4gIlRvZ2dsZSBU
b3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VD
SF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdG91Y2hJY29uTG9hZGlu
Z1N1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhOGI3Y2E5YWM1MmJlYmFjOWJhZTVmOWQ1ZWY3ZDRjYTBmOWIz
MWVhLi5jNTU5MjkxYmYwZWZmNWU4ZmZhMGQxMjMzNmMyNGJmODBmN2JlY2E1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDUtMTcgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjcyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBFRkwgRFJU
IGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlzIHBh
dGNoIGVuYWJsZWQgYW5kIGltcGxlbWVudGVkIHNvbWUgZXZlbnRTZW5kZXIgZnVuY3Rpb24gY2Fs
bGJhY2tzLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisKIDIwMTItMDUtMTcg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBDb252
ZXJ0IHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUgdG8gdXNlIEludGVy
bmFsU2V0dGluZ3MgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDE0MzQz
Y2JkZDcxZDMyYjFmZWIwOWM5ZjY0NzkwYjI1ZTk4MDY0ZGMuLmYxNWRiZTU2ZTMzZGI5OTM5NzNl
MzlkNDgwMWM2NzcwYmIzZWYzM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC01Niw4
ICs1Niw5IEBAIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZp
bGUuaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YQogaHR0cC90ZXN0cy9zZWN1cml0eS9j
bGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKIAotIyBFRkwncyBFdmVudFNlbmRl
ciBkb2VzIG5vdCBpbXBsZW1lbnQgYWRkVG91Y2hQb2ludCwgY2xlYXJUb3VjaFBvaW50cywgdG91
Y2hTdGFydCBhbmQgb3RoZXIgdG91Y2gtcmVsYXRlZCBjYWxsYmFja3MKLWZhc3QvZXZlbnRzL3Rv
dWNoCisjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBnZXN0dXJlLXJlbGF0
ZWQgY2FsbGJhY2tzCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlCitmYXN0L2V2ZW50cy90b3Vj
aC9wYWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKIAogIyBFRkwncyBwb3J0IHJl
cXVpcmVzIGltcGxlbWVudGF0aW9uIG9mIENsaXBib2FyZEVmbCBhbmQgRHJhZ0NsaWVudEVmbCBj
bGFzc2VzIGluIG9yZGVyIHRvIHN1cHBwb3J0IGRyYWcgbiBkcm9wIGZ1bmN0aW9uYWxpdHkKIGZh
c3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc3ViZnJhbWUtZGF0YVRyYW5zZmVyLmh0bWwKQEAgLTU0
Miw2ICs1NDMsNyBAQCBmYXN0L2Zvcm1zL251bWJlci9pbnB1dC1udW1iZXItc2l6ZS5odG1sCiBm
YXN0L2Zvcm1zL251bWJlci9pbnB1dC1zcGluYnV0dG9uLWNhcHR1cmluZy5odG1sCiBmYXN0L2Zv
cm1zL251bWJlci9zcGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5Lmh0bWwKIGZh
c3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwKK2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWJlZm9yZS1wcmVzc2luZy1zcGluLWJ1dHRvbi5odG1sCiAKICMgVGhpcyB0ZXN0IGlz
IG91dC1kYXRlZCBzaW5jZSByOTU4OTkuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTcwOQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IDhkZGFmNzI1YWM2N2RkZTI1MjJhMzNmYmE2NTJmOTQwMjQ5MGMzOTMuLmZkOTc1ZTJkMmJiY2Yy
ZmFlYTIzZTkyMTRjYjk0ZWJhNDFiMGM2YWYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdp
bC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2gg
ZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2
NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Vy
cmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVy
ZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRl
ciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZTogRW5hYmxlIHRvdWNoIGV2ZW50IG9wdGlvbi4KKwogMjAxMi0wNS0xNyAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIENvbnZlcnQgc2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSB0byB1c2UgSW50ZXJuYWxTZXR0
aW5ncyBpbnRlcmZhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142459</attachid>
            <date>2012-05-17 05:56:58 -0700</date>
            <delta_ts>2012-05-17 18:33:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120517215657.patch</filename>
            <type>text/plain</type>
            <size>17043</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk0NDg2ZWQxZTIyZmVk
NTUwN2U1MDk3ZWFjYmI3MDI2ZjA2YzA4MS4uMTMyZDMxZGVjYjJhMDFjZTY0M2U0YjJlOTE5ODc0
MGJlYTlhY2NhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQWxsb3cgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRpb24gdG8gcGFzcyBzbmFwc2hv
dCBtZXRhZGF0YSBhdCBGaWxlIGNyZWF0aW9uIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggMjNhMGZiZGZm
MmQ5YzA0MzMzYzJkNWVmODA4NmY4YzdmZGJlNTlhNi4uYzYyOWQ2OWYxMGMxNWQzNzg1NjE3ZjM0
YjcxYWE2MzVlMTVlODQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEludFBvaW50IHBvcywgUGxhdGZvcm1FdmVudDo6VHlwZSB0
eXBlLCBpbnQgbWV0YVN0YXRlKQotICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUoKSkKKyAgICA6IFBsYXRmb3JtRXZlbnQodHlw
ZSwgISEobWV0YVN0YXRlICYgU2hpZnRLZXkpLCAhIShtZXRhU3RhdGUgJiBDdHJsS2V5KSwgISEo
bWV0YVN0YXRlICYgQWx0S2V5KSwgISEobWV0YVN0YXRlICYgTWV0YUtleSksIGN1cnJlbnRUaW1l
KCkpCiB7CiAgICAgdm9pZCogaXRlbTsKIApAQCAtNDYsOCArNDYsNiBAQCBQbGF0Zm9ybVRvdWNo
RXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgSW50UG9p
bnQgcG9zLCBQbAogCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQ
b2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3VjaFBvaW50OjpTdGF0
ZT4ocG9pbnQtPnN0YXRlKSkpOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBw
b3J0IG1ldGFTdGF0ZSBmb3Igbm93LgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGQ4
NDhjOThlZGQ5YzYxMzA2ZGRlMTVkMjhkNDEzOGI0NDY5YmFlNjkuLjBjMTEwZGRmZDE1MDkxYzkw
ODg1MTU1YmI1MjkyZDFhZGZmNmNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03Nyw2ICs3
Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lO
Rk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9S
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1ZJREVPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1ZJREVPX1RSQUNLIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDcyNzUwYTMzY2NjOWU5NWNkNjcyMzM2ZTI3M2RmZmQyYzQ4YTNm
MDYuLjFjZjgwZDhjMjljZGQ3M2EzZmUyNDE3NTE5OGU3NDI3YWU3NDljYWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBw
b3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBh
bmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoVG91
Y2hFdmVudEluZm86OlRvdWNoRXZlbnRJbmZvKToKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZvKToK
KyAgICAgICAgKHBvc3RUb3VjaEV2ZW50KToKKyAgICAgICAgKGFkZFRvdWNoUG9pbnRDYWxsYmFj
ayk6CisgICAgICAgICh0b3VjaFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAodXBkYXRlVG91Y2hQ
b2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoTW92ZUNhbGxiYWNrKToKKyAgICAgICAgKGNh
bmNlbFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaENhbmNlbENhbGxiYWNrKToK
KyAgICAgICAgKHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hFbmRD
YWxsYmFjayk6CisgICAgICAgIChjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2spOgorICAgICAgICAo
c2V0VG91Y2hNb2RpZmllckNhbGxiYWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwv
RmVhdHVyZUxpc3QucG06CisKIDIwMTItMDUtMTcgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gV2ViIHByb2Nlc3MgaGFuZ3Mgd2hpbGUgd2FpdGlu
ZyBmb3IgcGx1Z2luIHByb2Nlc3MgY29ubmVjdGlvbiBkdXJpbmcgbGF5b3V0dGVzdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDE2ZDkxMThjOTgwYzFhMGRl
NTlkNjBmMzkzZjg0NTRlNzk1MmRmM2UuLmMwNTNmZjc3MGMxMTQxZmYyYTQxZDM3NTdiNTM5MTM4
NmQyMWMxOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAt
MzYsOCArMzYsMTAgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWVDaHJvbWUuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nVXRpbHMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVXZWJL
aXQuaD4KQEAgLTE0OSw2ICsxNTEsMjIgQEAgc3RydWN0IERlbGF5ZWRFdmVudCB7CiAgICAgdW5z
aWduZWQgbG9uZyBkZWxheTsKIH07CiAKK3N0cnVjdCBUb3VjaEV2ZW50SW5mbyB7CisgICAgVG91
Y2hFdmVudEluZm8oRXdrX1RvdWNoX1BvaW50X1R5cGUgc3RhdGUsIFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1bnNpZ25lZCBpZCkKKyAgICAgICAgOiBzdGF0ZShzdGF0ZSkKKyAgICAgICAgLCBw
b2ludChwb2ludCkKKyAgICAgICAgLCBpZChpZCkKKyAgICB7CisgICAgfQorCisgICAgRXdrX1Rv
dWNoX1BvaW50X1R5cGUgc3RhdGU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7CisgICAg
dW5zaWduZWQgaWQ7Cit9OworCitzdGF0aWMgVmVjdG9yPFRvdWNoRXZlbnRJbmZvPiB0b3VjaFBv
aW50TGlzdDsKK3N0YXRpYyBpbnQgdG91Y2hNb2RpZmllcnM7CisKIFdURjo6VmVjdG9yPERlbGF5
ZWRFdmVudD4mIGRlbGF5ZWRFdmVudFF1ZXVlKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4sIHN0YXRpY0RlbGF5ZWRFdmVudFF1ZXVlLCAoKSk7
CkBAIC01ODksNiArNjA3LDE3MCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJv
bm91c0tleURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIHZvaWQgc2VuZFRv
dWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKK3sKKyAgICBFaW5hX0xpc3QqIGV2
ZW50TGlzdCA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExp
c3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IG5ldyBF
d2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50ID0gdG91Y2hQ
b2ludExpc3QuYXQoaSkucG9pbnQ7CisgICAgICAgIGV2ZW50LT5pZCA9IHRvdWNoUG9pbnRMaXN0
LmF0KGkpLmlkOworICAgICAgICBldmVudC0+eCA9IHBvaW50LngoKTsKKyAgICAgICAgZXZlbnQt
PnkgPSBwb2ludC55KCk7CisgICAgICAgIGV2ZW50LT5zdGF0ZSA9IHRvdWNoUG9pbnRMaXN0LmF0
KGkpLnN0YXRlOworICAgICAgICBldmVudExpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlz
dCwgZXZlbnQpOworICAgIH0KKworICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dz
ZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVudExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKK30KKwor
c3RhdGljIHZvaWQgcG9zdFRvdWNoRXZlbnQoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAodG91Y2hQb2lu
dExpc3QuYXQoaSkuc3RhdGUgPT0gRVdLX1RPVUNIX1BPSU5UX1JFTEVBU0VEKSB7CisgICAgICAg
ICAgICB0b3VjaFBvaW50TGlzdC5yZW1vdmUoaSk7CisgICAgICAgICAgICBpLS07CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdG91Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPSBFV0tfVE9V
Q0hfUE9JTlRfU1RBVElPTkFSWTsKKyAgICB9Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGFkZFRv
dWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRp
b24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
IWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3Np
dGlvbih4LCB5KTsKKworICAgIHVuc2lnbmVkIGxvd2VzdElkID0gMDsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYg
KHRvdWNoUG9pbnRMaXN0LmF0KGkpLmlkID09IGxvd2VzdElkKQorICAgICAgICAgICAgbG93ZXN0
SWQrKzsKKyAgICB9CisKKyAgICBUb3VjaEV2ZW50SW5mbyBldmVudEluZm8oRVdLX1RPVUNIX1BP
SU5UX1BSRVNTRUQsIHBvc2l0aW9uLCBsb3dlc3RJZCk7CisgICAgdG91Y2hQb2ludExpc3QuYXBw
ZW5kKGV2ZW50SW5mbyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoU3RhcnRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJU
KTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3Vu
dCA8IDMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKwor
ICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpl
eGNlcHRpb24pOworICAgIGludCB4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlv
biB8fCAhKmV4Y2VwdGlvbik7CisgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCgh
ZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQgPSB0b3VjaFBv
aW50TGlzdC5hdChpbmRleCkucG9pbnQ7CisgICAgcG9pbnQuc2V0WCh4KTsKKyAgICBwb2ludC5z
ZXRZKHkpOworICAgIHRvdWNoUG9pbnRMaXN0LmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9Q
T0lOVF9NT1ZFRDsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hNb3ZlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKKyAg
ICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2FuY2VsVG91Y2hQb2ludENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGlu
dCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRp
b24pOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3Quc2l6ZSgp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICB0
b3VjaFBvaW50TGlzdC5hdChpbmRleCkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfQ0FOQ0VMTEVE
OworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGlj
IEpTVmFsdWVSZWYgdG91Y2hDYW5jZWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX0NBTkNFTCk7CisgICAgcG9zdFRv
dWNoRXZlbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGluZGV4
ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7Cisg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0b3VjaFBvaW50TGlzdC5zaXplKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9p
bnRMaXN0LmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNFRDsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHRvdWNoRW5kQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9FTkQpOworICAgIHBvc3RUb3VjaEV2ZW50KCk7Cisg
ICAgdG91Y2hNb2RpZmllcnMgPSAwOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICB0b3VjaFBvaW50TGlzdC5jbGVh
cigpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3Rh
dGljIEpTVmFsdWVSZWYgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBqc01vZGlmaWVyKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFy
Z3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgYm9vbCBlbmFibGUgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAgaW50IG1hc2sgPSAwOworCisgICAgaWYg
KGVxdWFscyhqc01vZGlmaWVyLCAiYWx0IikpCisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxh
dGZvcm1FdmVudDo6QWx0S2V5OworICAgIGVsc2UgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAiY3Ry
bCIpKQorICAgICAgICBtYXNrIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7Cisg
ICAgZWxzZSBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJtZXRhIikpCisgICAgICAgIG1hc2sgfD0g
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TWV0YUtleTsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNN
b2RpZmllciwgInNoaWZ0IikpCisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVu
dDo6U2hpZnRLZXk7CisKKyAgICBpZiAoZW5hYmxlKQorICAgICAgICB0b3VjaE1vZGlmaWVycyB8
PSBtYXNrOworICAgIGVsc2UKKyAgICAgICAgdG91Y2hNb2RpZmllcnMgJj0gfm1hc2s7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0
YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnki
LCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VT
Y3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYw
NCw2ICs3ODYsMTYgQEAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10g
PSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0ZXh0Wm9vbU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdlSW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpv
b21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImFkZFRvdWNo
UG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaFN0YXJ0
IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidXBkYXRlVG91Y2hQb2ludCIs
IHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRvdWNoTW92ZSIsIHRv
dWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAicmVsZWFzZVRvdWNoUG9pbnQiLCByZWxl
YXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidG91Y2hFbmQiLCB0b3VjaEVu
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAiY2FuY2VsVG91Y2hQb2ludCIsIGNhbmNlbFRvdWNo
UG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRvdWNoQ2FuY2VsIiwgdG91Y2hDYW5jZWxD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNsZWFyVG91Y2hQb2ludHMiLCBjbGVhclRvdWNoUG9p
bnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJzZXRUb3VjaE1vZGlmaWVyIiwgc2V0VG91Y2hN
b2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAwLCAwLCAwIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjYTRkZDcyNTVlNDA1YzQ0NWEzMmU4
NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNmNGQwMTI0NmZhODU2NGFjYTdlNTJhMTFhMjA5NDIx
YThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0K
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjYsNyAr
MzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVE
X0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4gXCR0aWxlZEJhY2tp
bmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNj
ID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNRdCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwg
dmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzUXQoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBp
c0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9u
ID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2Fk
aW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
IiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNDNmYTY2YjAzODU2YzYwZTNiMDY4MjA0MTIyNDNmNjNlZjAyYWE3My4uYWZkODE5NTAy
OWQzYjJjMmVmMjhhY2IzOTMxYzFjYzVhN2FiZjQxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTA1LTE3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBv
cnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFu
ZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorCiAyMDEyLTA1LTE3ICBCYWxhenMgS2VsZW1l
biAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFdlYiBwcm9jZXNzIGhhbmdz
IHdoaWxlIHdhaXRpbmcgZm9yIHBsdWdpbiBwcm9jZXNzIGNvbm5lY3Rpb24gZHVyaW5nIGxheW91
dHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDE0MzQzY2JkZDcxZDMyYjFmZWIw
OWM5ZjY0NzkwYjI1ZTk4MDY0ZGMuLmYxNWRiZTU2ZTMzZGI5OTM5NzNlMzlkNDgwMWM2NzcwYmIz
ZWYzM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC01Niw4ICs1Niw5IEBAIGh0dHAv
dGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbAogaHR0cC90
ZXN0cy9sb2NhbC9mb3JtZGF0YQogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJv
YXJkLWZpbGUtYWNjZXNzLmh0bWwKIAotIyBFRkwncyBFdmVudFNlbmRlciBkb2VzIG5vdCBpbXBs
ZW1lbnQgYWRkVG91Y2hQb2ludCwgY2xlYXJUb3VjaFBvaW50cywgdG91Y2hTdGFydCBhbmQgb3Ro
ZXIgdG91Y2gtcmVsYXRlZCBjYWxsYmFja3MKLWZhc3QvZXZlbnRzL3RvdWNoCisjIEVGTCdzIEV2
ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBnZXN0dXJlLXJlbGF0ZWQgY2FsbGJhY2tzCitm
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlCitmYXN0L2V2ZW50cy90b3VjaC9wYWdlLXNjYWxlZC10
b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKIAogIyBFRkwncyBwb3J0IHJlcXVpcmVzIGltcGxlbWVu
dGF0aW9uIG9mIENsaXBib2FyZEVmbCBhbmQgRHJhZ0NsaWVudEVmbCBjbGFzc2VzIGluIG9yZGVy
IHRvIHN1cHBwb3J0IGRyYWcgbiBkcm9wIGZ1bmN0aW9uYWxpdHkKIGZhc3QvZXZlbnRzL2RyYWct
YW5kLWRyb3Atc3ViZnJhbWUtZGF0YVRyYW5zZmVyLmh0bWwKQEAgLTU0Miw2ICs1NDMsNyBAQCBm
YXN0L2Zvcm1zL251bWJlci9pbnB1dC1udW1iZXItc2l6ZS5odG1sCiBmYXN0L2Zvcm1zL251bWJl
ci9pbnB1dC1zcGluYnV0dG9uLWNhcHR1cmluZy5odG1sCiBmYXN0L2Zvcm1zL251bWJlci9zcGlu
LWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5Lmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVy
L3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwKK2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWJlZm9yZS1w
cmVzc2luZy1zcGluLWJ1dHRvbi5odG1sCiAKICMgVGhpcyB0ZXN0IGlzIG91dC1kYXRlZCBzaW5j
ZSByOTU4OTkuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcw
OQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhkZGFmNzI1YWM2N2Rk
ZTI1MjJhMzNmYmE2NTJmOTQwMjQ5MGMzOTMuLmZkOTc1ZTJkMmJiY2YyZmFlYTIzZTkyMTRjYjk0
ZWJhNDFiMGM2YWYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQg
ZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0
Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxs
YmFja3MuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZTogRW5hYmxl
IHRvdWNoIGV2ZW50IG9wdGlvbi4KKwogMjAxMi0wNS0xNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIENvbnZlcnQgc2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZSB0byB1c2UgSW50ZXJuYWxTZXR0aW5ncyBpbnRlcmZhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142603</attachid>
            <date>2012-05-17 18:33:29 -0700</date>
            <delta_ts>2012-05-17 19:54:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120518103327.patch</filename>
            <type>text/plain</type>
            <size>17209</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUwMzQyNmRlZmQwZTQx
ZTliY2RkOWE3ZGQ4OTc2YTBkNDVkNDE5YS4uZWM0MDBlMGZkMThiMjQ0ZTg1MGNhMjMxOGVkODA3
ZWI0MDI4NWJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGxp
bnV4LmludGVsLmNvbT4KIAogICAgICAgICBNZW1vcnkgbGVhayBpbiBOZXR3b3JrSW5mb0NsaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hF
dmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2
ZW50RWZsLmNwcAppbmRleCAyM2EwZmJkZmYyZDljMDQzMzNjMmQ1ZWY4MDg2ZjhjN2ZkYmU1OWE2
Li4zOTE0NjZlNGU2MzY2YmI0MmE5YmFlMDIwZWQ5YzQyMDA4YjYyNDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNwcApA
QCAtMzYsMTggKzM2LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3JtVG91Y2hF
dmVudDo6UGxhdGZvcm1Ub3VjaEV2ZW50KEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBJbnRQb2lu
dCBwb3MsIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwgaW50IG1ldGFTdGF0ZSkKLSAgICA6IFBs
YXRmb3JtRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1l
KCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsICEhKG1ldGFTdGF0ZSAmIFNoaWZ0S2V5KSwg
ISEobWV0YVN0YXRlICYgQ3RybEtleSksICEhKG1ldGFTdGF0ZSAmIEFsdEtleSksICEhKG1ldGFT
dGF0ZSAmIE1ldGFLZXkpLCBjdXJyZW50VGltZSgpKQogeworICAgIEVpbmFfTGlzdCogbGlzdDsK
ICAgICB2b2lkKiBpdGVtOwogCi0gICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBpdGVtKSB7Cisg
ICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7CiAgICAgICAgIEV3a19U
b3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVtKTsK
ICAgICAgICAgSW50UG9pbnQgcG50ID0gSW50UG9pbnQocG9pbnQtPnggLSBwb3MueCgpLCBwb2lu
dC0+eSAtIHBvcy55KCkpOwotCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3Jt
VG91Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3VjaFBvaW50
OjpTdGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBkb24n
dCBzdXBwb3J0IG1ldGFTdGF0ZSBmb3Igbm93LgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmlu
ZGV4IGQ4NDhjOThlZGQ5YzYxMzA2ZGRlMTVkMjhkNDEzOGI0NDY5YmFlNjkuLjBjMTEwZGRmZDE1
MDkxYzkwODg1MTU1YmI1MjkyZDFhZGZmNmNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03
Nyw2ICs3Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRX
T1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFH
RV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM0MjBhZDNlMDg1MzllOTM4MTU5NmJkYTIzNjk3MTYx
MWYxODNmNGYuLjA4MzdlNWNhNDFlYzM2YjVjZjg0YzZjMTY5YTVlMTJlNjU3YmVhMWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OSBAQAorMjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24n
dCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5h
YmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3Mu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAg
ICAoVG91Y2hFdmVudEluZm86OlRvdWNoRXZlbnRJbmZvKToKKyAgICAgICAgKFRvdWNoRXZlbnRJ
bmZvKToKKyAgICAgICAgKHBvc3RUb3VjaEV2ZW50KToKKyAgICAgICAgKGFkZFRvdWNoUG9pbnRD
YWxsYmFjayk6CisgICAgICAgICh0b3VjaFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAodXBkYXRl
VG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoTW92ZUNhbGxiYWNrKToKKyAgICAg
ICAgKGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaENhbmNlbENhbGxi
YWNrKToKKyAgICAgICAgKHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAgICAodG91
Y2hFbmRDYWxsYmFjayk6CisgICAgICAgIChjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2spOgorICAg
ICAgICAoc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMDUtMTcgIEpvbiBMZWUgIDxqb25sZWVAYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBcHBsZSBidWlsZGJvdHMgdG8gcHJpb3JpdGl6ZSBs
YXRlc3QgY2hhbmdlbGlzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9F
dmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3Bw
CmluZGV4IDE2ZDkxMThjOTgwYzFhMGRlNTlkNjBmMzkzZjg0NTRlNzk1MmRmM2UuLmMzODdiNTRh
MzY3MzlhNmUxYWM5NGU4OWVkY2EyZGVhODIxNDJlNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtMzYsOCArMzYsMTAgQEAKIAogI2luY2x1ZGUgIkR1bXBS
ZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDaHJvbWUuaCIKKyNpbmNsdWRl
ICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nVXRpbHMuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KQEAgLTE0OSw2ICsxNTEsMjIgQEAgc3RydWN0
IERlbGF5ZWRFdmVudCB7CiAgICAgdW5zaWduZWQgbG9uZyBkZWxheTsKIH07CiAKK3N0cnVjdCBU
b3VjaEV2ZW50SW5mbyB7CisgICAgVG91Y2hFdmVudEluZm8oRXdrX1RvdWNoX1BvaW50X1R5cGUg
c3RhdGUsIFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1bnNpZ25lZCBpZCkKKyAgICAgICAgOiBz
dGF0ZShzdGF0ZSkKKyAgICAgICAgLCBwb2ludChwb2ludCkKKyAgICAgICAgLCBpZChpZCkKKyAg
ICB7CisgICAgfQorCisgICAgRXdrX1RvdWNoX1BvaW50X1R5cGUgc3RhdGU7CisgICAgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQ7CisgICAgdW5zaWduZWQgaWQ7Cit9OworCitzdGF0aWMgVmVjdG9y
PFRvdWNoRXZlbnRJbmZvPiB0b3VjaFBvaW50TGlzdDsKK3N0YXRpYyBpbnQgdG91Y2hNb2RpZmll
cnM7CisKIFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4mIGRlbGF5ZWRFdmVudFF1ZXVlKCkKIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4sIHN0YXRp
Y0RlbGF5ZWRFdmVudFF1ZXVlLCAoKSk7CkBAIC01ODksNiArNjA3LDE3NiBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIHZvaWQgc2VuZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlw
ZSkKK3sKKyAgICBFaW5hX0xpc3QqIGV2ZW50TGlzdCA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdG91Y2hQb2ludExpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgRXdrX1Rv
dWNoX1BvaW50KiBldmVudCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IHBvaW50ID0gdG91Y2hQb2ludExpc3QuYXQoaSkucG9pbnQ7CisgICAgICAgIGV2
ZW50LT5pZCA9IHRvdWNoUG9pbnRMaXN0LmF0KGkpLmlkOworICAgICAgICBldmVudC0+eCA9IHBv
aW50LngoKTsKKyAgICAgICAgZXZlbnQtPnkgPSBwb2ludC55KCk7CisgICAgICAgIGV2ZW50LT5z
dGF0ZSA9IHRvdWNoUG9pbnRMaXN0LmF0KGkpLnN0YXRlOworICAgICAgICBldmVudExpc3QgPSBl
aW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlzdCwgZXZlbnQpOworICAgIH0KKworICAgIGV3a19mcmFt
ZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dzZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVudExpc3Qs
IHRvdWNoTW9kaWZpZXJzKTsKKworICAgIHZvaWQqIGxpc3REYXRhOworICAgIEVJTkFfTElTVF9G
UkVFKGV2ZW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVu
dCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAgICAgZGVs
ZXRlIGV2ZW50OworICAgIH0KK30KKworc3RhdGljIHZvaWQgcG9zdFRvdWNoRXZlbnQoKQorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7IGkrKykg
eworICAgICAgICBpZiAodG91Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPT0gRVdLX1RPVUNIX1BP
SU5UX1JFTEVBU0VEKSB7CisgICAgICAgICAgICB0b3VjaFBvaW50TGlzdC5yZW1vdmUoaSk7Cisg
ICAgICAgICAgICBpLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdG91Y2hQb2ludExp
c3QuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfU1RBVElPTkFSWTsKKyAgICB9Cit9CisK
K3N0YXRpYyBKU1ZhbHVlUmVmIGFkZFRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0YXRpY19j
YXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0g
c3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBl
eGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbih4LCB5KTsKKworICAgIHVuc2lnbmVkIGxvd2Vz
dElkID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExpc3Quc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKHRvdWNoUG9pbnRMaXN0LmF0KGkpLmlkID09IGxvd2Vz
dElkKQorICAgICAgICAgICAgbG93ZXN0SWQrKzsKKyAgICB9CisKKyAgICBUb3VjaEV2ZW50SW5m
byBldmVudEluZm8oRVdLX1RPVUNIX1BPSU5UX1BSRVNTRUQsIHBvc2l0aW9uLCBsb3dlc3RJZCk7
CisgICAgdG91Y2hQb2ludExpc3QuYXBwZW5kKGV2ZW50SW5mbyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNo
U3RhcnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRv
dWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4o
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAg
QVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB4ID0gc3RhdGljX2Nh
c3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24p
KTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaW50IHkgPSBz
dGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMl0sIGV4
Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKworICAg
IGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQgPSB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkucG9pbnQ7CisgICAgcG9p
bnQuc2V0WCh4KTsKKyAgICBwb2ludC5zZXRZKHkpOworICAgIHRvdWNoUG9pbnRMaXN0LmF0KGlu
ZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9NT1ZFRDsKKworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hNb3Zl
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2
ZW50KEVXS19UT1VDSF9NT1ZFKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2Fu
Y2VsVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJU
KCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkuc3RhdGUgPSBF
V0tfVE9VQ0hfUE9JTlRfQ0FOQ0VMTEVEOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hDYW5jZWxDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RP
VUNIX0NBTkNFTCk7CisgICAgcG9zdFRvdWNoRXZlbnQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlbGVhc2VUb3Vj
aFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2Vw
dGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0b3Vj
aFBvaW50TGlzdC5zaXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRMaXN0LmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VD
SF9QT0lOVF9SRUxFQVNFRDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoRW5kQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9FTkQpOwor
ICAgIHBvc3RUb3VjaEV2ZW50KCk7CisgICAgdG91Y2hNb2RpZmllcnMgPSAwOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYg
Y2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICB0b3VjaFBvaW50TGlzdC5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0VG91Y2hNb2RpZmllckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
KworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc01vZGlmaWVyKEFkb3B0LCBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgYm9v
bCBlbmFibGUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7CisgICAg
aW50IG1hc2sgPSAwOworCisgICAgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAiYWx0IikpCisgICAg
ICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5OworICAgIGVsc2UgaWYg
KGVxdWFscyhqc01vZGlmaWVyLCAiY3RybCIpKQorICAgICAgICBtYXNrIHw9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJt
ZXRhIikpCisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TWV0YUtleTsK
KyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgInNoaWZ0IikpCisgICAgICAgIG1hc2sg
fD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisKKyAgICBpZiAoZW5hYmxlKQor
ICAgICAgICB0b3VjaE1vZGlmaWVycyB8PSBtYXNrOworICAgIGVsc2UKKyAgICAgICAgdG91Y2hN
b2RpZmllcnMgJj0gfm1hc2s7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0g
ewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICB7ICJjb250aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKQEAgLTYwNCw2ICs3OTIsMTYgQEAgc3RhdGljIEpTU3RhdGljRnVu
Y3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0ZXh0Wm9v
bU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdlSW5DYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgIHsgImFkZFRvdWNoUG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICB7ICJ0b3VjaFN0YXJ0IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAidXBkYXRlVG91Y2hQb2ludCIsIHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgIHsgInRvdWNoTW92ZSIsIHRvdWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAi
cmVsZWFzZVRvdWNoUG9pbnQiLCByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAidG91Y2hFbmQiLCB0b3VjaEVuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAiY2FuY2Vs
VG91Y2hQb2ludCIsIGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRv
dWNoQ2FuY2VsIiwgdG91Y2hDYW5jZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNsZWFyVG91
Y2hQb2ludHMiLCBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJzZXRU
b3VjaE1vZGlmaWVyIiwgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAw
LCAwLCAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRl
eCBjYTRkZDcyNTVlNDA1YzQ0NWEzMmU4NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNmNGQwMTI0
NmZhODU2NGFjYTdlNTJhMTFhMjA5NDIxYThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCkBAIC0zMjYsNyArMzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAg
ZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+IGlzUXQo
KSwgdmFsdWUgPT4gXCR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9u
ID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNR
dCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwK
KyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzUXQo
KSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1
cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+
ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNo
SWNvbkxvYWRpbmdTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTBjMmI3ZjI2N2QwY2MzNWIxNDgwZTliZWVh
NDQ2YWJkM2FhZmE2NS4uOTE3OWIxYWJkNTkxOTI5MDY1MmZiODc3Y2Y0N2NlYjczNjE1MGRjMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTE3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhh
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9y
ZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1
bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorCiAy
MDEyLTA1LTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3ODYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKaW5kZXggMTQzNDNjYmRkNzFkMzJiMWZlYjA5YzlmNjQ3OTBiMjVlOTgwNjRk
Yy4uZjE1ZGJlNTZlMzNkYjk5Mzk3M2UzOWQ0ODAxYzY3NzBiYjNlZjMzZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQKQEAgLTU2LDggKzU2LDkgQEAgaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBp
L3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRh
CiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRt
bAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBhZGRUb3VjaFBvaW50
LCBjbGVhclRvdWNoUG9pbnRzLCB0b3VjaFN0YXJ0IGFuZCBvdGhlciB0b3VjaC1yZWxhdGVkIGNh
bGxiYWNrcwotZmFzdC9ldmVudHMvdG91Y2gKKyMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3Qg
aW1wbGVtZW50IGdlc3R1cmUtcmVsYXRlZCBjYWxsYmFja3MKK2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUKK2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2su
aHRtbAogCiAjIEVGTCdzIHBvcnQgcmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb2YgQ2xpcGJvYXJk
RWZsIGFuZCBEcmFnQ2xpZW50RWZsIGNsYXNzZXMgaW4gb3JkZXIgdG8gc3VwcHBvcnQgZHJhZyBu
IGRyb3AgZnVuY3Rpb25hbGl0eQogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1zdWJmcmFtZS1k
YXRhVHJhbnNmZXIuaHRtbApAQCAtNTQyLDYgKzU0Myw3IEBAIGZhc3QvZm9ybXMvbnVtYmVyL2lu
cHV0LW51bWJlci1zaXplLmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LXNwaW5idXR0b24t
Y2FwdHVyaW5nLmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJs
ZWQtb3ItcmVhZG9ubHkuaHRtbAogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tc3RhdGUu
aHRtbAorZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYmVmb3JlLXByZXNzaW5nLXNwaW4tYnV0dG9u
Lmh0bWwKIAogIyBUaGlzIHRlc3QgaXMgb3V0LWRhdGVkIHNpbmNlIHI5NTg5OS4KICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA5CmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTI4YWJkZDBjYTYxN2FlNDEwMGExZTA3NmFiMGI3ODI2
YTc1ZjAzZi4uYzA4MDAzZDE3MmQwY2Y5MzFkZmZhMWZkOTEwMzM3OTJmMzJmZGMwMiAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1
LTE3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZM
XVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91
Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBs
ZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUgdG91Y2ggZXZlbnQgb3B0aW9u
LgorCiAyMDEyLTA1LTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjExNzQyOCk6IFdlYktpdCBBUEkvU1BJIHdhcyByZW1vdmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142617</attachid>
            <date>2012-05-17 19:54:25 -0700</date>
            <delta_ts>2012-05-17 20:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120518115423.patch</filename>
            <type>text/plain</type>
            <size>17247</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNmYmI5MjM5OTdkMTkz
ZDhkMzVlMjQyYzg0YzdjYTA1YWYxMjZlOC4uMGJiODcwOTIyMDRiM2FlNTRkMzdjNzVhNDQzNjBj
NjRkMDg5MjFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgTWljaGFlbCBNb3NzICA8bW1vc3NAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIExpbnV4IGFtZDY0IHBsYXRmb3JtIHJlcG9ydGVkIGFzIGk2ODYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXgg
MjNhMGZiZGZmMmQ5YzA0MzMzYzJkNWVmODA4NmY4YzdmZGJlNTlhNi4uMzkxNDY2ZTRlNjM2NmJi
NDJhOWJhZTAyMGVkOWM0MjAwOGI2MjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDE4ICszNiwxNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91
Y2hFdmVudChFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2
ZW50OjpUeXBlIHR5cGUsIGludCBtZXRhU3RhdGUpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKQorICAgIDogUGxhdGZv
cm1FdmVudCh0eXBlLCAhIShtZXRhU3RhdGUgJiBTaGlmdEtleSksICEhKG1ldGFTdGF0ZSAmIEN0
cmxLZXkpLCAhIShtZXRhU3RhdGUgJiBBbHRLZXkpLCAhIShtZXRhU3RhdGUgJiBNZXRhS2V5KSwg
Y3VycmVudFRpbWUoKSkKIHsKKyAgICBFaW5hX0xpc3QqIGxpc3Q7CiAgICAgdm9pZCogaXRlbTsK
IAotICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgaXRlbSkgeworICAgIEVJTkFfTElTVF9GT1JF
QUNIKHBvaW50cywgbGlzdCwgaXRlbSkgewogICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50
ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7CiAgICAgICAgIEludFBvaW50
IHBudCA9IEludFBvaW50KHBvaW50LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsK
LQogICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQt
PmlkLCBwbnQsIHN0YXRpY19jYXN0PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHBvaW50LT5z
dGF0ZSkpKTsKICAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBtZXRhU3Rh
dGUgZm9yIG5vdy4KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCBkODQ4Yzk4ZWRkOWM2
MTMwNmRkZTE1ZDI4ZDQxMzhiNDQ2OWJhZTY5Li4wYzExMGRkZmQxNTA5MWM5MDg4NTE1NWJiNTI5
MmQxYWRmZjZjZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
U0hBUkVEX1dPUktFUlMgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1ZJQlJBVElPTiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9WSURFTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURF
T19UUkFDSyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhMWNiMWM3MzJiOTIzYzE5OTQ4Zjk1MmFlOWZmMTE3MDI0M2E4ZWMyLi40MjhhYzNh
YWJmODgyMWRiZGNmMTMwMGNjZDFlMzQ5N2RlZTY0YTU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDUtMTcg
IEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW0RS
VF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEN1cnJlbnRseSBFRkwgRFJUIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBl
dmVudC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGVuYWJsZWQgYW5kIGltcGxlbWVu
dGVkIHNvbWUgZXZlbnRTZW5kZXIgZnVuY3Rpb24gY2FsbGJhY2tzLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZv
OjpUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgIChUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgIChw
b3N0VG91Y2hFdmVudCk6CisgICAgICAgIChhZGRUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAg
ICAodG91Y2hTdGFydENhbGxiYWNrKToKKyAgICAgICAgKHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFj
ayk6CisgICAgICAgICh0b3VjaE1vdmVDYWxsYmFjayk6CisgICAgICAgIChjYW5jZWxUb3VjaFBv
aW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hDYW5jZWxDYWxsYmFjayk6CisgICAgICAgIChy
ZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoRW5kQ2FsbGJhY2spOgor
ICAgICAgICAoY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKToKKyAgICAgICAgKHNldFRvdWNoTW9k
aWZpZXJDYWxsYmFjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtOgorCiAyMDEyLTA1LTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIHNjbS5hZGQoKSBkb2Vzbid0IHdvcmsgcHJvcGVybHkgd2l0aCBzdm4gMS43CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCAxNmQ5MTE4Yzk4MGMx
YTBkZTU5ZDYwZjM5M2Y4NDU0ZTc5NTJkZjNlLi44ZDdhMjE4MTllNzhhZGQzYzEyZDA1ZDljYmUy
YTEwZTUxMTY3NWFjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAK
QEAgLTM2LDggKzM2LDEwIEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlQ2hyb21lLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJKU1N0cmluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+CkBAIC0xNDksNiArMTUxLDIyIEBAIHN0cnVjdCBEZWxheWVkRXZlbnQgewogICAg
IHVuc2lnbmVkIGxvbmcgZGVsYXk7CiB9OwogCitzdHJ1Y3QgVG91Y2hFdmVudEluZm8geworICAg
IFRvdWNoRXZlbnRJbmZvKEV3a19Ub3VjaF9Qb2ludF9UeXBlIHN0YXRlLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGlkKQorICAgICAgICA6IHN0YXRlKHN0YXRlKQor
ICAgICAgICAsIHBvaW50KHBvaW50KQorICAgICAgICAsIGlkKGlkKQorICAgIHsKKyAgICB9CisK
KyAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludDsKKyAgICB1bnNpZ25lZCBpZDsKK307CisKK0RFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9y
PFRvdWNoRXZlbnRJbmZvPiwgdG91Y2hQb2ludExpc3QsICgpKTsKK3N0YXRpYyBpbnQgdG91Y2hN
b2RpZmllcnM7CisKIFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4mIGRlbGF5ZWRFdmVudFF1ZXVl
KCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdURjo6VmVjdG9yPERlbGF5ZWRFdmVudD4s
IHN0YXRpY0RlbGF5ZWRFdmVudFF1ZXVlLCAoKSk7CkBAIC01ODksNiArNjA3LDE3NiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd25DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KIAorc3RhdGljIHZvaWQgc2VuZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSkKK3sKKyAgICBFaW5hX0xpc3QqIGV2ZW50TGlzdCA9IDA7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
RXdrX1RvdWNoX1BvaW50KiBldmVudCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdl
YkNvcmU6OkludFBvaW50IHBvaW50ID0gdG91Y2hQb2ludExpc3QuYXQoaSkucG9pbnQ7CisgICAg
ICAgIGV2ZW50LT5pZCA9IHRvdWNoUG9pbnRMaXN0LmF0KGkpLmlkOworICAgICAgICBldmVudC0+
eCA9IHBvaW50LngoKTsKKyAgICAgICAgZXZlbnQtPnkgPSBwb2ludC55KCk7CisgICAgICAgIGV2
ZW50LT5zdGF0ZSA9IHRvdWNoUG9pbnRMaXN0LmF0KGkpLnN0YXRlOworICAgICAgICBldmVudExp
c3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlzdCwgZXZlbnQpOworICAgIH0KKworICAgIGV3
a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dzZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVu
dExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKKworICAgIHZvaWQqIGxpc3REYXRhOworICAgIEVJTkFf
TElTVF9GUkVFKGV2ZW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50
KiBldmVudCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAg
ICAgZGVsZXRlIGV2ZW50OworICAgIH0KK30KKworc3RhdGljIHZvaWQgcG9zdFRvdWNoRXZlbnQo
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdC5zaXplKCk7
IGkrKykgeworICAgICAgICBpZiAodG91Y2hQb2ludExpc3QuYXQoaSkuc3RhdGUgPT0gRVdLX1RP
VUNIX1BPSU5UX1JFTEVBU0VEKSB7CisgICAgICAgICAgICB0b3VjaFBvaW50TGlzdC5yZW1vdmUo
aSk7CisgICAgICAgICAgICBpLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdG91Y2hQ
b2ludExpc3QuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfU1RBVElPTkFSWTsKKyAgICB9
Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGFkZFRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0
YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlu
dCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRz
WzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7
CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbih4LCB5KTsKKworICAgIHVuc2lnbmVk
IGxvd2VzdElkID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExp
c3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKHRvdWNoUG9pbnRMaXN0LmF0KGkpLmlkID09
IGxvd2VzdElkKQorICAgICAgICAgICAgbG93ZXN0SWQrKzsKKyAgICB9CisKKyAgICBUb3VjaEV2
ZW50SW5mbyBldmVudEluZm8oRVdLX1RPVUNIX1BPSU5UX1BSRVNTRUQsIHBvc2l0aW9uLCBsb3dl
c3RJZCk7CisgICAgdG91Y2hQb2ludExpc3QuYXBwZW5kKGV2ZW50SW5mbyk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVm
IHRvdWNoU3RhcnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
c2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpT
VmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0
PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB4ID0gc3Rh
dGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNl
cHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaW50
IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNb
Ml0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsK
KworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQgPSB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkucG9pbnQ7Cisg
ICAgcG9pbnQuc2V0WCh4KTsKKyAgICBwb2ludC5zZXRZKHkpOworICAgIHRvdWNoUG9pbnRMaXN0
LmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9NT1ZFRDsKKworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91
Y2hNb3ZlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRU
b3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKKyAgICBwb3N0VG91Y2hFdmVudCgpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgY2FuY2VsVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4o
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAg
QVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlmIChpbmRleCA8IDAgfHwg
aW5kZXggPj0gdG91Y2hQb2ludExpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICB0b3VjaFBvaW50TGlzdC5hdChpbmRleCkuc3Rh
dGUgPSBFV0tfVE9VQ0hfUE9JTlRfQ0FOQ0VMTEVEOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hDYW5jZWxDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQo
RVdLX1RPVUNIX0NBTkNFTCk7CisgICAgcG9zdFRvdWNoRXZlbnQoKTsKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHJlbGVh
c2VUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
IWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+
PSB0b3VjaFBvaW50TGlzdC5zaXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRMaXN0LmF0KGluZGV4KS5zdGF0ZSA9IEVX
S19UT1VDSF9QT0lOVF9SRUxFQVNFRDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoRW5kQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9F
TkQpOworICAgIHBvc3RUb3VjaEV2ZW50KCk7CisgICAgdG91Y2hNb2RpZmllcnMgPSAwOworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICB0b3VjaFBvaW50TGlzdC5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0VG91Y2hNb2Rp
ZmllckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJn
dW1lbnRDb3VudCA8IDIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc01vZGlmaWVyKEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Cisg
ICAgYm9vbCBlbmFibGUgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSk7
CisgICAgaW50IG1hc2sgPSAwOworCisgICAgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAiYWx0Iikp
CisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5OworICAgIGVs
c2UgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAiY3RybCIpKQorICAgICAgICBtYXNrIHw9IFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpzTW9kaWZp
ZXIsICJtZXRhIikpCisgICAgICAgIG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TWV0
YUtleTsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgInNoaWZ0IikpCisgICAgICAg
IG1hc2sgfD0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisKKyAgICBpZiAoZW5h
YmxlKQorICAgICAgICB0b3VjaE1vZGlmaWVycyB8PSBtYXNrOworICAgIGVsc2UKKyAgICAgICAg
dG91Y2hNb2RpZmllcnMgJj0gfm1hc2s7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9u
c1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNj
cm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYwNCw2ICs3OTIsMTYgQEAgc3RhdGljIEpTU3Rh
dGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0
ZXh0Wm9vbU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdl
SW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgIHsgImFkZFRvdWNoUG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaFN0YXJ0IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgeyAidXBkYXRlVG91Y2hQb2ludCIsIHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgIHsgInRvdWNoTW92ZSIsIHRvdWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAicmVsZWFzZVRvdWNoUG9pbnQiLCByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgeyAidG91Y2hFbmQiLCB0b3VjaEVuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAi
Y2FuY2VsVG91Y2hQb2ludCIsIGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
IHsgInRvdWNoQ2FuY2VsIiwgdG91Y2hDYW5jZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNs
ZWFyVG91Y2hQb2ludHMiLCBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7
ICJzZXRUb3VjaE1vZGlmaWVyIiwgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgeyAwLCAwLCAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQppbmRleCBjYTRkZDcyNTVlNDA1YzQ0NWEzMmU4NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNm
NGQwMTI0NmZhODU2NGFjYTdlNTJhMTFhMjA5NDIxYThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjYsNyArMzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAog
ICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+
IGlzUXQoKSwgdmFsdWUgPT4gXCR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsg
b3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1
cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9
PiAoaXNRdCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBv
cnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4g
KGlzUXQoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2
ZW50c1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBk
ZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTVmNjZlNzIzYmU1NDJmMzVhMGJl
NzVmZjU2ODlmNjI2OTM0OTYwZS4uNWQxOGI0ZTkxYjUxYjBiMjlmODkzYzkxZTAzOGY0Yjc5NmE3
MTI3OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTE3ICBLYW5naWwgSGFuICA8a2Fu
Z2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3Vj
aCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
dXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRo
ZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2Vu
ZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVk
OgorCiAyMDEyLTA1LTE3ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbY2hyb21pdW1dIEZpeCBiYWQgYmFzZWxpbmUgZnJvbSBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMTc0ODAvLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAx
NDM0M2NiZGQ3MWQzMmIxZmViMDljOWY2NDc5MGIyNWU5ODA2NGRjLi5mMTVkYmU1NmUzM2RiOTkz
OTczZTM5ZDQ4MDFjNjc3MGJiM2VmMzNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAt
NTYsOCArNTYsOSBAQCBodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1zbGljZWQtZHJhZ2dl
ZC1maWxlLmh0bWwKIGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sCiAKLSMgRUZMJ3MgRXZlbnRT
ZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGFkZFRvdWNoUG9pbnQsIGNsZWFyVG91Y2hQb2ludHMs
IHRvdWNoU3RhcnQgYW5kIG90aGVyIHRvdWNoLXJlbGF0ZWQgY2FsbGJhY2tzCi1mYXN0L2V2ZW50
cy90b3VjaAorIyBFRkwncyBFdmVudFNlbmRlciBkb2VzIG5vdCBpbXBsZW1lbnQgZ2VzdHVyZS1y
ZWxhdGVkIGNhbGxiYWNrcworZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZQorZmFzdC9ldmVudHMv
dG91Y2gvcGFnZS1zY2FsZWQtdG91Y2gtZ2VzdHVyZS1jbGljay5odG1sCiAKICMgRUZMJ3MgcG9y
dCByZXF1aXJlcyBpbXBsZW1lbnRhdGlvbiBvZiBDbGlwYm9hcmRFZmwgYW5kIERyYWdDbGllbnRF
ZmwgY2xhc3NlcyBpbiBvcmRlciB0byBzdXBwcG9ydCBkcmFnIG4gZHJvcCBmdW5jdGlvbmFsaXR5
CiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLXN1YmZyYW1lLWRhdGFUcmFuc2Zlci5odG1sCkBA
IC01NDIsNiArNTQzLDcgQEAgZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtbnVtYmVyLXNpemUuaHRt
bAogZmFzdC9mb3Jtcy9udW1iZXIvaW5wdXQtc3BpbmJ1dHRvbi1jYXB0dXJpbmcuaHRtbAogZmFz
dC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1s
CiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWJ1dHRvbi1zdGF0ZS5odG1sCitmYXN0L2V2ZW50cy90
b3VjaC90b3VjaC1iZWZvcmUtcHJlc3Npbmctc3Bpbi1idXR0b24uaHRtbAogCiAjIFRoaXMgdGVz
dCBpcyBvdXQtZGF0ZWQgc2luY2Ugcjk1ODk5LgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU3MDkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBlMjhhYmRkMGNhNjE3YWU0MTAwYTFlMDc2YWIwYjc4MjZhNzVmMDNmLi5jMDgwMDNkMTcy
ZDBjZjkzMWRmZmExZmQ5MTAzMzc5MmYzMmZkYzAyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMTcgIEthbmdpbCBIYW4gIDxr
YW5naWwuaGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRv
dWNoIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NjcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEN1cnJlbnRseSBFRkwgRFJUIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudC4KKyAgICAgICAg
VGhlcmVmb3JlLCB0aGlzIHBhdGNoIGVuYWJsZWQgYW5kIGltcGxlbWVudGVkIHNvbWUgZXZlbnRT
ZW5kZXIgZnVuY3Rpb24gY2FsbGJhY2tzLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2U6IEVuYWJsZSB0b3VjaCBldmVudCBvcHRpb24uCisKIDIwMTItMDUtMTcgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTE3
NDI4KTogV2ViS2l0IEFQSS9TUEkgd2FzIHJlbW92ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142620</attachid>
            <date>2012-05-17 20:08:09 -0700</date>
            <delta_ts>2012-05-18 01:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120518120808.patch</filename>
            <type>text/plain</type>
            <size>17389</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNmYmI5MjM5OTdkMTkz
ZDhkMzVlMjQyYzg0YzdjYTA1YWYxMjZlOC4uMGJiODcwOTIyMDRiM2FlNTRkMzdjNzVhNDQzNjBj
NjRkMDg5MjFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE3ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgTWljaGFlbCBNb3NzICA8bW1vc3NAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIExpbnV4IGFtZDY0IHBsYXRmb3JtIHJlcG9ydGVkIGFzIGk2ODYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXgg
MjNhMGZiZGZmMmQ5YzA0MzMzYzJkNWVmODA4NmY4YzdmZGJlNTlhNi4uMzkxNDY2ZTRlNjM2NmJi
NDJhOWJhZTAyMGVkOWM0MjAwOGI2MjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDE4ICszNiwxNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91
Y2hFdmVudChFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2
ZW50OjpUeXBlIHR5cGUsIGludCBtZXRhU3RhdGUpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjdXJyZW50VGltZSgpKQorICAgIDogUGxhdGZv
cm1FdmVudCh0eXBlLCAhIShtZXRhU3RhdGUgJiBTaGlmdEtleSksICEhKG1ldGFTdGF0ZSAmIEN0
cmxLZXkpLCAhIShtZXRhU3RhdGUgJiBBbHRLZXkpLCAhIShtZXRhU3RhdGUgJiBNZXRhS2V5KSwg
Y3VycmVudFRpbWUoKSkKIHsKKyAgICBFaW5hX0xpc3QqIGxpc3Q7CiAgICAgdm9pZCogaXRlbTsK
IAotICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgaXRlbSkgeworICAgIEVJTkFfTElTVF9GT1JF
QUNIKHBvaW50cywgbGlzdCwgaXRlbSkgewogICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50
ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7CiAgICAgICAgIEludFBvaW50
IHBudCA9IEludFBvaW50KHBvaW50LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsK
LQogICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQt
PmlkLCBwbnQsIHN0YXRpY19jYXN0PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHBvaW50LT5z
dGF0ZSkpKTsKICAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBtZXRhU3Rh
dGUgZm9yIG5vdy4KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCBkODQ4Yzk4ZWRkOWM2
MTMwNmRkZTE1ZDI4ZDQxMzhiNDQ2OWJhZTY5Li4wYzExMGRkZmQxNTA5MWM5MDg4NTE1NWJiNTI5
MmQxYWRmZjZjZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVUV09SS19JTkZPIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkg
T04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
U0hBUkVEX1dPUktFUlMgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1ZJQlJBVElPTiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9WSURFTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURF
T19UUkFDSyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBhMWNiMWM3MzJiOTIzYzE5OTQ4Zjk1MmFlOWZmMTE3MDI0M2E4ZWMyLi40MjhhYzNh
YWJmODgyMWRiZGNmMTMwMGNjZDFlMzQ5N2RlZTY0YTU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDUtMTcg
IEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW0RS
VF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEN1cnJlbnRseSBFRkwgRFJUIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBl
dmVudC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGVuYWJsZWQgYW5kIGltcGxlbWVu
dGVkIHNvbWUgZXZlbnRTZW5kZXIgZnVuY3Rpb24gY2FsbGJhY2tzLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZv
OjpUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgIChUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgIChw
b3N0VG91Y2hFdmVudCk6CisgICAgICAgIChhZGRUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAg
ICAodG91Y2hTdGFydENhbGxiYWNrKToKKyAgICAgICAgKHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFj
ayk6CisgICAgICAgICh0b3VjaE1vdmVDYWxsYmFjayk6CisgICAgICAgIChjYW5jZWxUb3VjaFBv
aW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hDYW5jZWxDYWxsYmFjayk6CisgICAgICAgIChy
ZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoRW5kQ2FsbGJhY2spOgor
ICAgICAgICAoY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKToKKyAgICAgICAgKHNldFRvdWNoTW9k
aWZpZXJDYWxsYmFjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtOgorCiAyMDEyLTA1LTE3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIHNjbS5hZGQoKSBkb2Vzbid0IHdvcmsgcHJvcGVybHkgd2l0aCBzdm4gMS43CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCAxNmQ5MTE4Yzk4MGMx
YTBkZTU5ZDYwZjM5M2Y4NDU0ZTc5NTJkZjNlLi5mYzkyNTI4M2QxMDFjMmM4OWY2MWEzNWQ1ZDY3
ZDA5MzE2NWU3YTBhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRT
ZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAK
QEAgLTM2LDggKzM2LDEwIEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlQ2hyb21lLmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJKU1N0cmluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxF
V2ViS2l0Lmg+CkBAIC0xNDksNiArMTUxLDI3IEBAIHN0cnVjdCBEZWxheWVkRXZlbnQgewogICAg
IHVuc2lnbmVkIGxvbmcgZGVsYXk7CiB9OwogCitzdHJ1Y3QgVG91Y2hFdmVudEluZm8geworICAg
IFRvdWNoRXZlbnRJbmZvKEV3a19Ub3VjaF9Qb2ludF9UeXBlIHN0YXRlLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGlkKQorICAgICAgICA6IHN0YXRlKHN0YXRlKQor
ICAgICAgICAsIHBvaW50KHBvaW50KQorICAgICAgICAsIGlkKGlkKQorICAgIHsKKyAgICB9CisK
KyAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBw
b2ludDsKKyAgICB1bnNpZ25lZCBpZDsKK307CisKK3N0YXRpYyBpbnQgdG91Y2hNb2RpZmllcnM7
CisKK1dURjo6VmVjdG9yPFRvdWNoRXZlbnRJbmZvPiYgdG91Y2hQb2ludExpc3QoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpWZWN0b3I8VG91Y2hFdmVudEluZm8+LCBzdGF0aWNU
b3VjaFBvaW50TGlzdCwgKCkpOworICAgIHJldHVybiBzdGF0aWNUb3VjaFBvaW50TGlzdDsKK30K
KwogV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50PiYgZGVsYXllZEV2ZW50UXVldWUoKQogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50Piwgc3RhdGljRGVs
YXllZEV2ZW50UXVldWUsICgpKTsKQEAgLTU4OSw2ICs2MTIsMTc2IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQog
CitzdGF0aWMgdm9pZCBzZW5kVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQor
eworICAgIEVpbmFfTGlzdCogZXZlbnRMaXN0ID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0b3VjaFBvaW50TGlzdCgpLnNpemUoKTsgaSsrKSB7CisgICAgICAgIEV3a19Ub3Vj
aF9Qb2ludCogZXZlbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OworICAgICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQoaSkucG9pbnQ7CisgICAgICAgIGV2
ZW50LT5pZCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQoaSkuaWQ7CisgICAgICAgIGV2ZW50LT54ID0g
cG9pbnQueCgpOworICAgICAgICBldmVudC0+eSA9IHBvaW50LnkoKTsKKyAgICAgICAgZXZlbnQt
PnN0YXRlID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5zdGF0ZTsKKyAgICAgICAgZXZlbnRMaXN0
ID0gZWluYV9saXN0X2FwcGVuZChldmVudExpc3QsIGV2ZW50KTsKKyAgICB9CisKKyAgICBld2tf
ZnJhbWVfZmVlZF90b3VjaF9ldmVudChicm93c2VyLT5tYWluRnJhbWUoKSwgdHlwZSwgZXZlbnRM
aXN0LCB0b3VjaE1vZGlmaWVycyk7CisKKyAgICB2b2lkKiBsaXN0RGF0YTsKKyAgICBFSU5BX0xJ
U1RfRlJFRShldmVudExpc3QsIGxpc3REYXRhKSB7CisgICAgICAgIEV3a19Ub3VjaF9Qb2ludCog
ZXZlbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihsaXN0RGF0YSk7CisgICAgICAg
IGRlbGV0ZSBldmVudDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBvc3RUb3VjaEV2ZW50KCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExpc3QoKS5zaXplKCk7
IGkrKykgeworICAgICAgICBpZiAodG91Y2hQb2ludExpc3QoKS5hdChpKS5zdGF0ZSA9PSBFV0tf
VE9VQ0hfUE9JTlRfUkVMRUFTRUQpIHsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRMaXN0KCkucmVt
b3ZlKGkpOworICAgICAgICAgICAgaS0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRv
dWNoUG9pbnRMaXN0KCkuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfU1RBVElPTkFSWTsK
KyAgICB9Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGFkZFRvdWNoUG9pbnRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQg
eCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOwor
ICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2Vw
dGlvbik7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbih4LCB5KTsKKworICAgIHVu
c2lnbmVkIGxvd2VzdElkID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQ
b2ludExpc3QoKS5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAodG91Y2hQb2ludExpc3QoKS5h
dChpKS5pZCA9PSBsb3dlc3RJZCkKKyAgICAgICAgICAgIGxvd2VzdElkKys7CisgICAgfQorCisg
ICAgVG91Y2hFdmVudEluZm8gZXZlbnRJbmZvKEVXS19UT1VDSF9QT0lOVF9QUkVTU0VELCBwb3Np
dGlvbiwgbG93ZXN0SWQpOworICAgIHRvdWNoUG9pbnRMaXN0KCkuYXBwZW5kKGV2ZW50SW5mbyk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHRvdWNoU3RhcnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKKyAgICBwb3N0VG91
Y2hFdmVudCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kworc3RhdGljIEpTVmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9
IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAg
IGludCB4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlv
bik7CisgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBhcmd1bWVudHNbMl0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEq
ZXhjZXB0aW9uKTsKKworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExp
c3QoKS5zaXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKworICAgIFdlYkNvcmU6OkludFBvaW50JiBwb2ludCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQo
aW5kZXgpLnBvaW50OworICAgIHBvaW50LnNldFgoeCk7CisgICAgcG9pbnQuc2V0WSh5KTsKKyAg
ICB0b3VjaFBvaW50TGlzdCgpLmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9NT1ZF
RDsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3Rh
dGljIEpTVmFsdWVSZWYgdG91Y2hNb3ZlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKKyAgICBwb3N0VG91
Y2hFdmVudCgpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kworc3RhdGljIEpTVmFsdWVSZWYgY2FuY2VsVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9
IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAg
IGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXplKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9p
bnRMaXN0KCkuYXQoaW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX0NBTkNFTExFRDsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIHRvdWNoQ2FuY2VsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9DQU5DRUwpOworICAgIHBvc3RUb3VjaEV2
ZW50KCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitz
dGF0aWMgSlNWYWx1ZVJlZiByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0
YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlm
IChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXplKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRM
aXN0KCkuYXQoaW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1JFTEVBU0VEOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgdG91Y2hFbmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
c2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX0VORCk7CisgICAgcG9zdFRvdWNoRXZlbnQoKTsKKyAg
ICB0b3VjaE1vZGlmaWVycyA9IDA7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRvdWNoUG9pbnRMaXN0KCkuY2xl
YXIoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldFRvdWNoTW9kaWZpZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4ganNNb2RpZmllcihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIGJvb2wgZW5hYmxlID0gSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pOworICAgIGludCBtYXNrID0gMDsKKworICAgIGlm
IChlcXVhbHMoanNNb2RpZmllciwgImFsdCIpKQorICAgICAgICBtYXNrIHw9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgImN0
cmwiKSkKKyAgICAgICAgbWFzayB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5Owor
ICAgIGVsc2UgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAibWV0YSIpKQorICAgICAgICBtYXNrIHw9
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpz
TW9kaWZpZXIsICJzaGlmdCIpKQorICAgICAgICBtYXNrIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6OlNoaWZ0S2V5OworCisgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgdG91Y2hNb2RpZmllcnMg
fD0gbWFzazsKKyAgICBlbHNlCisgICAgICAgIHRvdWNoTW9kaWZpZXJzICY9IH5tYXNrOworCisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNT
dGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZVNjcm9sbEJ5
IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiY29udGludW91c01vdXNl
U2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC02
MDQsNiArNzk3LDE2IEBAIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1td
ID0gewogICAgIHsgInRleHRab29tT3V0IiwgdGV4dFpvb21PdXRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgIHsgInpvb21QYWdlSW4iLCB6b29tUGFnZUluQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJ6
b29tUGFnZU91dCIsIHpvb21QYWdlT3V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJhZGRUb3Vj
aFBvaW50IiwgYWRkVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidG91Y2hTdGFy
dCIsIHRvdWNoU3RhcnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInVwZGF0ZVRvdWNoUG9pbnQi
LCB1cGRhdGVUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaE1vdmUiLCB0
b3VjaE1vdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInJlbGVhc2VUb3VjaFBvaW50IiwgcmVs
ZWFzZVRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRvdWNoRW5kIiwgdG91Y2hF
bmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNhbmNlbFRvdWNoUG9pbnQiLCBjYW5jZWxUb3Vj
aFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaENhbmNlbCIsIHRvdWNoQ2FuY2Vs
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJjbGVhclRvdWNoUG9pbnRzIiwgY2xlYXJUb3VjaFBv
aW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAic2V0VG91Y2hNb2RpZmllciIsIHNldFRvdWNo
TW9kaWZpZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgMCwgMCwgMCB9CiB9OwogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2E0ZGQ3MjU1ZTQwNWM0NDVhMzJl
ODViOWZkN2M5OGQ1ZDM4MTI3Ni4uMTMxMTEzZjRkMDEyNDZmYTg1NjRhY2E3ZTUyYTExYTIwOTQy
MWE4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzI2LDcg
KzMyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiV1RGX1VTRV9USUxF
RF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc1F0KCksIHZhbHVlID0+IFwkdGlsZWRCYWNr
aW5nU3RvcmVTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVz
YyA9PiAiVG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzUXQoKSB8fCBpc0JsYWNrQmVycnkoKSks
IHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc1F0KCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwg
aXNFZmwoKSksIHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlv
biA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9h
ZGluZyBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElO
RyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGU1ZjY2ZTcyM2JlNTQyZjM1YTBiZTc1ZmY1Njg5ZjYyNjkzNDk2MGUuLjVkMThiNGU5
MWI1MWIwYjI5Zjg5M2M5MWUwMzhmNGI3OTZhNzEyNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNS0xNyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBw
b3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBh
bmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwogMjAxMi0wNS0xNyAgUGV0ZXIgS2FzdGlu
ZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggYmFkIGJh
c2VsaW5lIGZyb20gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE3NDgwLy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMTQzNDNjYmRkNzFkMzJiMWZlYjA5YzlmNjQ3OTBi
MjVlOTgwNjRkYy4uZjE1ZGJlNTZlMzNkYjk5Mzk3M2UzOWQ0ODAxYzY3NzBiYjNlZjMzZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTU2LDggKzU2LDkgQEAgaHR0cC90ZXN0cy9sb2Nh
bC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCiBodHRwL3Rlc3RzL2xvY2Fs
L2Zvcm1kYXRhCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1h
Y2Nlc3MuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBhZGRU
b3VjaFBvaW50LCBjbGVhclRvdWNoUG9pbnRzLCB0b3VjaFN0YXJ0IGFuZCBvdGhlciB0b3VjaC1y
ZWxhdGVkIGNhbGxiYWNrcwotZmFzdC9ldmVudHMvdG91Y2gKKyMgRUZMJ3MgRXZlbnRTZW5kZXIg
ZG9lcyBub3QgaW1wbGVtZW50IGdlc3R1cmUtcmVsYXRlZCBjYWxsYmFja3MKK2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUKK2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1
cmUtY2xpY2suaHRtbAogCiAjIEVGTCdzIHBvcnQgcmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb2Yg
Q2xpcGJvYXJkRWZsIGFuZCBEcmFnQ2xpZW50RWZsIGNsYXNzZXMgaW4gb3JkZXIgdG8gc3VwcHBv
cnQgZHJhZyBuIGRyb3AgZnVuY3Rpb25hbGl0eQogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1z
dWJmcmFtZS1kYXRhVHJhbnNmZXIuaHRtbApAQCAtNTQyLDYgKzU0Myw3IEBAIGZhc3QvZm9ybXMv
bnVtYmVyL2lucHV0LW51bWJlci1zaXplLmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LXNw
aW5idXR0b24tY2FwdHVyaW5nLmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLWdl
dHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbAogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0
b24tc3RhdGUuaHRtbAorZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYmVmb3JlLXByZXNzaW5nLXNw
aW4tYnV0dG9uLmh0bWwKIAogIyBUaGlzIHRlc3QgaXMgb3V0LWRhdGVkIHNpbmNlIHI5NTg5OS4K
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzA5CmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTI4YWJkZDBjYTYxN2FlNDEwMGExZTA3
NmFiMGI3ODI2YTc1ZjAzZi4uYzA4MDAzZDE3MmQwY2Y5MzFkZmZhMWZkOTEwMzM3OTJmMzJmZGMw
MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTA1LTE3ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1
cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVk
IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUgdG91Y2ggZXZl
bnQgb3B0aW9uLgorCiAyMDEyLTA1LTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjExNzQyOCk6IFdlYktpdCBBUEkvU1BJIHdhcyByZW1v
dmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142659</attachid>
            <date>2012-05-18 01:02:52 -0700</date>
            <delta_ts>2012-05-19 21:03:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120518170251.patch</filename>
            <type>text/plain</type>
            <size>19351</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uM2M0NjEzZGMzZWE4MThiYTkzMDY4ZTRiMjgwMzFk
MTdlNDEwMmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE4ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1Y4XVtSZWZhY3RvcmluZ10gUmVtb3ZlIFY4UHJveHk6OmRlbGV0aW9uTm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE4MjQ2MjAwMzVjNDNlYzVkZDBi
NzJmN2E4ODg5ZjA2Y2I4ZjM1ZWUuLmYxZDk1MjVmZjM3NGJmYTYzYzkzNWZjOTU1MGJmOGQ3NzE2
OTgwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xOCAgS2Fu
Z2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJ
bXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50
LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQg
c29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6CisKIDIwMTItMDUtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdW0RSVF0gQ2FsbCByZXNldEludGVybmFsc09iamVj
dCgpIGFmdGVyIGVhY2ggdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggMjNhMGZiZGZmMmQ5YzA0MzMzYzJk
NWVmODA4NmY4YzdmZGJlNTlhNi4uMzkxNDY2ZTRlNjM2NmJiNDJhOWJhZTAyMGVkOWM0MjAwOGI2
MjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91
Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
VG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDE4ICszNiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsIGludCBt
ZXRhU3RhdGUpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCAhIShtZXRh
U3RhdGUgJiBTaGlmdEtleSksICEhKG1ldGFTdGF0ZSAmIEN0cmxLZXkpLCAhIShtZXRhU3RhdGUg
JiBBbHRLZXkpLCAhIShtZXRhU3RhdGUgJiBNZXRhS2V5KSwgY3VycmVudFRpbWUoKSkKIHsKKyAg
ICBFaW5hX0xpc3QqIGxpc3Q7CiAgICAgdm9pZCogaXRlbTsKIAotICAgIEVJTkFfTElTVF9GUkVF
KHBvaW50cywgaXRlbSkgeworICAgIEVJTkFfTElTVF9GT1JFQUNIKHBvaW50cywgbGlzdCwgaXRl
bSkgewogICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1Rv
dWNoX1BvaW50Kj4oaXRlbSk7CiAgICAgICAgIEludFBvaW50IHBudCA9IEludFBvaW50KHBvaW50
LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsKLQogICAgICAgICBtX3RvdWNoUG9p
bnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBwbnQsIHN0YXRpY19jYXN0
PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHBvaW50LT5zdGF0ZSkpKTsKICAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBtZXRhU3RhdGUgZm9yIG5vdy4KIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCmluZGV4IGY1YmJhMWI5YTRjYTgxNjQ2ZTk0OTkwMDNi
MDFkNzU4NThhMTEzM2EuLmYyMDUwMzExMGEzZmQ5ZGYzOGM3MzVmZThiMjliY2EwMWIwNzRjZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTg1MCw3ICs4NTAsNyBAQCBFQVBJIEVp
bmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBFdmFzX0V2ZW50X01vdQogICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdG91Y2gg
ZXZlbnQKICAqIEBwYXJhbSBhY3Rpb24gdGhlIGFjdGlvbiBvZiB0b3VjaCBldmVudAogICogQHBh
cmFtIHBvaW50cyBhIGxpc3Qgb2YgcG9pbnRzIChFd2tfVG91Y2hfUG9pbnQpIHRvIHByb2Nlc3MK
LSAqIEBwYXJhbSBtZXRhU3RhdGUgREVQUkVDVEFFRCwgbm90IHN1cHBvcnRlZCBmb3Igbm93Cisg
KiBAcGFyYW0gbWV0YVN0YXRlIHRvdWNoIGV2ZW50IG1vZGlmaWVycwogICoKICAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIGlmIHRvdWNoIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQogICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGQ4NDhjOThlZGQ5YzYxMzA2ZGRl
MTVkMjhkNDEzOGI0NDY5YmFlNjkuLjBjMTEwZGRmZDE1MDkxYzkwODg1MTU1YmI1MjkyZDFhZGZm
NmNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC03Nyw2ICs3Nyw3IEBAIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURf
V09SS0VSUyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VD
SF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklC
UkFUSU9OIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVP
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNL
IE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGM0OWQyOTkyNWE3YTZiYTcyY2EwMzNhMWZjNDM3OTdmZjY5NzE0NWUuLmZkOGQ4ZmMyYzkzODlm
NTNiZjc1YTQ1MGVjYzNiYjBhNjQwMzBkMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wNS0xOCAgS2FuZ2ls
IEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBs
ZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50Lgor
ICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29t
ZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoVG91Y2hFdmVudEluZm86OlRvdWNo
RXZlbnRJbmZvKToKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZvKToKKyAgICAgICAgKHRvdWNoUG9p
bnRMaXN0KToKKyAgICAgICAgKHBvc3RUb3VjaEV2ZW50KToKKyAgICAgICAgKHNlbmRUb3VjaEV2
ZW50KToKKyAgICAgICAgKGFkZFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaFN0
YXJ0Q2FsbGJhY2spOgorICAgICAgICAodXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAg
ICAgKHRvdWNoTW92ZUNhbGxiYWNrKToKKyAgICAgICAgKGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFj
ayk6CisgICAgICAgICh0b3VjaENhbmNlbENhbGxiYWNrKToKKyAgICAgICAgKHJlbGVhc2VUb3Vj
aFBvaW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hFbmRDYWxsYmFjayk6CisgICAgICAgIChj
bGVhclRvdWNoUG9pbnRzQ2FsbGJhY2spOgorICAgICAgICAoc2V0VG91Y2hNb2RpZmllckNhbGxi
YWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIw
MTItMDUtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtFRkxdW0RSVF0gQ2FsbCByZXNldEludGVybmFsc09iamVjdCgpIGFmdGVyIGVhY2gg
dGVzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDE2ZDkx
MThjOTgwYzFhMGRlNTlkNjBmMzkzZjg0NTRlNzk1MmRmM2UuLjUwZTFlM2UyOTdkMDA0YzRlZWU5
MGFhOGYzMWI2MDEwOTQzNTk1NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2Vu
ZGVyLmNwcApAQCAtMzYsOCArMzYsMTAgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgi
CiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDaHJvbWUuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nVXRpbHMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPEVXZWJLaXQuaD4KQEAgLTE0OSw2ICsxNTEsMjcgQEAgc3RydWN0IERlbGF5ZWRFdmVu
dCB7CiAgICAgdW5zaWduZWQgbG9uZyBkZWxheTsKIH07CiAKK3N0cnVjdCBUb3VjaEV2ZW50SW5m
byB7CisgICAgVG91Y2hFdmVudEluZm8odW5zaWduZWQgaWQsIEV3a19Ub3VjaF9Qb2ludF9UeXBl
IHN0YXRlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCisgICAgICAgIDogc3RhdGUo
c3RhdGUpCisgICAgICAgICwgcG9pbnQocG9pbnQpCisgICAgICAgICwgaWQoaWQpCisgICAgewor
ICAgIH0KKworICAgIHVuc2lnbmVkIGlkOworICAgIEV3a19Ub3VjaF9Qb2ludF9UeXBlIHN0YXRl
OworICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OworfTsKKworc3RhdGljIFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyB0b3VjaE1vZGlmaWVyczsKKworV1RGOjpWZWN0b3I8VG91
Y2hFdmVudEluZm8+JiB0b3VjaFBvaW50TGlzdCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChXVEY6OlZlY3RvcjxUb3VjaEV2ZW50SW5mbz4sIHN0YXRpY1RvdWNoUG9pbnRMaXN0LCAoKSk7
CisgICAgcmV0dXJuIHN0YXRpY1RvdWNoUG9pbnRMaXN0OworfQorCiBXVEY6OlZlY3RvcjxEZWxh
eWVkRXZlbnQ+JiBkZWxheWVkRXZlbnRRdWV1ZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+LCBzdGF0aWNEZWxheWVkRXZlbnRRdWV1ZSwgKCkp
OwpAQCAtNTg5LDYgKzYxMiwxNzQgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NoZWR1bGVBc3luY2hy
b25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkIHBvc3RU
b3VjaEV2ZW50KCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludExp
c3QoKS5zaXplKCk7ICkgeworICAgICAgICBpZiAodG91Y2hQb2ludExpc3QoKS5hdChpKS5zdGF0
ZSA9PSBFV0tfVE9VQ0hfUE9JTlRfUkVMRUFTRUQpCisgICAgICAgICAgICB0b3VjaFBvaW50TGlz
dCgpLnJlbW92ZShpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0b3VjaFBvaW50TGlz
dCgpLmF0KGkpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1NUQVRJT05BUlk7CisgICAgICAgICAg
ICArK2k7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHNlbmRUb3VjaEV2ZW50
KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCit7CisgICAgRWluYV9MaXN0KiBldmVudExpc3Qg
PSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9pbnRMaXN0KCkuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IG5ldyBFd2tfVG91
Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50ID0gdG91Y2hQb2ludExp
c3QoKS5hdChpKS5wb2ludDsKKyAgICAgICAgZXZlbnQtPmlkID0gdG91Y2hQb2ludExpc3QoKS5h
dChpKS5pZDsKKyAgICAgICAgZXZlbnQtPnggPSBwb2ludC54KCk7CisgICAgICAgIGV2ZW50LT55
ID0gcG9pbnQueSgpOworICAgICAgICBldmVudC0+c3RhdGUgPSB0b3VjaFBvaW50TGlzdCgpLmF0
KGkpLnN0YXRlOworICAgICAgICBldmVudExpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlz
dCwgZXZlbnQpOworICAgIH0KKworICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dz
ZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVudExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKKworICAg
IHZvaWQqIGxpc3REYXRhOworICAgIEVJTkFfTElTVF9GUkVFKGV2ZW50TGlzdCwgbGlzdERhdGEp
IHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IHN0YXRpY19jYXN0PEV3a19Ub3Vj
aF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAgICAgZGVsZXRlIGV2ZW50OworICAgIH0KKworICAg
IHBvc3RUb3VjaEV2ZW50KCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGFkZFRvdWNoUG9pbnRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgIT0gMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworCisgICAgaW50IHggPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0
LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEq
ZXhjZXB0aW9uKTsKKyAgICBpbnQgeSA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRp
b24gfHwgISpleGNlcHRpb24pOworCisgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQo
eCwgeSk7CisKKyAgICB1bnNpZ25lZCBsb3dlc3RJZCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHRv
dWNoUG9pbnRMaXN0KCkuYXQoaSkuaWQgPT0gbG93ZXN0SWQpCisgICAgICAgICAgICArK2xvd2Vz
dElkOworICAgIH0KKworICAgIFRvdWNoRXZlbnRJbmZvIGV2ZW50SW5mbyhsb3dlc3RJZCwgRVdL
X1RPVUNIX1BPSU5UX1BSRVNTRUQsIHBvaW50KTsKKyAgICB0b3VjaFBvaW50TGlzdCgpLmFwcGVu
ZChldmVudEluZm8pOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiB0b3VjaFN0YXJ0Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9TVEFSVCk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMg
SlNWYWx1ZVJlZiB1cGRhdGVUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDMpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19j
YXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB4ID0g
c3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBl
eGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAg
aW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMl0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9u
KTsKKworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXpl
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQoaW5kZXgpLnBv
aW50OworICAgIHBvaW50LnNldFgoeCk7CisgICAgcG9pbnQuc2V0WSh5KTsKKyAgICB0b3VjaFBv
aW50TGlzdCgpLmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9NT1ZFRDsKKworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgdG91Y2hNb3ZlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGNhbmNlbFRvdWNo
UG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFy
Z3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2Vw
dGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0b3Vj
aFBvaW50TGlzdCgpLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworCisgICAgdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCkuc3RhdGUgPSBFV0tf
VE9VQ0hfUE9JTlRfQ0FOQ0VMTEVEOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hDYW5jZWxDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNI
X0NBTkNFTCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CitzdGF0aWMgSlNWYWx1ZVJlZiByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgaW5kZXgg
PSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0s
IGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAg
ICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICB0b3VjaFBv
aW50TGlzdCgpLmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNFRDsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIHRvdWNoRW5kQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9FTkQpOworICAgIHRvdWNoTW9kaWZpZXJzID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPigwKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgdG91Y2hQb2ludExpc3QoKS5jbGVhcigpOworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0VG91Y2hNb2Rp
ZmllckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJn
dW1lbnRDb3VudCAhPSAyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4ganNNb2RpZmllcihBZG9wdCwg
SlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOwor
ICAgIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyBtYXNrID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPigwKTsKKworICAgIGlmIChlcXVhbHMo
anNNb2RpZmllciwgImFsdCIpKQorICAgICAgICBtYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPihtYXNrIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
QWx0S2V5KTsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgImN0cmwiKSkKKyAgICAg
ICAgbWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4o
bWFzayB8IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkN0cmxLZXkpOworICAgIGVsc2UgaWYgKGVx
dWFscyhqc01vZGlmaWVyLCAibWV0YSIpKQorICAgICAgICBtYXNrID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPihtYXNrIHwgV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6TWV0YUtleSk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJzaGlmdCIp
KQorICAgICAgICBtYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9k
aWZpZXJzPihtYXNrIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6U2hpZnRLZXkpOworCisgICAg
aWYgKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzFdKSkKKyAgICAgICAgdG91
Y2hNb2RpZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmll
cnM+KHRvdWNoTW9kaWZpZXJzIHwgbWFzayk7CisgICAgZWxzZQorICAgICAgICB0b3VjaE1vZGlm
aWVycyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4odG91
Y2hNb2RpZmllcnMgJiB+bWFzayk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1td
ID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9s
bEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYwNCw2ICs3OTUsMTYgQEAgc3RhdGljIEpTU3RhdGlj
RnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0ZXh0
Wm9vbU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdlSW5D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgIHsgImFkZFRvdWNoUG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICB7ICJ0b3VjaFN0YXJ0IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgeyAidXBkYXRlVG91Y2hQb2ludCIsIHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgIHsgInRvdWNoTW92ZSIsIHRvdWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
eyAicmVsZWFzZVRvdWNoUG9pbnQiLCByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgeyAidG91Y2hFbmQiLCB0b3VjaEVuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAiY2Fu
Y2VsVG91Y2hQb2ludCIsIGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsg
InRvdWNoQ2FuY2VsIiwgdG91Y2hDYW5jZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNsZWFy
VG91Y2hQb2ludHMiLCBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJz
ZXRUb3VjaE1vZGlmaWVyIiwgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
eyAwLCAwLCAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpp
bmRleCBjYTRkZDcyNTVlNDA1YzQ0NWEzMmU4NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNmNGQw
MTI0NmZhODU2NGFjYTdlNTJhMTFhMjA5NDIxYThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjYsNyArMzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAg
ICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+IGlz
UXQoKSwgdmFsdWUgPT4gXCR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsgb3B0
aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAo
aXNRdCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQg
fSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlz
UXQoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50
c1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNj
ID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRv
dWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzdkMDU3MGVmYjc0ZDdmMWZhNDNlNzA2
N2RhM2I5YmE0N2NhNjA4Ni4uNDA1MTVhN2MxOWYyNzE4YWE4MjMwMWE1NjQxOGVmNjJiYWVmMjQz
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTE4ICBLYW5naWwgSGFuICA8a2FuZ2ls
LmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJl
Zm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVy
IGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgor
CiAyMDEyLTA1LTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzExNDE5OTMzPiBQcm9ibGVtcyB3aXRoIGZsaXBwZWQgd3JpdGluZyBt
b2RlcyBhbmQgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMTQzNDNj
YmRkNzFkMzJiMWZlYjA5YzlmNjQ3OTBiMjVlOTgwNjRkYy4uZjE1ZGJlNTZlMzNkYjk5Mzk3M2Uz
OWQ0ODAxYzY3NzBiYjNlZjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTU2LDgg
KzU2LDkgQEAgaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmls
ZS5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Ns
aXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVy
IGRvZXMgbm90IGltcGxlbWVudCBhZGRUb3VjaFBvaW50LCBjbGVhclRvdWNoUG9pbnRzLCB0b3Vj
aFN0YXJ0IGFuZCBvdGhlciB0b3VjaC1yZWxhdGVkIGNhbGxiYWNrcwotZmFzdC9ldmVudHMvdG91
Y2gKKyMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGdlc3R1cmUtcmVsYXRl
ZCBjYWxsYmFja3MKK2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUKK2Zhc3QvZXZlbnRzL3RvdWNo
L3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAogCiAjIEVGTCdzIHBvcnQgcmVx
dWlyZXMgaW1wbGVtZW50YXRpb24gb2YgQ2xpcGJvYXJkRWZsIGFuZCBEcmFnQ2xpZW50RWZsIGNs
YXNzZXMgaW4gb3JkZXIgdG8gc3VwcHBvcnQgZHJhZyBuIGRyb3AgZnVuY3Rpb25hbGl0eQogZmFz
dC9ldmVudHMvZHJhZy1hbmQtZHJvcC1zdWJmcmFtZS1kYXRhVHJhbnNmZXIuaHRtbApAQCAtNTQy
LDYgKzU0Myw3IEBAIGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LW51bWJlci1zaXplLmh0bWwKIGZh
c3QvZm9ybXMvbnVtYmVyL2lucHV0LXNwaW5idXR0b24tY2FwdHVyaW5nLmh0bWwKIGZhc3QvZm9y
bXMvbnVtYmVyL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbAogZmFz
dC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tc3RhdGUuaHRtbAorZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtYmVmb3JlLXByZXNzaW5nLXNwaW4tYnV0dG9uLmh0bWwKIAogIyBUaGlzIHRlc3QgaXMg
b3V0LWRhdGVkIHNpbmNlIHI5NTg5OS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NzA5CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
ZTI4YWJkZDBjYTYxN2FlNDEwMGExZTA3NmFiMGI3ODI2YTc1ZjAzZi4uNzI4MmQ3YzBjOWVjZmQy
YmRmNDczYzYwOTBiMTRkZWJjZTcwNmMxNyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTE4ICBLYW5naWwgSGFuICA8a2FuZ2ls
LmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJl
Zm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVy
IGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZs
LmNtYWtlOiBFbmFibGUgdG91Y2ggZXZlbnQgb3B0aW9uLgorCiAyMDEyLTA1LTE3ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjExNzQyOCk6
IFdlYktpdCBBUEkvU1BJIHdhcyByZW1vdmVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142891</attachid>
            <date>2012-05-19 21:03:33 -0700</date>
            <delta_ts>2012-05-21 04:42:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120520130332.patch</filename>
            <type>text/plain</type>
            <size>19292</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uM2M0NjEzZGMzZWE4MThiYTkzMDY4ZTRiMjgwMzFk
MTdlNDEwMmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTE4ICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGFuZCBpbXBsZW1lbnRlZCBz
b21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0ZS4K
KwogMjAxMi0wNS0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1Y4XVtSZWZhY3RvcmluZ10gUmVtb3ZlIFY4UHJveHk6OmRlbGV0aW9uTm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE4MjQ2MjAwMzVjNDNlYzVkZDBi
NzJmN2E4ODg5ZjA2Y2I4ZjM1ZWUuLmYxZDk1MjVmZjM3NGJmYTYzYzkzNWZjOTU1MGJmOGQ3NzE2
OTgwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xOCAgS2Fu
Z2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJ
bXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50
LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQg
c29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBld2svZXdr
X2ZyYW1lLmg6CisKIDIwMTItMDUtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdW0RSVF0gQ2FsbCByZXNldEludGVybmFsc09iamVj
dCgpIGFmdGVyIGVhY2ggdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggMjNhMGZiZGZmMmQ5YzA0MzMzYzJk
NWVmODA4NmY4YzdmZGJlNTlhNi4uMzkxNDY2ZTRlNjM2NmJiNDJhOWJhZTAyMGVkOWM0MjAwOGI2
MjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91
Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
VG91Y2hFdmVudEVmbC5jcHAKQEAgLTM2LDE4ICszNiwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsIGludCBt
ZXRhU3RhdGUpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBjdXJyZW50VGltZSgpKQorICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCAhIShtZXRh
U3RhdGUgJiBTaGlmdEtleSksICEhKG1ldGFTdGF0ZSAmIEN0cmxLZXkpLCAhIShtZXRhU3RhdGUg
JiBBbHRLZXkpLCAhIShtZXRhU3RhdGUgJiBNZXRhS2V5KSwgY3VycmVudFRpbWUoKSkKIHsKKyAg
ICBFaW5hX0xpc3QqIGxpc3Q7CiAgICAgdm9pZCogaXRlbTsKIAotICAgIEVJTkFfTElTVF9GUkVF
KHBvaW50cywgaXRlbSkgeworICAgIEVJTkFfTElTVF9GT1JFQUNIKHBvaW50cywgbGlzdCwgaXRl
bSkgewogICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1Rv
dWNoX1BvaW50Kj4oaXRlbSk7CiAgICAgICAgIEludFBvaW50IHBudCA9IEludFBvaW50KHBvaW50
LT54IC0gcG9zLngoKSwgcG9pbnQtPnkgLSBwb3MueSgpKTsKLQogICAgICAgICBtX3RvdWNoUG9p
bnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBwbnQsIHN0YXRpY19jYXN0
PFBsYXRmb3JtVG91Y2hQb2ludDo6U3RhdGU+KHBvaW50LT5zdGF0ZSkpKTsKICAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCBtZXRhU3RhdGUgZm9yIG5vdy4KIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCmluZGV4IGY1YmJhMWI5YTRjYTgxNjQ2ZTk0OTkwMDNi
MDFkNzU4NThhMTEzM2EuLjEyNDg4YmJmZDk0ODdlYjdjYzAwMDU3ZGU4ODEyMTgxOTlmMTZlZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTg1MCw3ICs4NTAsNyBAQCBFQVBJIEVp
bmFfQm9vbCAgICBld2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBFdmFzX0V2ZW50X01vdQogICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGZlZWQgdG91Y2gg
ZXZlbnQKICAqIEBwYXJhbSBhY3Rpb24gdGhlIGFjdGlvbiBvZiB0b3VjaCBldmVudAogICogQHBh
cmFtIHBvaW50cyBhIGxpc3Qgb2YgcG9pbnRzIChFd2tfVG91Y2hfUG9pbnQpIHRvIHByb2Nlc3MK
LSAqIEBwYXJhbSBtZXRhU3RhdGUgREVQUkVDVEFFRCwgbm90IHN1cHBvcnRlZCBmb3Igbm93Cisg
KiBAcGFyYW0gbWV0YVN0YXRlIG1vZGlmaWVycyBzdGF0ZSBvZiB0b3VjaCBldmVudC4gTWlnaHQg
YmUgY29tYmluYXRpb24gb2YgQWx0S2V5KDE8PDApLCBDdHJsS2V5KDE8PDEpLCBNZXRhS2V5KDE8
PDIpIGFuZCBTaGlmdEtleSgxPDwzKQogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRv
dWNoIGV2ZW50IHdhcyBoYW5kbGVkLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQogICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zRWZsLmNtYWtlCmluZGV4IGQ4NDhjOThlZGQ5YzYxMzA2ZGRlMTVkMjhkNDEzOGI0NDY5YmFl
NjkuLjBjMTEwZGRmZDE1MDkxYzkwODg1MTU1YmI1MjkyZDFhZGZmNmNmYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCkBAIC03Nyw2ICs3Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ORVRXT1JLX0lORk8gT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9TSEFSRURfV09SS0VSUyBPTikKK1dFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIE9OKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM0OWQyOTkyNWE3YTZiYTcy
Y2EwMzNhMWZjNDM3OTdmZjY5NzE0NWUuLmZkOGQ4ZmMyYzkzODlmNTNiZjc1YTQ1MGVjYzNiYjBh
NjQwMzBkMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wNS0xOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5
IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZvcmUs
IHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5j
dGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5k
ZXIuY3BwOgorICAgICAgICAoVG91Y2hFdmVudEluZm86OlRvdWNoRXZlbnRJbmZvKToKKyAgICAg
ICAgKFRvdWNoRXZlbnRJbmZvKToKKyAgICAgICAgKHRvdWNoUG9pbnRMaXN0KToKKyAgICAgICAg
KHBvc3RUb3VjaEV2ZW50KToKKyAgICAgICAgKHNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKGFk
ZFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaFN0YXJ0Q2FsbGJhY2spOgorICAg
ICAgICAodXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoTW92ZUNhbGxi
YWNrKToKKyAgICAgICAgKGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3Vj
aENhbmNlbENhbGxiYWNrKToKKyAgICAgICAgKHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2spOgor
ICAgICAgICAodG91Y2hFbmRDYWxsYmFjayk6CisgICAgICAgIChjbGVhclRvdWNoUG9pbnRzQ2Fs
bGJhY2spOgorICAgICAgICAoc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMDUtMTcgIFJhcGhhZWwg
S3VibyBkYSBDb3N0YSAgPHJha3Vjb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdW0RSVF0g
Q2FsbCByZXNldEludGVybmFsc09iamVjdCgpIGFmdGVyIGVhY2ggdGVzdC4KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDE2ZDkxMThjOTgwYzFhMGRlNTlkNjBm
MzkzZjg0NTRlNzk1MmRmM2UuLmUzZjRlYThmZGNmMjY3MDg0Y2E3ODFiNzU4ODU2ZTBlODZjNTEy
YzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApAQCAtMzYsOCAr
MzYsMTAgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWVDaHJvbWUuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nVXRpbHMuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtRXZlbnQuaCIKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmwuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4K
QEAgLTE0OSw2ICsxNTEsMjcgQEAgc3RydWN0IERlbGF5ZWRFdmVudCB7CiAgICAgdW5zaWduZWQg
bG9uZyBkZWxheTsKIH07CiAKK3N0cnVjdCBUb3VjaEV2ZW50SW5mbyB7CisgICAgVG91Y2hFdmVu
dEluZm8odW5zaWduZWQgaWQsIEV3a19Ub3VjaF9Qb2ludF9UeXBlIHN0YXRlLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQpCisgICAgICAgIDogc3RhdGUoc3RhdGUpCisgICAgICAgICwg
cG9pbnQocG9pbnQpCisgICAgICAgICwgaWQoaWQpCisgICAgeworICAgIH0KKworICAgIHVuc2ln
bmVkIGlkOworICAgIEV3a19Ub3VjaF9Qb2ludF9UeXBlIHN0YXRlOworICAgIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50OworfTsKKworc3RhdGljIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVycyB0b3VjaE1vZGlmaWVyczsKKworV1RGOjpWZWN0b3I8VG91Y2hFdmVudEluZm8+JiB0b3Vj
aFBvaW50TGlzdCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxUb3Vj
aEV2ZW50SW5mbz4sIHN0YXRpY1RvdWNoUG9pbnRMaXN0LCAoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y1RvdWNoUG9pbnRMaXN0OworfQorCiBXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+JiBkZWxheWVk
RXZlbnRRdWV1ZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxEZWxh
eWVkRXZlbnQ+LCBzdGF0aWNEZWxheWVkRXZlbnRRdWV1ZSwgKCkpOwpAQCAtNTg5LDYgKzYxMiwx
NjMgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2IKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbmRUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUpCit7CisgICAgRWluYV9MaXN0KiBldmVudExpc3QgPSAwOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7
CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50ID0gdG91Y2hQb2ludExpc3QoKS5hdChp
KS5wb2ludDsKKyAgICAgICAgZXZlbnQtPmlkID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5pZDsK
KyAgICAgICAgZXZlbnQtPnggPSBwb2ludC54KCk7CisgICAgICAgIGV2ZW50LT55ID0gcG9pbnQu
eSgpOworICAgICAgICBldmVudC0+c3RhdGUgPSB0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0YXRl
OworICAgICAgICBldmVudExpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlzdCwgZXZlbnQp
OworICAgIH0KKworICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dzZXItPm1haW5G
cmFtZSgpLCB0eXBlLCBldmVudExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKKworICAgIHZvaWQqIGxp
c3REYXRhOworICAgIEVJTkFfTElTVF9GUkVFKGV2ZW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAg
ICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+
KGxpc3REYXRhKTsKKyAgICAgICAgZGVsZXRlIGV2ZW50OworICAgIH0KKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdCgpLnNpemUoKTsgKSB7CisgICAgICAgIGlm
ICh0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0YXRlID09IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNF
RCkKKyAgICAgICAgICAgIHRvdWNoUG9pbnRMaXN0KCkucmVtb3ZlKGkpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRMaXN0KCkuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hf
UE9JTlRfU1RBVElPTkFSWTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgIH0KK30K
Kworc3RhdGljIEpTVmFsdWVSZWYgYWRkVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0YXRp
Y19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0
aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5
ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFd
LCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisK
KyAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCh4LCB5KTsKKyAgICBjb25zdCB1bnNp
Z25lZCBpZCA9IHRvdWNoUG9pbnRMaXN0KCkuaXNFbXB0eSgpID8gMCA6IHRvdWNoUG9pbnRMaXN0
KCkubGFzdCgpLmlkICsgMTsKKyAgICBUb3VjaEV2ZW50SW5mbyBldmVudEluZm8oaWQsIEVXS19U
T1VDSF9QT0lOVF9QUkVTU0VELCBwb2ludCk7CisgICAgdG91Y2hQb2ludExpc3QoKS5hcHBlbmQo
ZXZlbnRJbmZvKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hTdGFydENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfU1RBUlQpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpT
VmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAzKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2Fz
dDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikp
OworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICBpbnQgeCA9IHN0
YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlu
dCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRz
WzJdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7
CisKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQgPSB0b3VjaFBvaW50TGlzdCgpLmF0KGluZGV4KS5wb2lu
dDsKKyAgICBwb2ludC5zZXRYKHgpOworICAgIHBvaW50LnNldFkoeSk7CisgICAgdG91Y2hQb2lu
dExpc3QoKS5hdChpbmRleCkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfTU9WRUQ7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHRvdWNoTW92ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfTU9WRSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjYW5jZWxUb3VjaFBv
aW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1
bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRp
b24gfHwgISpleGNlcHRpb24pOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQ
b2ludExpc3QoKS5zaXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRMaXN0KCkuYXQoaW5kZXgpLnN0YXRlID0gRVdLX1RP
VUNIX1BPSU5UX0NBTkNFTExFRDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoQ2FuY2VsQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9D
QU5DRUwpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwor
c3RhdGljIEpTVmFsdWVSZWYgcmVsZWFzZVRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGluZGV4ID0g
c3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAg
aWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0b3VjaFBvaW50TGlzdCgpLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgdG91Y2hQb2lu
dExpc3QoKS5hdChpbmRleCkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfUkVMRUFTRUQ7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1
ZVJlZiB0b3VjaEVuZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfRU5EKTsKKyAgICB0b3VjaE1vZGlmaWVycyA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oMCk7CisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJl
ZiBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHRvdWNoUG9pbnRMaXN0KCkuY2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFRvdWNoTW9kaWZp
ZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgIT0gMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTW9kaWZpZXIoQWRvcHQsIEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbWFzayA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oMCk7CisKKyAgICBpZiAoZXF1YWxzKGpz
TW9kaWZpZXIsICJhbHQiKSkKKyAgICAgICAgbWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4obWFzayB8IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkFs
dEtleSk7CisgICAgZWxzZSBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJjdHJsIikpCisgICAgICAg
IG1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KG1h
c2sgfCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5KTsKKyAgICBlbHNlIGlmIChlcXVh
bHMoanNNb2RpZmllciwgIm1ldGEiKSkKKyAgICAgICAgbWFzayA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4obWFzayB8IFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6Ok1ldGFLZXkpOworICAgIGVsc2UgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAic2hpZnQiKSkK
KyAgICAgICAgbWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlm
aWVycz4obWFzayB8IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5KTsKKworICAgIGlm
IChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sxXSkpCisgICAgICAgIHRvdWNo
TW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJz
Pih0b3VjaE1vZGlmaWVycyB8IG1hc2spOworICAgIGVsc2UKKyAgICAgICAgdG91Y2hNb2RpZmll
cnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KHRvdWNo
TW9kaWZpZXJzICYgfm1hc2spOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworfQorCiBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9
IHsKICAgICB7ICJtb3VzZVNjcm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgeyAiY29udGludW91c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3VzTW91c2VTY3JvbGxC
eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCkBAIC02MDQsNiArNzg0LDE2IEBAIHN0YXRpYyBKU1N0YXRpY0Z1
bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgInRleHRab29tT3V0IiwgdGV4dFpv
b21PdXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlSW4iLCB6b29tUGFnZUluQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICB7ICJ6b29tUGFnZU91dCIsIHpvb21QYWdlT3V0Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICB7ICJhZGRUb3VjaFBvaW50IiwgYWRkVG91Y2hQb2ludENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCisgICAgeyAidG91Y2hTdGFydCIsIHRvdWNoU3RhcnRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgIHsgInVwZGF0ZVRvdWNoUG9pbnQiLCB1cGRhdGVUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICB7ICJ0b3VjaE1vdmUiLCB0b3VjaE1vdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsg
InJlbGVhc2VUb3VjaFBvaW50IiwgcmVsZWFzZVRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgIHsgInRvdWNoRW5kIiwgdG91Y2hFbmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNhbmNl
bFRvdWNoUG9pbnQiLCBjYW5jZWxUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0
b3VjaENhbmNlbCIsIHRvdWNoQ2FuY2VsQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJjbGVhclRv
dWNoUG9pbnRzIiwgY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAic2V0
VG91Y2hNb2RpZmllciIsIHNldFRvdWNoTW9kaWZpZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsg
MCwgMCwgMCB9CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5k
ZXggY2E0ZGQ3MjU1ZTQwNWM0NDVhMzJlODViOWZkN2M5OGQ1ZDM4MTI3Ni4uMTMxMTEzZjRkMDEy
NDZmYTg1NjRhY2E3ZTUyYTExYTIwOTQyMWE4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQpAQCAtMzI2LDcgKzMyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAg
IGRlZmluZSA9PiAiV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFIiwgZGVmYXVsdCA9PiBpc1F0
KCksIHZhbHVlID0+IFwkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlv
biA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEV2ZW50cyBzdXBwb3J0
IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlz
UXQoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkdG91Y2hFdmVudHNTdXBwb3J0IH0s
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZhdWx0ID0+IChpc1F0
KCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkdG91Y2hFdmVudHNT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9
PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3Vj
aEljb25Mb2FkaW5nU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3ZDA1NzBlZmI3NGQ3ZjFmYTQzZTcwNjdk
YTNiOWJhNDdjYTYwODYuLjQwNTE1YTdjMTlmMjcxOGFhODIzMDFhNTY0MThlZjYyYmFlZjI0M2Yg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5o
YW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZv
cmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBm
dW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKwog
MjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMTQxOTkzMz4gUHJvYmxlbXMgd2l0aCBmbGlwcGVkIHdyaXRpbmcgbW9k
ZXMgYW5kIGNvbXBvc2l0aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDE0MzQzY2Jk
ZDcxZDMyYjFmZWIwOWM5ZjY0NzkwYjI1ZTk4MDY0ZGMuLmYxNWRiZTU2ZTMzZGI5OTM5NzNlMzlk
NDgwMWM2NzcwYmIzZWYzM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC01Niw4ICs1
Niw5IEBAIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
aHRtbAogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YQogaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlw
Ym9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKIAotIyBFRkwncyBFdmVudFNlbmRlciBk
b2VzIG5vdCBpbXBsZW1lbnQgYWRkVG91Y2hQb2ludCwgY2xlYXJUb3VjaFBvaW50cywgdG91Y2hT
dGFydCBhbmQgb3RoZXIgdG91Y2gtcmVsYXRlZCBjYWxsYmFja3MKLWZhc3QvZXZlbnRzL3RvdWNo
CisjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBnZXN0dXJlLXJlbGF0ZWQg
Y2FsbGJhY2tzCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlCitmYXN0L2V2ZW50cy90b3VjaC9w
YWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKIAogIyBFRkwncyBwb3J0IHJlcXVp
cmVzIGltcGxlbWVudGF0aW9uIG9mIENsaXBib2FyZEVmbCBhbmQgRHJhZ0NsaWVudEVmbCBjbGFz
c2VzIGluIG9yZGVyIHRvIHN1cHBwb3J0IGRyYWcgbiBkcm9wIGZ1bmN0aW9uYWxpdHkKIGZhc3Qv
ZXZlbnRzL2RyYWctYW5kLWRyb3Atc3ViZnJhbWUtZGF0YVRyYW5zZmVyLmh0bWwKQEAgLTU0Miw2
ICs1NDMsNyBAQCBmYXN0L2Zvcm1zL251bWJlci9pbnB1dC1udW1iZXItc2l6ZS5odG1sCiBmYXN0
L2Zvcm1zL251bWJlci9pbnB1dC1zcGluYnV0dG9uLWNhcHR1cmluZy5odG1sCiBmYXN0L2Zvcm1z
L251bWJlci9zcGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5Lmh0bWwKIGZhc3Qv
Zm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwKK2Zhc3QvZXZlbnRzL3RvdWNoL3Rv
dWNoLWJlZm9yZS1wcmVzc2luZy1zcGluLWJ1dHRvbi5odG1sCiAKICMgVGhpcyB0ZXN0IGlzIG91
dC1kYXRlZCBzaW5jZSByOTU4OTkuCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTcwOQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGUy
OGFiZGQwY2E2MTdhZTQxMDBhMWUwNzZhYjBiNzgyNmE3NWYwM2YuLjcyODJkN2MwYzllY2ZkMmJk
ZjQ3M2M2MDkwYjE0ZGViY2U3MDZjMTcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0xOCAgS2FuZ2lsIEhhbiAgPGthbmdpbC5o
YW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgdG91Y2ggZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NzIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVu
dGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAgICAgICBUaGVyZWZv
cmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBhbmQgaW1wbGVtZW50ZWQgc29tZSBldmVudFNlbmRlciBm
dW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZTogRW5hYmxlIHRvdWNoIGV2ZW50IG9wdGlvbi4KKwogMjAxMi0wNS0xNyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMTc0MjgpOiBX
ZWJLaXQgQVBJL1NQSSB3YXMgcmVtb3ZlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142994</attachid>
            <date>2012-05-21 04:42:16 -0700</date>
            <delta_ts>2012-05-21 18:26:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120521204216.patch</filename>
            <type>text/plain</type>
            <size>22952</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uNjFhMjcyNzEyZGExZTQ5NmQ4ZDM1ZTFjNTMxNjE2
OTM1OTc5OGZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTIxICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRl
ZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0
ZS4KKwogMjAxMi0wNS0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW1Y4XVtSZWZhY3RvcmluZ10gUmVtb3ZlIFY4UHJveHk6OmRlbGV0aW9uTm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE4MjQ2MjAwMzVjNDNlYzVk
ZDBiNzJmN2E4ODg5ZjA2Y2I4ZjM1ZWUuLjg0OTI3ZDk1NWM3MzBkNDBkNTlhODFlOTYzMWFlMjE1
ZTFhZDViZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0yMSAg
S2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJU
XSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2
ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBpdCBhbmQgaW1wbGVt
ZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBl
d2Via2l0LnBjLmluOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdr
X2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKKwog
MjAxMi0wNS0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0VGTF1bRFJUXSBDYWxsIHJlc2V0SW50ZXJuYWxzT2JqZWN0KCkgYWZ0ZXIgZWFj
aCB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
VG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1U
b3VjaEV2ZW50RWZsLmNwcAppbmRleCAyM2EwZmJkZmYyZDljMDQzMzNjMmQ1ZWY4MDg2ZjhjN2Zk
YmU1OWE2Li4zOTE0NjZlNGU2MzY2YmI0MmE5YmFlMDIwZWQ5YzQyMDA4YjYyNDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZs
LmNwcApAQCAtMzYsMTggKzM2LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3Jt
VG91Y2hFdmVudDo6UGxhdGZvcm1Ub3VjaEV2ZW50KEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBJ
bnRQb2ludCBwb3MsIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwgaW50IG1ldGFTdGF0ZSkKLSAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJl
bnRUaW1lKCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsICEhKG1ldGFTdGF0ZSAmIFNoaWZ0
S2V5KSwgISEobWV0YVN0YXRlICYgQ3RybEtleSksICEhKG1ldGFTdGF0ZSAmIEFsdEtleSksICEh
KG1ldGFTdGF0ZSAmIE1ldGFLZXkpLCBjdXJyZW50VGltZSgpKQogeworICAgIEVpbmFfTGlzdCog
bGlzdDsKICAgICB2b2lkKiBpdGVtOwogCi0gICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBpdGVt
KSB7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7CiAgICAgICAg
IEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihp
dGVtKTsKICAgICAgICAgSW50UG9pbnQgcG50ID0gSW50UG9pbnQocG9pbnQtPnggLSBwb3MueCgp
LCBwb2ludC0+eSAtIHBvcy55KCkpOwotCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBs
YXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3Vj
aFBvaW50OjpTdGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBzdXBwb3J0IG1ldGFTdGF0ZSBmb3Igbm93LgogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2Via2l0LnBjLmluIGIvU291cmNlL1dlYktpdC9lZmwvZXdlYmtp
dC5wYy5pbgppbmRleCBkZDYxNzgzNDcxZjNkM2JmMTRmOGIxZmUwZDJjZDgzNzMyYTU0NWM4Li4w
ZDliZTNmMzk4MmYxNWJlYWM2N2M2N2Q3YzJkNjEwMjkxYjNlYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2Via2l0LnBjLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ZWJr
aXQucGMuaW4KQEAgLTcsNyArNyw3IEBAIGRhdGFkaXI9JHtwcmVmaXh9L3NoYXJlL0BXZWJLaXRf
TElCUkFSWV9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQAogTmFtZTogV2ViS2l0LUVGTAog
RGVzY3JpcHRpb246IFdlYiBjb250ZW50IGVuZ2luZSBmb3IgRUZMIGFwcGxpY2F0aW9ucwogVmVy
c2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKLVJlcXVpcmVzOiBjYWlybyBldmFzIGVjb3JlIGxpYnNv
dXAtMi40CitSZXF1aXJlczogY2Fpcm8gZXZhcyBlY29yZSBsaWJzb3VwLTIuNCBlY29yZS1pbnB1
dAogTGliczogLUwke2xpYmRpcn0gLWxld2Via2l0IEBFWFRSQV9FV0VCS0lUX0xJTktACiBMaWJz
LnByaXZhdGU6IEBMSUJTX1BSSVZBVEVACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0
X0xJQlJBUllfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggNjExZGUxN2ZmZDM2MDViMjliNmM3ZDFkYThlZDBmNGMyODhlYjdk
OS4uYmQ3NmRmNjI3NTg1NGNhYTdhMzhiYWFjZGRiMjdlZjk4ZjYyZjkxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFY29yZV9JbnB1dC5oPgogI2luY2x1
ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hl
Y2tzLmg+CkBAIC05NDgsNyArOTQ5LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNl
X21vdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXMKICAgICBy
ZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoZXZlbnQp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlzdCogcG9pbnRz
LCBpbnQgbWV0YVN0YXRlKQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xp
c3QqIHBvaW50cywgdW5zaWduZWQgbW9kaWZpZXJzKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBvaW50cywgZmFsc2UpOwpA
QCAtOTc5LDcgKzk4MCwxNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHRvdWNo
RXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSwgdHlwZSwgbWV0YVN0YXRlKTsK
KyAgICBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgdG91Y2hNb2RpZmllcnMgPXN0
YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oMCk7CisgICAgaWYg
KG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX0FMVCkKKyAgICAgICAgdG91Y2hNb2Rp
ZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KHRv
dWNoTW9kaWZpZXJzIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6QWx0S2V5KTsKKyAgICBpZiAo
bW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQ1RSTCkKKyAgICAgICAgdG91Y2hNb2Rp
ZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KHRv
dWNoTW9kaWZpZXJzIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6Q3RybEtleSk7CisgICAgaWYg
KG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX1NISUZUKQorICAgICAgICB0b3VjaE1v
ZGlmaWVycyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4o
dG91Y2hNb2RpZmllcnMgfCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSk7CisgICAg
aWYgKG1vZGlmaWVycyAmIEVDT1JFX0VWRU5UX01PRElGSUVSX1dJTikKKyAgICAgICAgdG91Y2hN
b2RpZmllcnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+
KHRvdWNoTW9kaWZpZXJzIHwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TWV0YUtleSk7CisKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgdG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6
OkludFBvaW50KHgsIHkpLCB0eXBlLCB0b3VjaE1vZGlmaWVycyk7CiAgICAgcmV0dXJuIHNtYXJ0
RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnQp
OwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5k
ZXggZjViYmExYjlhNGNhODE2NDZlOTQ5OTAwM2IwMWQ3NTg1OGExMTMzYS4uNjM1YmFmOGRiNDg4
OTEyMDg3ZjQyMzM2MjFlMWZkNTZkZGFmMDBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
aApAQCAtODUwLDExICs4NTAsMTEgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRf
bW91c2VfbW92ZShFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3UKICAqIEBwYXJh
bSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRvdWNoIGV2ZW50CiAgKiBAcGFyYW0gYWN0aW9uIHRo
ZSBhY3Rpb24gb2YgdG91Y2ggZXZlbnQKICAqIEBwYXJhbSBwb2ludHMgYSBsaXN0IG9mIHBvaW50
cyAoRXdrX1RvdWNoX1BvaW50KSB0byBwcm9jZXNzCi0gKiBAcGFyYW0gbWV0YVN0YXRlIERFUFJF
Q1RBRUQsIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdworICogQHBhcmFtIG1ldGFTdGF0ZSBtb2RpZmll
cnMgc3RhdGUgb2YgdG91Y2ggZXZlbnQuIFVzZXJzIGFyZSBleHBlY3RlZCB0byBwYXNzIE9SZWQg
dmFsdWVzIG9mIHRoZSBFQ09SRV9FVkVOVF9NT0RJRklFUiBtYWNyb3MgaW4gRWNvcmVfSW5wdXQu
aCwgc3VjaCBhcyBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQgb3IgRUNPUkVfRVZFTlRfTU9ESUZJ
RVJfU0hJRlQKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0b3VjaCBldmVudCB3YXMg
aGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwotRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19Ub3VjaF9FdmVu
dF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0ICpwb2ludHMsIGludCBtZXRhU3RhdGUpOworRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3
a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0ICpwb2ludHMsIHVuc2lnbmVkIG1v
ZGlmaWVycyk7CiAKIC8qKgogICogRmVlZHMgdGhlIGtleWJvYXJkIGtleSBkb3duIGV2ZW50IHRv
IHRoZSBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kRUZMLmNtYWtlIGIvU291
cmNlL2NtYWtlL0ZpbmRFRkwuY21ha2UKaW5kZXggOGM5YjU2NmVlMDQ1YjNjNzhlOTUyOTU3Mjkx
YmE4OTcwOWMyZDRhOS4uNGE0Y2FiMDI5NWQyNGMwZTkxMGE2NTUzMTQwYjFlNWI0MDdkMGRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRFRkwuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L0ZpbmRFRkwuY21ha2UKQEAgLTExLDcgKzExLDggQEAgUEtHX0NIRUNLX01PRFVMRVMgKEVGTERF
UFMgUkVRVUlSRUQKICAgZWNvcmUtZXZhcz49MS4wLjk5OS41OTc2MwogICBlZGplPj0xLjAuMAog
ICBldWtpdD49MS4xLjAKLSAgZWRidXM+PTEuMS4wKQorICBlZGJ1cz49MS4xLjAKKyAgZWNvcmUt
aW5wdXQ+PTEuMC4wKQogUEtHX0NIRUNLX01PRFVMRVMgKEVJTkEgUkVRVUlSRUQgZWluYT49MS4w
LjApCiBQS0dfQ0hFQ0tfTU9EVUxFUyAoRUNPUkVfWCBlY29yZS14Pj0xLjAuMCkKIFBLR19DSEVD
S19NT0RVTEVTIChFVkFTIFJFUVVJUkVEIGV2YXM+PTEuMC4wKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpp
bmRleCBkODQ4Yzk4ZWRkOWM2MTMwNmRkZTE1ZDI4ZDQxMzhiNDQ2OWJhZTY5Li4wYzExMGRkZmQx
NTA5MWM5MDg4NTE1NWJiNTI5MmQxYWRmZjZjZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAt
NzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTkVU
V09SS19JTkZPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BB
R0VfVklTSUJJTElUWV9BUEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNDlkMjk5MjVhN2E2YmE3MmNhMDMzYTFmYzQzNzk3
ZmY2OTcxNDVlLi5kMWE1ZDNmOGZmNDVmMTg3MzBkOWQ1MGFhY2FkMmYzYTA3OGQ1OGZiIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzAgQEAKKzIwMTItMDUtMjEgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjcyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBFRkwgRFJUIGRvZXNu
J3Qgc3VwcG9ydCB0b3VjaCBldmVudC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGVu
YWJsZWQgaXQgYW5kIGltcGxlbWVudGVkIHNvbWUgZXZlbnRTZW5kZXIgZnVuY3Rpb24gY2FsbGJh
Y2tzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAg
ICAgICAgKFRvdWNoRXZlbnRJbmZvOjpUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgIChUb3VjaEV2
ZW50SW5mbyk6CisgICAgICAgICh0b3VjaFBvaW50TGlzdCk6CisgICAgICAgIChzZW5kVG91Y2hF
dmVudCk6CisgICAgICAgIChhZGRUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hT
dGFydENhbGxiYWNrKToKKyAgICAgICAgKHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAg
ICAgICh0b3VjaE1vdmVDYWxsYmFjayk6CisgICAgICAgIChjYW5jZWxUb3VjaFBvaW50Q2FsbGJh
Y2spOgorICAgICAgICAodG91Y2hDYW5jZWxDYWxsYmFjayk6CisgICAgICAgIChyZWxlYXNlVG91
Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoRW5kQ2FsbGJhY2spOgorICAgICAgICAo
Y2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKToKKyAgICAgICAgKHNldFRvdWNoTW9kaWZpZXJDYWxs
YmFjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAy
MDEyLTA1LTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbRUZMXVtEUlRdIENhbGwgcmVzZXRJbnRlcm5hbHNPYmplY3QoKSBhZnRlciBlYWNo
IHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCAxNmQ5
MTE4Yzk4MGMxYTBkZTU5ZDYwZjM5M2Y4NDU0ZTc5NTJkZjNlLi5iZWY1NWZlNTUyNzg0NjM2YWYz
YTBmNTU0YWQxZjk0MTE2NGE4ZjVhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNl
bmRlci5jcHAKQEAgLTM2LDExICszNiwxNCBAQAogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUu
aCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUNocm9tZS5oIgorI2luY2x1ZGUgIkludFBvaW50
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdVdGlscy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAj
aW5jbHVkZSA8RVdlYktpdC5oPgorI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBA
IC0xNDksNiArMTUyLDI3IEBAIHN0cnVjdCBEZWxheWVkRXZlbnQgewogICAgIHVuc2lnbmVkIGxv
bmcgZGVsYXk7CiB9OwogCitzdHJ1Y3QgVG91Y2hFdmVudEluZm8geworICAgIFRvdWNoRXZlbnRJ
bmZvKHVuc2lnbmVkIGlkLCBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50KQorICAgICAgICA6IHN0YXRlKHN0YXRlKQorICAgICAgICAsIHBv
aW50KHBvaW50KQorICAgICAgICAsIGlkKGlkKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpZDsKKyAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludDsKK307CisKK3N0YXRpYyB1bnNpZ25lZCB0b3VjaE1vZGlmaWVyczsKKworV1RG
OjpWZWN0b3I8VG91Y2hFdmVudEluZm8+JiB0b3VjaFBvaW50TGlzdCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxUb3VjaEV2ZW50SW5mbz4sIHN0YXRpY1RvdWNoUG9p
bnRMaXN0LCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY1RvdWNoUG9pbnRMaXN0OworfQorCiBXVEY6
OlZlY3RvcjxEZWxheWVkRXZlbnQ+JiBkZWxheWVkRXZlbnRRdWV1ZSgpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+LCBzdGF0aWNEZWxheWVkRXZl
bnRRdWV1ZSwgKCkpOwpAQCAtNTg5LDYgKzYxMywxNjMgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2No
ZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2IKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRp
YyB2b2lkIHNlbmRUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCit7CisgICAg
RWluYV9MaXN0KiBldmVudExpc3QgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50
KiBldmVudCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50
IHBvaW50ID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5wb2ludDsKKyAgICAgICAgZXZlbnQtPmlk
ID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5pZDsKKyAgICAgICAgZXZlbnQtPnggPSBwb2ludC54
KCk7CisgICAgICAgIGV2ZW50LT55ID0gcG9pbnQueSgpOworICAgICAgICBldmVudC0+c3RhdGUg
PSB0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0YXRlOworICAgICAgICBldmVudExpc3QgPSBlaW5h
X2xpc3RfYXBwZW5kKGV2ZW50TGlzdCwgZXZlbnQpOworICAgIH0KKworICAgIGV3a19mcmFtZV9m
ZWVkX3RvdWNoX2V2ZW50KGJyb3dzZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVudExpc3QsIHRv
dWNoTW9kaWZpZXJzKTsKKworICAgIHZvaWQqIGxpc3REYXRhOworICAgIEVJTkFfTElTVF9GUkVF
KGV2ZW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBldmVudCA9
IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAgICAgZGVsZXRl
IGV2ZW50OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50
TGlzdCgpLnNpemUoKTsgKSB7CisgICAgICAgIGlmICh0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0
YXRlID09IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNFRCkKKyAgICAgICAgICAgIHRvdWNoUG9pbnRM
aXN0KCkucmVtb3ZlKGkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRM
aXN0KCkuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfU1RBVElPTkFSWTsKKyAgICAgICAg
ICAgICsraTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIEpTVmFsdWVSZWYgYWRkVG91
Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudCAhPSAyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRp
b24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQo
IWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCh4LCB5KTsKKyAgICBjb25zdCB1bnNpZ25lZCBpZCA9IHRvdWNoUG9pbnRMaXN0KCku
aXNFbXB0eSgpID8gMCA6IHRvdWNoUG9pbnRMaXN0KCkubGFzdCgpLmlkICsgMTsKKyAgICBUb3Vj
aEV2ZW50SW5mbyBldmVudEluZm8oaWQsIEVXS19UT1VDSF9QT0lOVF9QUkVTU0VELCBwb2ludCk7
CisgICAgdG91Y2hQb2ludExpc3QoKS5hcHBlbmQoZXZlbnRJbmZvKTsKKworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91
Y2hTdGFydENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5k
VG91Y2hFdmVudChFV0tfVE9VQ0hfU1RBUlQpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdXBkYXRlVG91Y2hQb2ludENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudCAhPSAzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8
ICEqZXhjZXB0aW9uKTsKKyAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNl
cHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50PihKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsKKyAgICBBU1NF
UlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAgICBpZiAoaW5kZXggPCAwIHx8IGlu
ZGV4ID49IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQgPSB0
b3VjaFBvaW50TGlzdCgpLmF0KGluZGV4KS5wb2ludDsKKyAgICBwb2ludC5zZXRYKHgpOworICAg
IHBvaW50LnNldFkoeSk7CisgICAgdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCkuc3RhdGUgPSBF
V0tfVE9VQ0hfUE9JTlRfTU9WRUQ7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoTW92ZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hf
TU9WRSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitz
dGF0aWMgSlNWYWx1ZVJlZiBjYW5jZWxUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0
YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlm
IChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXplKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRM
aXN0KCkuYXQoaW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX0NBTkNFTExFRDsKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHRvdWNoQ2FuY2VsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9DQU5DRUwpOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVsZWFzZVRv
dWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoIWV4
Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0
b3VjaFBvaW50TGlzdCgpLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworCisgICAgdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCkuc3RhdGUgPSBF
V0tfVE9VQ0hfUE9JTlRfUkVMRUFTRUQ7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiB0b3VjaEVuZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hf
RU5EKTsKKyAgICB0b3VjaE1vZGlmaWVycyA9IDA7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhclRvdWNoUG9pbnRz
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRvdWNoUG9pbnRM
aXN0KCkuY2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFRvdWNoTW9kaWZpZXJDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGpzTW9kaWZpZXIoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICB1bnNpZ25lZCBtYXNrID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPigwKTsKKworICAg
IGlmIChlcXVhbHMoanNNb2RpZmllciwgImFsdCIpKQorICAgICAgICBtYXNrIHw9IEVDT1JFX0VW
RU5UX01PRElGSUVSX0FMVDsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgImN0cmwi
KSkKKyAgICAgICAgbWFzayB8PSBFQ09SRV9FVkVOVF9NT0RJRklFUl9DVFJMOworICAgIGVsc2Ug
aWYgKGVxdWFscyhqc01vZGlmaWVyLCAibWV0YSIpKQorICAgICAgICBtYXNrIHw9IEVDT1JFX0VW
RU5UX01PRElGSUVSX1dJTjsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgInNoaWZ0
IikpCisgICAgICAgIG1hc2sgfD0gRUNPUkVfRVZFTlRfTU9ESUZJRVJfU0hJRlQ7CisKKyAgICBp
ZiAoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMV0pKQorICAgICAgICB0b3Vj
aE1vZGlmaWVycyB8PSBtYXNrOworICAgIGVsc2UKKyAgICAgICAgdG91Y2hNb2RpZmllcnMgJj0g
fm1hc2s7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisK
IHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgIm1v
dXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250
aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKQEAgLTYwNCw2ICs3ODUsMTYgQEAgc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGlj
RnVuY3Rpb25zW10gPSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0ZXh0Wm9vbU91dENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdlSW5DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgIHsgInpvb21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
IHsgImFkZFRvdWNoUG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7
ICJ0b3VjaFN0YXJ0IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidXBkYXRl
VG91Y2hQb2ludCIsIHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRv
dWNoTW92ZSIsIHRvdWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAicmVsZWFzZVRvdWNo
UG9pbnQiLCByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidG91Y2hF
bmQiLCB0b3VjaEVuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAiY2FuY2VsVG91Y2hQb2ludCIs
IGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgInRvdWNoQ2FuY2VsIiwg
dG91Y2hDYW5jZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNsZWFyVG91Y2hQb2ludHMiLCBj
bGVhclRvdWNoUG9pbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJzZXRUb3VjaE1vZGlmaWVy
Iiwgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAwLCAwLCAwIH0KIH07
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBjYTRkZDcyNTVl
NDA1YzQ0NWEzMmU4NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNmNGQwMTI0NmZhODU2NGFjYTdl
NTJhMTFhMjA5NDIxYThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CkBAIC0zMjYsNyArMzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJX
VEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+IGlzUXQoKSwgdmFsdWUgPT4g
XCR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1l
dmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAotICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNRdCgpIHx8IGlzQmxh
Y2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwKKyAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4gKGlzUXQoKSB8fCBpc0JsYWNr
QmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBvcnQgfSwKIAog
ICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91
Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hf
SUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdT
dXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMzdkMDU3MGVmYjc0ZDdmMWZhNDNlNzA2N2RhM2I5YmE0N2NhNjA4
Ni4uMDRkN2YxZmMzZGIyMjQ4ZTZmZDA4MmI1M2NjYTBjNThkYWZhMWU5YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNv
bT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBk
b2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRj
aCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNh
bGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorCiAyMDEyLTA1LTE3
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzExNDE5OTMzPiBQcm9ibGVtcyB3aXRoIGZsaXBwZWQgd3JpdGluZyBtb2RlcyBhbmQgY29t
cG9zaXRpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMTQzNDNjYmRkNzFkMzJiMWZl
YjA5YzlmNjQ3OTBiMjVlOTgwNjRkYy4uZjE1ZGJlNTZlMzNkYjk5Mzk3M2UzOWQ0ODAxYzY3NzBi
YjNlZjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTU2LDggKzU2LDkgQEAgaHR0
cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCiBodHRw
L3Rlc3RzL2xvY2FsL2Zvcm1kYXRhCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlw
Ym9hcmQtZmlsZS1hY2Nlc3MuaHRtbAogCi0jIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGlt
cGxlbWVudCBhZGRUb3VjaFBvaW50LCBjbGVhclRvdWNoUG9pbnRzLCB0b3VjaFN0YXJ0IGFuZCBv
dGhlciB0b3VjaC1yZWxhdGVkIGNhbGxiYWNrcwotZmFzdC9ldmVudHMvdG91Y2gKKyMgRUZMJ3Mg
RXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGdlc3R1cmUtcmVsYXRlZCBjYWxsYmFja3MK
K2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUKK2Zhc3QvZXZlbnRzL3RvdWNoL3BhZ2Utc2NhbGVk
LXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAogCiAjIEVGTCdzIHBvcnQgcmVxdWlyZXMgaW1wbGVt
ZW50YXRpb24gb2YgQ2xpcGJvYXJkRWZsIGFuZCBEcmFnQ2xpZW50RWZsIGNsYXNzZXMgaW4gb3Jk
ZXIgdG8gc3VwcHBvcnQgZHJhZyBuIGRyb3AgZnVuY3Rpb25hbGl0eQogZmFzdC9ldmVudHMvZHJh
Zy1hbmQtZHJvcC1zdWJmcmFtZS1kYXRhVHJhbnNmZXIuaHRtbApAQCAtNTQyLDYgKzU0Myw3IEBA
IGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LW51bWJlci1zaXplLmh0bWwKIGZhc3QvZm9ybXMvbnVt
YmVyL2lucHV0LXNwaW5idXR0b24tY2FwdHVyaW5nLmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL3Nw
aW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbAogZmFzdC9mb3Jtcy9udW1i
ZXIvc3Bpbi1idXR0b24tc3RhdGUuaHRtbAorZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYmVmb3Jl
LXByZXNzaW5nLXNwaW4tYnV0dG9uLmh0bWwKIAogIyBUaGlzIHRlc3QgaXMgb3V0LWRhdGVkIHNp
bmNlIHI5NTg5OS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1
NzA5CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTI4YWJkZDBjYTYx
N2FlNDEwMGExZTA3NmFiMGI3ODI2YTc1ZjAzZi4uNzlhZWVlMGFlYTBmMGFkMDRiODJkYTM4NWQ5
ZmEwYjJkOGU3ZTc1YiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgRUZMIERS
VCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBw
YXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9u
IGNhbGxiYWNrcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kRUZMLmNtYWtlOiBBZGQg
ZWNvcmUtaW5wdXQgdG8gZGVwZW5kZW5jeSBjaGVjay4KKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZTogRW5hYmxlIHRvdWNoIGV2ZW50IG9wdGlvbi4KKwogMjAxMi0wNS0x
NyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIxMTc0MjgpOiBXZWJLaXQgQVBJL1NQSSB3YXMgcmVtb3ZlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143159</attachid>
            <date>2012-05-21 18:26:08 -0700</date>
            <delta_ts>2012-05-21 19:53:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120522102609.patch</filename>
            <type>text/plain</type>
            <size>22571</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uNjFhMjcyNzEyZGExZTQ5NmQ4ZDM1ZTFjNTMxNjE2
OTM1OTc5OGZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTIxICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRl
ZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOiBJbXBsZW1lbnQgbWV0YSBzdGF0
ZS4KKwogMjAxMi0wNS0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW1Y4XVtSZWZhY3RvcmluZ10gUmVtb3ZlIFY4UHJveHk6OmRlbGV0aW9uTm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE4MjQ2MjAwMzVjNDNlYzVk
ZDBiNzJmN2E4ODg5ZjA2Y2I4ZjM1ZWUuLjg0OTI3ZDk1NWM3MzBkNDBkNTlhODFlOTYzMWFlMjE1
ZTFhZDViZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0yMSAg
S2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJU
XSBJbXBsZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2
ZW50LgorICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBpdCBhbmQgaW1wbGVt
ZW50ZWQgc29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBl
d2Via2l0LnBjLmluOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdr
X2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQpOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuaDoKKwog
MjAxMi0wNS0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0VGTF1bRFJUXSBDYWxsIHJlc2V0SW50ZXJuYWxzT2JqZWN0KCkgYWZ0ZXIgZWFj
aCB0ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
VG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1U
b3VjaEV2ZW50RWZsLmNwcAppbmRleCAyM2EwZmJkZmYyZDljMDQzMzNjMmQ1ZWY4MDg2ZjhjN2Zk
YmU1OWE2Li4zOTE0NjZlNGU2MzY2YmI0MmE5YmFlMDIwZWQ5YzQyMDA4YjYyNDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1Ub3VjaEV2ZW50RWZs
LmNwcApAQCAtMzYsMTggKzM2LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3Jt
VG91Y2hFdmVudDo6UGxhdGZvcm1Ub3VjaEV2ZW50KEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBJ
bnRQb2ludCBwb3MsIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwgaW50IG1ldGFTdGF0ZSkKLSAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJl
bnRUaW1lKCkpCisgICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsICEhKG1ldGFTdGF0ZSAmIFNoaWZ0
S2V5KSwgISEobWV0YVN0YXRlICYgQ3RybEtleSksICEhKG1ldGFTdGF0ZSAmIEFsdEtleSksICEh
KG1ldGFTdGF0ZSAmIE1ldGFLZXkpLCBjdXJyZW50VGltZSgpKQogeworICAgIEVpbmFfTGlzdCog
bGlzdDsKICAgICB2b2lkKiBpdGVtOwogCi0gICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBpdGVt
KSB7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7CiAgICAgICAg
IEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihp
dGVtKTsKICAgICAgICAgSW50UG9pbnQgcG50ID0gSW50UG9pbnQocG9pbnQtPnggLSBwb3MueCgp
LCBwb2ludC0+eSAtIHBvcy55KCkpOwotCiAgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBs
YXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHBudCwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Ub3Vj
aFBvaW50OjpTdGF0ZT4ocG9pbnQtPnN0YXRlKSkpOwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBzdXBwb3J0IG1ldGFTdGF0ZSBmb3Igbm93LgogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2Via2l0LnBjLmluIGIvU291cmNlL1dlYktpdC9lZmwvZXdlYmtp
dC5wYy5pbgppbmRleCBkZDYxNzgzNDcxZjNkM2JmMTRmOGIxZmUwZDJjZDgzNzMyYTU0NWM4Li4w
ZDliZTNmMzk4MmYxNWJlYWM2N2M2N2Q3YzJkNjEwMjkxYjNlYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2Via2l0LnBjLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ZWJr
aXQucGMuaW4KQEAgLTcsNyArNyw3IEBAIGRhdGFkaXI9JHtwcmVmaXh9L3NoYXJlL0BXZWJLaXRf
TElCUkFSWV9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQAogTmFtZTogV2ViS2l0LUVGTAog
RGVzY3JpcHRpb246IFdlYiBjb250ZW50IGVuZ2luZSBmb3IgRUZMIGFwcGxpY2F0aW9ucwogVmVy
c2lvbjogQFBST0pFQ1RfVkVSU0lPTkAKLVJlcXVpcmVzOiBjYWlybyBldmFzIGVjb3JlIGxpYnNv
dXAtMi40CitSZXF1aXJlczogY2Fpcm8gZXZhcyBlY29yZSBsaWJzb3VwLTIuNCBlY29yZS1pbnB1
dAogTGliczogLUwke2xpYmRpcn0gLWxld2Via2l0IEBFWFRSQV9FV0VCS0lUX0xJTktACiBMaWJz
LnByaXZhdGU6IEBMSUJTX1BSSVZBVEVACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0
X0xJQlJBUllfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggNjExZGUxN2ZmZDM2MDViMjliNmM3ZDFkYThlZDBmNGMyODhlYjdk
OS4uMjdjMTNjOWMwZGU4ZTgwM2E4NmUzM2ZiNzJkOTZiYzFkMTU5YjlhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFY29yZV9JbnB1dC5oPgogI2luY2x1
ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hl
Y2tzLmg+CkBAIC05NDgsNyArOTQ5LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNl
X21vdmUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBFdmFzX0V2ZW50X01vdXMKICAgICBy
ZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQoZXZlbnQp
OwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlzdCogcG9pbnRz
LCBpbnQgbWV0YVN0YXRlKQorRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdrX1RvdWNoX0V2ZW50X1R5cGUgYWN0aW9uLCBFaW5hX0xp
c3QqIHBvaW50cywgdW5zaWduZWQgbW9kaWZpZXJzKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBvaW50cywgZmFsc2UpOwpA
QCAtOTc5LDcgKzk4MCwxNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHRvdWNo
RXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSwgdHlwZSwgbWV0YVN0YXRlKTsK
KyAgICBpbnQgdG91Y2hNb2RpZmllcnMgPSAwOworICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9F
VkVOVF9NT0RJRklFUl9BTFQpCisgICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9E
SUZJRVJfQ1RSTCkKKyAgICAgICAgdG91Y2hNb2RpZmllcnMgfD0gV2ViQ29yZTo6UGxhdGZvcm1F
dmVudDo6Q3RybEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJf
U0hJRlQpCisgICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OlNoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBFQ09SRV9FVkVOVF9NT0RJRklFUl9XSU4p
CisgICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1ldGFL
ZXk7CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgdG91Y2hFdmVudChwb2ludHMs
IFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCB0eXBlLCB0b3VjaE1vZGlmaWVycyk7CiAgICAgcmV0
dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRv
dWNoRXZlbnQpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmgKaW5kZXggZjViYmExYjlhNGNhODE2NDZlOTQ5OTAwM2IwMWQ3NTg1OGExMTMzYS4uNjM1
YmFmOGRiNDg4OTEyMDg3ZjQyMzM2MjFlMWZkNTZkZGFmMDBmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuaApAQCAtODUwLDExICs4NTAsMTEgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2Zy
YW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCAqbywgY29uc3QgRXZhc19FdmVudF9Nb3UK
ICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBmZWVkIHRvdWNoIGV2ZW50CiAgKiBAcGFyYW0g
YWN0aW9uIHRoZSBhY3Rpb24gb2YgdG91Y2ggZXZlbnQKICAqIEBwYXJhbSBwb2ludHMgYSBsaXN0
IG9mIHBvaW50cyAoRXdrX1RvdWNoX1BvaW50KSB0byBwcm9jZXNzCi0gKiBAcGFyYW0gbWV0YVN0
YXRlIERFUFJFQ1RBRUQsIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdworICogQHBhcmFtIG1ldGFTdGF0
ZSBtb2RpZmllcnMgc3RhdGUgb2YgdG91Y2ggZXZlbnQuIFVzZXJzIGFyZSBleHBlY3RlZCB0byBw
YXNzIE9SZWQgdmFsdWVzIG9mIHRoZSBFQ09SRV9FVkVOVF9NT0RJRklFUiBtYWNyb3MgaW4gRWNv
cmVfSW5wdXQuaCwgc3VjaCBhcyBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQgb3IgRUNPUkVfRVZF
TlRfTU9ESUZJRVJfU0hJRlQKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0b3VjaCBl
dmVudCB3YXMgaGFuZGxlZCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKICAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QgKm8sIEV3a19U
b3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0ICpwb2ludHMsIGludCBtZXRhU3RhdGUp
OworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmpl
Y3QgKm8sIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9MaXN0ICpwb2ludHMsIHVu
c2lnbmVkIG1vZGlmaWVycyk7CiAKIC8qKgogICogRmVlZHMgdGhlIGtleWJvYXJkIGtleSBkb3du
IGV2ZW50IHRvIHRoZSBmcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kRUZMLmNt
YWtlIGIvU291cmNlL2NtYWtlL0ZpbmRFRkwuY21ha2UKaW5kZXggOGM5YjU2NmVlMDQ1YjNjNzhl
OTUyOTU3MjkxYmE4OTcwOWMyZDRhOS4uNGE0Y2FiMDI5NWQyNGMwZTkxMGE2NTUzMTQwYjFlNWI0
MDdkMGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRFRkwuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL0ZpbmRFRkwuY21ha2UKQEAgLTExLDcgKzExLDggQEAgUEtHX0NIRUNLX01PRFVM
RVMgKEVGTERFUFMgUkVRVUlSRUQKICAgZWNvcmUtZXZhcz49MS4wLjk5OS41OTc2MwogICBlZGpl
Pj0xLjAuMAogICBldWtpdD49MS4xLjAKLSAgZWRidXM+PTEuMS4wKQorICBlZGJ1cz49MS4xLjAK
KyAgZWNvcmUtaW5wdXQ+PTEuMC4wKQogUEtHX0NIRUNLX01PRFVMRVMgKEVJTkEgUkVRVUlSRUQg
ZWluYT49MS4wLjApCiBQS0dfQ0hFQ0tfTU9EVUxFUyAoRUNPUkVfWCBlY29yZS14Pj0xLjAuMCkK
IFBLR19DSEVDS19NT0RVTEVTIChFVkFTIFJFUVVJUkVEIGV2YXM+PTEuMC4wKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0Vm
bC5jbWFrZQppbmRleCBkODQ4Yzk4ZWRkOWM2MTMwNmRkZTE1ZDI4ZDQxMzhiNDQ2OWJhZTY5Li4w
YzExMGRkZmQxNTA5MWM5MDg4NTE1NWJiNTI5MmQxYWRmZjZjZmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTkVUV09SS19JTkZPIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfU0hBUkVEX1dPUktFUlMgT04pCitXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfRVZFTlRTIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNDlkMjk5MjVhN2E2YmE3MmNhMDMz
YTFmYzQzNzk3ZmY2OTcxNDVlLi5kMWE1ZDNmOGZmNDVmMTg3MzBkOWQ1MGFhY2FkMmYzYTA3OGQ1
OGZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDUtMjEgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW0RSVF0gSW1wbGVtZW50IHRvdWNoIGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjcyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBFRkwg
RFJUIGRvZXNuJ3Qgc3VwcG9ydCB0b3VjaCBldmVudC4KKyAgICAgICAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIGVuYWJsZWQgaXQgYW5kIGltcGxlbWVudGVkIHNvbWUgZXZlbnRTZW5kZXIgZnVuY3Rp
b24gY2FsbGJhY2tzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVy
LmNwcDoKKyAgICAgICAgKFRvdWNoRXZlbnRJbmZvOjpUb3VjaEV2ZW50SW5mbyk6CisgICAgICAg
IChUb3VjaEV2ZW50SW5mbyk6CisgICAgICAgICh0b3VjaFBvaW50TGlzdCk6CisgICAgICAgIChz
ZW5kVG91Y2hFdmVudCk6CisgICAgICAgIChhZGRUb3VjaFBvaW50Q2FsbGJhY2spOgorICAgICAg
ICAodG91Y2hTdGFydENhbGxiYWNrKToKKyAgICAgICAgKHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFj
ayk6CisgICAgICAgICh0b3VjaE1vdmVDYWxsYmFjayk6CisgICAgICAgIChjYW5jZWxUb3VjaFBv
aW50Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hDYW5jZWxDYWxsYmFjayk6CisgICAgICAgIChy
ZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoRW5kQ2FsbGJhY2spOgor
ICAgICAgICAoY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKToKKyAgICAgICAgKHNldFRvdWNoTW9k
aWZpZXJDYWxsYmFjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtOgorCiAyMDEyLTA1LTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBbRUZMXVtEUlRdIENhbGwgcmVzZXRJbnRlcm5hbHNPYmplY3QoKSBh
ZnRlciBlYWNoIHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZl
bnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcApp
bmRleCAxNmQ5MTE4Yzk4MGMxYTBkZTU5ZDYwZjM5M2Y4NDU0ZTc5NTJkZjNlLi5jM2ViYTAwNTE4
ZDYwMzc5ZGI3ODVmOGU5MWIzOTc5YTRhMjcwOTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9FdmVudFNlbmRlci5jcHAKQEAgLTM2LDExICszNiwxNCBAQAogCiAjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWUuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUNocm9tZS5oIgorI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdVdGlscy5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1ZGUgIldlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgogI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCiAjaW5jbHVkZSA8RVdlYktpdC5oPgorI2luY2x1ZGUgPEVjb3JlX0lucHV0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmLmg+CkBAIC0xNDksNiArMTUyLDI3IEBAIHN0cnVjdCBEZWxheWVkRXZlbnQgewogICAgIHVu
c2lnbmVkIGxvbmcgZGVsYXk7CiB9OwogCitzdHJ1Y3QgVG91Y2hFdmVudEluZm8geworICAgIFRv
dWNoRXZlbnRJbmZvKHVuc2lnbmVkIGlkLCBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZSwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQorICAgICAgICA6IHN0YXRlKHN0YXRlKQorICAg
ICAgICAsIHBvaW50KHBvaW50KQorICAgICAgICAsIGlkKGlkKQorICAgIHsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBpZDsKKyAgICBFd2tfVG91Y2hfUG9pbnRfVHlwZSBzdGF0ZTsKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludDsKK307CisKK3N0YXRpYyB1bnNpZ25lZCB0b3VjaE1vZGlmaWVy
czsKKworV1RGOjpWZWN0b3I8VG91Y2hFdmVudEluZm8+JiB0b3VjaFBvaW50TGlzdCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxUb3VjaEV2ZW50SW5mbz4sIHN0YXRp
Y1RvdWNoUG9pbnRMaXN0LCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY1RvdWNoUG9pbnRMaXN0Owor
fQorCiBXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+JiBkZWxheWVkRXZlbnRRdWV1ZSgpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChXVEY6OlZlY3RvcjxEZWxheWVkRXZlbnQ+LCBzdGF0aWNE
ZWxheWVkRXZlbnRRdWV1ZSwgKCkpOwpAQCAtNTg5LDYgKzYxMywxNjMgQEAgc3RhdGljIEpTVmFs
dWVSZWYgc2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2IKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9
CiAKK3N0YXRpYyB2b2lkIHNlbmRUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUp
Cit7CisgICAgRWluYV9MaXN0KiBldmVudExpc3QgPSAwOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRXdrX1Rv
dWNoX1BvaW50KiBldmVudCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IHBvaW50ID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5wb2ludDsKKyAgICAgICAg
ZXZlbnQtPmlkID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5pZDsKKyAgICAgICAgZXZlbnQtPngg
PSBwb2ludC54KCk7CisgICAgICAgIGV2ZW50LT55ID0gcG9pbnQueSgpOworICAgICAgICBldmVu
dC0+c3RhdGUgPSB0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0YXRlOworICAgICAgICBldmVudExp
c3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV2ZW50TGlzdCwgZXZlbnQpOworICAgIH0KKworICAgIGV3
a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KGJyb3dzZXItPm1haW5GcmFtZSgpLCB0eXBlLCBldmVu
dExpc3QsIHRvdWNoTW9kaWZpZXJzKTsKKworICAgIHZvaWQqIGxpc3REYXRhOworICAgIEVJTkFf
TElTVF9GUkVFKGV2ZW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50
KiBldmVudCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAg
ICAgZGVsZXRlIGV2ZW50OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b3VjaFBvaW50TGlzdCgpLnNpemUoKTsgKSB7CisgICAgICAgIGlmICh0b3VjaFBvaW50TGlzdCgp
LmF0KGkpLnN0YXRlID09IEVXS19UT1VDSF9QT0lOVF9SRUxFQVNFRCkKKyAgICAgICAgICAgIHRv
dWNoUG9pbnRMaXN0KCkucmVtb3ZlKGkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRv
dWNoUG9pbnRMaXN0KCkuYXQoaSkuc3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfU1RBVElPTkFSWTsK
KyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgYWRkVG91Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisKKyAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJU
KCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8aW50
PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAg
ICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCh4LCB5KTsKKyAgICBjb25zdCB1bnNpZ25lZCBpZCA9IHRvdWNoUG9p
bnRMaXN0KCkuaXNFbXB0eSgpID8gMCA6IHRvdWNoUG9pbnRMaXN0KCkubGFzdCgpLmlkICsgMTsK
KyAgICBUb3VjaEV2ZW50SW5mbyBldmVudEluZm8oaWQsIEVXS19UT1VDSF9QT0lOVF9QUkVTU0VE
LCBwb2ludCk7CisgICAgdG91Y2hQb2ludExpc3QoKS5hcHBlbmQoZXZlbnRJbmZvKTsKKworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgdG91Y2hTdGFydENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfU1RBUlQpOworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdXBkYXRlVG91
Y2hQb2ludENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudCAhPSAzKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051
bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhj
ZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7CisgICAgQVNT
RVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGludCB5ID0gc3RhdGljX2Nhc3Q8
aW50PihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzJdLCBleGNlcHRpb24pKTsK
KyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisKKyAgICBpZiAoaW5kZXgg
PCAwIHx8IGluZGV4ID49IHRvdWNoUG9pbnRMaXN0KCkuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQgPSB0b3VjaFBvaW50TGlzdCgpLmF0KGluZGV4KS5wb2ludDsKKyAgICBwb2ludC5zZXRY
KHgpOworICAgIHBvaW50LnNldFkoeSk7CisgICAgdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCku
c3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfTU9WRUQ7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHRvdWNoTW92ZUNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChF
V0tfVE9VQ0hfTU9WRSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjYW5jZWxUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBp
bmRleCA9IHN0YXRpY19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24p
OworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXplKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRv
dWNoUG9pbnRMaXN0KCkuYXQoaW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX0NBTkNFTExF
RDsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHRvdWNoQ2FuY2VsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9DQU5DRUwpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYg
cmVsZWFzZVRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBB
U1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaWYgKGluZGV4IDwgMCB8fCBp
bmRleCA+PSB0b3VjaFBvaW50TGlzdCgpLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCku
c3RhdGUgPSBFV0tfVE9VQ0hfUE9JTlRfUkVMRUFTRUQ7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiB0b3VjaEVuZENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChF
V0tfVE9VQ0hfRU5EKTsKKyAgICB0b3VjaE1vZGlmaWVycyA9IDA7CisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjbGVhclRv
dWNoUG9pbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRv
dWNoUG9pbnRMaXN0KCkuY2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFRvdWNoTW9kaWZpZXJDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
IT0gMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTW9kaWZpZXIoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICB1bnNpZ25l
ZCBtYXNrID0gMDsKKworICAgIGlmIChlcXVhbHMoanNNb2RpZmllciwgImFsdCIpKQorICAgICAg
ICBtYXNrIHw9IEVDT1JFX0VWRU5UX01PRElGSUVSX0FMVDsKKyAgICBlbHNlIGlmIChlcXVhbHMo
anNNb2RpZmllciwgImN0cmwiKSkKKyAgICAgICAgbWFzayB8PSBFQ09SRV9FVkVOVF9NT0RJRklF
Ul9DVFJMOworICAgIGVsc2UgaWYgKGVxdWFscyhqc01vZGlmaWVyLCAibWV0YSIpKQorICAgICAg
ICBtYXNrIHw9IEVDT1JFX0VWRU5UX01PRElGSUVSX1dJTjsKKyAgICBlbHNlIGlmIChlcXVhbHMo
anNNb2RpZmllciwgInNoaWZ0IikpCisgICAgICAgIG1hc2sgfD0gRUNPUkVfRVZFTlRfTU9ESUZJ
RVJfU0hJRlQ7CisKKyAgICBpZiAoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MV0pKQorICAgICAgICB0b3VjaE1vZGlmaWVycyB8PSBtYXNrOworICAgIGVsc2UKKyAgICAgICAg
dG91Y2hNb2RpZmllcnMgJj0gfm1hc2s7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9u
c1tdID0gewogICAgIHsgIm1vdXNlU2Nyb2xsQnkiLCBtb3VzZVNjcm9sbEJ5Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICB7ICJjb250aW51b3VzTW91c2VTY3JvbGxCeSIsIGNvbnRpbnVvdXNNb3VzZVNj
cm9sbEJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTYwNCw2ICs3ODUsMTYgQEAgc3RhdGljIEpTU3Rh
dGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CiAgICAgeyAidGV4dFpvb21PdXQiLCB0
ZXh0Wm9vbU91dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAiem9vbVBhZ2VJbiIsIHpvb21QYWdl
SW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlT3V0Iiwgem9vbVBhZ2VPdXRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgIHsgImFkZFRvdWNoUG9pbnQiLCBhZGRUb3VjaFBvaW50Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaFN0YXJ0IiwgdG91Y2hTdGFydENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgeyAidXBkYXRlVG91Y2hQb2ludCIsIHVwZGF0ZVRvdWNoUG9pbnRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgIHsgInRvdWNoTW92ZSIsIHRvdWNoTW92ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgeyAicmVsZWFzZVRvdWNoUG9pbnQiLCByZWxlYXNlVG91Y2hQb2ludENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgeyAidG91Y2hFbmQiLCB0b3VjaEVuZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAi
Y2FuY2VsVG91Y2hQb2ludCIsIGNhbmNlbFRvdWNoUG9pbnRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
IHsgInRvdWNoQ2FuY2VsIiwgdG91Y2hDYW5jZWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgIHsgImNs
ZWFyVG91Y2hQb2ludHMiLCBjbGVhclRvdWNoUG9pbnRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7
ICJzZXRUb3VjaE1vZGlmaWVyIiwgc2V0VG91Y2hNb2RpZmllckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgeyAwLCAwLCAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQppbmRleCBjYTRkZDcyNTVlNDA1YzQ0NWEzMmU4NWI5ZmQ3Yzk4ZDVkMzgxMjc2Li4xMzExMTNm
NGQwMTI0NmZhODU2NGFjYTdlNTJhMTFhMjA5NDIxYThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0zMjYsNyArMzI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAog
ICAgICAgZGVmaW5lID0+ICJXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUiLCBkZWZhdWx0ID0+
IGlzUXQoKSwgdmFsdWUgPT4gXCR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQgfSwKIAogICAgIHsg
b3B0aW9uID0+ICJ0b3VjaC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1
cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9
PiAoaXNRdCgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2ZW50c1N1cHBv
cnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1bHQgPT4g
KGlzUXQoKSB8fCBpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCR0b3VjaEV2
ZW50c1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBk
ZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzdkMDU3MGVmYjc0ZDdmMWZhNDNl
NzA2N2RhM2I5YmE0N2NhNjA4Ni4uMDRkN2YxZmMzZGIyMjQ4ZTZmZDA4MmI1M2NjYTBjNThkYWZh
MWU5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8a2Fu
Z2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3Vj
aCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
dXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRo
ZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50
U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lw
cGVkOgorCiAyMDEyLTA1LTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExNDE5OTMzPiBQcm9ibGVtcyB3aXRoIGZsaXBwZWQgd3Jp
dGluZyBtb2RlcyBhbmQgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXgg
MTQzNDNjYmRkNzFkMzJiMWZlYjA5YzlmNjQ3OTBiMjVlOTgwNjRkYy4uZjE1ZGJlNTZlMzNkYjk5
Mzk3M2UzOWQ0ODAxYzY3NzBiYjNlZjMzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAg
LTU2LDggKzU2LDkgQEAgaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdn
ZWQtZmlsZS5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbAogCi0jIEVGTCdzIEV2ZW50
U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBhZGRUb3VjaFBvaW50LCBjbGVhclRvdWNoUG9pbnRz
LCB0b3VjaFN0YXJ0IGFuZCBvdGhlciB0b3VjaC1yZWxhdGVkIGNhbGxiYWNrcwotZmFzdC9ldmVu
dHMvdG91Y2gKKyMgRUZMJ3MgRXZlbnRTZW5kZXIgZG9lcyBub3QgaW1wbGVtZW50IGdlc3R1cmUt
cmVsYXRlZCBjYWxsYmFja3MKK2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUKK2Zhc3QvZXZlbnRz
L3RvdWNoL3BhZ2Utc2NhbGVkLXRvdWNoLWdlc3R1cmUtY2xpY2suaHRtbAogCiAjIEVGTCdzIHBv
cnQgcmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb2YgQ2xpcGJvYXJkRWZsIGFuZCBEcmFnQ2xpZW50
RWZsIGNsYXNzZXMgaW4gb3JkZXIgdG8gc3VwcHBvcnQgZHJhZyBuIGRyb3AgZnVuY3Rpb25hbGl0
eQogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1zdWJmcmFtZS1kYXRhVHJhbnNmZXIuaHRtbApA
QCAtNTQyLDYgKzU0Myw3IEBAIGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LW51bWJlci1zaXplLmh0
bWwKIGZhc3QvZm9ybXMvbnVtYmVyL2lucHV0LXNwaW5idXR0b24tY2FwdHVyaW5nLmh0bWwKIGZh
c3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRt
bAogZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1idXR0b24tc3RhdGUuaHRtbAorZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtYmVmb3JlLXByZXNzaW5nLXNwaW4tYnV0dG9uLmh0bWwKIAogIyBUaGlzIHRl
c3QgaXMgb3V0LWRhdGVkIHNpbmNlIHI5NTg5OS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NzA5CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggZTI4YWJkZDBjYTYxN2FlNDEwMGExZTA3NmFiMGI3ODI2YTc1ZjAzZi4uNzlhZWVlMGFl
YTBmMGFkMDRiODJkYTM4NWQ5ZmEwYjJkOGU3ZTc1YiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8
a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0
b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAg
IFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2
ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9G
aW5kRUZMLmNtYWtlOiBBZGQgZWNvcmUtaW5wdXQgdG8gZGVwZW5kZW5jeSBjaGVjay4KKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZTogRW5hYmxlIHRvdWNoIGV2ZW50IG9w
dGlvbi4KKwogMjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxMTc0MjgpOiBXZWJLaXQgQVBJL1NQSSB3YXMgcmVtb3ZlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143176</attachid>
            <date>2012-05-21 19:53:38 -0700</date>
            <delta_ts>2012-05-22 19:36:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86720-20120522115339.patch</filename>
            <type>text/plain</type>
            <size>23433</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjNTkwMGJhZTk4MzA0
ZmQwMjI1YzcxNWRiZWJmZWY5NjU4OTgzNi4uZjgyYmY3MmQxZTA5M2QwN2U1M2VmNDEyZTA0Y2Fj
YmRiN2MxYzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTIxICBLYW5n
aWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIElt
cGxlbWVudCB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQu
CisgICAgICAgIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRl
ZCBzb21lIGV2ZW50U2VuZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oOgorICAgICAgICAoUGxhdGZvcm1Ub3VjaEV2ZW50KTog
SW1wbGVtZW50IG1ldGEgc3RhdGUuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRmb3JtVG91
Y2hFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBs
YXRmb3JtVG91Y2hFdmVudCk6IEltcGxlbWVudCBtZXRhIHN0YXRlLgorCiAyMDEyLTA1LTE3ICBL
ZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdW1JlZmFj
dG9yaW5nXSBSZW1vdmUgVjhQcm94eTo6ZGVsZXRpb25Ob3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggMTgyNDYyMDAzNWM0M2VjNWRkMGI3MmY3YTg4ODlmMDZjYjhm
MzVlZS4uODQ5MjdkOTU1YzczMGQ0MGQ1OWE4MWU5NjMxYWUyMTVlMWFkNWJkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8a2FuZ2ls
LmhhbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJy
ZW50bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJl
Zm9yZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2Vu
ZGVyIGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIGV3ZWJraXQucGMuaW46CisgICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF90b3VjaF9l
dmVudCk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5oOgorCiAyMDEyLTA1LTE3ICBSYXBoYWVs
IEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbRUZMXVtEUlRd
IENhbGwgcmVzZXRJbnRlcm5hbHNPYmplY3QoKSBhZnRlciBlYWNoIHRlc3QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oCmluZGV4IDU5Y2JiMjA2ZGM1NmJm
YmE1YzQ4NjBkMTY2M2RhNGRmMDhlMDA2MzEuLjAxOWJkMmExNDJhOTQ1YjkxZDkyZGNkMzc3MWE1
NDgyODNmOGY2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
VG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hF
dmVudC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBQTEFURk9STShF
RkwpCi0gICAgUGxhdGZvcm1Ub3VjaEV2ZW50KEVpbmFfTGlzdCosIGNvbnN0IEludFBvaW50LCBQ
bGF0Zm9ybUV2ZW50OjpUeXBlLCBpbnQgbWV0YVN0YXRlKTsKKyAgICBQbGF0Zm9ybVRvdWNoRXZl
bnQoY29uc3QgRWluYV9MaXN0KiwgY29uc3QgSW50UG9pbnQsIFBsYXRmb3JtRXZlbnQ6OlR5cGUs
IFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyk7CiAjZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQog
ICAgIFBsYXRmb3JtVG91Y2hFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudCop
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZv
cm1Ub3VjaEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9y
bVRvdWNoRXZlbnRFZmwuY3BwCmluZGV4IDIzYTBmYmRmZjJkOWMwNDMzM2MyZDVlZjgwODZmOGM3
ZmRiZTU5YTYuLjYxMzE2ZDI3ZDczNGY0ODJmMDc1MWMyNmMyY2I5MTc3ZWM2ZTQ1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVRvdWNoRXZlbnRF
ZmwuY3BwCkBAIC0zNSwxOSArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QbGF0
Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChFaW5hX0xpc3QqIHBvaW50cywgY29u
c3QgSW50UG9pbnQgcG9zLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsIGludCBtZXRhU3RhdGUp
Ci0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBj
dXJyZW50VGltZSgpKQorUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoY29u
c3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEludFBvaW50IHBvcywgUGxhdGZvcm1FdmVudDo6
VHlwZSB0eXBlLCBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKQorICAgIDogUGxh
dGZvcm1FdmVudCh0eXBlLCBtb2RpZmllcnMsIGN1cnJlbnRUaW1lKCkpCiB7CisgICAgY29uc3Qg
RWluYV9MaXN0KiBsaXN0OwogICAgIHZvaWQqIGl0ZW07CiAKLSAgICBFSU5BX0xJU1RfRlJFRShw
b2ludHMsIGl0ZW0pIHsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0p
IHsKICAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3Vj
aF9Qb2ludCo+KGl0ZW0pOwogICAgICAgICBJbnRQb2ludCBwbnQgPSBJbnRQb2ludChwb2ludC0+
eCAtIHBvcy54KCksIHBvaW50LT55IC0gcG9zLnkoKSk7Ci0KICAgICAgICAgbV90b3VjaFBvaW50
cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgcG50LCBzdGF0aWNfY2FzdDxQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlPihwb2ludC0+c3RhdGUpKSk7CiAgICAgfQotCi0gICAg
Ly8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgbWV0YVN0YXRlIGZvciBub3cuCiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ZWJraXQucGMuaW4gYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2Via2l0LnBjLmluCmluZGV4IGRkNjE3ODM0NzFmM2QzYmYxNGY4YjFmZTBkMmNkODM3
MzJhNTQ1YzguLjBkOWJlM2YzOTgyZjE1YmVhYzY3YzY3ZDdjMmQ2MTAyOTFiM2VjNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ZWJraXQucGMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdlYmtpdC5wYy5pbgpAQCAtNyw3ICs3LDcgQEAgZGF0YWRpcj0ke3ByZWZpeH0vc2hh
cmUvQFdlYktpdF9MSUJSQVJZX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JACiBOYW1lOiBX
ZWJLaXQtRUZMCiBEZXNjcmlwdGlvbjogV2ViIGNvbnRlbnQgZW5naW5lIGZvciBFRkwgYXBwbGlj
YXRpb25zCiBWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAotUmVxdWlyZXM6IGNhaXJvIGV2YXMg
ZWNvcmUgbGlic291cC0yLjQKK1JlcXVpcmVzOiBjYWlybyBldmFzIGVjb3JlIGxpYnNvdXAtMi40
IGVjb3JlLWlucHV0CiBMaWJzOiAtTCR7bGliZGlyfSAtbGV3ZWJraXQgQEVYVFJBX0VXRUJLSVRf
TElOS0AKIExpYnMucHJpdmF0ZTogQExJQlNfUFJJVkFURUAKIENmbGFnczogLUkke2luY2x1ZGVk
aXJ9L0BXZWJLaXRfTElCUkFSWV9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA2MTFkZTE3ZmZkMzYwNWIyOWI2YzdkMWRhOGVk
MGY0YzI4OGViN2Q5Li42MTQ3MzMzNjY2MjBjNTZjNGI1OGNmMGM4ZWU1YmE4MTI1YjkwOTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1
ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVjb3JlX0lucHV0
Lmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxlaW5h
X3NhZmV0eV9jaGVja3MuaD4KQEAgLTk0OCw3ICs5NDksNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IEV2YXNfRXZlbnRf
TW91cwogICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VN
b3ZlZChldmVudCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19Ub3VjaF9FdmVudF9UeXBlIGFjdGlvbiwgRWluYV9M
aXN0KiBwb2ludHMsIGludCBtZXRhU3RhdGUpCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfdG91
Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rp
b24sIEVpbmFfTGlzdCogcG9pbnRzLCB1bnNpZ25lZCBtb2RpZmllcnMpCiB7CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRz
LCBmYWxzZSk7CkBAIC05NzksNyArOTgwLDE3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF90
b3VjaF9ldmVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19Ub3VjaF9FdmVudF9UeXBlCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
RXZlbnQgdG91Y2hFdmVudChwb2ludHMsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpLCB0eXBlLCBt
ZXRhU3RhdGUpOworICAgIHVuc2lnbmVkIHRvdWNoTW9kaWZpZXJzID0gMDsKKyAgICBpZiAobW9k
aWZpZXJzICYgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQUxUKQorICAgICAgICB0b3VjaE1vZGlmaWVy
cyB8PSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAm
IEVDT1JFX0VWRU5UX01PRElGSUVSX0NUUkwpCisgICAgICAgIHRvdWNoTW9kaWZpZXJzIHw9IFdl
YkNvcmU6OlBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIEVDT1JF
X0VWRU5UX01PRElGSUVSX1NISUZUKQorICAgICAgICB0b3VjaE1vZGlmaWVycyB8PSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYgRUNPUkVfRVZF
TlRfTU9ESUZJRVJfV0lOKQorICAgICAgICB0b3VjaE1vZGlmaWVycyB8PSBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpNZXRhS2V5OworCisgICAgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHRv
dWNoRXZlbnQocG9pbnRzLCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSwgdHlwZSwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzPih0b3VjaE1vZGlmaWVycykpOwog
ICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hF
dmVudCh0b3VjaEV2ZW50KTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5oCmluZGV4IGY1YmJhMWI5YTRjYTgxNjQ2ZTk0OTkwMDNiMDFkNzU4NThhMTEz
M2EuLjYzNWJhZjhkYjQ4ODkxMjA4N2Y0MjMzNjIxZTFmZDU2ZGRhZjAwZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmgKQEAgLTg1MCwxMSArODUwLDExIEBAIEVBUEkgRWluYV9Cb29sICAg
IGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUoRXZhc19PYmplY3QgKm8sIGNvbnN0IEV2YXNfRXZl
bnRfTW91CiAgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZmVlZCB0b3VjaCBldmVudAogICog
QHBhcmFtIGFjdGlvbiB0aGUgYWN0aW9uIG9mIHRvdWNoIGV2ZW50CiAgKiBAcGFyYW0gcG9pbnRz
IGEgbGlzdCBvZiBwb2ludHMgKEV3a19Ub3VjaF9Qb2ludCkgdG8gcHJvY2VzcwotICogQHBhcmFt
IG1ldGFTdGF0ZSBERVBSRUNUQUVELCBub3Qgc3VwcG9ydGVkIGZvciBub3cKKyAqIEBwYXJhbSBt
ZXRhU3RhdGUgbW9kaWZpZXJzIHN0YXRlIG9mIHRvdWNoIGV2ZW50LiBVc2VycyBhcmUgZXhwZWN0
ZWQgdG8gcGFzcyBPUmVkIHZhbHVlcyBvZiB0aGUgRUNPUkVfRVZFTlRfTU9ESUZJRVIgbWFjcm9z
IGluIEVjb3JlX0lucHV0LmgsIHN1Y2ggYXMgRUNPUkVfRVZFTlRfTU9ESUZJRVJfQUxUIG9yIEVD
T1JFX0VWRU5UX01PRElGSUVSX1NISUZUCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
dG91Y2ggZXZlbnQgd2FzIGhhbmRsZWQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KLUVB
UEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2YXNfT2JqZWN0ICpv
LCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlzdCAqcG9pbnRzLCBpbnQgbWV0
YVN0YXRlKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9mZWVkX3RvdWNoX2V2ZW50KEV2
YXNfT2JqZWN0ICpvLCBFd2tfVG91Y2hfRXZlbnRfVHlwZSBhY3Rpb24sIEVpbmFfTGlzdCAqcG9p
bnRzLCB1bnNpZ25lZCBtb2RpZmllcnMpOwogCiAvKioKICAqIEZlZWRzIHRoZSBrZXlib2FyZCBr
ZXkgZG93biBldmVudCB0byB0aGUgZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmlu
ZEVGTC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kRUZMLmNtYWtlCmluZGV4IDhjOWI1NjZlZTA0
NWIzYzc4ZTk1Mjk1NzI5MWJhODk3MDljMmQ0YTkuLjRhNGNhYjAyOTVkMjRjMGU5MTBhNjU1MzE0
MGIxZTViNDA3ZDBkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kRUZMLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9GaW5kRUZMLmNtYWtlCkBAIC0xMSw3ICsxMSw4IEBAIFBLR19DSEVD
S19NT0RVTEVTIChFRkxERVBTIFJFUVVJUkVECiAgIGVjb3JlLWV2YXM+PTEuMC45OTkuNTk3NjMK
ICAgZWRqZT49MS4wLjAKICAgZXVraXQ+PTEuMS4wCi0gIGVkYnVzPj0xLjEuMCkKKyAgZWRidXM+
PTEuMS4wCisgIGVjb3JlLWlucHV0Pj0xLjAuMCkKIFBLR19DSEVDS19NT0RVTEVTIChFSU5BIFJF
UVVJUkVEIGVpbmE+PTEuMC4wKQogUEtHX0NIRUNLX01PRFVMRVMgKEVDT1JFX1ggZWNvcmUteD49
MS4wLjApCiBQS0dfQ0hFQ0tfTU9EVUxFUyAoRVZBUyBSRVFVSVJFRCBldmFzPj0xLjAuMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2UKaW5kZXggZDg0OGM5OGVkZDljNjEzMDZkZGUxNWQyOGQ0MTM4YjQ0Njli
YWU2OS4uMGMxMTBkZGZkMTUwOTFjOTA4ODUxNTViYjUyOTJkMWFkZmY2Y2ZhOCAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX05FVFdPUktfSU5GTyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NIQVJFRF9XT1JLRVJTIE9OKQorV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSUJSQVRJT04gT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU8gT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklERU9fVFJBQ0sgT04pCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzQ5ZDI5OTI1YTdhNmJh
NzJjYTAzM2ExZmM0Mzc5N2ZmNjk3MTQ1ZS4uZDFhNWQzZjhmZjQ1ZjE4NzMwZDlkNTBhYWNhZDJm
M2EwNzhkNThmYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTIxICBLYW5naWwgSGFuICA8a2FuZ2lsLmhh
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCB0b3VjaCBldmVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHkgRUZMIERSVCBkb2Vzbid0IHN1cHBvcnQgdG91Y2ggZXZlbnQuCisgICAgICAgIFRoZXJlZm9y
ZSwgdGhpcyBwYXRjaCBlbmFibGVkIGl0IGFuZCBpbXBsZW1lbnRlZCBzb21lIGV2ZW50U2VuZGVy
IGZ1bmN0aW9uIGNhbGxiYWNrcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9FdmVu
dFNlbmRlci5jcHA6CisgICAgICAgIChUb3VjaEV2ZW50SW5mbzo6VG91Y2hFdmVudEluZm8pOgor
ICAgICAgICAoVG91Y2hFdmVudEluZm8pOgorICAgICAgICAodG91Y2hQb2ludExpc3QpOgorICAg
ICAgICAoc2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAoYWRkVG91Y2hQb2ludENhbGxiYWNrKToK
KyAgICAgICAgKHRvdWNoU3RhcnRDYWxsYmFjayk6CisgICAgICAgICh1cGRhdGVUb3VjaFBvaW50
Q2FsbGJhY2spOgorICAgICAgICAodG91Y2hNb3ZlQ2FsbGJhY2spOgorICAgICAgICAoY2FuY2Vs
VG91Y2hQb2ludENhbGxiYWNrKToKKyAgICAgICAgKHRvdWNoQ2FuY2VsQ2FsbGJhY2spOgorICAg
ICAgICAocmVsZWFzZVRvdWNoUG9pbnRDYWxsYmFjayk6CisgICAgICAgICh0b3VjaEVuZENhbGxi
YWNrKToKKyAgICAgICAgKGNsZWFyVG91Y2hQb2ludHNDYWxsYmFjayk6CisgICAgICAgIChzZXRU
b3VjaE1vZGlmaWVyQ2FsbGJhY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0
dXJlTGlzdC5wbToKKwogMjAxMi0wNS0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNv
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF1bRFJUXSBDYWxsIHJlc2V0SW50ZXJuYWxzT2Jq
ZWN0KCkgYWZ0ZXIgZWFjaCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRl
ci5jcHAKaW5kZXggMTZkOTExOGM5ODBjMWEwZGU1OWQ2MGYzOTNmODQ1NGU3OTUyZGYzZS4uYzNl
YmEwMDUxOGQ2MDM3OWRiNzg1ZjhlOTFiMzk3OWE0YTI3MDkwMiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvRXZlbnRTZW5kZXIuY3BwCkBAIC0zNiwxMSArMzYsMTQgQEAKIAogI2luY2x1ZGUg
IkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDaHJvbWUuaCIKKyNp
bmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nVXRpbHMuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRl
ICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCIKICNpbmNsdWRlICJl
d2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVXZWJLaXQuaD4KKyNpbmNsdWRlIDxFY29yZV9JbnB1
dC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZi5oPgpAQCAtMTQ5LDYgKzE1MiwyNyBAQCBzdHJ1Y3QgRGVsYXllZEV2ZW50IHsK
ICAgICB1bnNpZ25lZCBsb25nIGRlbGF5OwogfTsKIAorc3RydWN0IFRvdWNoRXZlbnRJbmZvIHsK
KyAgICBUb3VjaEV2ZW50SW5mbyh1bnNpZ25lZCBpZCwgRXdrX1RvdWNoX1BvaW50X1R5cGUgc3Rh
dGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKKyAgICAgICAgOiBzdGF0ZShzdGF0
ZSkKKyAgICAgICAgLCBwb2ludChwb2ludCkKKyAgICAgICAgLCBpZChpZCkKKyAgICB7CisgICAg
fQorCisgICAgdW5zaWduZWQgaWQ7CisgICAgRXdrX1RvdWNoX1BvaW50X1R5cGUgc3RhdGU7Cisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQ7Cit9OworCitzdGF0aWMgdW5zaWduZWQgdG91Y2hN
b2RpZmllcnM7CisKK1dURjo6VmVjdG9yPFRvdWNoRXZlbnRJbmZvPiYgdG91Y2hQb2ludExpc3Qo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpWZWN0b3I8VG91Y2hFdmVudEluZm8+
LCBzdGF0aWNUb3VjaFBvaW50TGlzdCwgKCkpOworICAgIHJldHVybiBzdGF0aWNUb3VjaFBvaW50
TGlzdDsKK30KKwogV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50PiYgZGVsYXllZEV2ZW50UXVldWUo
KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoV1RGOjpWZWN0b3I8RGVsYXllZEV2ZW50Piwg
c3RhdGljRGVsYXllZEV2ZW50UXVldWUsICgpKTsKQEAgLTU4OSw2ICs2MTMsMTYzIEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93bkNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgdm9pZCBzZW5kVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlw
ZSB0eXBlKQoreworICAgIEVpbmFfTGlzdCogZXZlbnRMaXN0ID0gMDsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50TGlzdCgpLnNpemUoKTsgKytpKSB7CisgICAgICAg
IEV3a19Ub3VjaF9Qb2ludCogZXZlbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OworICAgICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQoaSkucG9pbnQ7Cisg
ICAgICAgIGV2ZW50LT5pZCA9IHRvdWNoUG9pbnRMaXN0KCkuYXQoaSkuaWQ7CisgICAgICAgIGV2
ZW50LT54ID0gcG9pbnQueCgpOworICAgICAgICBldmVudC0+eSA9IHBvaW50LnkoKTsKKyAgICAg
ICAgZXZlbnQtPnN0YXRlID0gdG91Y2hQb2ludExpc3QoKS5hdChpKS5zdGF0ZTsKKyAgICAgICAg
ZXZlbnRMaXN0ID0gZWluYV9saXN0X2FwcGVuZChldmVudExpc3QsIGV2ZW50KTsKKyAgICB9CisK
KyAgICBld2tfZnJhbWVfZmVlZF90b3VjaF9ldmVudChicm93c2VyLT5tYWluRnJhbWUoKSwgdHlw
ZSwgZXZlbnRMaXN0LCB0b3VjaE1vZGlmaWVycyk7CisKKyAgICB2b2lkKiBsaXN0RGF0YTsKKyAg
ICBFSU5BX0xJU1RfRlJFRShldmVudExpc3QsIGxpc3REYXRhKSB7CisgICAgICAgIEV3a19Ub3Vj
aF9Qb2ludCogZXZlbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihsaXN0RGF0YSk7
CisgICAgICAgIGRlbGV0ZSBldmVudDsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG91Y2hQb2ludExpc3QoKS5zaXplKCk7ICkgeworICAgICAgICBpZiAodG91Y2hQb2lu
dExpc3QoKS5hdChpKS5zdGF0ZSA9PSBFV0tfVE9VQ0hfUE9JTlRfUkVMRUFTRUQpCisgICAgICAg
ICAgICB0b3VjaFBvaW50TGlzdCgpLnJlbW92ZShpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0b3VjaFBvaW50TGlzdCgpLmF0KGkpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1NUQVRJ
T05BUlk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBK
U1ZhbHVlUmVmIGFkZFRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IHggPSBzdGF0aWNfY2FzdDxpbnQ+
KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAg
IEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICBpbnQgeSA9IHN0YXRpY19j
YXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9u
KSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworCisgICAgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQoeCwgeSk7CisgICAgY29uc3QgdW5zaWduZWQgaWQgPSB0
b3VjaFBvaW50TGlzdCgpLmlzRW1wdHkoKSA/IDAgOiB0b3VjaFBvaW50TGlzdCgpLmxhc3QoKS5p
ZCArIDE7CisgICAgVG91Y2hFdmVudEluZm8gZXZlbnRJbmZvKGlkLCBFV0tfVE9VQ0hfUE9JTlRf
UFJFU1NFRCwgcG9pbnQpOworICAgIHRvdWNoUG9pbnRMaXN0KCkuYXBwZW5kKGV2ZW50SW5mbyk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHRvdWNoU3RhcnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCit7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHVw
ZGF0ZVRvdWNoUG9pbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NF
UlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CisgICAgaW50IHggPSBzdGF0aWNfY2FzdDxp
bnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOwor
ICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKKyAgICBpbnQgeSA9IHN0YXRp
Y19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0
aW9uKSk7CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworCisgICAgaWYg
KGluZGV4IDwgMCB8fCBpbmRleCA+PSB0b3VjaFBvaW50TGlzdCgpLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50ID0gdG91Y2hQb2ludExpc3QoKS5hdChpbmRleCkucG9pbnQ7CisgICAgcG9p
bnQuc2V0WCh4KTsKKyAgICBwb2ludC5zZXRZKHkpOworICAgIHRvdWNoUG9pbnRMaXN0KCkuYXQo
aW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX01PVkVEOworCisgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiB0b3VjaE1v
dmVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNo
RXZlbnQoRVdLX1RPVUNIX01PVkUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgY2FuY2VsVG91Y2hQb2ludENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCAh
PSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBh
cmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghZXhjZXB0aW9uIHx8ICEqZXhj
ZXB0aW9uKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRvdWNoUG9pbnRMaXN0KCku
c2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisK
KyAgICB0b3VjaFBvaW50TGlzdCgpLmF0KGluZGV4KS5zdGF0ZSA9IEVXS19UT1VDSF9QT0lOVF9D
QU5DRUxMRUQ7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CitzdGF0aWMgSlNWYWx1ZVJlZiB0b3VjaENhbmNlbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfQ0FOQ0VMKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIHJlbGVhc2VUb3VjaFBvaW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0
PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7
CisgICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOworICAgIGlmIChpbmRleCA8
IDAgfHwgaW5kZXggPj0gdG91Y2hQb2ludExpc3QoKS5zaXplKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIHRvdWNoUG9pbnRMaXN0KCkuYXQo
aW5kZXgpLnN0YXRlID0gRVdLX1RPVUNIX1BPSU5UX1JFTEVBU0VEOworICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgdG91Y2hF
bmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgc2VuZFRvdWNo
RXZlbnQoRVdLX1RPVUNIX0VORCk7CisgICAgdG91Y2hNb2RpZmllcnMgPSAwOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYg
Y2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICB0b3VjaFBvaW50TGlzdCgpLmNsZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUb3VjaE1vZGlmaWVy
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVu
dENvdW50ICE9IDIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc01vZGlmaWVyKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAg
dW5zaWduZWQgbWFzayA9IDA7CisKKyAgICBpZiAoZXF1YWxzKGpzTW9kaWZpZXIsICJhbHQiKSkK
KyAgICAgICAgbWFzayB8PSBFQ09SRV9FVkVOVF9NT0RJRklFUl9BTFQ7CisgICAgZWxzZSBpZiAo
ZXF1YWxzKGpzTW9kaWZpZXIsICJjdHJsIikpCisgICAgICAgIG1hc2sgfD0gRUNPUkVfRVZFTlRf
TU9ESUZJRVJfQ1RSTDsKKyAgICBlbHNlIGlmIChlcXVhbHMoanNNb2RpZmllciwgIm1ldGEiKSkK
KyAgICAgICAgbWFzayB8PSBFQ09SRV9FVkVOVF9NT0RJRklFUl9XSU47CisgICAgZWxzZSBpZiAo
ZXF1YWxzKGpzTW9kaWZpZXIsICJzaGlmdCIpKQorICAgICAgICBtYXNrIHw9IEVDT1JFX0VWRU5U
X01PRElGSUVSX1NISUZUOworCisgICAgaWYgKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJn
dW1lbnRzWzFdKSkKKyAgICAgICAgdG91Y2hNb2RpZmllcnMgfD0gbWFzazsKKyAgICBlbHNlCisg
ICAgICAgIHRvdWNoTW9kaWZpZXJzICY9IH5tYXNrOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNG
dW5jdGlvbnNbXSA9IHsKICAgICB7ICJtb3VzZVNjcm9sbEJ5IiwgbW91c2VTY3JvbGxCeUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgeyAiY29udGludW91c01vdXNlU2Nyb2xsQnkiLCBjb250aW51b3Vz
TW91c2VTY3JvbGxCeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC02MDQsNiArNzg1LDE2IEBAIHN0YXRp
YyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1bmN0aW9uc1tdID0gewogICAgIHsgInRleHRab29t
T3V0IiwgdGV4dFpvb21PdXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgInpvb21QYWdlSW4iLCB6
b29tUGFnZUluQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJ6b29tUGFnZU91dCIsIHpvb21QYWdl
T3V0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICB7ICJhZGRUb3VjaFBvaW50IiwgYWRkVG91Y2hQb2lu
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgeyAidG91Y2hTdGFydCIsIHRvdWNoU3RhcnRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgIHsgInVwZGF0ZVRvdWNoUG9pbnQiLCB1cGRhdGVUb3VjaFBvaW50Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKKyAgICB7ICJ0b3VjaE1vdmUiLCB0b3VjaE1vdmVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgIHsgInJlbGVhc2VUb3VjaFBvaW50IiwgcmVsZWFzZVRvdWNoUG9pbnRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgIHsgInRvdWNoRW5kIiwgdG91Y2hFbmRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgIHsgImNhbmNlbFRvdWNoUG9pbnQiLCBjYW5jZWxUb3VjaFBvaW50Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICB7ICJ0b3VjaENhbmNlbCIsIHRvdWNoQ2FuY2VsQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICB7ICJjbGVhclRvdWNoUG9pbnRzIiwgY2xlYXJUb3VjaFBvaW50c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgeyAic2V0VG91Y2hNb2RpZmllciIsIHNldFRvdWNoTW9kaWZpZXJDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgIHsgMCwgMCwgMCB9CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG0KaW5kZXggY2E0ZGQ3MjU1ZTQwNWM0NDVhMzJlODViOWZkN2M5OGQ1ZDM4MTI3Ni4u
MTMxMTEzZjRkMDEyNDZmYTg1NjRhY2E3ZTUyYTExYTIwOTQyMWE4YiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzI2LDcgKzMyNiw3IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICAgIGRlZmluZSA9PiAiV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFIiwgZGVm
YXVsdCA9PiBpc1F0KCksIHZhbHVlID0+IFwkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0IH0sCiAK
ICAgICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEV2
ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRl
ZmF1bHQgPT4gKGlzUXQoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkdG91Y2hFdmVu
dHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9FVkVOVFMiLCBkZWZh
dWx0ID0+IChpc1F0KCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwk
dG91Y2hFdmVudHNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2Fk
aW5nIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFs
dWUgPT4gXCR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3ZDA1NzBlZmI3NGQ3
ZjFmYTQzZTcwNjdkYTNiOWJhNDdjYTYwODYuLjA0ZDdmMWZjM2RiMjI0OGU2ZmQwODJiNTNjY2Ew
YzU4ZGFmYTFlOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0yMSAgS2FuZ2lsIEhh
biAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1l
bnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50LgorICAg
ICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBpdCBhbmQgaW1wbGVtZW50ZWQgc29t
ZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9l
ZmwvU2tpcHBlZDoKKwogMjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTQxOTkzMz4gUHJvYmxlbXMgd2l0aCBmbGlw
cGVkIHdyaXRpbmcgbW9kZXMgYW5kIGNvbXBvc2l0aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CmluZGV4IDE0MzQzY2JkZDcxZDMyYjFmZWIwOWM5ZjY0NzkwYjI1ZTk4MDY0ZGMuLmYxNWRiZTU2
ZTMzZGI5OTM5NzNlMzlkNDgwMWM2NzcwYmIzZWYzM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lw
cGVkCkBAIC01Niw4ICs1Niw5IEBAIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNl
ZC1kcmFnZ2VkLWZpbGUuaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YQogaHR0cC90ZXN0
cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLmh0bWwKIAotIyBFRkwn
cyBFdmVudFNlbmRlciBkb2VzIG5vdCBpbXBsZW1lbnQgYWRkVG91Y2hQb2ludCwgY2xlYXJUb3Vj
aFBvaW50cywgdG91Y2hTdGFydCBhbmQgb3RoZXIgdG91Y2gtcmVsYXRlZCBjYWxsYmFja3MKLWZh
c3QvZXZlbnRzL3RvdWNoCisjIEVGTCdzIEV2ZW50U2VuZGVyIGRvZXMgbm90IGltcGxlbWVudCBn
ZXN0dXJlLXJlbGF0ZWQgY2FsbGJhY2tzCitmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlCitmYXN0
L2V2ZW50cy90b3VjaC9wYWdlLXNjYWxlZC10b3VjaC1nZXN0dXJlLWNsaWNrLmh0bWwKIAogIyBF
RkwncyBwb3J0IHJlcXVpcmVzIGltcGxlbWVudGF0aW9uIG9mIENsaXBib2FyZEVmbCBhbmQgRHJh
Z0NsaWVudEVmbCBjbGFzc2VzIGluIG9yZGVyIHRvIHN1cHBwb3J0IGRyYWcgbiBkcm9wIGZ1bmN0
aW9uYWxpdHkKIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc3ViZnJhbWUtZGF0YVRyYW5zZmVy
Lmh0bWwKQEAgLTU0Miw2ICs1NDMsNyBAQCBmYXN0L2Zvcm1zL251bWJlci9pbnB1dC1udW1iZXIt
c2l6ZS5odG1sCiBmYXN0L2Zvcm1zL251bWJlci9pbnB1dC1zcGluYnV0dG9uLWNhcHR1cmluZy5o
dG1sCiBmYXN0L2Zvcm1zL251bWJlci9zcGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRv
bmx5Lmh0bWwKIGZhc3QvZm9ybXMvbnVtYmVyL3NwaW4tYnV0dG9uLXN0YXRlLmh0bWwKK2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLWJlZm9yZS1wcmVzc2luZy1zcGluLWJ1dHRvbi5odG1sCiAKICMg
VGhpcyB0ZXN0IGlzIG91dC1kYXRlZCBzaW5jZSByOTU4OTkuCiAjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTcwOQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IGUyOGFiZGQwY2E2MTdhZTQxMDBhMWUwNzZhYjBiNzgyNmE3NWYwM2YuLjc5
YWVlZTBhZWEwZjBhZDA0YjgyZGEzODVkOWZhMGIyZDhlN2U3NWIgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNS0yMSAgS2FuZ2ls
IEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bRFJUXSBJbXBs
ZW1lbnQgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg2NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ3VycmVudGx5IEVGTCBEUlQgZG9lc24ndCBzdXBwb3J0IHRvdWNoIGV2ZW50Lgor
ICAgICAgICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZW5hYmxlZCBpdCBhbmQgaW1wbGVtZW50ZWQg
c29tZSBldmVudFNlbmRlciBmdW5jdGlvbiBjYWxsYmFja3MuCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvRmluZEVGTC5jbWFrZTogQWRkIGVjb3JlLWlucHV0IHRvIGRlcGVuZGVuY3kgY2hlY2su
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6IEVuYWJsZSB0b3VjaCBl
dmVudCBvcHRpb24uCisKIDIwMTItMDUtMTcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTE3NDI4KTogV2ViS2l0IEFQSS9TUEkgd2FzIHJl
bW92ZWQK
</data>

          </attachment>
      

    </bug>

</bugzilla>