<?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>73430</bug_id>
          
          <creation_ts>2011-11-30 04:45:18 -0800</creation_ts>
          <short_desc>[EFL] Add pre-rendering implementation.</short_desc>
          <delta_ts>2012-01-06 03:25:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>0</everconfirmed>
          <reporter name="JungJik Lee">jungjik.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>t.morawski</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>511632</commentid>
    <comment_count>0</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-11-30 04:45:18 -0800</bug_when>
    <thetext>This is different way of pre-rendering. Main difference is the way of queuing the request.
The request which is close to view port queues in spiral order so that backing store render the nearest request to viewport first.
And other difference is calculating the pre-rendering region. EFL port calculates the region of pre-rendering itself.
so that the region is as big as the memory can support, and while scrolling, no white tiles can be shown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511635</commentid>
    <comment_count>1</comment_count>
      <attachid>117171</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-11-30 04:49:15 -0800</bug_when>
    <thetext>Created attachment 117171
proposal patch

proposal patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511639</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 04:54:11 -0800</bug_when>
    <thetext>Attachment 117171 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:22:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebKit/efl/ewk/ewk_view.h:318:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511673</commentid>
    <comment_count>3</comment_count>
      <attachid>117177</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-11-30 05:51:31 -0800</bug_when>
    <thetext>Created attachment 117177
fix style check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512247</commentid>
    <comment_count>4</comment_count>
      <attachid>117177</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-30 16:58:03 -0800</bug_when>
    <thetext>Comment on attachment 117177
fix style check

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

&gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; +#define ARGB_BYTES_SIZE 4

I think it is better to use EWK_ prefix to recognize that this macro is defined by ewebkit.

&gt; Source/WebKit/efl/ewk/ewk_util.h:34
&gt; +int ewk_util_rect_collision_check(int destinationX, int destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight);

I&apos;m not sure if we have to put this function on ewk_util.cpp. Will this function be able to be used by single backing store ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512273</commentid>
    <comment_count>5</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-11-30 17:18:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 117177 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117177&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; &gt; +#define ARGB_BYTES_SIZE 4
OK, I will fix it.
&gt; 
&gt; I think it is better to use EWK_ prefix to recognize that this macro is defined by ewebkit.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_util.h:34
&gt; &gt; +int ewk_util_rect_collision_check(int destinationX, int destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight);
&gt; 
&gt; I&apos;m not sure if we have to put this function on ewk_util.cpp. Will this function be able to be used by single backing store ?

the original intention was making a common basic API like eina_rectangle_interection. so I put them in ewk_util. I am also not sure it will be used in other function. So how do you think it should be moved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512284</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-30 17:33:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 117177 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117177&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; &gt; &gt; +#define ARGB_BYTES_SIZE 4
&gt; OK, I will fix it.
&gt; &gt; 
&gt; &gt; I think it is better to use EWK_ prefix to recognize that this macro is defined by ewebkit.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_util.h:34
&gt; &gt; &gt; +int ewk_util_rect_collision_check(int destinationX, int destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight);
&gt; &gt; 
&gt; &gt; I&apos;m not sure if we have to put this function on ewk_util.cpp. Will this function be able to be used by single backing store ?
&gt; 
&gt; the original intention was making a common basic API like eina_rectangle_interection. so I put them in ewk_util. I am also not sure it will be used in other function. So how do you think it should be moved?

If these functions will not be used by other functions, IMO, it is better to move them to ewk_tiled_xxx files. For example, ewk_tiled_private.h and so on. When other functions need to use them, I think we can move them to ewk_util.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512289</commentid>
    <comment_count>7</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-11-30 17:44:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 117177 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117177&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; &gt; &gt; &gt; +#define ARGB_BYTES_SIZE 4
&gt; &gt; OK, I will fix it.
&gt; &gt; &gt; 
&gt; &gt; &gt; I think it is better to use EWK_ prefix to recognize that this macro is defined by ewebkit.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_util.h:34
&gt; &gt; &gt; &gt; +int ewk_util_rect_collision_check(int destinationX, int destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight);
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure if we have to put this function on ewk_util.cpp. Will this function be able to be used by single backing store ?
&gt; &gt; 
&gt; &gt; the original intention was making a common basic API like eina_rectangle_interection. so I put them in ewk_util. I am also not sure it will be used in other function. So how do you think it should be moved?
&gt; 
&gt; If these functions will not be used by other functions, IMO, it is better to move them to ewk_tiled_xxx files. For example, ewk_tiled_private.h and so on. When other functions need to use them, I think we can move them to ewk_util.

Ok, then I will move APIs to ewk_view_tiled_XXX and change them to static inline functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512755</commentid>
    <comment_count>8</comment_count>
      <attachid>117417</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-01 07:32:50 -0800</bug_when>
    <thetext>Created attachment 117417
edited by comment.

ARGB_BYTES_SIZE rename to EWK_ARGB_BYTES_SIZE and ewk_util_XX functions are moved to ewk_view_tiled_XXX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524443</commentid>
    <comment_count>9</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2011-12-19 22:16:53 -0800</bug_when>
    <thetext>&gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; +#define EWK_ARGB_BYTES_SIZE 4

I suggest you to put this into ewk_tiled_backing_store.h since only backing store is using it.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:24
&gt; +#include &quot;ewk_private.h&quot;

I think that this can be removed.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1868
&gt; +        viewRect-&gt;x, viewRect-&gt;y, viewRect-&gt;w, viewRect-&gt;h, tileWidth, tileHeight)) {

Do you have any reason these must have two lines ?

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1874
&gt; +        renderRect-&gt;x, renderRect-&gt;y, renderRect-&gt;w, renderRect-&gt;h, tileWidth, tileHeight)) {

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:1257
&gt; + * This is an alternative method to pre-render the view area.

may you mean &quot;pre-render the view area&quot; -&gt; &quot;pre-render around the view area&quot;.

&gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:237
&gt; +static inline void _ewk_view_tiled_rect_collision_resolve(int direction, int* destinationX, int* destinationY, int* destinationWidth, int* destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight)

As no new assignment for destinationWidth and destinationHeight was found, why should it be pointer ?

&gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:277
&gt; +        &amp;&amp; smartData-&gt;previousView.zoom == currentViewZoom) {

Do you have any reason these must have three lines ?
currentViewZoom is just available from this line, but you put the code to bring it from the beginning of the function.
I suggest you to move calling of it into somewhere near the this condition block.

&gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525068</commentid>
    <comment_count>10</comment_count>
    <who name="KwangHyuk">hyuki.kim</who>
    <bug_when>2011-12-20 20:28:33 -0800</bug_when>
    <thetext>&gt; Source/WebKit/efl/ewk/ewk_view.h:182
&gt; +#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

I have got one more idea from Kubo. :)
You need to update EWK_VIEW_SMART_CLASS_VERSION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526688</commentid>
    <comment_count>11</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-22 18:43:50 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:51
&gt; &gt; +#define EWK_ARGB_BYTES_SIZE 4
&gt; 
&gt; I suggest you to put this into ewk_tiled_backing_store.h since only backing store is using it.

This value is using in view and backing store both, so it should be in ewk_private.h

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:24
&gt; &gt; +#include &quot;ewk_private.h&quot;
&gt; 
&gt; I think that this can be removed.
&gt; 

Due to EWK_ARGB_BYTES_SIZE, it is necessary.

&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1868
&gt; &gt; +        viewRect-&gt;x, viewRect-&gt;y, viewRect-&gt;w, viewRect-&gt;h, tileWidth, tileHeight)) {
&gt; 
&gt; Do you have any reason these must have two lines ?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1874
&gt; &gt; +        renderRect-&gt;x, renderRect-&gt;y, renderRect-&gt;w, renderRect-&gt;h, tileWidth, tileHeight)) {
&gt; 
&gt; Ditto.
&gt; 

It looks too long so I split it up to two lines.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:1257
&gt; &gt; + * This is an alternative method to pre-render the view area.
&gt; 
&gt; may you mean &quot;pre-render the view area&quot; -&gt; &quot;pre-render around the view area&quot;.
&gt; 

OK, I will change the comment.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:237
&gt; &gt; +static inline void _ewk_view_tiled_rect_collision_resolve(int direction, int* destinationX, int* destinationY, int* destinationWidth, int* destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight)
&gt; 
&gt; As no new assignment for destinationWidth and destinationHeight was found, why should it be pointer ?
&gt; 

No necessary to be a pointer, I will change them.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:277
&gt; &gt; +        &amp;&amp; smartData-&gt;previousView.zoom == currentViewZoom) {
&gt; 
&gt; Do you have any reason these must have three lines ?
&gt; currentViewZoom is just available from this line, but you put the code to bring it from the beginning of the function.
&gt; I suggest you to move calling of it into somewhere near the this condition block.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:292

Looks too long, same reason. and I will move the currentViewZoom near by condition block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526689</commentid>
    <comment_count>12</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-22 18:44:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:182
&gt; &gt; +#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
&gt; 
&gt; I have got one more idea from Kubo. :)
&gt; You need to update EWK_VIEW_SMART_CLASS_VERSION.

I will up the version number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526715</commentid>
    <comment_count>13</comment_count>
      <attachid>120430</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-22 20:18:49 -0800</bug_when>
    <thetext>Created attachment 120430
edited patch

fixed by following the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526725</commentid>
    <comment_count>14</comment_count>
      <attachid>120430</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-12-22 21:42:09 -0800</bug_when>
    <thetext>Comment on attachment 120430
edited patch

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

&gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:236
&gt; +static inline void _ewk_view_tiled_rect_collision_resolve(int direction, int* destinationX, int* destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight)

IMO, how about using IntRect or Eina_Rectangle for internal functions ?

IntRect is better for me.

&gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:239
&gt; +        *destinationX = *destinationX + (sourceX - *destinationX);

I don&apos;t know what you want, but it looks strange.
*destinationX will be sourceX.

In addition 1, 2, 4, 8 can be enumaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526781</commentid>
    <comment_count>15</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-23 02:12:17 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 120430 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120430&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:236
&gt; &gt; +static inline void _ewk_view_tiled_rect_collision_resolve(int direction, int* destinationX, int* destinationY, int destinationWidth, int destinationHeight, int sourceX, int sourceY, int sourceWidth, int sourceHeight)
&gt; 
&gt; IMO, how about using IntRect or Eina_Rectangle for internal functions ?
&gt; 
&gt; IntRect is better for me.
&gt; 
IntRect is big for this, I will change it with using Eina_Rectangle.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view_tiled.cpp:239
&gt; &gt; +        *destinationX = *destinationX + (sourceX - *destinationX);
&gt; 
&gt; I don&apos;t know what you want, but it looks strange.
&gt; *destinationX will be sourceX.
&gt; 
&gt; In addition 1, 2, 4, 8 can be enumaration.

I totally agree that it means nothing. I will change them again!
Enumeration is considerable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526785</commentid>
    <comment_count>16</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2011-12-23 02:27:33 -0800</bug_when>
    <thetext>Few small comments:

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1881
&gt; +    const int maxViewSideLength = std::max(viewSlicer.col2 - viewSlicer.col1 , viewSlicer.row2 - viewSlicer.row1);

Codint style: &apos; ,&apos;. And line below this same. 

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1892
&gt; +        for (int i = 1; i &lt; step * squareSide + 1; i++) {

&quot;step * squareSide + 1&quot; this could be moved outside the loop.

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1919
&gt; +            if (static_cast&lt;int&gt;(viewSlicer.col1) &lt; centerColumn

It may look better when these static_cast operations will be done once before this two ifs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526802</commentid>
    <comment_count>17</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-23 03:16:44 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Few small comments:
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1881
&gt; &gt; +    const int maxViewSideLength = std::max(viewSlicer.col2 - viewSlicer.col1 , viewSlicer.row2 - viewSlicer.row1);
&gt; 
&gt; Codint style: &apos; ,&apos;. And line below this same. 
&gt; 
I will fix the coding style.

&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1892
&gt; &gt; +        for (int i = 1; i &lt; step * squareSide + 1; i++) {
&gt; 
&gt; &quot;step * squareSide + 1&quot; this could be moved outside the loop.
&gt; 
why should it be outside the loop? what makes difference?

&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1919
&gt; &gt; +            if (static_cast&lt;int&gt;(viewSlicer.col1) &lt; centerColumn
&gt; 
&gt; It may look better when these static_cast operations will be done once before this two ifs
To do so I have to assign the values to new values. Does it need?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527180</commentid>
    <comment_count>18</comment_count>
      <attachid>120544</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2011-12-26 03:13:18 -0800</bug_when>
    <thetext>Created attachment 120544
fourth edition patch

coding style and minor fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528664</commentid>
    <comment_count>19</comment_count>
      <attachid>120544</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-02 22:03:35 -0800</bug_when>
    <thetext>Comment on attachment 120544
fourth edition patch

It seems there are no critical problems. LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529271</commentid>
    <comment_count>20</comment_count>
      <attachid>121045</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-03 20:30:09 -0800</bug_when>
    <thetext>Created attachment 121045
rebased_patch

I got an informal review so file the rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529445</commentid>
    <comment_count>21</comment_count>
      <attachid>121092</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-04 03:51:04 -0800</bug_when>
    <thetext>Created attachment 121092
minor fix

a patch fixed by following webkit style coding rules and integer calculation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529450</commentid>
    <comment_count>22</comment_count>
      <attachid>121092</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-01-04 04:06:24 -0800</bug_when>
    <thetext>Comment on attachment 121092
minor fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529460</commentid>
    <comment_count>23</comment_count>
      <attachid>121092</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-04 04:31:03 -0800</bug_when>
    <thetext>Comment on attachment 121092
minor fix

Attachment 121092 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11084443

New failing tests:
http/tests/inspector/resource-tree/resource-tree-document-url.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529904</commentid>
    <comment_count>24</comment_count>
      <attachid>121192</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-04 17:37:02 -0800</bug_when>
    <thetext>Created attachment 121192
rebase patch

due to a failure in chrome test, I filed new rebased patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530247</commentid>
    <comment_count>25</comment_count>
      <attachid>121192</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 06:32:16 -0800</bug_when>
    <thetext>Comment on attachment 121192
rebase patch

Rejecting attachment 121192 from commit-queue.

New failing tests:
http/tests/inspector/network/download.html
Full output: http://queues.webkit.org/results/11126312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530899</commentid>
    <comment_count>26</comment_count>
      <attachid>121391</attachid>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-01-05 20:38:15 -0800</bug_when>
    <thetext>Created attachment 121391
upload again due to cr-linux failure.

it is the same with the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531025</commentid>
    <comment_count>27</comment_count>
      <attachid>121391</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-06 03:25:40 -0800</bug_when>
    <thetext>Comment on attachment 121391
upload again due to cr-linux failure.

Clearing flags on attachment: 121391

Committed r104282: &lt;http://trac.webkit.org/changeset/104282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531026</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-06 03:25:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117171</attachid>
            <date>2011-11-30 04:49:15 -0800</date>
            <delta_ts>2011-11-30 05:51:31 -0800</delta_ts>
            <desc>proposal patch</desc>
            <filename>proposal.patch</filename>
            <type>text/plain</type>
            <size>21078</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAyNjU2OThlLi4wN2IwYTIwIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMzAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgor
ICAgICAgICAoZXdrX3V0aWxfcmVjdF9jb2xsaXNpb25fY2hlY2spOgorICAgICAgICAoZXdrX3V0
aWxfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAgICAgICogZXdrL2V3a191dGlsLmg6Cisg
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3N0YXJ0KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5o
OgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNzKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9z
bWFydF9wcmVfcmVuZGVyX3N0YXJ0KToKKyAgICAgICAgKGV3a192aWV3X3RpbGVkX3NtYXJ0X3Nl
dCk6CisKIDIwMTEtMTEtMjggIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gUmVuYW1lIGFiYnJldmlhdGVkIHZhbHVlIG5hbWVzIHRvIGNwcCBz
dHlsZSBuYW1lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggZjEyODI1NS4u
NGVlYTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgZXh0ZXJuICJDIiB7CiAKIC8vIElmIGRlZmluZWQsIGV3ayB3aWxsIGRvIHR5cGUgY2hlY2tp
bmcgdG8gZW5zdXJlIG9iamVjdHMgYXJlIG9mIGNvcnJlY3QgdHlwZQogI2RlZmluZSBFV0tfVFlQ
RV9DSEVDSyAxCisjZGVmaW5lIEFSR0JfQllURVNfU0laRSA0CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNkZWZpbmUgRVdLX0pTX09CSkVDVF9NQUdJQyAweDY5Njk2OQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKaW5k
ZXggZDM0NGQ3Zi4uYjdmYzcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oIgogCiAjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeC5oIgpAQCAt
MTgzMCw2ICsxODMxLDExMSBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2
YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAjZW5kaWYKIH0KIAorRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQoRXZhc19PYmplY3QqIGV3a0Jh
Y2tpbmdTdG9yZSwgaW50IGNvbHVtbiwgaW50IHJvdywgZmxvYXQgem9vbSkKK3sKKyAgICBQUklW
X0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKKworICAg
IGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMocHJpdi0+bW9kZWwubWF0cml4
LCBjb2x1bW4sIHJvdywgem9vbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQocHJpdiwgY29s
dW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3Bp
cmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEVpbmFfUmVjdGFuZ2xlKiB2
aWV3UmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlclJlY3QsIGludCBtYXhNZW1vcnksIGZsb2F0
IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBw
cml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXdSZWN0
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlbmRlclJlY3Qs
IGZhbHNlKTsKKworICAgIGNvbnN0IGludCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lk
dGg7CisgICAgY29uc3QgaW50IHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0Owor
CisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHZpZXdTbGljZXI7CisgICAgRWluYV9UaWxlX0dy
aWRfU2xpY2VyIHJlbmRlclNsaWNlcjsKKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2Vy
X3NldHVwKCZ2aWV3U2xpY2VyLAorICAgICAgICB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZp
ZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KSkgeworICAgICAg
ICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZpZXdTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRp
bGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVj
dC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZyZW5kZXJTbGljZXIs
CisgICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3QtPnksIHJlbmRlclJlY3QtPncsIHJl
bmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICAgICAgRVJSKCJjb3Vs
ZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQi
LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT53LCByZW5kZXJSZWN0
LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUgbG9vcAorICAgIGludCBtZW1vcnlMaW1pdHMg
PSBtYXhNZW1vcnkgLyBBUkdCX0JZVEVTX1NJWkUgLyB0aWxlV2lkdGggLyB0aWxlSGVpZ2h0Owor
ICAgIGNvbnN0IGludCBtYXhWaWV3U2lkZUxlbmd0aCA9IHN0ZDo6bWF4KHZpZXdTbGljZXIuY29s
MiAtIHZpZXdTbGljZXIuY29sMSAsIHZpZXdTbGljZXIucm93MiAtIHZpZXdTbGljZXIucm93MSk7
CisgICAgY29uc3QgaW50IG1heFJlbmRlclNpZGVMZW5ndGggPSBzdGQ6Om1heChyZW5kZXJTbGlj
ZXIuY29sMiAtIHJlbmRlclNsaWNlci5jb2wxICwgcmVuZGVyU2xpY2VyLnJvdzIgLSByZW5kZXJT
bGljZXIucm93MSk7CisgICAgY29uc3QgaW50IG1heExvb3BDb3VudCA9IG1heFZpZXdTaWRlTGVu
Z3RoICsgbWF4UmVuZGVyU2lkZUxlbmd0aDsKKworICAgIC8vIHNwaXJlIHN0YXJ0cyBmcm9tIHRo
ZSBjZW50ZXIgb2YgdGhlIHZpZXcgYXJlYQorICAgIGludCBjZW50ZXJDb2x1bW4gPSAodmlld1Ns
aWNlci5jb2wxICsgdmlld1NsaWNlci5jb2wyKSAvIDI7CisgICAgaW50IGNlbnRlclJvdyA9ICh2
aWV3U2xpY2VyLnJvdzEgKyB2aWV3U2xpY2VyLnJvdzIpIC8gMjsKKworICAgIGludCBzdGVwID0g
MTsKKyAgICBjb25zdCBpbnQgc3F1YXJlU2lkZSA9IDQ7CisgICAgZm9yIChpbnQgbG9vcCA9IDA7
IGxvb3AgPCBtYXhMb29wQ291bnQ7IGxvb3ArKykgeworICAgICAgICBmb3IgKGludCBpID0gMTsg
aSA8IHN0ZXAgKiBzcXVhcmVTaWRlICsgMTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobWVtb3J5
TGltaXRzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG1lbW9yeUxpbWl0c1JlYWNoZWQ7Cisg
ICAgICAgICAgICAvKgorICAgICAgICAgICAgdGhpcyBjb2RlIG1lYW5zIHRoZSBsb29wIHJ1bnMg
bGlrZSBzcGlyYWwgKGkuZy4gbGVmdC0+ZG93bi0+cmlnaHQtPnVwKQorICAgICAgICAgICAgd2hl
biBpdCBtb3ZlcyBiYWNrIHRvIG9yaWdpbmFsIHBsYWNlIGFuZCB0aGVuIHdhbGsgMSB0aWxlIGxl
ZnQgYW5kIHVwLgorICAgICAgICAgICAgdGhlIGxvb3Aga2VlcHMgb24gZG9pbmcgdGhpcyB1bnRp
bCBpdCByZWFjaGVzIG1heCBtZW1vcnkgdG8gZHJhdyB0aWxlcworICAgICAgICAgICAgZS5nLiAp
CisgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgMzIyMjIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIxMTIzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIxMTIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIyMjIzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgMzMzMzMzCisgICAgICAgICAgICAqLworICAgICAgICAgICAg
aWYgKGkgPiAwICYmIGkgPD0gc3RlcCkKKyAgICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4rKzsg
Ly8gbW92ZSBsZWZ0CisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAmJiBpIDw9IHN0ZXAg
KiAyKQorICAgICAgICAgICAgICAgIGNlbnRlclJvdysrOyAvLyBtb3ZlIGRvd24KKyAgICAgICAg
ICAgIGVsc2UgaWYgKGkgPiBzdGVwICogMiAmJiBpIDw9IHN0ZXAgKiAzKQorICAgICAgICAgICAg
ICAgIGNlbnRlckNvbHVtbi0tOyAvLyBtb3ZlIHJpZ2h0CisgICAgICAgICAgICBlbHNlIGlmIChp
ID4gc3RlcCAqIDMgJiYgaSA8PSBzdGVwICogNCkKKyAgICAgICAgICAgICAgICBjZW50ZXJSb3ct
LTsgLy8gbW92ZSB1cAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEVSUigiRVJS
T1IgOiBvdXQgb2YgYm91bmRzXHJcbiIpOworCisgICAgICAgICAgICAvLyBza2lwIGluIHZpZXcg
cG9ydCBhcmVhCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLmNv
bDEpIDwgY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50Pih2
aWV3U2xpY2VyLmNvbDIpID4gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGlj
X2Nhc3Q8aW50Pih2aWV3U2xpY2VyLnJvdzEpIDwgY2VudGVyUm93CisgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLnJvdzIpID4gY2VudGVyUm93KQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihy
ZW5kZXJTbGljZXIuY29sMSkgPD0gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3Rh
dGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIuY29sMikgPj0gY2VudGVyQ29sdW1uCisgICAgICAg
ICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIucm93MSkgPD0gY2VudGVy
Um93CisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIucm93
MikgPj0gY2VudGVyUm93KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIWV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQoIGV3a0JhY2tpbmdTdG9yZSwgY2VudGVyQ29s
dW1uLCBjZW50ZXJSb3csIHpvb20pKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBEQkcoIlI+WyVkICVkXSAiLCBjZW50ZXJDb2x1bW4sIGNlbnRlclJvdyk7
CisgICAgICAgICAgICAgICAgbWVtb3J5TGltaXRzLS07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2VudGVyUm93LS07CisgICAgICAgIGNlbnRlckNvbHVtbi0tOworICAgICAg
ICBzdGVwID0gc3RlcCArIDI7CisgICAgfQorCittZW1vcnlMaW1pdHNSZWFjaGVkOgorICAgIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RhcnQocHJpdik7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCwg
ZmxvYXQgem9vbSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3Rv
cmUsIHByaXYsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9i
YWNraW5nX3N0b3JlLmgKaW5kZXggNzk0NTFhZS4uMGNjNzEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgKQEAgLTExNSw2ICsxMTUsNyBA
QCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hlX3NldChFdmFz
X09iamVjdCogbywgRXdrX1RpbGVfVW51cwogCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZh
c19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7CiBFaW5h
X0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMo
RXZhc19PYmplY3QqIG8sIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKTsKK0VpbmFfQm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVj
dCogbywgRWluYV9SZWN0YW5nbGUqIHZpZXdfcmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlcl9y
ZWN0LCBpbnQgbWF4X21lbW9yeSwgZmxvYXQgem9vbSk7CiB2b2lkIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKTsKIAogRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV2YXNfT2JqZWN0KiBvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3V0aWwuY3BwCmluZGV4IGI3NDAyNWEuLmEyMjMxM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a191dGlsLmNwcApAQCAtMTA4LDYgKzEwOCwzMyBAQCBFdmFzX09iamVjdCog
ZXdrX3V0aWxfaW1hZ2VfZnJvbV9jYWlyb19zdXJmYWNlX2FkZChFdmFzKiBjYW52YXMsIGNhaXJv
X3N1cmZhY2VfdAogICAgIHJldHVybiBpbWFnZTsKIH0KIAoraW50IGV3a191dGlsX3JlY3RfY29s
bGlzaW9uX2NoZWNrKGludCBkZXN0aW5hdGlvblgsIGludCBkZXN0aW5hdGlvblksIGludCBkZXN0
aW5hdGlvbldpZHRoLCBpbnQgZGVzdGluYXRpb25IZWlnaHQsIGludCBzb3VyY2VYLCBpbnQgc291
cmNlWSwgaW50IHNvdXJjZVdpZHRoLCBpbnQgc291cmNlSGVpZ2h0KQoreworICAgIGludCBkaXJl
Y3Rpb24gPSAwOworICAgIGlmIChkZXN0aW5hdGlvblggPCBzb3VyY2VYKQorICAgICAgICBkaXJl
Y3Rpb24gPSBkaXJlY3Rpb24gfCAoMSA8PCAwKTsgLy8gMCBiaXQgc2hpZnQsIGxlZnQKKyAgICBp
ZiAoZGVzdGluYXRpb25ZIDwgc291cmNlWSkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9u
IHwgKDEgPDwgMSk7IC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICBpZiAoZGVzdGluYXRpb25YICsg
ZGVzdGluYXRpb25XaWR0aCA+IHNvdXJjZVggKyBzb3VyY2VXaWR0aCkKKyAgICAgICAgZGlyZWN0
aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMik7IC8vIDIgYml0IHNoaWZ0LCByaWdodAorICAgIGlm
IChkZXN0aW5hdGlvblkgKyBkZXN0aW5hdGlvbkhlaWdodCA+IHNvdXJjZVkgKyBzb3VyY2VIZWln
aHQpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8IDMpOyAvLyAzIGJpdCBz
aGlmdCwgYm90dG9tCisgICAgREJHKCJjaGVjayBjb2xsaXNpb24gJWRcclxuIiwgZGlyZWN0aW9u
KTsKKyAgICByZXR1cm4gZGlyZWN0aW9uOworfQorCit2b2lkIGV3a191dGlsX3JlY3RfY29sbGlz
aW9uX3Jlc29sdmUoaW50IGRpcmVjdGlvbiwgaW50KiBkZXN0aW5hdGlvblgsIGludCogZGVzdGlu
YXRpb25ZLCBpbnQqIGRlc3RpbmF0aW9uV2lkdGgsIGludCogZGVzdGluYXRpb25IZWlnaHQsIGlu
dCBzb3VyY2VYLCBpbnQgc291cmNlWSwgaW50IHNvdXJjZVdpZHRoLCBpbnQgc291cmNlSGVpZ2h0
KQoreworICAgIGlmIChkaXJlY3Rpb24gJiAxKQorICAgICAgICAqZGVzdGluYXRpb25YID0gKmRl
c3RpbmF0aW9uWCArIChzb3VyY2VYIC0gKmRlc3RpbmF0aW9uWCk7CisgICAgaWYgKGRpcmVjdGlv
biAmIDIpCisgICAgICAgICpkZXN0aW5hdGlvblkgPSAqZGVzdGluYXRpb25ZICsgKHNvdXJjZVkg
LSAqZGVzdGluYXRpb25ZKTsKKyAgICBpZiAoZGlyZWN0aW9uICYgNCkKKyAgICAgICAgKmRlc3Rp
bmF0aW9uWCA9ICpkZXN0aW5hdGlvblggLSAoKCpkZXN0aW5hdGlvblggKyAqZGVzdGluYXRpb25X
aWR0aCkgLSAoc291cmNlWCArIHNvdXJjZVdpZHRoKSk7CisgICAgaWYgKGRpcmVjdGlvbiAmIDgp
CisgICAgICAgICpkZXN0aW5hdGlvblkgPSAqZGVzdGluYXRpb25ZIC0gKCgqZGVzdGluYXRpb25Z
ICsgKmRlc3RpbmF0aW9uSGVpZ2h0KSAtIChzb3VyY2VZICsgc291cmNlSGVpZ2h0KSk7Cit9CisK
IC8qKgogICogQGludGVybmFsCiAgKiBHZXRzIGRwaSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191
dGlsLmgKaW5kZXggMjM3MTg4OC4uODVlYmE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a191dGlsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmgK
QEAgLTMxLDQgKzMxLDcgQEAKIAogRXZhc19PYmplY3QqIGV3a191dGlsX2ltYWdlX2Zyb21fY2Fp
cm9fc3VyZmFjZV9hZGQoRXZhcyogY2FudmFzLCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpOwog
CitpbnQgZXdrX3V0aWxfcmVjdF9jb2xsaXNpb25fY2hlY2soaW50IGRlc3RpbmF0aW9uWCwgaW50
IGRlc3RpbmF0aW9uWSwgaW50IGRlc3RpbmF0aW9uV2lkdGgsIGludCBkZXN0aW5hdGlvbkhlaWdo
dCwgaW50IHNvdXJjZVgsIGludCBzb3VyY2VZLCBpbnQgc291cmNlV2lkdGgsIGludCBzb3VyY2VI
ZWlnaHQpOwordm9pZCBld2tfdXRpbF9yZWN0X2NvbGxpc2lvbl9yZXNvbHZlKGludCBkaXJlY3Rp
b24sIGludCogZGVzdGluYXRpb25YLCBpbnQqIGRlc3RpbmF0aW9uWSwgaW50KiBkZXN0aW5hdGlv
bldpZHRoLCBpbnQqIGRlc3RpbmF0aW9uSGVpZ2h0LCBpbnQgc291cmNlWCwgaW50IHNvdXJjZVks
IGludCBzb3VyY2VXaWR0aCwgaW50IHNvdXJjZUhlaWdodCk7CisKICNlbmRpZiAvLyBld2tfdXRp
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4MjgwMmMyLi5hNzY2NWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTEwMDQsNiArMTAwNCwxMiBAQCBzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhF
d2tfVmlld19TbWFydF9EYXRhKgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9zdGFydChFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCit7CisgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnRE
YXRhPSVwIiwgc21hcnREYXRhKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRh
PSVwIiwgc21hcnREYXRhKTsKQEAgLTExMzYsNiArMTE0Miw3IEBAIEVpbmFfQm9vbCBld2tfdmll
d19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+Zmx1
c2ggPSBfZXdrX3ZpZXdfc21hcnRfZmx1c2g7CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9
IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFk
aXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFydCA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVu
ZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRlcl9jYW5jZWwgPSBfZXdrX3ZpZXdfc21hcnRf
cHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5kaXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld19z
bWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGktPmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdf
c21hcnRfZW5hYmxlX3JlbmRlcjsKQEAgLTE4MzcsNiArMTg0NCwxNCBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVu
c2lnbmVkIGludAogICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoc21hcnREYXRhLCBudW1iZXIsIGN1cnJlbnRab29tKTsKIH0KIAorRWluYV9Cb29s
IGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5hcGktPnByZV9yZW5k
ZXJfc3RhcnQsIGZhbHNlKTsKKworICAgIHJldHVybiBzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRl
cl9zdGFydChzbWFydERhdGEpOworfQorCiB1bnNpZ25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4
IDdmOTFkMjEuLjYxNTFiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC0xMzMsNiAr
MTMzLDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgICAgdm9pZCAoKmZsdXNo
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqcHJlX3JlbmRlcl9y
ZWdpb24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQg
eSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwogICAgIEVpbmFfQm9v
bCAoKnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
dW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOworICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJf
c3RhcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKICAgICB2b2lkICgqcHJlX3JlbmRlcl9j
YW5jZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCpkaXNhYmxl
X3JlbmRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogICAgIEVpbmFfQm9vbCAoKmVuYWJs
ZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKQEAgLTE3OCw3ICsxNzksNyBAQCBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9W
RVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFz
c19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUg
QGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMzEzLDYgKzMxNCwxMCBAQCBz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAgICAgICBFaW5hX0Jvb2wgcG9zaXRpb246
MTsKICAgICAgICAgRWluYV9Cb29sIGZyYW1lX3JlY3Q6MTsKICAgICB9IGNoYW5nZWQ7IC8qKjwg
S2VlcHMgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlLiAqLworICAgIHN0
cnVjdCB7CisgICAgICAgIEV2YXNfQ29vcmQgeCx5OworICAgICAgICBmbG9hdCB6b29tOworICAg
IH0gcHJldmlvdXNWaWV3OwogfTsKIAogLy8vIERlZmluZXMgdGhlIG1vZGVzIG9mIHZpZXcuCkBA
IC0xMjQ3LDYgKzEyNTIsMjMgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRl
cl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc18KIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpv
LCB1bnNpZ25lZCBpbnQgbik7CiAKIC8qKgorICogQXNrcyBlbmdpbmUgdG8gc3RhcnQgcHJlLXJl
bmRlcmluZy4KKyAqCisgKiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBwcmUtcmVu
ZGVyIHRoZSB2aWV3IGFyZWEuCisgKiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaW5kIHRoZSBjZW50
ZXIgdmlldyBhcmVhIHdoZXJlIHRvIHN0YXJ0IHByZS1yZW5kZXJpbmcuCisgKiBBbmQgdGhlbiBm
cm9tIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXcgYXJlYSB0aGUgYmFja2luZyBzdG9yZSBhcHBlbmQg
dGhlIHJlbmRlciByZXF1ZXN0CisgKiBvdXR3YXJkIGluIHNwaXJhbCBvcmRlci4gU28gdGhhdCB0
aGUgdGlsZXMgd2hpY2ggYXJlIGNsb3NlIHRvIHZpZXcgYXJlYSBhcmUgZGlzcGxheWVkCisgKiBz
b29uZXIgdGhhbiBvdXRzaWRlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgdG8gYXNrIHByZS1yZW5k
ZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBhY2NlcHRlZCwg
QGMgRUlOQV9GQUxTRQorICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgcHJlLXJlbmRlciBm
ZWF0dXJlIG5vdCBzdXBwb3J0ZWQsIGV0YykKKyAqCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIENhbmNl
bHMgYW5kIGNsZWFycyBwcmV2aW91cyB0aGUgcHJlLXJlbmRlciByZXF1ZXN0cy4KICAqCiAgKiBA
cGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDViNGYzMzMuLjEyZGFhNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMjE0LDYgKzIxNCw5OCBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZl
X3JhZGl1cyhFd2tfVmlld19TbWFydAogICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgbiwgem9vbSk7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQor
eworICAgIGZsb2F0IGN1cnJlbnRWaWV3Wm9vbSA9IGV3a192aWV3X3pvb21fZ2V0KHNtYXJ0RGF0
YS0+c2VsZik7CisKKyAgICBpbnQgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OworICAgIGV3
a19mcmFtZV9jb250ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50
V2lkdGgsICZjb250ZW50SGVpZ2h0KTsKKworICAgIGludCB2aWV3WCwgdmlld1ksIHZpZXdXaWR0
aCwgdmlld0hlaWdodDsKKyAgICBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dl
dChzbWFydERhdGEtPm1haW5fZnJhbWUsIGZhbHNlLCAmdmlld1gsICZ2aWV3WSwgJnZpZXdXaWR0
aCwgJnZpZXdIZWlnaHQpOworCisgICAgaWYgKHZpZXdXaWR0aCA8PSAwIHx8IHZpZXdIZWlnaHQg
PD0gMCB8fCBjb250ZW50V2lkdGggPD0gMCB8fCBjb250ZW50SGVpZ2h0IDw9IDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICh2aWV3V2lkdGggPj0gY29udGVudFdpZHRoICYmIHZp
ZXdIZWlnaHQgPj0gY29udGVudEhlaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aW50IHByZXZpb3VzVmlld1gsIHByZXZpb3VzVmlld1k7CisgICAgcHJldmlvdXNWaWV3WCA9IHNt
YXJ0RGF0YS0+cHJldmlvdXNWaWV3Lng7CisgICAgcHJldmlvdXNWaWV3WSA9IHNtYXJ0RGF0YS0+
cHJldmlvdXNWaWV3Lnk7CisKKyAgICBpZiAocHJldmlvdXNWaWV3WCA8IDAgfHwgcHJldmlvdXNW
aWV3WCA+IGNvbnRlbnRXaWR0aCB8fCBwcmV2aW91c1ZpZXdZIDwgMCB8fCBwcmV2aW91c1ZpZXdZ
ID4gY29udGVudEhlaWdodCkKKyAgICAgICAgcHJldmlvdXNWaWV3WCA9IHByZXZpb3VzVmlld1kg
PSAwOworCisgICAgLy8gcHJlLXJlbmRlciB3b3JrcyB3aGVuIHR3byBjb25kaXRpb25zIGFyZSBt
ZXQuCisgICAgLy8gem9vbSBoYXMgYmVlbiBjaGFuZ2VkLgorICAgIC8vIGFuZCB0aGUgdmlldyBo
YXMgYmVlbiBtb3ZlZCBtb3JlIHRoYW4gdGlsZSBzaXplLgorICAgIGlmIChhYnMocHJldmlvdXNW
aWV3WCAtIHZpZXdYKSA8IERFRkFVTFRfVElMRV9XCisgICAgICAgICYmIGFicyhwcmV2aW91c1Zp
ZXdZIC0gdmlld1kpIDwgREVGQVVMVF9USUxFX0gKKyAgICAgICAgJiYgc21hcnREYXRhLT5wcmV2
aW91c1ZpZXcuem9vbSA9PSBjdXJyZW50Vmlld1pvb20pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIHN0b3JlIHByZXZpb3VzIHZpZXcgcG9zaXRpb24gYW5kIHpvb20K
KyAgICBzbWFydERhdGEtPnByZXZpb3VzVmlldy54ID0gdmlld1g7CisgICAgc21hcnREYXRhLT5w
cmV2aW91c1ZpZXcueSA9IHZpZXdZOworICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnpvb20g
PSBjdXJyZW50Vmlld1pvb207CisKKyAgICAvLyBjYW5jZWxsaW5nIHByZXZpb3VzIHByZS1yZW5k
ZXJpbmcgbGlzdCBpZiBleGlzdHMKKyAgICBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChzbWFy
dERhdGEtPnNlbGYpOworCisgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2Fj
aGUgPSBld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KHNtYXJ0RGF0YS0+c2VsZik7Cisg
ICAgaW50IG1heE1lbW9yeSA9IGV3a190aWxlX3VudXNlZF9jYWNoZV9tYXhfZ2V0KHRpbGVVbnVz
ZWRDYWNoZSk7CisgICAgaWYgKG1heE1lbW9yeSA8PSB2aWV3V2lkdGggKiB2aWV3SGVpZ2h0ICog
QVJHQl9CWVRFU19TSVpFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFaW5hX1JlY3Rh
bmdsZSB2aWV3UmVjdCA9IHt2aWV3WCwgdmlld1ksIHZpZXdXaWR0aCwgdmlld0hlaWdodH07CisK
KyAgICAvLyBnZXQgYSBiYXNlIHJlbmRlciByZWN0CisgICAgY29uc3QgaW50IGNvbnRlbnRNZW1v
cnkgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0ICogQVJHQl9CWVRFU19TSVpFOworCisg
ICAgLy8gZ2V0IHJlbmRlciByZWN0J3Mgd2lkdGggYW5kIGhlaWdodAorICAgIEVpbmFfUmVjdGFu
Z2xlIHJlbmRlclJlY3Q7CisgICAgaWYgKG1heE1lbW9yeSA+IGNvbnRlbnRNZW1vcnkpIHsKKyAg
ICAgICAgcmVuZGVyUmVjdC54ID0gMDsKKyAgICAgICAgcmVuZGVyUmVjdC55ID0gMDsKKyAgICAg
ICAgcmVuZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAgICAgICByZW5kZXJSZWN0LmggPSBj
b250ZW50SGVpZ2h0OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1ha2UgYSBiYXNlIHJlY3Rh
bmdsZSBhcyBiaWcgYXMgcG9zc2libGUgd2l0aCB1c2luZyBtYXhNZW1vcnkuCisgICAgICAgIC8v
IGFuZCB0aGVuIHJlc2hhcGUgdGhlIGJhc2UgcmVjdGFuZ2xlIHRvIGZpdCB0byBjb250ZW50cy4K
KyAgICAgICAgY29uc3QgaW50IGJhc2VTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzcXJ0KG1heE1l
bW9yeSAvIDQuMGYpKTsKKyAgICAgICAgY29uc3QgZmxvYXQgd2lkdGhSYXRlID0gKHZpZXdSZWN0
LncgKyAoREVGQVVMVF9USUxFX1cgKiAyKSkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oYmFzZVNpemUp
OworICAgICAgICBjb25zdCBmbG9hdCBoZWlnaHRSYXRlID0gYmFzZVNpemUgLyBzdGF0aWNfY2Fz
dDxmbG9hdD4oY29udGVudEhlaWdodCk7CisgICAgICAgIGNvbnN0IGZsb2F0IHJlY3RSYXRlID0g
c3RkOjptYXgod2lkdGhSYXRlLCBoZWlnaHRSYXRlKTsKKworICAgICAgICByZW5kZXJSZWN0Lncg
PSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplICogcmVjdFJhdGUpOworICAgICAgICByZW5kZXJS
ZWN0LmggPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplIC8gcmVjdFJhdGUpOworICAgICAgICBy
ZW5kZXJSZWN0LnggPSB2aWV3UmVjdC54ICsgKHZpZXdSZWN0LncgLyAyKSAtIChyZW5kZXJSZWN0
LncgLyAyKTsKKyAgICAgICAgcmVuZGVyUmVjdC55ID0gdmlld1JlY3QueSArICh2aWV3UmVjdC5o
IC8gMikgLSAocmVuZGVyUmVjdC5oIC8gMik7CisgICAgfQorCisgICAgLy8gcmVwb3NpdGlvbiBv
ZiByZW5kZXJSZWN0LCBpZiB0aGUgcmVuZGVyUmVjdCBvdmVybGFwcGVkIHRoZSBjb250ZW50IHJl
Y3QsIHRoaXMgY29kZSBtb3ZlcyB0aGUgcmVuZGVyUmVjdCBpbnNpZGUgdGhlIGNvbnRlbnQgcmVj
dAorICAgIGludCBjb2xsaXNpb25TaWRlID0gZXdrX3V0aWxfcmVjdF9jb2xsaXNpb25fY2hlY2so
cmVuZGVyUmVjdC54LCByZW5kZXJSZWN0LnksIHJlbmRlclJlY3QudywgcmVuZGVyUmVjdC5oLCAw
LCAwLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOworICAgIGlmIChjb2xsaXNpb25TaWRl
ID4gMCkKKyAgICAgICAgZXdrX3V0aWxfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZShjb2xsaXNpb25T
aWRlLCAmcmVuZGVyUmVjdC54LCAmcmVuZGVyUmVjdC55LCAmcmVuZGVyUmVjdC53LCAmcmVuZGVy
UmVjdC5oLCAwLCAwLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOworCisgICAgLy8gY2hl
Y2sgYWJub3JtYWwgcmVuZGVyIHJlY3QKKyAgICBpZiAocmVuZGVyUmVjdC54IDwgMCkKKyAgICAg
ICAgcmVuZGVyUmVjdC54ID0gMDsKKyAgICBpZiAocmVuZGVyUmVjdC55IDwgMCkKKyAgICAgICAg
cmVuZGVyUmVjdC55ID0gMDsKKyAgICBpZiAocmVuZGVyUmVjdC53ID4gY29udGVudFdpZHRoKQor
ICAgICAgICByZW5kZXJSZWN0LncgPSBjb250ZW50V2lkdGg7CisgICAgaWYgKHJlbmRlclJlY3Qu
aCA+IGNvbnRlbnRIZWlnaHQpCisgICAgICAgIHJlbmRlclJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7
CisKKyAgICAvLyBlbnF1ZXVlIHRpbGVzIGludG8gdGlsZWQgYmFja2luZyBzdG9yZSBpbiBzcGly
YWwgb3JkZXIKKyAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9x
dWV1ZShzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZ2aWV3UmVjdCwgJnJlbmRlclJlY3QsIG1h
eE1lbW9yeSwgY3VycmVudFZpZXdab29tKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSk7CkBAIC0yNDksNiArMzQx
LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RpbGVkX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9D
bGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZmx1c2g7
CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVf
cmVuZGVyX3JlZ2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzID0gX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzOworICAgIGFwaS0+
cHJlX3JlbmRlcl9zdGFydCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3N0YXJ0
OwogICAgIGFwaS0+cHJlX3JlbmRlcl9jYW5jZWwgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJl
X3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5kaXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld190aWxl
ZF9zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGktPmVuYWJsZV9yZW5kZXIgPSBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MzI4ZTAwLi4wNTY0NzZmIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTEtMTEtMzAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gQWRkIHByZS1yZW5kZXIgaGFuZGxpbmcgY29kZSBpbiBFV2ViTGF1bmNoZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwcmUtcmVu
ZGVyIGhhbmRsaW5nIGNvZGUgYnkgcHJlc3NpbmcgSW5zZXJ0IGtleS4KKworICAgICAgICAqIEVX
ZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl9rZXlfZG93bik6CisKIDIwMTEtMTEtMTgg
IE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5h
YmxlIHRocmVhZGVkIGNvbXBvc2l0aW5nIHZpYSBDQ1RocmVhZFByb3h5OjpoYXNUaHJlYWQgb25s
eQpkaWZmIC0tZ2l0IGEvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYyBiL1Rvb2xzL0VXZWJMYXVu
Y2hlci9tYWluLmMKaW5kZXggMTExODE4My4uMmQ2NGQ0YSAxMDA2NDQKLS0tIGEvVG9vbHMvRVdl
YkxhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jCkBAIC01NDgs
NiArNTQ4LDkgQEAgb25fa2V5X2Rvd24odm9pZCAqZGF0YSwgRXZhcyAqZSwgRXZhc19PYmplY3Qg
Km9iaiwgdm9pZCAqZXZlbnRfaW5mbykKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwg
ImUiKSkgewogICAgICAgICBpbmZvKCJSZW5kZXIgcmVzdW1lZCIpOwogICAgICAgICBld2tfdmll
d19lbmFibGVfcmVuZGVyKG9iaik7CisgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJJ
bnNlcnQiKSkgeworICAgICAgICBpbmZvKCJQcmUtcmVuZGVyaW5nIHN0YXJ0Iik7CisgICAgICAg
IGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQob2JqKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117177</attachid>
            <date>2011-11-30 05:51:31 -0800</date>
            <delta_ts>2011-12-01 07:32:50 -0800</delta_ts>
            <desc>fix style check</desc>
            <filename>fix_style.patch</filename>
            <type>text/plain</type>
            <size>21104</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBmZDQxNjhiLi40OTgxMjRmIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTEtMTEtMzAgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3V0aWwuY3BwOgor
ICAgICAgICAoZXdrX3V0aWxfcmVjdF9jb2xsaXNpb25fY2hlY2spOgorICAgICAgICAoZXdrX3V0
aWxfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAgICAgICogZXdrL2V3a191dGlsLmg6Cisg
ICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3N0YXJ0KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5o
OgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChld2tfdmlld190aWxlZF9z
bWFydF9zZXQpOgorCiAyMDExLTExLTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIGR1cGxpY2F0ZWQgVUEgaW5mb3JtYXRp
b24gZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IGYxMjgyNTUu
LjRlZWEyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC00OCw2ICs0OCw3
IEBAIGV4dGVybiAiQyIgewogCiAvLyBJZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNr
aW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBjb3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZ
UEVfQ0hFQ0sgMQorI2RlZmluZSBBUkdCX0JZVEVTX1NJWkUgNAogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjZGVmaW5lIEVXS19KU19PQkpFQ1RfTUFHSUMgMHg2OTY5NjkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCmlu
ZGV4IGQzNDRkN2YuLmZlN2UwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtMjEsOCArMjEsMTAgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgogCisjaW5jbHVk
ZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCiAjaW5jbHVk
ZSAiZXdrX3RpbGVkX3ByaXZhdGUuaCIKKwogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8
RWluYS5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE4MzAsNiArMTgzMiwxMTEgQEAgdm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0
b3JlKQogI2VuZGlmCiB9CiAKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGludCBjb2x1bW4s
IGludCByb3csIGZsb2F0IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdr
QmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CisKKyAgICBpZiAoZXdrX3RpbGVfbWF0cml4X3Rp
bGVfZXhhY3RfZXhpc3RzKHByaXYtPm1vZGVsLm1hdHJpeCwgY29sdW1uLCByb3csIHpvb20pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIV9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKHByaXYsIGNvbHVtbiwgcm93LCB6b29tKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCog
ZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3RhbmdsZSogdmlld1JlY3QsIEVpbmFfUmVjdGFuZ2xl
KiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5LCBmbG9hdCB6b29tKQoreworICAgIFBSSVZfREFU
QV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3UmVjdCwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZW5kZXJSZWN0LCBmYWxzZSk7CisKKyAgICBjb25zdCBp
bnQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOworICAgIGNvbnN0IGludCB0aWxl
SGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKKworICAgIEVpbmFfVGlsZV9HcmlkX1Ns
aWNlciB2aWV3U2xpY2VyOworICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciByZW5kZXJTbGljZXI7
CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmdmlld1NsaWNlciwKKyAg
ICAgICAgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgs
IHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAg
Z3JpZCB2aWV3U2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxlPSVkeCVkIiwgdmlld1JlY3QtPngs
IHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhl
aWdodCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWVpbmFfdGls
ZV9ncmlkX3NsaWNlcl9zZXR1cCgmcmVuZGVyU2xpY2VyLAorICAgICAgICByZW5kZXJSZWN0LT54
LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgs
IHRpbGVIZWlnaHQpKSB7CisgICAgICAgIEVSUigiY291bGQgbm90IHNldHVwIGdyaWQgUmVuZGVy
U2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxlPSVkeCVkIiwgcmVuZGVyUmVjdC0+eSwgcmVuZGVy
UmVjdC0+eSwgcmVuZGVyUmVjdC0+dywgcmVuZGVyUmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVp
Z2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHNldCBsaW1pdHMg
b2YgdGhlIGxvb3AKKyAgICBpbnQgbWVtb3J5TGltaXRzID0gbWF4TWVtb3J5IC8gQVJHQl9CWVRF
U19TSVpFIC8gdGlsZVdpZHRoIC8gdGlsZUhlaWdodDsKKyAgICBjb25zdCBpbnQgbWF4Vmlld1Np
ZGVMZW5ndGggPSBzdGQ6Om1heCh2aWV3U2xpY2VyLmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEgLCB2
aWV3U2xpY2VyLnJvdzIgLSB2aWV3U2xpY2VyLnJvdzEpOworICAgIGNvbnN0IGludCBtYXhSZW5k
ZXJTaWRlTGVuZ3RoID0gc3RkOjptYXgocmVuZGVyU2xpY2VyLmNvbDIgLSByZW5kZXJTbGljZXIu
Y29sMSAsIHJlbmRlclNsaWNlci5yb3cyIC0gcmVuZGVyU2xpY2VyLnJvdzEpOworICAgIGNvbnN0
IGludCBtYXhMb29wQ291bnQgPSBtYXhWaWV3U2lkZUxlbmd0aCArIG1heFJlbmRlclNpZGVMZW5n
dGg7CisKKyAgICAvLyBzcGlyZSBzdGFydHMgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFy
ZWEKKyAgICBpbnQgY2VudGVyQ29sdW1uID0gKHZpZXdTbGljZXIuY29sMSArIHZpZXdTbGljZXIu
Y29sMikgLyAyOworICAgIGludCBjZW50ZXJSb3cgPSAodmlld1NsaWNlci5yb3cxICsgdmlld1Ns
aWNlci5yb3cyKSAvIDI7CisKKyAgICBpbnQgc3RlcCA9IDE7CisgICAgY29uc3QgaW50IHNxdWFy
ZVNpZGUgPSA0OworICAgIGZvciAoaW50IGxvb3AgPSAwOyBsb29wIDwgbWF4TG9vcENvdW50OyBs
b29wKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzdGVwICogc3F1YXJlU2lkZSAr
IDE7IGkrKykgeworICAgICAgICAgICAgaWYgKG1lbW9yeUxpbWl0cyA8IDApCisgICAgICAgICAg
ICAgICAgZ290byBtZW1vcnlMaW1pdHNSZWFjaGVkOworICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgIHRoaXMgY29kZSBtZWFucyB0aGUgbG9vcCBydW5zIGxpa2Ugc3BpcmFsIChpLmcuIGxlZnQt
PmRvd24tPnJpZ2h0LT51cCkKKyAgICAgICAgICAgIHdoZW4gaXQgbW92ZXMgYmFjayB0byBvcmln
aW5hbCBwbGFjZSBhbmQgdGhlbiB3YWxrIDEgdGlsZSBsZWZ0IGFuZCB1cC4KKyAgICAgICAgICAg
IHRoZSBsb29wIGtlZXBzIG9uIGRvaW5nIHRoaXMgdW50aWwgaXQgcmVhY2hlcyBtYXggbWVtb3J5
IHRvIGRyYXcgdGlsZXMKKyAgICAgICAgICAgIGUuZy4gKQorICAgICAgICAgICAgICAgICAgICAg
ICAgIDMzMzMzMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAgICAgICAgICAg
ICAgICAgICAgICAgIDMyMTEyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMTEyMworICAg
ICAgICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMz
MzMzMworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBpIDw9IHN0ZXAp
CisgICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uKys7IC8vIG1vdmUgbGVmdAorICAgICAgICAg
ICAgZWxzZSBpZiAoaSA+IHN0ZXAgJiYgaSA8PSBzdGVwICogMikKKyAgICAgICAgICAgICAgICBj
ZW50ZXJSb3crKzsgLy8gbW92ZSBkb3duCisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAq
IDIgJiYgaSA8PSBzdGVwICogMykKKyAgICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4tLTsgLy8g
bW92ZSByaWdodAorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAzICYmIGkgPD0gc3Rl
cCAqIDQpCisgICAgICAgICAgICAgICAgY2VudGVyUm93LS07IC8vIG1vdmUgdXAKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBFUlIoIkVSUk9SIDogb3V0IG9mIGJvdW5kc1xyXG4i
KTsKKworICAgICAgICAgICAgLy8gc2tpcCBpbiB2aWV3IHBvcnQgYXJlYQorICAgICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5jb2wxKSA8IGNlbnRlckNvbHVtbgorICAg
ICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5jb2wyKSA+IGNlbnRl
ckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5y
b3cxKSA8IGNlbnRlclJvdworICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmll
d1NsaWNlci5yb3cyKSA+IGNlbnRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLmNvbDEpIDw9IGNl
bnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xp
Y2VyLmNvbDIpID49IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0
PGludD4ocmVuZGVyU2xpY2VyLnJvdzEpIDw9IGNlbnRlclJvdworICAgICAgICAgICAgICAgICYm
IHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLnJvdzIpID49IGNlbnRlclJvdykgeworCisg
ICAgICAgICAgICAgICAgaWYgKCFld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Rp
bGVfYWRkKCBld2tCYWNraW5nU3RvcmUsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93LCB6b29tKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgREJHKCJSPlsl
ZCAlZF0gIiwgY2VudGVyQ29sdW1uLCBjZW50ZXJSb3cpOworICAgICAgICAgICAgICAgIG1lbW9y
eUxpbWl0cy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNlbnRlclJvdy0t
OworICAgICAgICBjZW50ZXJDb2x1bW4tLTsKKyAgICAgICAgc3RlcCA9IHN0ZXAgKyAyOworICAg
IH0KKworbWVtb3J5TGltaXRzUmVhY2hlZDoKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9wcm9jZXNzX2lkbGVyX3N0YXJ0KHByaXYpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFz
X09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7CiAgICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmluZGV4IDc5
NDUxYWUuLjBjYzcxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5oCkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1Vu
dXMKIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9u
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25l
ZCBpbnQgbiwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIG8sIEVpbmFfUmVjdGFuZ2xlKiB2
aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZs
b2F0IHpvb20pOwogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNl
bChFdmFzX09iamVjdCogbyk7CiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCogbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3V0aWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a191dGlsLmNw
cAppbmRleCBiNzQwMjVhLi5hMjIzMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3V0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5jcHAK
QEAgLTEwOCw2ICsxMDgsMzMgQEAgRXZhc19PYmplY3QqIGV3a191dGlsX2ltYWdlX2Zyb21fY2Fp
cm9fc3VyZmFjZV9hZGQoRXZhcyogY2FudmFzLCBjYWlyb19zdXJmYWNlX3QKICAgICByZXR1cm4g
aW1hZ2U7CiB9CiAKK2ludCBld2tfdXRpbF9yZWN0X2NvbGxpc2lvbl9jaGVjayhpbnQgZGVzdGlu
YXRpb25YLCBpbnQgZGVzdGluYXRpb25ZLCBpbnQgZGVzdGluYXRpb25XaWR0aCwgaW50IGRlc3Rp
bmF0aW9uSGVpZ2h0LCBpbnQgc291cmNlWCwgaW50IHNvdXJjZVksIGludCBzb3VyY2VXaWR0aCwg
aW50IHNvdXJjZUhlaWdodCkKK3sKKyAgICBpbnQgZGlyZWN0aW9uID0gMDsKKyAgICBpZiAoZGVz
dGluYXRpb25YIDwgc291cmNlWCkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEg
PDwgMCk7IC8vIDAgYml0IHNoaWZ0LCBsZWZ0CisgICAgaWYgKGRlc3RpbmF0aW9uWSA8IHNvdXJj
ZVkpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8IDEpOyAvLyAxIGJpdCBz
aGlmdCwgdG9wCisgICAgaWYgKGRlc3RpbmF0aW9uWCArIGRlc3RpbmF0aW9uV2lkdGggPiBzb3Vy
Y2VYICsgc291cmNlV2lkdGgpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8
IDIpOyAvLyAyIGJpdCBzaGlmdCwgcmlnaHQKKyAgICBpZiAoZGVzdGluYXRpb25ZICsgZGVzdGlu
YXRpb25IZWlnaHQgPiBzb3VyY2VZICsgc291cmNlSGVpZ2h0KQorICAgICAgICBkaXJlY3Rpb24g
PSBkaXJlY3Rpb24gfCAoMSA8PCAzKTsgLy8gMyBiaXQgc2hpZnQsIGJvdHRvbQorICAgIERCRygi
Y2hlY2sgY29sbGlzaW9uICVkXHJcbiIsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIGRpcmVjdGlv
bjsKK30KKwordm9pZCBld2tfdXRpbF9yZWN0X2NvbGxpc2lvbl9yZXNvbHZlKGludCBkaXJlY3Rp
b24sIGludCogZGVzdGluYXRpb25YLCBpbnQqIGRlc3RpbmF0aW9uWSwgaW50KiBkZXN0aW5hdGlv
bldpZHRoLCBpbnQqIGRlc3RpbmF0aW9uSGVpZ2h0LCBpbnQgc291cmNlWCwgaW50IHNvdXJjZVks
IGludCBzb3VyY2VXaWR0aCwgaW50IHNvdXJjZUhlaWdodCkKK3sKKyAgICBpZiAoZGlyZWN0aW9u
ICYgMSkKKyAgICAgICAgKmRlc3RpbmF0aW9uWCA9ICpkZXN0aW5hdGlvblggKyAoc291cmNlWCAt
ICpkZXN0aW5hdGlvblgpOworICAgIGlmIChkaXJlY3Rpb24gJiAyKQorICAgICAgICAqZGVzdGlu
YXRpb25ZID0gKmRlc3RpbmF0aW9uWSArIChzb3VyY2VZIC0gKmRlc3RpbmF0aW9uWSk7CisgICAg
aWYgKGRpcmVjdGlvbiAmIDQpCisgICAgICAgICpkZXN0aW5hdGlvblggPSAqZGVzdGluYXRpb25Y
IC0gKCgqZGVzdGluYXRpb25YICsgKmRlc3RpbmF0aW9uV2lkdGgpIC0gKHNvdXJjZVggKyBzb3Vy
Y2VXaWR0aCkpOworICAgIGlmIChkaXJlY3Rpb24gJiA4KQorICAgICAgICAqZGVzdGluYXRpb25Z
ID0gKmRlc3RpbmF0aW9uWSAtICgoKmRlc3RpbmF0aW9uWSArICpkZXN0aW5hdGlvbkhlaWdodCkg
LSAoc291cmNlWSArIHNvdXJjZUhlaWdodCkpOworfQorCiAvKioKICAqIEBpbnRlcm5hbAogICog
R2V0cyBkcGkgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3V0
aWwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oCmluZGV4IDIzNzE4ODguLjg1
ZWJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdXRpbC5oCkBAIC0zMSw0ICszMSw3IEBACiAKIEV2
YXNfT2JqZWN0KiBld2tfdXRpbF9pbWFnZV9mcm9tX2NhaXJvX3N1cmZhY2VfYWRkKEV2YXMqIGNh
bnZhcywgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKTsKIAoraW50IGV3a191dGlsX3JlY3RfY29s
bGlzaW9uX2NoZWNrKGludCBkZXN0aW5hdGlvblgsIGludCBkZXN0aW5hdGlvblksIGludCBkZXN0
aW5hdGlvbldpZHRoLCBpbnQgZGVzdGluYXRpb25IZWlnaHQsIGludCBzb3VyY2VYLCBpbnQgc291
cmNlWSwgaW50IHNvdXJjZVdpZHRoLCBpbnQgc291cmNlSGVpZ2h0KTsKK3ZvaWQgZXdrX3V0aWxf
cmVjdF9jb2xsaXNpb25fcmVzb2x2ZShpbnQgZGlyZWN0aW9uLCBpbnQqIGRlc3RpbmF0aW9uWCwg
aW50KiBkZXN0aW5hdGlvblksIGludCogZGVzdGluYXRpb25XaWR0aCwgaW50KiBkZXN0aW5hdGlv
bkhlaWdodCwgaW50IHNvdXJjZVgsIGludCBzb3VyY2VZLCBpbnQgc291cmNlV2lkdGgsIGludCBz
b3VyY2VIZWlnaHQpOworCiAjZW5kaWYgLy8gZXdrX3V0aWxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAKaW5kZXggODI4MDJjMi4uYTc2NjVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCkBAIC0xMDA0LDYgKzEwMDQsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0YSoKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3By
ZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQoreworICAgIFdS
Tigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcHJlX3Jl
bmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIFdSTigi
bm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0x
MTM2LDYgKzExNDIsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPmZsdXNoID0gX2V3a192aWV3X3NtYXJ0X2Zs
dXNoOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdpb24gPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3Jl
bmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyA9IF9ld2tf
dmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1czsKKyAgICBhcGktPnByZV9yZW5k
ZXJfc3RhcnQgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9zdGFydDsKICAgICBhcGktPnBy
ZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsOwogICAg
IGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5kZXI7CiAg
ICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXI7CkBA
IC0xODM3LDYgKzE4NDQsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQKICAgICByZXR1cm4g
c21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKHNtYXJ0RGF0YSwgbnVt
YmVyLCBjdXJyZW50Wm9vbSk7CiB9CiAKK0VpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3N0
YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3N0YXJ0LCBmYWxzZSk7CisKKyAg
ICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3RhcnQoc21hcnREYXRhKTsKK30K
KwogdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCA3ZjkxZDIxLi5lYmZjNTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMTMzLDYgKzEzMyw3IEBAIHN0cnVjdCBfRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MgewogICAgIHZvaWQgKCpmbHVzaCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVnaW9uKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoLCBmbG9hdCB6b29tKTsKICAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVyX3JlbGF0aXZl
X3JhZGl1cykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6
b29tKTsKKyAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVyX3N0YXJ0KShFd2tfVmlld19TbWFydF9E
YXRhICpzZCk7CiAgICAgdm9pZCAoKnByZV9yZW5kZXJfY2FuY2VsKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqZGlzYWJsZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCplbmFibGVfcmVuZGVyKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCk7CkBAIC0xNzgsNyArMTc5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9D
bGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgogICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgogICovCi0jZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2lu
aXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21h
cnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CiAKIC8q
KgogICogSW5pdGlhbGl6ZXMgdG8gemVybyBhIHdob2xlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KQEAgLTMxMyw2ICszMTQsMTAgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9E
YXRhIHsKICAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CiAgICAgICAgIEVpbmFfQm9vbCBm
cmFtZV9yZWN0OjE7CiAgICAgfSBjaGFuZ2VkOyAvKio8IEtlZXBzIHdoYXQgY2hhbmdlZCBzaW5j
ZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZS4gKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nv
b3JkIHgsIHk7CisgICAgICAgIGZsb2F0IHpvb207CisgICAgfSBwcmV2aW91c1ZpZXc7CiB9Owog
CiAvLy8gRGVmaW5lcyB0aGUgbW9kZXMgb2Ygdmlldy4KQEAgLTEyNDcsNiArMTI1MiwyMyBAQCBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCB4LCBFdmFzXwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3Jl
bmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2lnbmVkIGludCBuKTsKIAog
LyoqCisgKiBBc2tzIGVuZ2luZSB0byBzdGFydCBwcmUtcmVuZGVyaW5nLgorICoKKyAqIFRoaXMg
aXMgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYS4KKyAq
IFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpbmQgdGhlIGNlbnRlciB2aWV3IGFyZWEgd2hlcmUgdG8g
c3RhcnQgcHJlLXJlbmRlcmluZy4KKyAqIEFuZCB0aGVuIGZyb20gdGhlIGNlbnRlciBvZiB0aGUg
dmlldyBhcmVhIHRoZSBiYWNraW5nIHN0b3JlIGFwcGVuZCB0aGUgcmVuZGVyIHJlcXVlc3QKKyAq
IG91dHdhcmQgaW4gc3BpcmFsIG9yZGVyLiBTbyB0aGF0IHRoZSB0aWxlcyB3aGljaCBhcmUgY2xv
c2UgdG8gdmlldyBhcmVhIGFyZSBkaXNwbGF5ZWQKKyAqIHNvb25lciB0aGFuIG91dHNpZGUuCisg
KgorICogQHBhcmFtIG8gdmlldyB0byBhc2sgcHJlLXJlbmRlcgorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIGlmIHJlcXVlc3Qgd2FzIGFjY2VwdGVkLCBAYyBFSU5BX0ZBTFNFCisgKiAgICAg
ICAgIG90aGVyd2lzZSAoZXJyb3JzLCBwcmUtcmVuZGVyIGZlYXR1cmUgbm90IHN1cHBvcnRlZCwg
ZXRjKQorICoKKyAqLworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dChFdmFzX09iamVjdCAqbyk7CisKKy8qKgogICogQ2FuY2VscyBhbmQgY2xlYXJzIHByZXZpb3Vz
IHRoZSBwcmUtcmVuZGVyIHJlcXVlc3RzLgogICoKICAqIEBwYXJhbSBvIHZpZXcgdG8gY2xlYXIg
cHJlLXJlbmRlciByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5j
cHAKaW5kZXggNWI0ZjMzMy4uMTJkYWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwCkBAIC0yMTQsNiArMjE0LDk4IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0
CiAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKIH0K
IAorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFy
dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgZmxvYXQgY3VycmVudFZp
ZXdab29tID0gZXdrX3ZpZXdfem9vbV9nZXQoc21hcnREYXRhLT5zZWxmKTsKKworICAgIGludCBj
b250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQ7CisgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwgJmNvbnRlbnRIZWlnaHQp
OworCisgICAgaW50IHZpZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0OworICAgIGV3
a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZSwgZmFsc2UsICZ2aWV3WCwgJnZpZXdZLCAmdmlld1dpZHRoLCAmdmlld0hlaWdodCk7CisKKyAg
ICBpZiAodmlld1dpZHRoIDw9IDAgfHwgdmlld0hlaWdodCA8PSAwIHx8IGNvbnRlbnRXaWR0aCA8
PSAwIHx8IGNvbnRlbnRIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHZpZXdXaWR0aCA+PSBjb250ZW50V2lkdGggJiYgdmlld0hlaWdodCA+PSBjb250ZW50SGVp
Z2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgcHJldmlvdXNWaWV3WCwgcHJl
dmlvdXNWaWV3WTsKKyAgICBwcmV2aW91c1ZpZXdYID0gc21hcnREYXRhLT5wcmV2aW91c1ZpZXcu
eDsKKyAgICBwcmV2aW91c1ZpZXdZID0gc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueTsKKworICAg
IGlmIChwcmV2aW91c1ZpZXdYIDwgMCB8fCBwcmV2aW91c1ZpZXdYID4gY29udGVudFdpZHRoIHx8
IHByZXZpb3VzVmlld1kgPCAwIHx8IHByZXZpb3VzVmlld1kgPiBjb250ZW50SGVpZ2h0KQorICAg
ICAgICBwcmV2aW91c1ZpZXdYID0gcHJldmlvdXNWaWV3WSA9IDA7CisKKyAgICAvLyBwcmUtcmVu
ZGVyIHdvcmtzIHdoZW4gdHdvIGNvbmRpdGlvbnMgYXJlIG1ldC4KKyAgICAvLyB6b29tIGhhcyBi
ZWVuIGNoYW5nZWQuCisgICAgLy8gYW5kIHRoZSB2aWV3IGhhcyBiZWVuIG1vdmVkIG1vcmUgdGhh
biB0aWxlIHNpemUuCisgICAgaWYgKGFicyhwcmV2aW91c1ZpZXdYIC0gdmlld1gpIDwgREVGQVVM
VF9USUxFX1cKKyAgICAgICAgJiYgYWJzKHByZXZpb3VzVmlld1kgLSB2aWV3WSkgPCBERUZBVUxU
X1RJTEVfSAorICAgICAgICAmJiBzbWFydERhdGEtPnByZXZpb3VzVmlldy56b29tID09IGN1cnJl
bnRWaWV3Wm9vbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc3Rv
cmUgcHJldmlvdXMgdmlldyBwb3NpdGlvbiBhbmQgem9vbQorICAgIHNtYXJ0RGF0YS0+cHJldmlv
dXNWaWV3LnggPSB2aWV3WDsKKyAgICBzbWFydERhdGEtPnByZXZpb3VzVmlldy55ID0gdmlld1k7
CisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcuem9vbSA9IGN1cnJlbnRWaWV3Wm9vbTsKKwor
ICAgIC8vIGNhbmNlbGxpbmcgcHJldmlvdXMgcHJlLXJlbmRlcmluZyBsaXN0IGlmIGV4aXN0cwor
ICAgIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+c2VsZik7CisKKyAgICBF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSA9IGV3a192aWV3X3RpbGVkX3Vu
dXNlZF9jYWNoZV9nZXQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBpbnQgbWF4TWVtb3J5ID0gZXdr
X3RpbGVfdW51c2VkX2NhY2hlX21heF9nZXQodGlsZVVudXNlZENhY2hlKTsKKyAgICBpZiAobWF4
TWVtb3J5IDw9IHZpZXdXaWR0aCAqIHZpZXdIZWlnaHQgKiBBUkdCX0JZVEVTX1NJWkUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEVpbmFfUmVjdGFuZ2xlIHZpZXdSZWN0ID0ge3ZpZXdY
LCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0fTsKKworICAgIC8vIGdldCBhIGJhc2UgcmVu
ZGVyIHJlY3QKKyAgICBjb25zdCBpbnQgY29udGVudE1lbW9yeSA9IGNvbnRlbnRXaWR0aCAqIGNv
bnRlbnRIZWlnaHQgKiBBUkdCX0JZVEVTX1NJWkU7CisKKyAgICAvLyBnZXQgcmVuZGVyIHJlY3Qn
cyB3aWR0aCBhbmQgaGVpZ2h0CisgICAgRWluYV9SZWN0YW5nbGUgcmVuZGVyUmVjdDsKKyAgICBp
ZiAobWF4TWVtb3J5ID4gY29udGVudE1lbW9yeSkgeworICAgICAgICByZW5kZXJSZWN0LnggPSAw
OworICAgICAgICByZW5kZXJSZWN0LnkgPSAwOworICAgICAgICByZW5kZXJSZWN0LncgPSBjb250
ZW50V2lkdGg7CisgICAgICAgIHJlbmRlclJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gTWFrZSBhIGJhc2UgcmVjdGFuZ2xlIGFzIGJpZyBhcyBwb3NzaWJs
ZSB3aXRoIHVzaW5nIG1heE1lbW9yeS4KKyAgICAgICAgLy8gYW5kIHRoZW4gcmVzaGFwZSB0aGUg
YmFzZSByZWN0YW5nbGUgdG8gZml0IHRvIGNvbnRlbnRzLgorICAgICAgICBjb25zdCBpbnQgYmFz
ZVNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNxcnQobWF4TWVtb3J5IC8gNC4wZikpOworICAgICAg
ICBjb25zdCBmbG9hdCB3aWR0aFJhdGUgPSAodmlld1JlY3QudyArIChERUZBVUxUX1RJTEVfVyAq
IDIpKSAvIHN0YXRpY19jYXN0PGZsb2F0PihiYXNlU2l6ZSk7CisgICAgICAgIGNvbnN0IGZsb2F0
IGhlaWdodFJhdGUgPSBiYXNlU2l6ZSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50SGVpZ2h0
KTsKKyAgICAgICAgY29uc3QgZmxvYXQgcmVjdFJhdGUgPSBzdGQ6Om1heCh3aWR0aFJhdGUsIGhl
aWdodFJhdGUpOworCisgICAgICAgIHJlbmRlclJlY3QudyA9IHN0YXRpY19jYXN0PGludD4oYmFz
ZVNpemUgKiByZWN0UmF0ZSk7CisgICAgICAgIHJlbmRlclJlY3QuaCA9IHN0YXRpY19jYXN0PGlu
dD4oYmFzZVNpemUgLyByZWN0UmF0ZSk7CisgICAgICAgIHJlbmRlclJlY3QueCA9IHZpZXdSZWN0
LnggKyAodmlld1JlY3QudyAvIDIpIC0gKHJlbmRlclJlY3QudyAvIDIpOworICAgICAgICByZW5k
ZXJSZWN0LnkgPSB2aWV3UmVjdC55ICsgKHZpZXdSZWN0LmggLyAyKSAtIChyZW5kZXJSZWN0Lmgg
LyAyKTsKKyAgICB9CisKKyAgICAvLyByZXBvc2l0aW9uIG9mIHJlbmRlclJlY3QsIGlmIHRoZSBy
ZW5kZXJSZWN0IG92ZXJsYXBwZWQgdGhlIGNvbnRlbnQgcmVjdCwgdGhpcyBjb2RlIG1vdmVzIHRo
ZSByZW5kZXJSZWN0IGluc2lkZSB0aGUgY29udGVudCByZWN0CisgICAgaW50IGNvbGxpc2lvblNp
ZGUgPSBld2tfdXRpbF9yZWN0X2NvbGxpc2lvbl9jaGVjayhyZW5kZXJSZWN0LngsIHJlbmRlclJl
Y3QueSwgcmVuZGVyUmVjdC53LCByZW5kZXJSZWN0LmgsIDAsIDAsIGNvbnRlbnRXaWR0aCwgY29u
dGVudEhlaWdodCk7CisgICAgaWYgKGNvbGxpc2lvblNpZGUgPiAwKQorICAgICAgICBld2tfdXRp
bF9yZWN0X2NvbGxpc2lvbl9yZXNvbHZlKGNvbGxpc2lvblNpZGUsICZyZW5kZXJSZWN0LngsICZy
ZW5kZXJSZWN0LnksICZyZW5kZXJSZWN0LncsICZyZW5kZXJSZWN0LmgsIDAsIDAsIGNvbnRlbnRX
aWR0aCwgY29udGVudEhlaWdodCk7CisKKyAgICAvLyBjaGVjayBhYm5vcm1hbCByZW5kZXIgcmVj
dAorICAgIGlmIChyZW5kZXJSZWN0LnggPCAwKQorICAgICAgICByZW5kZXJSZWN0LnggPSAwOwor
ICAgIGlmIChyZW5kZXJSZWN0LnkgPCAwKQorICAgICAgICByZW5kZXJSZWN0LnkgPSAwOworICAg
IGlmIChyZW5kZXJSZWN0LncgPiBjb250ZW50V2lkdGgpCisgICAgICAgIHJlbmRlclJlY3QudyA9
IGNvbnRlbnRXaWR0aDsKKyAgICBpZiAocmVuZGVyUmVjdC5oID4gY29udGVudEhlaWdodCkKKyAg
ICAgICAgcmVuZGVyUmVjdC5oID0gY29udGVudEhlaWdodDsKKworICAgIC8vIGVucXVldWUgdGls
ZXMgaW50byB0aWxlZCBiYWNraW5nIHN0b3JlIGluIHNwaXJhbCBvcmRlcgorICAgIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSwgJnZpZXdSZWN0LCAmcmVuZGVyUmVjdCwgbWF4TWVtb3J5LCBjdXJyZW50Vmlld1pv
b20pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxl
ZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEp
CiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoc21hcnRE
YXRhLT5iYWNraW5nX3N0b3JlKTsKQEAgLTI0OSw2ICszNDEsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5m
bHVzaCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9mbHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJf
cmVnaW9uID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFw
aS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CisgICAgYXBpLT5wcmVfcmVuZGVyX3N0YXJ0ID0gX2V3
a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQ7CiAgICAgYXBpLT5wcmVfcmVuZGVy
X2NhbmNlbCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbDsKICAgICBh
cGktPmRpc2FibGVfcmVuZGVyID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVy
OwogICAgIGFwaS0+ZW5hYmxlX3JlbmRlciA9IF9ld2tfdmlld190aWxlZF9zbWFydF9lbmFibGVf
cmVuZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGFjMDVlNTcuLjFkMGUzM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0zMCAgSnVuZ0ppayBMZWUg
IDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgcHJlLXJlbmRl
ciBoYW5kbGluZyBjb2RlIGluIEVXZWJMYXVuY2hlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHByZS1yZW5kZXIgaGFuZGxpbmcgY29kZSBieSBw
cmVzc2luZyBJbnNlcnQga2V5LgorCisgICAgICAgICogRVdlYkxhdW5jaGVyL21haW4uYzoKKyAg
ICAgICAgKG9uX2tleV9kb3duKToKKwogMjAxMS0xMS0zMCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgZGVwZW5kZW5jeSBv
ZiBRdCBEUlQgb24gSmF2YVNjcmlwdENvcmUuCmRpZmYgLS1naXQgYS9Ub29scy9FV2ViTGF1bmNo
ZXIvbWFpbi5jIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwppbmRleCAxMTE4MTgzLi4yZDY0
ZDRhIDEwMDY0NAotLS0gYS9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jCisrKyBiL1Rvb2xzL0VX
ZWJMYXVuY2hlci9tYWluLmMKQEAgLTU0OCw2ICs1NDgsOSBAQCBvbl9rZXlfZG93bih2b2lkICpk
YXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQogICAgIH0g
ZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiZSIpKSB7CiAgICAgICAgIGluZm8oIlJlbmRlciBy
ZXN1bWVkIik7CiAgICAgICAgIGV3a192aWV3X2VuYWJsZV9yZW5kZXIob2JqKTsKKyAgICB9IGVs
c2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkluc2VydCIpKSB7CisgICAgICAgIGluZm8oIlByZS1y
ZW5kZXJpbmcgc3RhcnQiKTsKKyAgICAgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFydChvYmop
OwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117417</attachid>
            <date>2011-12-01 07:32:50 -0800</date>
            <delta_ts>2011-12-22 20:18:49 -0800</delta_ts>
            <desc>edited by comment.</desc>
            <filename>third.patch</filename>
            <type>text/plain</type>
            <size>19990</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0NzBhY2MxLi5jMTZmMDJjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMDEgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDExLTExLTMwICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IGJ1aWxk
IGVycm9yIHdoZW4gTk9USUZJQ0FUSU9OUyBmZWF0dXJlIGlzIGVuYWJsZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IGYxMjgyNTUuLjU0MTAyNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBJ
ZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3RzIGFy
ZSBvZiBjb3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQorI2RlZmluZSBFV0tf
QVJHQl9CWVRFU19TSVpFIDQKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2Rl
ZmluZSBFV0tfSlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCAyNTI2OGIzLi43MjRhOWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJl
d2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgogCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfdGlsZWRfbWF0cml4LmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX3ByaXZhdGUu
aCIKICNpbmNsdWRlIDxFY29yZS5oPgpAQCAtMTgzOCw2ICsxODM5LDExMSBAQCB2b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAj
ZW5kaWYKIH0KIAorRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
dGlsZV9hZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgaW50IGNvbHVtbiwgaW50IHJv
dywgZmxvYXQgem9vbSkKK3sKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5n
U3RvcmUsIHByaXYsIGZhbHNlKTsKKworICAgIGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFj
dF9leGlzdHMocHJpdi0+bW9kZWwubWF0cml4LCBjb2x1bW4sIHJvdywgem9vbSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVxdWVzdF9hZGQocHJpdiwgY29sdW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNr
aW5nU3RvcmUsIEVpbmFfUmVjdGFuZ2xlKiB2aWV3UmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRl
clJlY3QsIGludCBtYXhNZW1vcnksIGZsb2F0IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9P
Ul9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHZpZXdSZWN0LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHJlbmRlclJlY3QsIGZhbHNlKTsKKworICAgIGNvbnN0IGludCB0aWxl
V2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgY29uc3QgaW50IHRpbGVIZWlnaHQg
PSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OworCisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHZp
ZXdTbGljZXI7CisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHJlbmRlclNsaWNlcjsKKworICAg
IGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZ2aWV3U2xpY2VyLAorICAgICAgICB2
aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdp
ZHRoLCB0aWxlSGVpZ2h0KSkgeworICAgICAgICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZp
ZXdTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1Jl
Y3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghZWluYV90aWxlX2dyaWRf
c2xpY2VyX3NldHVwKCZyZW5kZXJTbGljZXIsCisgICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRl
clJlY3QtPnksIHJlbmRlclJlY3QtPncsIHJlbmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhl
aWdodCkpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIg
Zm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55
LCByZW5kZXJSZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUg
bG9vcAorICAgIGludCBtZW1vcnlMaW1pdHMgPSBtYXhNZW1vcnkgLyBFV0tfQVJHQl9CWVRFU19T
SVpFIC8gdGlsZVdpZHRoIC8gdGlsZUhlaWdodDsKKyAgICBjb25zdCBpbnQgbWF4Vmlld1NpZGVM
ZW5ndGggPSBzdGQ6Om1heCh2aWV3U2xpY2VyLmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEgLCB2aWV3
U2xpY2VyLnJvdzIgLSB2aWV3U2xpY2VyLnJvdzEpOworICAgIGNvbnN0IGludCBtYXhSZW5kZXJT
aWRlTGVuZ3RoID0gc3RkOjptYXgocmVuZGVyU2xpY2VyLmNvbDIgLSByZW5kZXJTbGljZXIuY29s
MSAsIHJlbmRlclNsaWNlci5yb3cyIC0gcmVuZGVyU2xpY2VyLnJvdzEpOworICAgIGNvbnN0IGlu
dCBtYXhMb29wQ291bnQgPSBtYXhWaWV3U2lkZUxlbmd0aCArIG1heFJlbmRlclNpZGVMZW5ndGg7
CisKKyAgICAvLyBzcGlyZSBzdGFydHMgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFyZWEK
KyAgICBpbnQgY2VudGVyQ29sdW1uID0gKHZpZXdTbGljZXIuY29sMSArIHZpZXdTbGljZXIuY29s
MikgLyAyOworICAgIGludCBjZW50ZXJSb3cgPSAodmlld1NsaWNlci5yb3cxICsgdmlld1NsaWNl
ci5yb3cyKSAvIDI7CisKKyAgICBpbnQgc3RlcCA9IDE7CisgICAgY29uc3QgaW50IHNxdWFyZVNp
ZGUgPSA0OworICAgIGZvciAoaW50IGxvb3AgPSAwOyBsb29wIDwgbWF4TG9vcENvdW50OyBsb29w
KyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzdGVwICogc3F1YXJlU2lkZSArIDE7
IGkrKykgeworICAgICAgICAgICAgaWYgKG1lbW9yeUxpbWl0cyA8IDApCisgICAgICAgICAgICAg
ICAgZ290byBtZW1vcnlMaW1pdHNSZWFjaGVkOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
IHRoaXMgY29kZSBtZWFucyB0aGUgbG9vcCBydW5zIGxpa2Ugc3BpcmFsIChpLmcuIGxlZnQtPmRv
d24tPnJpZ2h0LT51cCkKKyAgICAgICAgICAgIHdoZW4gaXQgbW92ZXMgYmFjayB0byBvcmlnaW5h
bCBwbGFjZSBhbmQgdGhlbiB3YWxrIDEgdGlsZSBsZWZ0IGFuZCB1cC4KKyAgICAgICAgICAgIHRo
ZSBsb29wIGtlZXBzIG9uIGRvaW5nIHRoaXMgdW50aWwgaXQgcmVhY2hlcyBtYXggbWVtb3J5IHRv
IGRyYXcgdGlsZXMKKyAgICAgICAgICAgIGUuZy4gKQorICAgICAgICAgICAgICAgICAgICAgICAg
IDMzMzMzMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAgICAgICAgICAgICAg
ICAgICAgICAgIDMyMTEyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMTEyMworICAgICAg
ICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMzMzMz
MworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBpIDw9IHN0ZXApCisg
ICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uKys7IC8vIG1vdmUgbGVmdAorICAgICAgICAgICAg
ZWxzZSBpZiAoaSA+IHN0ZXAgJiYgaSA8PSBzdGVwICogMikKKyAgICAgICAgICAgICAgICBjZW50
ZXJSb3crKzsgLy8gbW92ZSBkb3duCisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAqIDIg
JiYgaSA8PSBzdGVwICogMykKKyAgICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4tLTsgLy8gbW92
ZSByaWdodAorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAzICYmIGkgPD0gc3RlcCAq
IDQpCisgICAgICAgICAgICAgICAgY2VudGVyUm93LS07IC8vIG1vdmUgdXAKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBFUlIoIkVSUk9SIDogb3V0IG9mIGJvdW5kc1xyXG4iKTsK
KworICAgICAgICAgICAgLy8gc2tpcCBpbiB2aWV3IHBvcnQgYXJlYQorICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5jb2wxKSA8IGNlbnRlckNvbHVtbgorICAgICAg
ICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5jb2wyKSA+IGNlbnRlckNv
bHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmlld1NsaWNlci5yb3cx
KSA8IGNlbnRlclJvdworICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4odmlld1Ns
aWNlci5yb3cyKSA+IGNlbnRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLmNvbDEpIDw9IGNlbnRl
ckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2Vy
LmNvbDIpID49IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGlu
dD4ocmVuZGVyU2xpY2VyLnJvdzEpIDw9IGNlbnRlclJvdworICAgICAgICAgICAgICAgICYmIHN0
YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLnJvdzIpID49IGNlbnRlclJvdykgeworCisgICAg
ICAgICAgICAgICAgaWYgKCFld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVf
YWRkKCBld2tCYWNraW5nU3RvcmUsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93LCB6b29tKSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgREJHKCJSPlslZCAl
ZF0gIiwgY2VudGVyQ29sdW1uLCBjZW50ZXJSb3cpOworICAgICAgICAgICAgICAgIG1lbW9yeUxp
bWl0cy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNlbnRlclJvdy0tOwor
ICAgICAgICBjZW50ZXJDb2x1bW4tLTsKKyAgICAgICAgc3RlcCA9IHN0ZXAgKyAyOworICAgIH0K
KworbWVtb3J5TGltaXRzUmVhY2hlZDoKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRl
bV9wcm9jZXNzX2lkbGVyX3N0YXJ0KHByaXYpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEVp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09i
amVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19D
b29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7CiAgICAgUFJJVl9E
QVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmluZGV4IDBlNTBi
ODcuLjRhZGNlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5oCkBAIC0xMTYsNiArMTE2LDcgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1VudXMK
IAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25lZCBp
bnQgbiwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIG8sIEVpbmFfUmVjdGFuZ2xlKiB2aWV3
X3JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZsb2F0
IHpvb20pOwogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChF
dmFzX09iamVjdCogbyk7CiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNh
YmxlX3JlbmRlcihFdmFzX09iamVjdCogbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApp
bmRleCA4MjgwMmMyLi5hNzY2NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAg
LTEwMDQsNiArMTAwNCwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVf
cmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRhKgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9z
dGFydChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgV1JOKCJub3Qgc3Vw
cG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2NhbmNl
bChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3VwcG9y
dGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKQEAgLTExMzYsNiArMTE0
Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9D
bGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfc21hcnRfZmx1c2g7CiAgICAg
YXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlZ2lv
bjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3NtYXJ0
X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFydCA9
IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRlcl9j
YW5jZWwgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5kaXNh
YmxlX3JlbmRlciA9IF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGktPmVu
YWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3JlbmRlcjsKQEAgLTE4MzcsNiAr
MTg0NCwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludAogICAgIHJldHVybiBzbWFydERhdGEt
PmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoc21hcnREYXRhLCBudW1iZXIsIGN1cnJl
bnRab29tKTsKIH0KIAorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3RhcnQsIGZhbHNlKTsKKworICAgIHJldHVybiBz
bWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9zdGFydChzbWFydERhdGEpOworfQorCiB1bnNpZ25l
ZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGVkMzI4YzAuLjQ4OTQ5NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCkBAIC0xMzMsNiArMTMzLDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9D
bGFzcyB7CiAgICAgdm9pZCAoKmZsdXNoKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAg
RWluYV9Cb29sICgqcHJlX3JlbmRlcl9yZWdpb24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZs
b2F0IHpvb20pOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOworICAg
IEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfc3RhcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
ICAgICB2b2lkICgqcHJlX3JlbmRlcl9jYW5jZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
ICAgICBFaW5hX0Jvb2wgKCpkaXNhYmxlX3JlbmRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
OwogICAgIEVpbmFfQm9vbCAoKmVuYWJsZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKQEAgLTE3OCw3ICsxNzksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAq
IEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19p
bml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0
aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
LgpAQCAtMzEzLDYgKzMxNCwxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAg
ICAgICBFaW5hX0Jvb2wgcG9zaXRpb246MTsKICAgICAgICAgRWluYV9Cb29sIGZyYW1lX3JlY3Q6
MTsKICAgICB9IGNoYW5nZWQ7IC8qKjwgS2VlcHMgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21h
cnRfY2FsY3VsYXRlLiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIEV2YXNfQ29vcmQgeCwgeTsK
KyAgICAgICAgZmxvYXQgem9vbTsKKyAgICB9IHByZXZpb3VzVmlldzsKIH07CiAKIC8vLyBEZWZp
bmVzIHRoZSBtb2RlcyBvZiB2aWV3LgpAQCAtMTI0Nyw2ICsxMjUyLDIzIEBAIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4pOwogCiAvKioKKyAqIEFz
a3MgZW5naW5lIHRvIHN0YXJ0IHByZS1yZW5kZXJpbmcuCisgKgorICogVGhpcyBpcyBhbiBhbHRl
cm5hdGl2ZSBtZXRob2QgdG8gcHJlLXJlbmRlciB0aGUgdmlldyBhcmVhLgorICogVGhlIGZpcnN0
IHN0ZXAgaXMgdG8gZmluZCB0aGUgY2VudGVyIHZpZXcgYXJlYSB3aGVyZSB0byBzdGFydCBwcmUt
cmVuZGVyaW5nLgorICogQW5kIHRoZW4gZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFyZWEg
dGhlIGJhY2tpbmcgc3RvcmUgYXBwZW5kIHRoZSByZW5kZXIgcmVxdWVzdAorICogb3V0d2FyZCBp
biBzcGlyYWwgb3JkZXIuIFNvIHRoYXQgdGhlIHRpbGVzIHdoaWNoIGFyZSBjbG9zZSB0byB2aWV3
IGFyZWEgYXJlIGRpc3BsYXllZAorICogc29vbmVyIHRoYW4gb3V0c2lkZS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IHRvIGFzayBwcmUtcmVuZGVyCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgcmVxdWVzdCB3YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3
aXNlIChlcnJvcnMsIHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9ydGVkLCBldGMpCisgKgor
ICovCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0KEV2YXNfT2Jq
ZWN0ICpvKTsKKworLyoqCiAgKiBDYW5jZWxzIGFuZCBjbGVhcnMgcHJldmlvdXMgdGhlIHByZS1y
ZW5kZXIgcmVxdWVzdHMuCiAgKgogICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBwcmUtcmVuZGVy
IHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGls
ZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCBk
YWY5NzlmLi4wZTU5MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5j
cHAKQEAgLTIxOSw2ICsyMTksMTI1IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0CiAgICAgICAg
ICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKIH0KIAorc3RhdGlj
IGlubGluZSBpbnQgX2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX2NoZWNrKGludCBkZXN0
aW5hdGlvblgsIGludCBkZXN0aW5hdGlvblksIGludCBkZXN0aW5hdGlvbldpZHRoLCBpbnQgZGVz
dGluYXRpb25IZWlnaHQsIGludCBzb3VyY2VYLCBpbnQgc291cmNlWSwgaW50IHNvdXJjZVdpZHRo
LCBpbnQgc291cmNlSGVpZ2h0KQoreworICAgIGludCBkaXJlY3Rpb24gPSAwOworICAgIGlmIChk
ZXN0aW5hdGlvblggPCBzb3VyY2VYKQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfCAo
MSA8PCAwKTsgLy8gMCBiaXQgc2hpZnQsIGxlZnQKKyAgICBpZiAoZGVzdGluYXRpb25ZIDwgc291
cmNlWSkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMSk7IC8vIDEgYml0
IHNoaWZ0LCB0b3AKKyAgICBpZiAoZGVzdGluYXRpb25YICsgZGVzdGluYXRpb25XaWR0aCA+IHNv
dXJjZVggKyBzb3VyY2VXaWR0aCkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEg
PDwgMik7IC8vIDIgYml0IHNoaWZ0LCByaWdodAorICAgIGlmIChkZXN0aW5hdGlvblkgKyBkZXN0
aW5hdGlvbkhlaWdodCA+IHNvdXJjZVkgKyBzb3VyY2VIZWlnaHQpCisgICAgICAgIGRpcmVjdGlv
biA9IGRpcmVjdGlvbiB8ICgxIDw8IDMpOyAvLyAzIGJpdCBzaGlmdCwgYm90dG9tCisgICAgREJH
KCJjaGVjayBjb2xsaXNpb24gJWRcclxuIiwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gZGlyZWN0
aW9uOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlz
aW9uX3Jlc29sdmUoaW50IGRpcmVjdGlvbiwgaW50KiBkZXN0aW5hdGlvblgsIGludCogZGVzdGlu
YXRpb25ZLCBpbnQqIGRlc3RpbmF0aW9uV2lkdGgsIGludCogZGVzdGluYXRpb25IZWlnaHQsIGlu
dCBzb3VyY2VYLCBpbnQgc291cmNlWSwgaW50IHNvdXJjZVdpZHRoLCBpbnQgc291cmNlSGVpZ2h0
KQoreworICAgIGlmIChkaXJlY3Rpb24gJiAxKQorICAgICAgICAqZGVzdGluYXRpb25YID0gKmRl
c3RpbmF0aW9uWCArIChzb3VyY2VYIC0gKmRlc3RpbmF0aW9uWCk7CisgICAgaWYgKGRpcmVjdGlv
biAmIDIpCisgICAgICAgICpkZXN0aW5hdGlvblkgPSAqZGVzdGluYXRpb25ZICsgKHNvdXJjZVkg
LSAqZGVzdGluYXRpb25ZKTsKKyAgICBpZiAoZGlyZWN0aW9uICYgNCkKKyAgICAgICAgKmRlc3Rp
bmF0aW9uWCA9ICpkZXN0aW5hdGlvblggLSAoKCpkZXN0aW5hdGlvblggKyAqZGVzdGluYXRpb25X
aWR0aCkgLSAoc291cmNlWCArIHNvdXJjZVdpZHRoKSk7CisgICAgaWYgKGRpcmVjdGlvbiAmIDgp
CisgICAgICAgICpkZXN0aW5hdGlvblkgPSAqZGVzdGluYXRpb25ZIC0gKCgqZGVzdGluYXRpb25Z
ICsgKmRlc3RpbmF0aW9uSGVpZ2h0KSAtIChzb3VyY2VZICsgc291cmNlSGVpZ2h0KSk7Cit9CisK
K3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQo
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQoreworICAgIGZsb2F0IGN1cnJlbnRWaWV3
Wm9vbSA9IGV3a192aWV3X3pvb21fZ2V0KHNtYXJ0RGF0YS0+c2VsZik7CisKKyAgICBpbnQgY29u
dGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OworICAgIGV3a19mcmFtZV9jb250ZW50c19zaXplX2dl
dChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50V2lkdGgsICZjb250ZW50SGVpZ2h0KTsK
KworICAgIGludCB2aWV3WCwgdmlld1ksIHZpZXdXaWR0aCwgdmlld0hlaWdodDsKKyAgICBld2tf
ZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChzbWFydERhdGEtPm1haW5fZnJhbWUs
IGZhbHNlLCAmdmlld1gsICZ2aWV3WSwgJnZpZXdXaWR0aCwgJnZpZXdIZWlnaHQpOworCisgICAg
aWYgKHZpZXdXaWR0aCA8PSAwIHx8IHZpZXdIZWlnaHQgPD0gMCB8fCBjb250ZW50V2lkdGggPD0g
MCB8fCBjb250ZW50SGVpZ2h0IDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICh2aWV3V2lkdGggPj0gY29udGVudFdpZHRoICYmIHZpZXdIZWlnaHQgPj0gY29udGVudEhlaWdo
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHByZXZpb3VzVmlld1gsIHByZXZp
b3VzVmlld1k7CisgICAgcHJldmlvdXNWaWV3WCA9IHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lng7
CisgICAgcHJldmlvdXNWaWV3WSA9IHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnk7CisKKyAgICBp
ZiAocHJldmlvdXNWaWV3WCA8IDAgfHwgcHJldmlvdXNWaWV3WCA+IGNvbnRlbnRXaWR0aCB8fCBw
cmV2aW91c1ZpZXdZIDwgMCB8fCBwcmV2aW91c1ZpZXdZID4gY29udGVudEhlaWdodCkKKyAgICAg
ICAgcHJldmlvdXNWaWV3WCA9IHByZXZpb3VzVmlld1kgPSAwOworCisgICAgLy8gcHJlLXJlbmRl
ciB3b3JrcyB3aGVuIHR3byBjb25kaXRpb25zIGFyZSBtZXQuCisgICAgLy8gem9vbSBoYXMgYmVl
biBjaGFuZ2VkLgorICAgIC8vIGFuZCB0aGUgdmlldyBoYXMgYmVlbiBtb3ZlZCBtb3JlIHRoYW4g
dGlsZSBzaXplLgorICAgIGlmIChhYnMocHJldmlvdXNWaWV3WCAtIHZpZXdYKSA8IERFRkFVTFRf
VElMRV9XCisgICAgICAgICYmIGFicyhwcmV2aW91c1ZpZXdZIC0gdmlld1kpIDwgREVGQVVMVF9U
SUxFX0gKKyAgICAgICAgJiYgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcuem9vbSA9PSBjdXJyZW50
Vmlld1pvb20pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHN0b3Jl
IHByZXZpb3VzIHZpZXcgcG9zaXRpb24gYW5kIHpvb20KKyAgICBzbWFydERhdGEtPnByZXZpb3Vz
Vmlldy54ID0gdmlld1g7CisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueSA9IHZpZXdZOwor
ICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnpvb20gPSBjdXJyZW50Vmlld1pvb207CisKKyAg
ICAvLyBjYW5jZWxsaW5nIHByZXZpb3VzIHByZS1yZW5kZXJpbmcgbGlzdCBpZiBleGlzdHMKKyAg
ICBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChzbWFydERhdGEtPnNlbGYpOworCisgICAgRXdr
X1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdmlld190aWxlZF91bnVz
ZWRfY2FjaGVfZ2V0KHNtYXJ0RGF0YS0+c2VsZik7CisgICAgaW50IG1heE1lbW9yeSA9IGV3a190
aWxlX3VudXNlZF9jYWNoZV9tYXhfZ2V0KHRpbGVVbnVzZWRDYWNoZSk7CisgICAgaWYgKG1heE1l
bW9yeSA8PSB2aWV3V2lkdGggKiB2aWV3SGVpZ2h0ICogRVdLX0FSR0JfQllURVNfU0laRSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRWluYV9SZWN0YW5nbGUgdmlld1JlY3QgPSB7dmll
d1gsIHZpZXdZLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHR9OworCisgICAgLy8gZ2V0IGEgYmFzZSBy
ZW5kZXIgcmVjdAorICAgIGNvbnN0IGludCBjb250ZW50TWVtb3J5ID0gY29udGVudFdpZHRoICog
Y29udGVudEhlaWdodCAqIEVXS19BUkdCX0JZVEVTX1NJWkU7CisKKyAgICAvLyBnZXQgcmVuZGVy
IHJlY3QncyB3aWR0aCBhbmQgaGVpZ2h0CisgICAgRWluYV9SZWN0YW5nbGUgcmVuZGVyUmVjdDsK
KyAgICBpZiAobWF4TWVtb3J5ID4gY29udGVudE1lbW9yeSkgeworICAgICAgICByZW5kZXJSZWN0
LnggPSAwOworICAgICAgICByZW5kZXJSZWN0LnkgPSAwOworICAgICAgICByZW5kZXJSZWN0Lncg
PSBjb250ZW50V2lkdGg7CisgICAgICAgIHJlbmRlclJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTWFrZSBhIGJhc2UgcmVjdGFuZ2xlIGFzIGJpZyBhcyBw
b3NzaWJsZSB3aXRoIHVzaW5nIG1heE1lbW9yeS4KKyAgICAgICAgLy8gYW5kIHRoZW4gcmVzaGFw
ZSB0aGUgYmFzZSByZWN0YW5nbGUgdG8gZml0IHRvIGNvbnRlbnRzLgorICAgICAgICBjb25zdCBp
bnQgYmFzZVNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNxcnQobWF4TWVtb3J5IC8gNC4wZikpOwor
ICAgICAgICBjb25zdCBmbG9hdCB3aWR0aFJhdGUgPSAodmlld1JlY3QudyArIChERUZBVUxUX1RJ
TEVfVyAqIDIpKSAvIHN0YXRpY19jYXN0PGZsb2F0PihiYXNlU2l6ZSk7CisgICAgICAgIGNvbnN0
IGZsb2F0IGhlaWdodFJhdGUgPSBiYXNlU2l6ZSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50
SGVpZ2h0KTsKKyAgICAgICAgY29uc3QgZmxvYXQgcmVjdFJhdGUgPSBzdGQ6Om1heCh3aWR0aFJh
dGUsIGhlaWdodFJhdGUpOworCisgICAgICAgIHJlbmRlclJlY3QudyA9IHN0YXRpY19jYXN0PGlu
dD4oYmFzZVNpemUgKiByZWN0UmF0ZSk7CisgICAgICAgIHJlbmRlclJlY3QuaCA9IHN0YXRpY19j
YXN0PGludD4oYmFzZVNpemUgLyByZWN0UmF0ZSk7CisgICAgICAgIHJlbmRlclJlY3QueCA9IHZp
ZXdSZWN0LnggKyAodmlld1JlY3QudyAvIDIpIC0gKHJlbmRlclJlY3QudyAvIDIpOworICAgICAg
ICByZW5kZXJSZWN0LnkgPSB2aWV3UmVjdC55ICsgKHZpZXdSZWN0LmggLyAyKSAtIChyZW5kZXJS
ZWN0LmggLyAyKTsKKyAgICB9CisKKyAgICAvLyByZXBvc2l0aW9uIG9mIHJlbmRlclJlY3QsIGlm
IHRoZSByZW5kZXJSZWN0IG92ZXJsYXBwZWQgdGhlIGNvbnRlbnQgcmVjdCwgdGhpcyBjb2RlIG1v
dmVzIHRoZSByZW5kZXJSZWN0IGluc2lkZSB0aGUgY29udGVudCByZWN0CisgICAgaW50IGNvbGxp
c2lvblNpZGUgPSBfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fY2hlY2socmVuZGVyUmVj
dC54LCByZW5kZXJSZWN0LnksIHJlbmRlclJlY3QudywgcmVuZGVyUmVjdC5oLCAwLCAwLCBjb250
ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOworICAgIGlmIChjb2xsaXNpb25TaWRlID4gMCkKKyAg
ICAgICAgX2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX3Jlc29sdmUoY29sbGlzaW9uU2lk
ZSwgJnJlbmRlclJlY3QueCwgJnJlbmRlclJlY3QueSwgJnJlbmRlclJlY3QudywgJnJlbmRlclJl
Y3QuaCwgMCwgMCwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKKworICAgIC8vIGNoZWNr
IGFibm9ybWFsIHJlbmRlciByZWN0CisgICAgaWYgKHJlbmRlclJlY3QueCA8IDApCisgICAgICAg
IHJlbmRlclJlY3QueCA9IDA7CisgICAgaWYgKHJlbmRlclJlY3QueSA8IDApCisgICAgICAgIHJl
bmRlclJlY3QueSA9IDA7CisgICAgaWYgKHJlbmRlclJlY3QudyA+IGNvbnRlbnRXaWR0aCkKKyAg
ICAgICAgcmVuZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAgIGlmIChyZW5kZXJSZWN0Lmgg
PiBjb250ZW50SGVpZ2h0KQorICAgICAgICByZW5kZXJSZWN0LmggPSBjb250ZW50SGVpZ2h0Owor
CisgICAgLy8gZW5xdWV1ZSB0aWxlcyBpbnRvIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4gc3BpcmFs
IG9yZGVyCisgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVl
dWUoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAmdmlld1JlY3QsICZyZW5kZXJSZWN0LCBtYXhN
ZW1vcnksIGN1cnJlbnRWaWV3Wm9vbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGlj
IHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX2NhbmNlbChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwpAQCAtMjU1LDYgKzM3NCw3
IEBAIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MqIGFwaSkKICAgICBhcGktPmZsdXNoID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X2ZsdXNoOwog
ICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdpb24gPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3Jl
bmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyA9IF9ld2tf
dmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1czsKKyAgICBhcGktPnBy
ZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydDsK
ICAgICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9y
ZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGlsZWRf
c21hcnRfZGlzYWJsZV9yZW5kZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTk5NDVmNC4uNWQzOTVjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTEyLTAxICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkxdIEFkZCBwcmUtcmVuZGVyIGhhbmRsaW5nIGNvZGUgaW4gRVdlYkxhdW5jaGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcHJlLXJlbmRl
ciBoYW5kbGluZyBjb2RlIGJ5IHByZXNzaW5nIEluc2VydCBrZXkuCisKKyAgICAgICAgKiBFV2Vi
TGF1bmNoZXIvbWFpbi5jOgorICAgICAgICAob25fa2V5X2Rvd24pOgorCiAyMDExLTEyLTAxICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZGJvdCBmaXgKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMgYi9Ub29scy9FV2ViTGF1bmNoZXIv
bWFpbi5jCmluZGV4IDExMTgxODMuLjJkNjRkNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0VXZWJMYXVu
Y2hlci9tYWluLmMKKysrIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwpAQCAtNTQ4LDYgKzU0
OCw5IEBAIG9uX2tleV9kb3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvYmos
IHZvaWQgKmV2ZW50X2luZm8pCiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJlIikp
IHsKICAgICAgICAgaW5mbygiUmVuZGVyIHJlc3VtZWQiKTsKICAgICAgICAgZXdrX3ZpZXdfZW5h
YmxlX3JlbmRlcihvYmopOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiSW5zZXJ0
IikpIHsKKyAgICAgICAgaW5mbygiUHJlLXJlbmRlcmluZyBzdGFydCIpOworICAgICAgICBld2tf
dmlld19wcmVfcmVuZGVyX3N0YXJ0KG9iaik7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120430</attachid>
            <date>2011-12-22 20:18:49 -0800</date>
            <delta_ts>2011-12-26 03:13:18 -0800</delta_ts>
            <desc>edited patch</desc>
            <filename>pre_render_edit.patch</filename>
            <type>text/plain</type>
            <size>20287</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBlZDdmYTkyLi4yNzY5OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMjIgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDExLTEyLTIyICBNYXJpdXN6IEdyemVnb3Jj
enlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1pc3NpbmcgcGx1
Z2lucyBzdXBwb3J0IGZvciBlZmwgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApp
bmRleCA3N2Y2NTM0Li42YjdiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApA
QCAtNDUsNiArNDUsNyBAQCBleHRlcm4gIkMiIHsKIAogLy8gSWYgZGVmaW5lZCwgZXdrIHdpbGwg
ZG8gdHlwZSBjaGVja2luZyB0byBlbnN1cmUgb2JqZWN0cyBhcmUgb2YgY29ycmVjdCB0eXBlCiAj
ZGVmaW5lIEVXS19UWVBFX0NIRUNLIDEKKyNkZWZpbmUgRVdLX0FSR0JfQllURVNfU0laRSA0CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNkZWZpbmUgRVdLX0pTX09CSkVDVF9N
QUdJQyAweDY5Njk2OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jcHAKaW5kZXggMjUyNjhiMy4uNzI0YTlhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0yMSw2ICsyMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuaCIKIAorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX21h
dHJpeC5oIgogI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUu
aD4KQEAgLTE4MzgsNiArMTgzOSwxMTEgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9m
bHVzaChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQogI2VuZGlmCiB9CiAKK0VpbmFfQm9v
bCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0
KiBld2tCYWNraW5nU3RvcmUsIGludCBjb2x1bW4sIGludCByb3csIGZsb2F0IHpvb20pCit7Cisg
ICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7
CisKKyAgICBpZiAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZXhpc3RzKHByaXYtPm1vZGVs
Lm1hdHJpeCwgY29sdW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIV9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKHBy
aXYsIGNvbHVtbiwgcm93LCB6b29tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3Rh
bmdsZSogdmlld1JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5
LCBmbG9hdCB6b29tKQoreworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdT
dG9yZSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2
aWV3UmVjdCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZW5k
ZXJSZWN0LCBmYWxzZSk7CisKKyAgICBjb25zdCBpbnQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50
aWxlLndpZHRoOworICAgIGNvbnN0IGludCB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhl
aWdodDsKKworICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciB2aWV3U2xpY2VyOworICAgIEVpbmFf
VGlsZV9HcmlkX1NsaWNlciByZW5kZXJTbGljZXI7CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlk
X3NsaWNlcl9zZXR1cCgmdmlld1NsaWNlciwKKyAgICAgICAgdmlld1JlY3QtPngsIHZpZXdSZWN0
LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsK
KyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCB2aWV3U2xpY2VyIGZvciAlZCwlZCsl
ZHglZCB0aWxlPSVkeCVkIiwgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywg
dmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmcmVuZGVy
U2xpY2VyLAorICAgICAgICByZW5kZXJSZWN0LT54LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0
LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpKSB7CisgICAgICAgIEVS
UigiY291bGQgbm90IHNldHVwIGdyaWQgUmVuZGVyU2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxl
PSVkeCVkIiwgcmVuZGVyUmVjdC0+eSwgcmVuZGVyUmVjdC0+eSwgcmVuZGVyUmVjdC0+dywgcmVu
ZGVyUmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIHNldCBsaW1pdHMgb2YgdGhlIGxvb3AKKyAgICBpbnQgbWVtb3J5
TGltaXRzID0gbWF4TWVtb3J5IC8gRVdLX0FSR0JfQllURVNfU0laRSAvIHRpbGVXaWR0aCAvIHRp
bGVIZWlnaHQ7CisgICAgY29uc3QgaW50IG1heFZpZXdTaWRlTGVuZ3RoID0gc3RkOjptYXgodmll
d1NsaWNlci5jb2wyIC0gdmlld1NsaWNlci5jb2wxICwgdmlld1NsaWNlci5yb3cyIC0gdmlld1Ns
aWNlci5yb3cxKTsKKyAgICBjb25zdCBpbnQgbWF4UmVuZGVyU2lkZUxlbmd0aCA9IHN0ZDo6bWF4
KHJlbmRlclNsaWNlci5jb2wyIC0gcmVuZGVyU2xpY2VyLmNvbDEgLCByZW5kZXJTbGljZXIucm93
MiAtIHJlbmRlclNsaWNlci5yb3cxKTsKKyAgICBjb25zdCBpbnQgbWF4TG9vcENvdW50ID0gbWF4
Vmlld1NpZGVMZW5ndGggKyBtYXhSZW5kZXJTaWRlTGVuZ3RoOworCisgICAgLy8gc3BpcmUgc3Rh
cnRzIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgdmlldyBhcmVhCisgICAgaW50IGNlbnRlckNvbHVt
biA9ICh2aWV3U2xpY2VyLmNvbDEgKyB2aWV3U2xpY2VyLmNvbDIpIC8gMjsKKyAgICBpbnQgY2Vu
dGVyUm93ID0gKHZpZXdTbGljZXIucm93MSArIHZpZXdTbGljZXIucm93MikgLyAyOworCisgICAg
aW50IHN0ZXAgPSAxOworICAgIGNvbnN0IGludCBzcXVhcmVTaWRlID0gNDsKKyAgICBmb3IgKGlu
dCBsb29wID0gMDsgbG9vcCA8IG1heExvb3BDb3VudDsgbG9vcCsrKSB7CisgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgc3RlcCAqIHNxdWFyZVNpZGUgKyAxOyBpKyspIHsKKyAgICAgICAgICAg
IGlmIChtZW1vcnlMaW1pdHMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gbWVtb3J5TGltaXRz
UmVhY2hlZDsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICB0aGlzIGNvZGUgbWVhbnMgdGhl
IGxvb3AgcnVucyBsaWtlIHNwaXJhbCAoaS5nLiBsZWZ0LT5kb3duLT5yaWdodC0+dXApCisgICAg
ICAgICAgICB3aGVuIGl0IG1vdmVzIGJhY2sgdG8gb3JpZ2luYWwgcGxhY2UgYW5kIHRoZW4gd2Fs
ayAxIHRpbGUgbGVmdCBhbmQgdXAuCisgICAgICAgICAgICB0aGUgbG9vcCBrZWVwcyBvbiBkb2lu
ZyB0aGlzIHVudGlsIGl0IHJlYWNoZXMgbWF4IG1lbW9yeSB0byBkcmF3IHRpbGVzCisgICAgICAg
ICAgICBlLmcuICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMzMzMzMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAzMjIyMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMjExMjMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAzMjExMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAz
MjIyMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMzMzMzMKKyAgICAgICAgICAgICovCisg
ICAgICAgICAgICBpZiAoaSA+IDAgJiYgaSA8PSBzdGVwKQorICAgICAgICAgICAgICAgIGNlbnRl
ckNvbHVtbisrOyAvLyBtb3ZlIGxlZnQKKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBzdGVwICYm
IGkgPD0gc3RlcCAqIDIpCisgICAgICAgICAgICAgICAgY2VudGVyUm93Kys7IC8vIG1vdmUgZG93
bgorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAyICYmIGkgPD0gc3RlcCAqIDMpCisg
ICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uLS07IC8vIG1vdmUgcmlnaHQKKyAgICAgICAgICAg
IGVsc2UgaWYgKGkgPiBzdGVwICogMyAmJiBpIDw9IHN0ZXAgKiA0KQorICAgICAgICAgICAgICAg
IGNlbnRlclJvdy0tOyAvLyBtb3ZlIHVwCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgRVJSKCJFUlJPUiA6IG91dCBvZiBib3VuZHNcclxuIik7CisKKyAgICAgICAgICAgIC8vIHNr
aXAgaW4gdmlldyBwb3J0IGFyZWEKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHZp
ZXdTbGljZXIuY29sMSkgPCBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNf
Y2FzdDxpbnQ+KHZpZXdTbGljZXIuY29sMikgPiBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAg
ICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIucm93MSkgPCBjZW50ZXJSb3cKKyAgICAg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIucm93MikgPiBjZW50ZXJS
b3cpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ+KHJlbmRlclNsaWNlci5jb2wxKSA8PSBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAg
ICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5jb2wyKSA+PSBjZW50ZXJDb2x1
bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5yb3cx
KSA8PSBjZW50ZXJSb3cKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRl
clNsaWNlci5yb3cyKSA+PSBjZW50ZXJSb3cpIHsKKworICAgICAgICAgICAgICAgIGlmICghZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90aWxlX2FkZCggZXdrQmFja2luZ1N0b3Jl
LCBjZW50ZXJDb2x1bW4sIGNlbnRlclJvdywgem9vbSkpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIERCRygiUj5bJWQgJWRdICIsIGNlbnRlckNvbHVtbiwg
Y2VudGVyUm93KTsKKyAgICAgICAgICAgICAgICBtZW1vcnlMaW1pdHMtLTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjZW50ZXJSb3ctLTsKKyAgICAgICAgY2VudGVyQ29sdW1u
LS07CisgICAgICAgIHN0ZXAgPSBzdGVwICsgMjsKKyAgICB9CisKK21lbW9yeUxpbWl0c1JlYWNo
ZWQ6CisgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFy
dChwcml2KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9y
ZSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29v
cmQgaGVpZ2h0LCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3
a0JhY2tpbmdTdG9yZSwgcHJpdiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAppbmRleCAwZTUwYjg3Li40YWRjZTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaApAQCAtMTE2
LDYgKzExNiw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2Fj
aGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVGlsZV9VbnVzCiAKIEVpbmFfQm9vbCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6
b29tKTsKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhFdmFzX09iamVjdCogbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOwor
RWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVl
KEV2YXNfT2JqZWN0KiBvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3Rhbmds
ZSogcmVuZGVyX3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKIHZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pOwogCiBF
aW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmpl
Y3QqIG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggODcxNTZlYS4uZWIxYmVl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0xMDA3LDYgKzEwMDcsMTIgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMoRXdrX1ZpZXdfU21hcnRfRGF0YSoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQoreworICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNt
YXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0
RGF0YT0lcCIsIHNtYXJ0RGF0YSk7CkBAIC0xMTM5LDYgKzExNDUsNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGkt
PmZsdXNoID0gX2V3a192aWV3X3NtYXJ0X2ZsdXNoOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdp
b24gPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVu
ZGVyX3JlbGF0aXZlX3JhZGl1cyA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZl
X3JhZGl1czsKKyAgICBhcGktPnByZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3ZpZXdfc21hcnRfcHJl
X3JlbmRlcl9zdGFydDsKICAgICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3Nt
YXJ0X3ByZV9yZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3Zp
ZXdfc21hcnRfZGlzYWJsZV9yZW5kZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192
aWV3X3NtYXJ0X2VuYWJsZV9yZW5kZXI7CkBAIC0xODM2LDYgKzE4NDMsMTQgQEAgRWluYV9Cb29s
IGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB1bnNpZ25lZCBpbnQKICAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKHNtYXJ0RGF0YSwgbnVtYmVyLCBjdXJyZW50Wm9vbSk7CiB9CiAKK0VpbmFf
Qm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5wcmVf
cmVuZGVyX3N0YXJ0LCBmYWxzZSk7CisKKyAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9y
ZW5kZXJfc3RhcnQoc21hcnREYXRhKTsKK30KKwogdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApp
bmRleCBlYzU2NjVjLi45ZTA3ZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMTM1
LDYgKzEzNSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIHZvaWQgKCpm
bHVzaCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5k
ZXJfcmVnaW9uKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKICAgICBFaW5h
X0Jvb2wgKCpwcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cykoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKTsKKyAgICBFaW5hX0Jvb2wgKCpwcmVfcmVu
ZGVyX3N0YXJ0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgdm9pZCAoKnByZV9yZW5k
ZXJfY2FuY2VsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqZGlz
YWJsZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCpl
bmFibGVfcmVuZGVyKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CkBAIC0xNjgsNyArMTY5LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2
ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzIHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OIDNVTAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAv
KioKICAqIEluaXRpYWxpemVzIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0
dXJlLgpAQCAtMTgwLDcgKzE4MSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgewog
ICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tf
VklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwfQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNz
X2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIElu
aXRpYWxpemVzIHRvIHplcm8gYSB3aG9sZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1
cmUuCkBAIC0zMTUsNiArMzE2LDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAg
ICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOwogICAgICAgICBFaW5hX0Jvb2wgZnJhbWVfcmVj
dDoxOwogICAgIH0gY2hhbmdlZDsgLyoqPCBLZWVwcyB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBz
bWFydF9jYWxjdWxhdGUuICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5
OworICAgICAgICBmbG9hdCB6b29tOworICAgIH0gcHJldmlvdXNWaWV3OwogfTsKIAogLy8vIERl
ZmluZXMgdGhlIG1vZGVzIG9mIHZpZXcuCkBAIC0xMjUwLDYgKzEyNTUsMjMgQEAgRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNf
Q29vcmQgeCwgRXZhc18KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CiAKIC8qKgorICog
QXNrcyBlbmdpbmUgdG8gc3RhcnQgcHJlLXJlbmRlcmluZy4KKyAqCisgKiBUaGlzIGlzIGFuIGFs
dGVybmF0aXZlIG1ldGhvZCB0byBwcmUtcmVuZGVyIGFyb3VuZCB0aGUgdmlldyBhcmVhLgorICog
VGhlIGZpcnN0IHN0ZXAgaXMgdG8gZmluZCB0aGUgY2VudGVyIHZpZXcgYXJlYSB3aGVyZSB0byBz
dGFydCBwcmUtcmVuZGVyaW5nLgorICogQW5kIHRoZW4gZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2
aWV3IGFyZWEgdGhlIGJhY2tpbmcgc3RvcmUgYXBwZW5kIHRoZSByZW5kZXIgcmVxdWVzdAorICog
b3V0d2FyZCBpbiBzcGlyYWwgb3JkZXIuIFNvIHRoYXQgdGhlIHRpbGVzIHdoaWNoIGFyZSBjbG9z
ZSB0byB2aWV3IGFyZWEgYXJlIGRpc3BsYXllZAorICogc29vbmVyIHRoYW4gb3V0c2lkZS4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3IHRvIGFzayBwcmUtcmVuZGVyCisgKgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgcmVxdWVzdCB3YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAg
ICAgb3RoZXJ3aXNlIChlcnJvcnMsIHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9ydGVkLCBl
dGMpCisgKgorICovCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0
KEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCiAgKiBDYW5jZWxzIGFuZCBjbGVhcnMgcHJldmlvdXMg
dGhlIHByZS1yZW5kZXIgcmVxdWVzdHMuCiAgKgogICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBw
cmUtcmVuZGVyIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNw
cAppbmRleCA2YzE2ZjVlLi44ZDhjYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d190aWxlZC5jcHAKQEAgLTIxOCw2ICsyMTgsMTI1IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0
CiAgICAgICAgICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKIH0K
IAorc3RhdGljIGlubGluZSBpbnQgX2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX2NoZWNr
KGludCBkZXN0aW5hdGlvblgsIGludCBkZXN0aW5hdGlvblksIGludCBkZXN0aW5hdGlvbldpZHRo
LCBpbnQgZGVzdGluYXRpb25IZWlnaHQsIGludCBzb3VyY2VYLCBpbnQgc291cmNlWSwgaW50IHNv
dXJjZVdpZHRoLCBpbnQgc291cmNlSGVpZ2h0KQoreworICAgIGludCBkaXJlY3Rpb24gPSAwOwor
ICAgIGlmIChkZXN0aW5hdGlvblggPCBzb3VyY2VYKQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJl
Y3Rpb24gfCAoMSA8PCAwKTsgLy8gMCBiaXQgc2hpZnQsIGxlZnQKKyAgICBpZiAoZGVzdGluYXRp
b25ZIDwgc291cmNlWSkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMSk7
IC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICBpZiAoZGVzdGluYXRpb25YICsgZGVzdGluYXRpb25X
aWR0aCA+IHNvdXJjZVggKyBzb3VyY2VXaWR0aCkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0
aW9uIHwgKDEgPDwgMik7IC8vIDIgYml0IHNoaWZ0LCByaWdodAorICAgIGlmIChkZXN0aW5hdGlv
blkgKyBkZXN0aW5hdGlvbkhlaWdodCA+IHNvdXJjZVkgKyBzb3VyY2VIZWlnaHQpCisgICAgICAg
IGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8IDMpOyAvLyAzIGJpdCBzaGlmdCwgYm90dG9t
CisgICAgREJHKCJjaGVjayBjb2xsaXNpb24gJWRcclxuIiwgZGlyZWN0aW9uKTsKKyAgICByZXR1
cm4gZGlyZWN0aW9uOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3RpbGVkX3Jl
Y3RfY29sbGlzaW9uX3Jlc29sdmUoaW50IGRpcmVjdGlvbiwgaW50KiBkZXN0aW5hdGlvblgsIGlu
dCogZGVzdGluYXRpb25ZLCBpbnQgZGVzdGluYXRpb25XaWR0aCwgaW50IGRlc3RpbmF0aW9uSGVp
Z2h0LCBpbnQgc291cmNlWCwgaW50IHNvdXJjZVksIGludCBzb3VyY2VXaWR0aCwgaW50IHNvdXJj
ZUhlaWdodCkKK3sKKyAgICBpZiAoZGlyZWN0aW9uICYgMSkKKyAgICAgICAgKmRlc3RpbmF0aW9u
WCA9ICpkZXN0aW5hdGlvblggKyAoc291cmNlWCAtICpkZXN0aW5hdGlvblgpOworICAgIGlmIChk
aXJlY3Rpb24gJiAyKQorICAgICAgICAqZGVzdGluYXRpb25ZID0gKmRlc3RpbmF0aW9uWSArIChz
b3VyY2VZIC0gKmRlc3RpbmF0aW9uWSk7CisgICAgaWYgKGRpcmVjdGlvbiAmIDQpCisgICAgICAg
ICpkZXN0aW5hdGlvblggPSAqZGVzdGluYXRpb25YIC0gKCgqZGVzdGluYXRpb25YICsgZGVzdGlu
YXRpb25XaWR0aCkgLSAoc291cmNlWCArIHNvdXJjZVdpZHRoKSk7CisgICAgaWYgKGRpcmVjdGlv
biAmIDgpCisgICAgICAgICpkZXN0aW5hdGlvblkgPSAqZGVzdGluYXRpb25ZIC0gKCgqZGVzdGlu
YXRpb25ZICsgZGVzdGluYXRpb25IZWlnaHQpIC0gKHNvdXJjZVkgKyBzb3VyY2VIZWlnaHQpKTsK
K30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9z
dGFydChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgaW50IGNvbnRlbnRX
aWR0aCwgY29udGVudEhlaWdodDsKKyAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc21h
cnREYXRhLT5tYWluX2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29udGVudEhlaWdodCk7CisKKyAg
ICBpbnQgdmlld1gsIHZpZXdZLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQ7CisgICAgZXdrX2ZyYW1l
X3Zpc2libGVfY29udGVudF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBmYWxz
ZSwgJnZpZXdYLCAmdmlld1ksICZ2aWV3V2lkdGgsICZ2aWV3SGVpZ2h0KTsKKworICAgIGlmICh2
aWV3V2lkdGggPD0gMCB8fCB2aWV3SGVpZ2h0IDw9IDAgfHwgY29udGVudFdpZHRoIDw9IDAgfHwg
Y29udGVudEhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodmll
d1dpZHRoID49IGNvbnRlbnRXaWR0aCAmJiB2aWV3SGVpZ2h0ID49IGNvbnRlbnRIZWlnaHQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBwcmV2aW91c1ZpZXdYLCBwcmV2aW91c1Zp
ZXdZOworICAgIHByZXZpb3VzVmlld1ggPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy54OworICAg
IHByZXZpb3VzVmlld1kgPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy55OworCisgICAgaWYgKHBy
ZXZpb3VzVmlld1ggPCAwIHx8IHByZXZpb3VzVmlld1ggPiBjb250ZW50V2lkdGggfHwgcHJldmlv
dXNWaWV3WSA8IDAgfHwgcHJldmlvdXNWaWV3WSA+IGNvbnRlbnRIZWlnaHQpCisgICAgICAgIHBy
ZXZpb3VzVmlld1ggPSBwcmV2aW91c1ZpZXdZID0gMDsKKworICAgIGZsb2F0IGN1cnJlbnRWaWV3
Wm9vbSA9IGV3a192aWV3X3pvb21fZ2V0KHNtYXJ0RGF0YS0+c2VsZik7CisKKyAgICAvLyBwcmUt
cmVuZGVyIHdvcmtzIHdoZW4gdHdvIGNvbmRpdGlvbnMgYXJlIG1ldC4KKyAgICAvLyB6b29tIGhh
cyBiZWVuIGNoYW5nZWQuCisgICAgLy8gYW5kIHRoZSB2aWV3IGhhcyBiZWVuIG1vdmVkIG1vcmUg
dGhhbiB0aWxlIHNpemUuCisgICAgaWYgKGFicyhwcmV2aW91c1ZpZXdYIC0gdmlld1gpIDwgREVG
QVVMVF9USUxFX1cKKyAgICAgICAgJiYgYWJzKHByZXZpb3VzVmlld1kgLSB2aWV3WSkgPCBERUZB
VUxUX1RJTEVfSAorICAgICAgICAmJiBzbWFydERhdGEtPnByZXZpb3VzVmlldy56b29tID09IGN1
cnJlbnRWaWV3Wm9vbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
c3RvcmUgcHJldmlvdXMgdmlldyBwb3NpdGlvbiBhbmQgem9vbQorICAgIHNtYXJ0RGF0YS0+cHJl
dmlvdXNWaWV3LnggPSB2aWV3WDsKKyAgICBzbWFydERhdGEtPnByZXZpb3VzVmlldy55ID0gdmll
d1k7CisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcuem9vbSA9IGN1cnJlbnRWaWV3Wm9vbTsK
KworICAgIC8vIGNhbmNlbGxpbmcgcHJldmlvdXMgcHJlLXJlbmRlcmluZyBsaXN0IGlmIGV4aXN0
cworICAgIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+c2VsZik7CisKKyAg
ICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSA9IGV3a192aWV3X3RpbGVk
X3VudXNlZF9jYWNoZV9nZXQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBpbnQgbWF4TWVtb3J5ID0g
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX21heF9nZXQodGlsZVVudXNlZENhY2hlKTsKKyAgICBpZiAo
bWF4TWVtb3J5IDw9IHZpZXdXaWR0aCAqIHZpZXdIZWlnaHQgKiBFV0tfQVJHQl9CWVRFU19TSVpF
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFaW5hX1JlY3RhbmdsZSB2aWV3UmVjdCA9
IHt2aWV3WCwgdmlld1ksIHZpZXdXaWR0aCwgdmlld0hlaWdodH07CisKKyAgICAvLyBnZXQgYSBi
YXNlIHJlbmRlciByZWN0CisgICAgY29uc3QgaW50IGNvbnRlbnRNZW1vcnkgPSBjb250ZW50V2lk
dGggKiBjb250ZW50SGVpZ2h0ICogRVdLX0FSR0JfQllURVNfU0laRTsKKworICAgIC8vIGdldCBy
ZW5kZXIgcmVjdCdzIHdpZHRoIGFuZCBoZWlnaHQKKyAgICBFaW5hX1JlY3RhbmdsZSByZW5kZXJS
ZWN0OworICAgIGlmIChtYXhNZW1vcnkgPiBjb250ZW50TWVtb3J5KSB7CisgICAgICAgIHJlbmRl
clJlY3QueCA9IDA7CisgICAgICAgIHJlbmRlclJlY3QueSA9IDA7CisgICAgICAgIHJlbmRlclJl
Y3QudyA9IGNvbnRlbnRXaWR0aDsKKyAgICAgICAgcmVuZGVyUmVjdC5oID0gY29udGVudEhlaWdo
dDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNYWtlIGEgYmFzZSByZWN0YW5nbGUgYXMgYmln
IGFzIHBvc3NpYmxlIHdpdGggdXNpbmcgbWF4TWVtb3J5LgorICAgICAgICAvLyBhbmQgdGhlbiBy
ZXNoYXBlIHRoZSBiYXNlIHJlY3RhbmdsZSB0byBmaXQgdG8gY29udGVudHMuCisgICAgICAgIGNv
bnN0IGludCBiYXNlU2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc3FydChtYXhNZW1vcnkgLyA0LjBm
KSk7CisgICAgICAgIGNvbnN0IGZsb2F0IHdpZHRoUmF0ZSA9ICh2aWV3UmVjdC53ICsgKERFRkFV
TFRfVElMRV9XICogMikpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhc2VTaXplKTsKKyAgICAgICAg
Y29uc3QgZmxvYXQgaGVpZ2h0UmF0ZSA9IGJhc2VTaXplIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
bnRlbnRIZWlnaHQpOworICAgICAgICBjb25zdCBmbG9hdCByZWN0UmF0ZSA9IHN0ZDo6bWF4KHdp
ZHRoUmF0ZSwgaGVpZ2h0UmF0ZSk7CisKKyAgICAgICAgcmVuZGVyUmVjdC53ID0gc3RhdGljX2Nh
c3Q8aW50PihiYXNlU2l6ZSAqIHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC5oID0gc3Rh
dGljX2Nhc3Q8aW50PihiYXNlU2l6ZSAvIHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC54
ID0gdmlld1JlY3QueCArICh2aWV3UmVjdC53IC8gMikgLSAocmVuZGVyUmVjdC53IC8gMik7Cisg
ICAgICAgIHJlbmRlclJlY3QueSA9IHZpZXdSZWN0LnkgKyAodmlld1JlY3QuaCAvIDIpIC0gKHJl
bmRlclJlY3QuaCAvIDIpOworICAgIH0KKworICAgIC8vIHJlcG9zaXRpb24gb2YgcmVuZGVyUmVj
dCwgaWYgdGhlIHJlbmRlclJlY3Qgb3ZlcmxhcHBlZCB0aGUgY29udGVudCByZWN0LCB0aGlzIGNv
ZGUgbW92ZXMgdGhlIHJlbmRlclJlY3QgaW5zaWRlIHRoZSBjb250ZW50IHJlY3QKKyAgICBpbnQg
Y29sbGlzaW9uU2lkZSA9IF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayhyZW5k
ZXJSZWN0LngsIHJlbmRlclJlY3QueSwgcmVuZGVyUmVjdC53LCByZW5kZXJSZWN0LmgsIDAsIDAs
IGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodCk7CisgICAgaWYgKGNvbGxpc2lvblNpZGUgPiAw
KQorICAgICAgICBfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZShjb2xsaXNp
b25TaWRlLCAmcmVuZGVyUmVjdC54LCAmcmVuZGVyUmVjdC55LCByZW5kZXJSZWN0LncsIHJlbmRl
clJlY3QuaCwgMCwgMCwgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKKworICAgIC8vIGNo
ZWNrIGFibm9ybWFsIHJlbmRlciByZWN0CisgICAgaWYgKHJlbmRlclJlY3QueCA8IDApCisgICAg
ICAgIHJlbmRlclJlY3QueCA9IDA7CisgICAgaWYgKHJlbmRlclJlY3QueSA8IDApCisgICAgICAg
IHJlbmRlclJlY3QueSA9IDA7CisgICAgaWYgKHJlbmRlclJlY3QudyA+IGNvbnRlbnRXaWR0aCkK
KyAgICAgICAgcmVuZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAgIGlmIChyZW5kZXJSZWN0
LmggPiBjb250ZW50SGVpZ2h0KQorICAgICAgICByZW5kZXJSZWN0LmggPSBjb250ZW50SGVpZ2h0
OworCisgICAgLy8gZW5xdWV1ZSB0aWxlcyBpbnRvIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4gc3Bp
cmFsIG9yZGVyCisgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxf
cXVldWUoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCAmdmlld1JlY3QsICZyZW5kZXJSZWN0LCBt
YXhNZW1vcnksIGN1cnJlbnRWaWV3Wm9vbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3Rh
dGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX2NhbmNlbChzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUpOwpAQCAtMjU3LDYgKzM3
Niw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqIGFwaSkKICAgICBhcGktPmZsdXNoID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X2ZsdXNo
OwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdpb24gPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJl
X3JlbmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyA9IF9l
d2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1czsKKyAgICBhcGkt
PnByZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFy
dDsKICAgICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3By
ZV9yZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfZGlzYWJsZV9yZW5kZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192
aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5kZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFjMDk4Yy4uN2ViYWVkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDExLTEyLTIyICBKdW5nSmlrIExlZSAgPGp1bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdIEFkZCBwcmUtcmVuZGVyIGhhbmRsaW5nIGNvZGUgaW4gRVdlYkxhdW5jaGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0MzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcHJlLXJl
bmRlciBoYW5kbGluZyBjb2RlIGJ5IHByZXNzaW5nIEluc2VydCBrZXkuCisKKyAgICAgICAgKiBF
V2ViTGF1bmNoZXIvbWFpbi5jOgorICAgICAgICAob25fa2V5X2Rvd24pOgorCiAyMDExLTEyLTIy
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTbm93IExlb3BhcmQg
dGVzdCBmaXgKZGlmZiAtLWdpdCBhL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMgYi9Ub29scy9F
V2ViTGF1bmNoZXIvbWFpbi5jCmluZGV4IDExMTgxODMuLjJkNjRkNGEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0VXZWJMYXVuY2hlci9tYWluLmMKKysrIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwpA
QCAtNTQ4LDYgKzU0OCw5IEBAIG9uX2tleV9kb3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNf
T2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2
LT5rZXksICJlIikpIHsKICAgICAgICAgaW5mbygiUmVuZGVyIHJlc3VtZWQiKTsKICAgICAgICAg
ZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihvYmopOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+
a2V5LCAiSW5zZXJ0IikpIHsKKyAgICAgICAgaW5mbygiUHJlLXJlbmRlcmluZyBzdGFydCIpOwor
ICAgICAgICBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0KG9iaik7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120544</attachid>
            <date>2011-12-26 03:13:18 -0800</date>
            <delta_ts>2012-01-03 20:30:09 -0800</delta_ts>
            <desc>fourth edition patch</desc>
            <filename>fourth.patch</filename>
            <type>text/plain</type>
            <size>20032</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBlZDdmYTkyLi4yNzY5OGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTEtMTItMjIgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDExLTEyLTIyICBNYXJpdXN6IEdyemVnb3Jj
enlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIE1pc3NpbmcgcGx1
Z2lucyBzdXBwb3J0IGZvciBlZmwgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApp
bmRleCA3N2Y2NTM0Li42YjdiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApA
QCAtNDUsNiArNDUsNyBAQCBleHRlcm4gIkMiIHsKIAogLy8gSWYgZGVmaW5lZCwgZXdrIHdpbGwg
ZG8gdHlwZSBjaGVja2luZyB0byBlbnN1cmUgb2JqZWN0cyBhcmUgb2YgY29ycmVjdCB0eXBlCiAj
ZGVmaW5lIEVXS19UWVBFX0NIRUNLIDEKKyNkZWZpbmUgRVdLX0FSR0JfQllURVNfU0laRSA0CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNkZWZpbmUgRVdLX0pTX09CSkVDVF9N
QUdJQyAweDY5Njk2OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jcHAKaW5kZXggMjUyNjhiMy4uMzQwMDgzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCkBAIC0yMSw2ICsyMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuaCIKIAorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX21h
dHJpeC5oIgogI2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUu
aD4KQEAgLTE4MzgsNiArMTgzOSwxMTEgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9m
bHVzaChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQogI2VuZGlmCiB9CiAKK0VpbmFfQm9v
bCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0
KiBld2tCYWNraW5nU3RvcmUsIGludCBjb2x1bW4sIGludCByb3csIGZsb2F0IHpvb20pCit7Cisg
ICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7
CisKKyAgICBpZiAoZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZXhpc3RzKHByaXYtPm1vZGVs
Lm1hdHJpeCwgY29sdW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIV9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKHBy
aXYsIGNvbHVtbiwgcm93LCB6b29tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3Rh
bmdsZSogdmlld1JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5
LCBmbG9hdCB6b29tKQoreworICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdT
dG9yZSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2
aWV3UmVjdCwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZW5k
ZXJSZWN0LCBmYWxzZSk7CisKKyAgICBjb25zdCBpbnQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50
aWxlLndpZHRoOworICAgIGNvbnN0IGludCB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhl
aWdodDsKKworICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciB2aWV3U2xpY2VyOworICAgIEVpbmFf
VGlsZV9HcmlkX1NsaWNlciByZW5kZXJTbGljZXI7CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlk
X3NsaWNlcl9zZXR1cCgmdmlld1NsaWNlciwKKyAgICAgICAgdmlld1JlY3QtPngsIHZpZXdSZWN0
LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsK
KyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCB2aWV3U2xpY2VyIGZvciAlZCwlZCsl
ZHglZCB0aWxlPSVkeCVkIiwgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywg
dmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmcmVuZGVy
U2xpY2VyLAorICAgICAgICByZW5kZXJSZWN0LT54LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0
LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpKSB7CisgICAgICAgIEVS
UigiY291bGQgbm90IHNldHVwIGdyaWQgUmVuZGVyU2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxl
PSVkeCVkIiwgcmVuZGVyUmVjdC0+eSwgcmVuZGVyUmVjdC0+eSwgcmVuZGVyUmVjdC0+dywgcmVu
ZGVyUmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIHNldCBsaW1pdHMgb2YgdGhlIGxvb3AKKyAgICBpbnQgbWVtb3J5
TGltaXRzID0gbWF4TWVtb3J5IC8gRVdLX0FSR0JfQllURVNfU0laRSAvIHRpbGVXaWR0aCAvIHRp
bGVIZWlnaHQ7CisgICAgY29uc3QgaW50IG1heFZpZXdTaWRlTGVuZ3RoID0gc3RkOjptYXgodmll
d1NsaWNlci5jb2wyIC0gdmlld1NsaWNlci5jb2wxLCB2aWV3U2xpY2VyLnJvdzIgLSB2aWV3U2xp
Y2VyLnJvdzEpOworICAgIGNvbnN0IGludCBtYXhSZW5kZXJTaWRlTGVuZ3RoID0gc3RkOjptYXgo
cmVuZGVyU2xpY2VyLmNvbDIgLSByZW5kZXJTbGljZXIuY29sMSwgcmVuZGVyU2xpY2VyLnJvdzIg
LSByZW5kZXJTbGljZXIucm93MSk7CisgICAgY29uc3QgaW50IG1heExvb3BDb3VudCA9IG1heFZp
ZXdTaWRlTGVuZ3RoICsgbWF4UmVuZGVyU2lkZUxlbmd0aDsKKworICAgIC8vIHNwaXJlIHN0YXJ0
cyBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXcgYXJlYQorICAgIGludCBjZW50ZXJDb2x1bW4g
PSAodmlld1NsaWNlci5jb2wxICsgdmlld1NsaWNlci5jb2wyKSAvIDI7CisgICAgaW50IGNlbnRl
clJvdyA9ICh2aWV3U2xpY2VyLnJvdzEgKyB2aWV3U2xpY2VyLnJvdzIpIC8gMjsKKworICAgIGlu
dCBzdGVwID0gMTsKKyAgICBjb25zdCBpbnQgc3F1YXJlU2lkZSA9IDQ7CisgICAgZm9yIChpbnQg
bG9vcCA9IDA7IGxvb3AgPCBtYXhMb29wQ291bnQ7IGxvb3ArKykgeworICAgICAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IHN0ZXAgKiBzcXVhcmVTaWRlICsgMTsgaSsrKSB7CisgICAgICAgICAgICBp
ZiAobWVtb3J5TGltaXRzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG1lbW9yeUxpbWl0c1Jl
YWNoZWQ7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgdGhpcyBjb2RlIG1lYW5zIHRoZSBs
b29wIHJ1bnMgbGlrZSBzcGlyYWwgKGkuZy4gbGVmdC0+ZG93bi0+cmlnaHQtPnVwKQorICAgICAg
ICAgICAgd2hlbiBpdCBtb3ZlcyBiYWNrIHRvIG9yaWdpbmFsIHBsYWNlIGFuZCB0aGVuIHdhbGsg
MSB0aWxlIGxlZnQgYW5kIHVwLgorICAgICAgICAgICAgdGhlIGxvb3Aga2VlcHMgb24gZG9pbmcg
dGhpcyB1bnRpbCBpdCByZWFjaGVzIG1heCBtZW1vcnkgdG8gZHJhdyB0aWxlcworICAgICAgICAg
ICAgZS5nLiApCisgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIyMjIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIxMTIzCisgICAg
ICAgICAgICAgICAgICAgICAgICAgMzIxMTIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIy
MjIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMzCisgICAgICAgICAgICAqLworICAg
ICAgICAgICAgaWYgKGkgPiAwICYmIGkgPD0gc3RlcCkKKyAgICAgICAgICAgICAgICBjZW50ZXJD
b2x1bW4rKzsgLy8gbW92ZSBsZWZ0CisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAmJiBp
IDw9IHN0ZXAgKiAyKQorICAgICAgICAgICAgICAgIGNlbnRlclJvdysrOyAvLyBtb3ZlIGRvd24K
KyAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBzdGVwICogMiAmJiBpIDw9IHN0ZXAgKiAzKQorICAg
ICAgICAgICAgICAgIGNlbnRlckNvbHVtbi0tOyAvLyBtb3ZlIHJpZ2h0CisgICAgICAgICAgICBl
bHNlIGlmIChpID4gc3RlcCAqIDMgJiYgaSA8PSBzdGVwICogNCkKKyAgICAgICAgICAgICAgICBj
ZW50ZXJSb3ctLTsgLy8gbW92ZSB1cAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEVSUigiRVJST1IgOiBvdXQgb2YgYm91bmRzXHJcbiIpOworCisgICAgICAgICAgICAvLyBza2lw
IGluIHZpZXcgcG9ydCBhcmVhCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih2aWV3
U2xpY2VyLmNvbDEpIDwgY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nh
c3Q8aW50Pih2aWV3U2xpY2VyLmNvbDIpID4gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLnJvdzEpIDwgY2VudGVyUm93CisgICAgICAg
ICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLnJvdzIpID4gY2VudGVyUm93
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8aW50PihyZW5kZXJTbGljZXIuY29sMSkgPD0gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAg
ICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIuY29sMikgPj0gY2VudGVyQ29sdW1u
CisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIucm93MSkg
PD0gY2VudGVyUm93CisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJT
bGljZXIucm93MikgPj0gY2VudGVyUm93KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIWV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQoIGV3a0JhY2tpbmdTdG9yZSwg
Y2VudGVyQ29sdW1uLCBjZW50ZXJSb3csIHpvb20pKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBEQkcoIlI+WyVkICVkXSAiLCBjZW50ZXJDb2x1bW4sIGNl
bnRlclJvdyk7CisgICAgICAgICAgICAgICAgbWVtb3J5TGltaXRzLS07CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2VudGVyUm93LS07CisgICAgICAgIGNlbnRlckNvbHVtbi0t
OworICAgICAgICBzdGVwID0gc3RlcCArIDI7CisgICAgfQorCittZW1vcnlMaW1pdHNSZWFjaGVk
OgorICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RhcnQo
cHJpdik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUs
IEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3Jk
IGhlaWdodCwgZmxvYXQgem9vbSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tC
YWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmgKaW5kZXggMGU1MGI4Ny4uNGFkY2U5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgKQEAgLTExNiw2
ICsxMTYsNyBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfdW51c2VkX2NhY2hl
X3NldChFdmFzX09iamVjdCogbywgRXdrX1RpbGVfVW51cwogCiBFaW5hX0Jvb2wgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9v
bSk7CiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVkIGludCBuLCBmbG9hdCB6b29tKTsKK0Vp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShF
dmFzX09iamVjdCogbywgRWluYV9SZWN0YW5nbGUqIHZpZXdfcmVjdCwgRWluYV9SZWN0YW5nbGUq
IHJlbmRlcl9yZWN0LCBpbnQgbWF4X21lbW9yeSwgZmxvYXQgem9vbSk7CiB2b2lkIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKEV2YXNfT2JqZWN0KiBvKTsKIAogRWlu
YV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV2YXNfT2JqZWN0
KiBvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDg3MTU2ZWEuLmViMWJlZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTAwNyw2ICsxMDA3LDEyIEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVz
KEV3a19WaWV3X1NtYXJ0X0RhdGEqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFy
dERhdGE9JXAiLCBzbWFydERhdGEpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKIHsKICAgICBXUk4oIm5vdCBzdXBwb3J0ZWQgYnkgZW5naW5lLiBzbWFydERh
dGE9JXAiLCBzbWFydERhdGEpOwpAQCAtMTEzOSw2ICsxMTQ1LDcgQEAgRWluYV9Cb29sIGV3a192
aWV3X2Jhc2Vfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5m
bHVzaCA9IF9ld2tfdmlld19zbWFydF9mbHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9u
ID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9y
YWRpdXM7CisgICAgYXBpLT5wcmVfcmVuZGVyX3N0YXJ0ID0gX2V3a192aWV3X3NtYXJ0X3ByZV9y
ZW5kZXJfc3RhcnQ7CiAgICAgYXBpLT5wcmVfcmVuZGVyX2NhbmNlbCA9IF9ld2tfdmlld19zbWFy
dF9wcmVfcmVuZGVyX2NhbmNlbDsKICAgICBhcGktPmRpc2FibGVfcmVuZGVyID0gX2V3a192aWV3
X3NtYXJ0X2Rpc2FibGVfcmVuZGVyOwogICAgIGFwaS0+ZW5hYmxlX3JlbmRlciA9IF9ld2tfdmll
d19zbWFydF9lbmFibGVfcmVuZGVyOwpAQCAtMTgzNiw2ICsxODQzLDE0IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVjdCogZXdrVmlldywg
dW5zaWduZWQgaW50CiAgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhzbWFydERhdGEsIG51bWJlciwgY3VycmVudFpvb20pOwogfQogCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFydChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmFwaS0+cHJlX3Jl
bmRlcl9zdGFydCwgZmFsc2UpOworCisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVu
ZGVyX3N0YXJ0KHNtYXJ0RGF0YSk7Cit9CisKIHVuc2lnbmVkIGludCBld2tfdmlld19pbWhfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5k
ZXggZWM1NjY1Yy4uOWUwN2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTEzNSw2
ICsxMzUsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICB2b2lkICgqZmx1
c2gpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVy
X3JlZ2lvbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7CiAgICAgRWluYV9C
b29sICgqcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7CisgICAgRWluYV9Cb29sICgqcHJlX3JlbmRl
cl9zdGFydCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogICAgIHZvaWQgKCpwcmVfcmVuZGVy
X2NhbmNlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogICAgIEVpbmFfQm9vbCAoKmRpc2Fi
bGVfcmVuZGVyKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqZW5h
YmxlX3JlbmRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOwpAQCAtMTY4LDcgKzE2OSw3IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogVGhlIHZlcnNpb24geW91IGhhdmUg
dG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQKICAqIGluIHRoZSBAYSBFd2tfVmlld19TbWFy
dF9DbGFzcyBzdHJ1Y3R1cmUuCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTiAzVUwKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiA0VUwKIAogLyoq
CiAgKiBJbml0aWFsaXplcyBhIHdob2xlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVy
ZS4KQEAgLTE4MCw3ICsxODEsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAq
IEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCiAgKiBAc2VlIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCiAgKi8KLSNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMH0KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19p
bml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KIAogLyoqCiAgKiBJbml0
aWFsaXplcyB0byB6ZXJvIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
LgpAQCAtMzE1LDYgKzMxNiwxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgewogICAg
ICAgICBFaW5hX0Jvb2wgcG9zaXRpb246MTsKICAgICAgICAgRWluYV9Cb29sIGZyYW1lX3JlY3Q6
MTsKICAgICB9IGNoYW5nZWQ7IC8qKjwgS2VlcHMgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21h
cnRfY2FsY3VsYXRlLiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIEV2YXNfQ29vcmQgeCwgeTsK
KyAgICAgICAgZmxvYXQgem9vbTsKKyAgICB9IHByZXZpb3VzVmlldzsKIH07CiAKIC8vLyBEZWZp
bmVzIHRoZSBtb2RlcyBvZiB2aWV3LgpAQCAtMTI1MCw2ICsxMjU1LDIzIEBAIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4pOwogCiAvKioKKyAqIEFz
a3MgZW5naW5lIHRvIHN0YXJ0IHByZS1yZW5kZXJpbmcuCisgKgorICogVGhpcyBpcyBhbiBhbHRl
cm5hdGl2ZSBtZXRob2QgdG8gcHJlLXJlbmRlciBhcm91bmQgdGhlIHZpZXcgYXJlYS4KKyAqIFRo
ZSBmaXJzdCBzdGVwIGlzIHRvIGZpbmQgdGhlIGNlbnRlciB2aWV3IGFyZWEgd2hlcmUgdG8gc3Rh
cnQgcHJlLXJlbmRlcmluZy4KKyAqIEFuZCB0aGVuIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgdmll
dyBhcmVhIHRoZSBiYWNraW5nIHN0b3JlIGFwcGVuZCB0aGUgcmVuZGVyIHJlcXVlc3QKKyAqIG91
dHdhcmQgaW4gc3BpcmFsIG9yZGVyLiBTbyB0aGF0IHRoZSB0aWxlcyB3aGljaCBhcmUgY2xvc2Ug
dG8gdmlldyBhcmVhIGFyZSBkaXNwbGF5ZWQKKyAqIHNvb25lciB0aGFuIG91dHNpZGUuCisgKgor
ICogQHBhcmFtIG8gdmlldyB0byBhc2sgcHJlLXJlbmRlcgorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIGlmIHJlcXVlc3Qgd2FzIGFjY2VwdGVkLCBAYyBFSU5BX0ZBTFNFCisgKiAgICAgICAg
IG90aGVyd2lzZSAoZXJyb3JzLCBwcmUtcmVuZGVyIGZlYXR1cmUgbm90IHN1cHBvcnRlZCwgZXRj
KQorICoKKyAqLworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFydChF
dmFzX09iamVjdCAqbyk7CisKKy8qKgogICogQ2FuY2VscyBhbmQgY2xlYXJzIHByZXZpb3VzIHRo
ZSBwcmUtcmVuZGVyIHJlcXVlc3RzLgogICoKICAqIEBwYXJhbSBvIHZpZXcgdG8gY2xlYXIgcHJl
LXJlbmRlciByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAK
aW5kZXggNmMxNmY1ZS4uNTBkNmFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
dGlsZWQuY3BwCkBAIC0yMTgsNiArMjE4LDEyMyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydAog
ICAgICAgICAgICAgICAgKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgbiwgem9vbSk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgaW50IF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayhF
aW5hX1JlY3RhbmdsZSBkZXN0aW5hdGlvbiwgRWluYV9SZWN0YW5nbGUgc291cmNlKQoreworICAg
IGludCBkaXJlY3Rpb24gPSAwOworICAgIGlmIChkZXN0aW5hdGlvbi54IDwgc291cmNlLngpCisg
ICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8IDApOyAvLyAwIGJpdCBzaGlmdCwg
bGVmdAorICAgIGlmIChkZXN0aW5hdGlvbi55IDwgc291cmNlLnkpCisgICAgICAgIGRpcmVjdGlv
biA9IGRpcmVjdGlvbiB8ICgxIDw8IDEpOyAvLyAxIGJpdCBzaGlmdCwgdG9wCisgICAgaWYgKGRl
c3RpbmF0aW9uLnggKyBkZXN0aW5hdGlvbi53ID4gc291cmNlLnggKyBzb3VyY2UudykKKyAgICAg
ICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMik7IC8vIDIgYml0IHNoaWZ0LCByaWdo
dAorICAgIGlmIChkZXN0aW5hdGlvbi55ICsgZGVzdGluYXRpb24uaCA+IHNvdXJjZS55ICsgc291
cmNlLmgpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8IDMpOyAvLyAzIGJp
dCBzaGlmdCwgYm90dG9tCisgICAgREJHKCJjaGVjayBjb2xsaXNpb24gJWRcclxuIiwgZGlyZWN0
aW9uKTsKKyAgICByZXR1cm4gZGlyZWN0aW9uOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX3Jlc29sdmUoaW50IGRpcmVjdGlvbiwgRWluYV9S
ZWN0YW5nbGUqIGRlc3RpbmF0aW9uLCBFaW5hX1JlY3RhbmdsZSBzb3VyY2UpCit7CisgICAgaWYg
KGRpcmVjdGlvbiAmICgxIDw8IDApKSAvLyAwIGJpdCBzaGlmdCwgbGVmdAorICAgICAgICBkZXN0
aW5hdGlvbi0+eCA9IHNvdXJjZS54OworICAgIGlmIChkaXJlY3Rpb24gJiAoMSA8PCAxKSkgLy8g
MSBiaXQgc2hpZnQsIHRvcAorICAgICAgICBkZXN0aW5hdGlvbi0+eSA9IHNvdXJjZS55OworICAg
IGlmIChkaXJlY3Rpb24gJiAoMSA8PCAyKSkgLy8gMiBiaXQgc2hpZnQsIHJpZ2h0CisgICAgICAg
IGRlc3RpbmF0aW9uLT54ID0gZGVzdGluYXRpb24tPnggLSAoKGRlc3RpbmF0aW9uLT54ICsgZGVz
dGluYXRpb24tPncpIC0gKHNvdXJjZS54ICsgc291cmNlLncpKTsKKyAgICBpZiAoZGlyZWN0aW9u
ICYgKDEgPDwgMykpIC8vIDMgYml0IHNoaWZ0LCBib3R0b20KKyAgICAgICAgZGVzdGluYXRpb24t
PnkgPSBkZXN0aW5hdGlvbi0+eSAtICgoZGVzdGluYXRpb24tPnkgKyBkZXN0aW5hdGlvbi0+aCkg
LSAoc291cmNlLnkgKyBzb3VyY2UuaCkpOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3N0YXJ0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSkKK3sKKyAgICBpbnQgY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0OworICAgIGV3a19m
cmFtZV9jb250ZW50c19zaXplX2dldChzbWFydERhdGEtPm1haW5fZnJhbWUsICZjb250ZW50V2lk
dGgsICZjb250ZW50SGVpZ2h0KTsKKworICAgIGludCB2aWV3WCwgdmlld1ksIHZpZXdXaWR0aCwg
dmlld0hlaWdodDsKKyAgICBld2tfZnJhbWVfdmlzaWJsZV9jb250ZW50X2dlb21ldHJ5X2dldChz
bWFydERhdGEtPm1haW5fZnJhbWUsIGZhbHNlLCAmdmlld1gsICZ2aWV3WSwgJnZpZXdXaWR0aCwg
JnZpZXdIZWlnaHQpOworCisgICAgaWYgKHZpZXdXaWR0aCA8PSAwIHx8IHZpZXdIZWlnaHQgPD0g
MCB8fCBjb250ZW50V2lkdGggPD0gMCB8fCBjb250ZW50SGVpZ2h0IDw9IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICh2aWV3V2lkdGggPj0gY29udGVudFdpZHRoICYmIHZpZXdI
ZWlnaHQgPj0gY29udGVudEhlaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50
IHByZXZpb3VzVmlld1gsIHByZXZpb3VzVmlld1k7CisgICAgcHJldmlvdXNWaWV3WCA9IHNtYXJ0
RGF0YS0+cHJldmlvdXNWaWV3Lng7CisgICAgcHJldmlvdXNWaWV3WSA9IHNtYXJ0RGF0YS0+cHJl
dmlvdXNWaWV3Lnk7CisKKyAgICBpZiAocHJldmlvdXNWaWV3WCA8IDAgfHwgcHJldmlvdXNWaWV3
WCA+IGNvbnRlbnRXaWR0aCB8fCBwcmV2aW91c1ZpZXdZIDwgMCB8fCBwcmV2aW91c1ZpZXdZID4g
Y29udGVudEhlaWdodCkKKyAgICAgICAgcHJldmlvdXNWaWV3WCA9IHByZXZpb3VzVmlld1kgPSAw
OworCisgICAgZmxvYXQgY3VycmVudFZpZXdab29tID0gZXdrX3ZpZXdfem9vbV9nZXQoc21hcnRE
YXRhLT5zZWxmKTsKKworICAgIC8vIHByZS1yZW5kZXIgd29ya3Mgd2hlbiB0d28gY29uZGl0aW9u
cyBhcmUgbWV0LgorICAgIC8vIHpvb20gaGFzIGJlZW4gY2hhbmdlZC4KKyAgICAvLyBhbmQgdGhl
IHZpZXcgaGFzIGJlZW4gbW92ZWQgbW9yZSB0aGFuIHRpbGUgc2l6ZS4KKyAgICBpZiAoYWJzKHBy
ZXZpb3VzVmlld1ggLSB2aWV3WCkgPCBERUZBVUxUX1RJTEVfVworICAgICAgICAmJiBhYnMocHJl
dmlvdXNWaWV3WSAtIHZpZXdZKSA8IERFRkFVTFRfVElMRV9ICisgICAgICAgICYmIHNtYXJ0RGF0
YS0+cHJldmlvdXNWaWV3Lnpvb20gPT0gY3VycmVudFZpZXdab29tKSB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBzdG9yZSBwcmV2aW91cyB2aWV3IHBvc2l0aW9uIGFu
ZCB6b29tCisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueCA9IHZpZXdYOworICAgIHNtYXJ0
RGF0YS0+cHJldmlvdXNWaWV3LnkgPSB2aWV3WTsKKyAgICBzbWFydERhdGEtPnByZXZpb3VzVmll
dy56b29tID0gY3VycmVudFZpZXdab29tOworCisgICAgLy8gY2FuY2VsbGluZyBwcmV2aW91cyBw
cmUtcmVuZGVyaW5nIGxpc3QgaWYgZXhpc3RzCisgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5j
ZWwoc21hcnREYXRhLT5zZWxmKTsKKworICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVu
dXNlZENhY2hlID0gZXdrX3ZpZXdfdGlsZWRfdW51c2VkX2NhY2hlX2dldChzbWFydERhdGEtPnNl
bGYpOworICAgIGludCBtYXhNZW1vcnkgPSBld2tfdGlsZV91bnVzZWRfY2FjaGVfbWF4X2dldCh0
aWxlVW51c2VkQ2FjaGUpOworICAgIGlmIChtYXhNZW1vcnkgPD0gdmlld1dpZHRoICogdmlld0hl
aWdodCAqIEVXS19BUkdCX0JZVEVTX1NJWkUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEVpbmFfUmVjdGFuZ2xlIHZpZXdSZWN0ID0ge3ZpZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3
SGVpZ2h0fTsKKyAgICBFaW5hX1JlY3RhbmdsZSBjb250ZW50UmVjdCA9IHswLCAwLCBjb250ZW50
V2lkdGgsIGNvbnRlbnRIZWlnaHR9OworCisgICAgLy8gZ2V0IGEgYmFzZSByZW5kZXIgcmVjdAor
ICAgIGNvbnN0IGludCBjb250ZW50TWVtb3J5ID0gY29udGVudFdpZHRoICogY29udGVudEhlaWdo
dCAqIEVXS19BUkdCX0JZVEVTX1NJWkU7CisKKyAgICAvLyBnZXQgcmVuZGVyIHJlY3QncyB3aWR0
aCBhbmQgaGVpZ2h0CisgICAgRWluYV9SZWN0YW5nbGUgcmVuZGVyUmVjdDsKKyAgICBpZiAobWF4
TWVtb3J5ID4gY29udGVudE1lbW9yeSkKKyAgICAgICAgcmVuZGVyUmVjdCA9IGNvbnRlbnRSZWN0
OworICAgIGVsc2UgeworICAgICAgICAvLyBNYWtlIGEgYmFzZSByZWN0YW5nbGUgYXMgYmlnIGFz
IHBvc3NpYmxlIHdpdGggdXNpbmcgbWF4TWVtb3J5LgorICAgICAgICAvLyBhbmQgdGhlbiByZXNo
YXBlIHRoZSBiYXNlIHJlY3RhbmdsZSB0byBmaXQgdG8gY29udGVudHMuCisgICAgICAgIGNvbnN0
IGludCBiYXNlU2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc3FydChtYXhNZW1vcnkgLyA0LjBmKSk7
CisgICAgICAgIGNvbnN0IGZsb2F0IHdpZHRoUmF0ZSA9ICh2aWV3UmVjdC53ICsgKERFRkFVTFRf
VElMRV9XICogMikpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhc2VTaXplKTsKKyAgICAgICAgY29u
c3QgZmxvYXQgaGVpZ2h0UmF0ZSA9IGJhc2VTaXplIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRl
bnRIZWlnaHQpOworICAgICAgICBjb25zdCBmbG9hdCByZWN0UmF0ZSA9IHN0ZDo6bWF4KHdpZHRo
UmF0ZSwgaGVpZ2h0UmF0ZSk7CisKKyAgICAgICAgcmVuZGVyUmVjdC53ID0gc3RhdGljX2Nhc3Q8
aW50PihiYXNlU2l6ZSAqIHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC5oID0gc3RhdGlj
X2Nhc3Q8aW50PihiYXNlU2l6ZSAvIHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC54ID0g
dmlld1JlY3QueCArICh2aWV3UmVjdC53IC8gMikgLSAocmVuZGVyUmVjdC53IC8gMik7CisgICAg
ICAgIHJlbmRlclJlY3QueSA9IHZpZXdSZWN0LnkgKyAodmlld1JlY3QuaCAvIDIpIC0gKHJlbmRl
clJlY3QuaCAvIDIpOworCisgICAgICAgIC8vIHJlcG9zaXRpb24gb2YgcmVuZGVyUmVjdCwgaWYg
dGhlIHJlbmRlclJlY3Qgb3ZlcmxhcHBlZCB0aGUgY29udGVudCByZWN0LCB0aGlzIGNvZGUgbW92
ZXMgdGhlIHJlbmRlclJlY3QgaW5zaWRlIHRoZSBjb250ZW50IHJlY3QKKyAgICAgICAgaW50IGNv
bGxpc2lvblNpZGUgPSBfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fY2hlY2socmVuZGVy
UmVjdCwgY29udGVudFJlY3QpOworICAgICAgICBpZiAoY29sbGlzaW9uU2lkZSA+IDApCisgICAg
ICAgICAgICBfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZShjb2xsaXNpb25T
aWRlLCAmcmVuZGVyUmVjdCwgY29udGVudFJlY3QpOworCisgICAgICAgIC8vIGNoZWNrIGFibm9y
bWFsIHJlbmRlciByZWN0CisgICAgICAgIGlmIChyZW5kZXJSZWN0LnggPCAwKQorICAgICAgICAg
ICAgcmVuZGVyUmVjdC54ID0gMDsKKyAgICAgICAgaWYgKHJlbmRlclJlY3QueSA8IDApCisgICAg
ICAgICAgICByZW5kZXJSZWN0LnkgPSAwOworICAgICAgICBpZiAocmVuZGVyUmVjdC53ID4gY29u
dGVudFdpZHRoKQorICAgICAgICAgICAgcmVuZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAg
ICAgICBpZiAocmVuZGVyUmVjdC5oID4gY29udGVudEhlaWdodCkKKyAgICAgICAgICAgIHJlbmRl
clJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7CisgICAgfQorCisgICAgLy8gZW5xdWV1ZSB0aWxlcyBp
bnRvIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4gc3BpcmFsIG9yZGVyCisgICAgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoc21hcnREYXRhLT5iYWNraW5nX3N0
b3JlLCAmdmlld1JlY3QsICZyZW5kZXJSZWN0LCBtYXhNZW1vcnksIGN1cnJlbnRWaWV3Wm9vbSk7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVkX3Nt
YXJ0X3ByZV9yZW5kZXJfY2FuY2VsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsK
ICAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNlbChzbWFydERhdGEt
PmJhY2tpbmdfc3RvcmUpOwpAQCAtMjU3LDYgKzM3NCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190
aWxlZF9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPmZsdXNo
ID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X2ZsdXNoOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdp
b24gPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWdpb247CiAgICAgYXBpLT5w
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyA9IF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVu
ZGVyX3JlbGF0aXZlX3JhZGl1czsKKyAgICBhcGktPnByZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydDsKICAgICBhcGktPnByZV9yZW5kZXJfY2Fu
Y2VsID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+
ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZGlzYWJsZV9yZW5kZXI7CiAg
ICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X2VuYWJsZV9yZW5k
ZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OWFjMDk4Yy4uN2ViYWVkZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTIyICBKdW5nSmlrIExlZSAgPGp1
bmdqaWsubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBwcmUtcmVuZGVyIGhh
bmRsaW5nIGNvZGUgaW4gRVdlYkxhdW5jaGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgcHJlLXJlbmRlciBoYW5kbGluZyBjb2RlIGJ5IHByZXNz
aW5nIEluc2VydCBrZXkuCisKKyAgICAgICAgKiBFV2ViTGF1bmNoZXIvbWFpbi5jOgorICAgICAg
ICAob25fa2V5X2Rvd24pOgorCiAyMDExLTEyLTIyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBTbm93IExlb3BhcmQgdGVzdCBmaXgKZGlmZiAtLWdpdCBhL1Rvb2xz
L0VXZWJMYXVuY2hlci9tYWluLmMgYi9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jCmluZGV4IDEx
MTgxODMuLjJkNjRkNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMKKysr
IGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwpAQCAtNTQ4LDYgKzU0OCw5IEBAIG9uX2tleV9k
b3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2lu
Zm8pCiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJlIikpIHsKICAgICAgICAgaW5m
bygiUmVuZGVyIHJlc3VtZWQiKTsKICAgICAgICAgZXdrX3ZpZXdfZW5hYmxlX3JlbmRlcihvYmop
OworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiSW5zZXJ0IikpIHsKKyAgICAgICAg
aW5mbygiUHJlLXJlbmRlcmluZyBzdGFydCIpOworICAgICAgICBld2tfdmlld19wcmVfcmVuZGVy
X3N0YXJ0KG9iaik7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121045</attachid>
            <date>2012-01-03 20:30:09 -0800</date>
            <delta_ts>2012-01-04 03:51:04 -0800</delta_ts>
            <desc>rebased_patch</desc>
            <filename>fifth_rebase.patch</filename>
            <type>text/plain</type>
            <size>20075</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBmMzVlY2QzLi45NWExZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMDMgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDEyLTAxLTAzICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KIAogICAgICAgICBMZWFrIG9mIFdlYk5vdGlmaWNhdGlvbkNsaWVudCB3aGVu
IHBhZ2UgaXMgZGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IGE1
MzA3ZjAuLjFjZDZhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC00NSw2
ICs0NSw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBJZiBkZWZpbmVkLCBld2sgd2lsbCBkbyB0eXBl
IGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBjb3JyZWN0IHR5cGUKICNkZWZpbmUg
RVdLX1RZUEVfQ0hFQ0sgMQorI2RlZmluZSBFV0tfQVJHQl9CWVRFU19TSVpFIDQKIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2RlZmluZSBFV0tfSlNfT0JKRUNUX01BR0lDIDB4
Njk2OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0
b3JlLmNwcAppbmRleCAyNTI2OGIzLi4zNDAwODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oIgog
CisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfbWF0cml4Lmgi
CiAjaW5jbHVkZSAiZXdrX3RpbGVkX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgpAQCAt
MTgzOCw2ICsxODM5LDExMSBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2
YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAjZW5kaWYKIH0KIAorRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9hZGQoRXZhc19PYmplY3QqIGV3a0Jh
Y2tpbmdTdG9yZSwgaW50IGNvbHVtbiwgaW50IHJvdywgZmxvYXQgem9vbSkKK3sKKyAgICBQUklW
X0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKKworICAg
IGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHMocHJpdi0+bW9kZWwubWF0cml4
LCBjb2x1bW4sIHJvdywgem9vbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQocHJpdiwgY29s
dW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3Bp
cmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEVpbmFfUmVjdGFuZ2xlKiB2
aWV3UmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlclJlY3QsIGludCBtYXhNZW1vcnksIGZsb2F0
IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBw
cml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXdSZWN0
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlbmRlclJlY3Qs
IGZhbHNlKTsKKworICAgIGNvbnN0IGludCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lk
dGg7CisgICAgY29uc3QgaW50IHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0Owor
CisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHZpZXdTbGljZXI7CisgICAgRWluYV9UaWxlX0dy
aWRfU2xpY2VyIHJlbmRlclNsaWNlcjsKKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2Vy
X3NldHVwKCZ2aWV3U2xpY2VyLAorICAgICAgICB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZp
ZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KSkgeworICAgICAg
ICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZpZXdTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRp
bGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVj
dC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZyZW5kZXJTbGljZXIs
CisgICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3QtPnksIHJlbmRlclJlY3QtPncsIHJl
bmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICAgICAgRVJSKCJjb3Vs
ZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQi
LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT53LCByZW5kZXJSZWN0
LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUgbG9vcAorICAgIGludCBtZW1vcnlMaW1pdHMg
PSBtYXhNZW1vcnkgLyBFV0tfQVJHQl9CWVRFU19TSVpFIC8gdGlsZVdpZHRoIC8gdGlsZUhlaWdo
dDsKKyAgICBjb25zdCBpbnQgbWF4Vmlld1NpZGVMZW5ndGggPSBzdGQ6Om1heCh2aWV3U2xpY2Vy
LmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEsIHZpZXdTbGljZXIucm93MiAtIHZpZXdTbGljZXIucm93
MSk7CisgICAgY29uc3QgaW50IG1heFJlbmRlclNpZGVMZW5ndGggPSBzdGQ6Om1heChyZW5kZXJT
bGljZXIuY29sMiAtIHJlbmRlclNsaWNlci5jb2wxLCByZW5kZXJTbGljZXIucm93MiAtIHJlbmRl
clNsaWNlci5yb3cxKTsKKyAgICBjb25zdCBpbnQgbWF4TG9vcENvdW50ID0gbWF4Vmlld1NpZGVM
ZW5ndGggKyBtYXhSZW5kZXJTaWRlTGVuZ3RoOworCisgICAgLy8gc3BpcmUgc3RhcnRzIGZyb20g
dGhlIGNlbnRlciBvZiB0aGUgdmlldyBhcmVhCisgICAgaW50IGNlbnRlckNvbHVtbiA9ICh2aWV3
U2xpY2VyLmNvbDEgKyB2aWV3U2xpY2VyLmNvbDIpIC8gMjsKKyAgICBpbnQgY2VudGVyUm93ID0g
KHZpZXdTbGljZXIucm93MSArIHZpZXdTbGljZXIucm93MikgLyAyOworCisgICAgaW50IHN0ZXAg
PSAxOworICAgIGNvbnN0IGludCBzcXVhcmVTaWRlID0gNDsKKyAgICBmb3IgKGludCBsb29wID0g
MDsgbG9vcCA8IG1heExvb3BDb3VudDsgbG9vcCsrKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgc3RlcCAqIHNxdWFyZVNpZGUgKyAxOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtZW1v
cnlMaW1pdHMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gbWVtb3J5TGltaXRzUmVhY2hlZDsK
KyAgICAgICAgICAgIC8qCisgICAgICAgICAgICB0aGlzIGNvZGUgbWVhbnMgdGhlIGxvb3AgcnVu
cyBsaWtlIHNwaXJhbCAoaS5nLiBsZWZ0LT5kb3duLT5yaWdodC0+dXApCisgICAgICAgICAgICB3
aGVuIGl0IG1vdmVzIGJhY2sgdG8gb3JpZ2luYWwgcGxhY2UgYW5kIHRoZW4gd2FsayAxIHRpbGUg
bGVmdCBhbmQgdXAuCisgICAgICAgICAgICB0aGUgbG9vcCBrZWVwcyBvbiBkb2luZyB0aGlzIHVu
dGlsIGl0IHJlYWNoZXMgbWF4IG1lbW9yeSB0byBkcmF3IHRpbGVzCisgICAgICAgICAgICBlLmcu
ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMzMzMzMKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAzMjIyMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMjExMjMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAzMjExMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAzMjIyMjMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAzMzMzMzMKKyAgICAgICAgICAgICovCisgICAgICAgICAg
ICBpZiAoaSA+IDAgJiYgaSA8PSBzdGVwKQorICAgICAgICAgICAgICAgIGNlbnRlckNvbHVtbisr
OyAvLyBtb3ZlIGxlZnQKKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBzdGVwICYmIGkgPD0gc3Rl
cCAqIDIpCisgICAgICAgICAgICAgICAgY2VudGVyUm93Kys7IC8vIG1vdmUgZG93bgorICAgICAg
ICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAyICYmIGkgPD0gc3RlcCAqIDMpCisgICAgICAgICAg
ICAgICAgY2VudGVyQ29sdW1uLS07IC8vIG1vdmUgcmlnaHQKKyAgICAgICAgICAgIGVsc2UgaWYg
KGkgPiBzdGVwICogMyAmJiBpIDw9IHN0ZXAgKiA0KQorICAgICAgICAgICAgICAgIGNlbnRlclJv
dy0tOyAvLyBtb3ZlIHVwCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgRVJSKCJF
UlJPUiA6IG91dCBvZiBib3VuZHNcclxuIik7CisKKyAgICAgICAgICAgIC8vIHNraXAgaW4gdmll
dyBwb3J0IGFyZWEKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIu
Y29sMSkgPCBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+
KHZpZXdTbGljZXIuY29sMikgPiBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0
aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIucm93MSkgPCBjZW50ZXJSb3cKKyAgICAgICAgICAgICAg
ICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIucm93MikgPiBjZW50ZXJSb3cpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KHJlbmRlclNsaWNlci5jb2wxKSA8PSBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBz
dGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5jb2wyKSA+PSBjZW50ZXJDb2x1bW4KKyAgICAg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5yb3cxKSA8PSBjZW50
ZXJSb3cKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5y
b3cyKSA+PSBjZW50ZXJSb3cpIHsKKworICAgICAgICAgICAgICAgIGlmICghZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90aWxlX2FkZCggZXdrQmFja2luZ1N0b3JlLCBjZW50ZXJD
b2x1bW4sIGNlbnRlclJvdywgem9vbSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIERCRygiUj5bJWQgJWRdICIsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93
KTsKKyAgICAgICAgICAgICAgICBtZW1vcnlMaW1pdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBjZW50ZXJSb3ctLTsKKyAgICAgICAgY2VudGVyQ29sdW1uLS07CisgICAg
ICAgIHN0ZXAgPSBzdGVwICsgMjsKKyAgICB9CisKK21lbW9yeUxpbWl0c1JlYWNoZWQ6CisgICAg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydChwcml2KTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0
LCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdT
dG9yZSwgcHJpdiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9iYWNraW5nX3N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmUuaAppbmRleCAwZTUwYjg3Li40YWRjZTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaApAQCAtMTE2LDYgKzExNiw3
IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KEV2
YXNfT2JqZWN0KiBvLCBFd2tfVGlsZV9VbnVzCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKIEVp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyhFdmFzX09iamVjdCogbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOworRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2Jq
ZWN0KiBvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3RhbmdsZSogcmVuZGVy
X3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKIHZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pOwogCiBFaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIG8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjhlOWYwYi4uMDAyYTE0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0xMDA3LDYgKzEwMDcsMTIgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1Zp
ZXdfU21hcnRfRGF0YSoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKQoreworICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0l
cCIsIHNtYXJ0RGF0YSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKQogewogICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIs
IHNtYXJ0RGF0YSk7CkBAIC0xMTM5LDYgKzExNDUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFz
ZV9zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPmZsdXNoID0g
X2V3a192aWV3X3NtYXJ0X2ZsdXNoOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdpb24gPSBfZXdr
X3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlbGF0
aXZlX3JhZGl1cyA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1czsK
KyAgICBhcGktPnByZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9z
dGFydDsKICAgICBhcGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3NtYXJ0X3ByZV9y
ZW5kZXJfY2FuY2VsOwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRf
ZGlzYWJsZV9yZW5kZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3X3NtYXJ0
X2VuYWJsZV9yZW5kZXI7CkBAIC0xODM2LDYgKzE4NDMsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3
X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25l
ZCBpbnQKICAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFk
aXVzKHNtYXJ0RGF0YSwgbnVtYmVyLCBjdXJyZW50Wm9vbSk7CiB9CiAKK0VpbmFfQm9vbCBld2tf
dmlld19wcmVfcmVuZGVyX3N0YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3N0
YXJ0LCBmYWxzZSk7CisKKyAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3Rh
cnQoc21hcnREYXRhKTsKK30KKwogdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBkMWM2
NWViLi5kMGJlNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMTM1LDYgKzEzNSw3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIHZvaWQgKCpmbHVzaCkoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVnaW9u
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKICAgICBFaW5hX0Jvb2wgKCpw
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2ln
bmVkIGludCBuLCBmbG9hdCB6b29tKTsKKyAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVyX3N0YXJ0
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgdm9pZCAoKnByZV9yZW5kZXJfY2FuY2Vs
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqZGlzYWJsZV9yZW5k
ZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCplbmFibGVfcmVu
ZGVyKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CkBAIC0xNjgsNyArMTY5LDcgQEAgc3RydWN0
IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQg
aW50byB0aGUgdmVyc2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNV
TAorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAvKioKICAqIElu
aXRpYWxpemVzIGEgd2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAt
MTgwLDcgKzE4MSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
fQorI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtz
bWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVz
IHRvIHplcm8gYSB3aG9sZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0z
MTQsNiArMzE1LDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgICAgICAgIEVp
bmFfQm9vbCBwb3NpdGlvbjoxOwogICAgICAgICBFaW5hX0Jvb2wgZnJhbWVfcmVjdDoxOwogICAg
IH0gY2hhbmdlZDsgLyoqPCBLZWVwcyB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9jYWxj
dWxhdGUuICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5OworICAgICAg
ICBmbG9hdCB6b29tOworICAgIH0gcHJldmlvdXNWaWV3OwogfTsKIAogLy8vIERlZmluZXMgdGhl
IG1vZGVzIG9mIHZpZXcuCkBAIC0xMjQ5LDYgKzEyNTQsMjMgQEAgRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwg
RXZhc18KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFk
aXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CiAKIC8qKgorICogQXNrcyBlbmdp
bmUgdG8gc3RhcnQgcHJlLXJlbmRlcmluZy4KKyAqCisgKiBUaGlzIGlzIGFuIGFsdGVybmF0aXZl
IG1ldGhvZCB0byBwcmUtcmVuZGVyIGFyb3VuZCB0aGUgdmlldyBhcmVhLgorICogVGhlIGZpcnN0
IHN0ZXAgaXMgdG8gZmluZCB0aGUgY2VudGVyIHZpZXcgYXJlYSB3aGVyZSB0byBzdGFydCBwcmUt
cmVuZGVyaW5nLgorICogQW5kIHRoZW4gZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFyZWEg
dGhlIGJhY2tpbmcgc3RvcmUgYXBwZW5kIHRoZSByZW5kZXIgcmVxdWVzdAorICogb3V0d2FyZCBp
biBzcGlyYWwgb3JkZXIuIFNvIHRoYXQgdGhlIHRpbGVzIHdoaWNoIGFyZSBjbG9zZSB0byB2aWV3
IGFyZWEgYXJlIGRpc3BsYXllZAorICogc29vbmVyIHRoYW4gb3V0c2lkZS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IHRvIGFzayBwcmUtcmVuZGVyCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgcmVxdWVzdCB3YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3
aXNlIChlcnJvcnMsIHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9ydGVkLCBldGMpCisgKgor
ICovCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0KEV2YXNfT2Jq
ZWN0ICpvKTsKKworLyoqCiAgKiBDYW5jZWxzIGFuZCBjbGVhcnMgcHJldmlvdXMgdGhlIHByZS1y
ZW5kZXIgcmVxdWVzdHMuCiAgKgogICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBwcmUtcmVuZGVy
IHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGls
ZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCBl
Mzc2OTU0Li41ODMzOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5j
cHAKQEAgLTE3OSw2ICsxNzksMTIzIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0CiAgICAgICAg
ICAgICAgICAoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKIH0KIAorc3RhdGlj
IGlubGluZSBpbnQgX2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX2NoZWNrKEVpbmFfUmVj
dGFuZ2xlIGRlc3RpbmF0aW9uLCBFaW5hX1JlY3RhbmdsZSBzb3VyY2UpCit7CisgICAgaW50IGRp
cmVjdGlvbiA9IDA7CisgICAgaWYgKGRlc3RpbmF0aW9uLnggPCBzb3VyY2UueCkKKyAgICAgICAg
ZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMCk7IC8vIDAgYml0IHNoaWZ0LCBsZWZ0Cisg
ICAgaWYgKGRlc3RpbmF0aW9uLnkgPCBzb3VyY2UueSkKKyAgICAgICAgZGlyZWN0aW9uID0gZGly
ZWN0aW9uIHwgKDEgPDwgMSk7IC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICBpZiAoZGVzdGluYXRp
b24ueCArIGRlc3RpbmF0aW9uLncgPiBzb3VyY2UueCArIHNvdXJjZS53KQorICAgICAgICBkaXJl
Y3Rpb24gPSBkaXJlY3Rpb24gfCAoMSA8PCAyKTsgLy8gMiBiaXQgc2hpZnQsIHJpZ2h0CisgICAg
aWYgKGRlc3RpbmF0aW9uLnkgKyBkZXN0aW5hdGlvbi5oID4gc291cmNlLnkgKyBzb3VyY2UuaCkK
KyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMyk7IC8vIDMgYml0IHNoaWZ0
LCBib3R0b20KKyAgICBEQkcoImNoZWNrIGNvbGxpc2lvbiAlZFxyXG4iLCBkaXJlY3Rpb24pOwor
ICAgIHJldHVybiBkaXJlY3Rpb247Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdf
dGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZShpbnQgZGlyZWN0aW9uLCBFaW5hX1JlY3Rhbmds
ZSogZGVzdGluYXRpb24sIEVpbmFfUmVjdGFuZ2xlIHNvdXJjZSkKK3sKKyAgICBpZiAoZGlyZWN0
aW9uICYgKDEgPDwgMCkpIC8vIDAgYml0IHNoaWZ0LCBsZWZ0CisgICAgICAgIGRlc3RpbmF0aW9u
LT54ID0gc291cmNlLng7CisgICAgaWYgKGRpcmVjdGlvbiAmICgxIDw8IDEpKSAvLyAxIGJpdCBz
aGlmdCwgdG9wCisgICAgICAgIGRlc3RpbmF0aW9uLT55ID0gc291cmNlLnk7CisgICAgaWYgKGRp
cmVjdGlvbiAmICgxIDw8IDIpKSAvLyAyIGJpdCBzaGlmdCwgcmlnaHQKKyAgICAgICAgZGVzdGlu
YXRpb24tPnggPSBkZXN0aW5hdGlvbi0+eCAtICgoZGVzdGluYXRpb24tPnggKyBkZXN0aW5hdGlv
bi0+dykgLSAoc291cmNlLnggKyBzb3VyY2UudykpOworICAgIGlmIChkaXJlY3Rpb24gJiAoMSA8
PCAzKSkgLy8gMyBiaXQgc2hpZnQsIGJvdHRvbQorICAgICAgICBkZXN0aW5hdGlvbi0+eSA9IGRl
c3RpbmF0aW9uLT55IC0gKChkZXN0aW5hdGlvbi0+eSArIGRlc3RpbmF0aW9uLT5oKSAtIChzb3Vy
Y2UueSArIHNvdXJjZS5oKSk7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQor
eworICAgIGludCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQ7CisgICAgZXdrX2ZyYW1lX2Nv
bnRlbnRzX3NpemVfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwgJmNv
bnRlbnRIZWlnaHQpOworCisgICAgaW50IHZpZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVp
Z2h0OworICAgIGV3a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0
YS0+bWFpbl9mcmFtZSwgZmFsc2UsICZ2aWV3WCwgJnZpZXdZLCAmdmlld1dpZHRoLCAmdmlld0hl
aWdodCk7CisKKyAgICBpZiAodmlld1dpZHRoIDw9IDAgfHwgdmlld0hlaWdodCA8PSAwIHx8IGNv
bnRlbnRXaWR0aCA8PSAwIHx8IGNvbnRlbnRIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHZpZXdXaWR0aCA+PSBjb250ZW50V2lkdGggJiYgdmlld0hlaWdodCA+
PSBjb250ZW50SGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgcHJldmlv
dXNWaWV3WCwgcHJldmlvdXNWaWV3WTsKKyAgICBwcmV2aW91c1ZpZXdYID0gc21hcnREYXRhLT5w
cmV2aW91c1ZpZXcueDsKKyAgICBwcmV2aW91c1ZpZXdZID0gc21hcnREYXRhLT5wcmV2aW91c1Zp
ZXcueTsKKworICAgIGlmIChwcmV2aW91c1ZpZXdYIDwgMCB8fCBwcmV2aW91c1ZpZXdYID4gY29u
dGVudFdpZHRoIHx8IHByZXZpb3VzVmlld1kgPCAwIHx8IHByZXZpb3VzVmlld1kgPiBjb250ZW50
SGVpZ2h0KQorICAgICAgICBwcmV2aW91c1ZpZXdYID0gcHJldmlvdXNWaWV3WSA9IDA7CisKKyAg
ICBmbG9hdCBjdXJyZW50Vmlld1pvb20gPSBld2tfdmlld196b29tX2dldChzbWFydERhdGEtPnNl
bGYpOworCisgICAgLy8gcHJlLXJlbmRlciB3b3JrcyB3aGVuIHR3byBjb25kaXRpb25zIGFyZSBt
ZXQuCisgICAgLy8gem9vbSBoYXMgYmVlbiBjaGFuZ2VkLgorICAgIC8vIGFuZCB0aGUgdmlldyBo
YXMgYmVlbiBtb3ZlZCBtb3JlIHRoYW4gdGlsZSBzaXplLgorICAgIGlmIChhYnMocHJldmlvdXNW
aWV3WCAtIHZpZXdYKSA8IERFRkFVTFRfVElMRV9XCisgICAgICAgICYmIGFicyhwcmV2aW91c1Zp
ZXdZIC0gdmlld1kpIDwgREVGQVVMVF9USUxFX0gKKyAgICAgICAgJiYgc21hcnREYXRhLT5wcmV2
aW91c1ZpZXcuem9vbSA9PSBjdXJyZW50Vmlld1pvb20pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIHN0b3JlIHByZXZpb3VzIHZpZXcgcG9zaXRpb24gYW5kIHpvb20K
KyAgICBzbWFydERhdGEtPnByZXZpb3VzVmlldy54ID0gdmlld1g7CisgICAgc21hcnREYXRhLT5w
cmV2aW91c1ZpZXcueSA9IHZpZXdZOworICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnpvb20g
PSBjdXJyZW50Vmlld1pvb207CisKKyAgICAvLyBjYW5jZWxsaW5nIHByZXZpb3VzIHByZS1yZW5k
ZXJpbmcgbGlzdCBpZiBleGlzdHMKKyAgICBld2tfdmlld19wcmVfcmVuZGVyX2NhbmNlbChzbWFy
dERhdGEtPnNlbGYpOworCisgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2Fj
aGUgPSBld2tfdmlld190aWxlZF91bnVzZWRfY2FjaGVfZ2V0KHNtYXJ0RGF0YS0+c2VsZik7Cisg
ICAgaW50IG1heE1lbW9yeSA9IGV3a190aWxlX3VudXNlZF9jYWNoZV9tYXhfZ2V0KHRpbGVVbnVz
ZWRDYWNoZSk7CisgICAgaWYgKG1heE1lbW9yeSA8PSB2aWV3V2lkdGggKiB2aWV3SGVpZ2h0ICog
RVdLX0FSR0JfQllURVNfU0laRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRWluYV9S
ZWN0YW5nbGUgdmlld1JlY3QgPSB7dmlld1gsIHZpZXdZLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHR9
OworICAgIEVpbmFfUmVjdGFuZ2xlIGNvbnRlbnRSZWN0ID0gezAsIDAsIGNvbnRlbnRXaWR0aCwg
Y29udGVudEhlaWdodH07CisKKyAgICAvLyBnZXQgYSBiYXNlIHJlbmRlciByZWN0CisgICAgY29u
c3QgaW50IGNvbnRlbnRNZW1vcnkgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0ICogRVdL
X0FSR0JfQllURVNfU0laRTsKKworICAgIC8vIGdldCByZW5kZXIgcmVjdCdzIHdpZHRoIGFuZCBo
ZWlnaHQKKyAgICBFaW5hX1JlY3RhbmdsZSByZW5kZXJSZWN0OworICAgIGlmIChtYXhNZW1vcnkg
PiBjb250ZW50TWVtb3J5KQorICAgICAgICByZW5kZXJSZWN0ID0gY29udGVudFJlY3Q7CisgICAg
ZWxzZSB7CisgICAgICAgIC8vIE1ha2UgYSBiYXNlIHJlY3RhbmdsZSBhcyBiaWcgYXMgcG9zc2li
bGUgd2l0aCB1c2luZyBtYXhNZW1vcnkuCisgICAgICAgIC8vIGFuZCB0aGVuIHJlc2hhcGUgdGhl
IGJhc2UgcmVjdGFuZ2xlIHRvIGZpdCB0byBjb250ZW50cy4KKyAgICAgICAgY29uc3QgaW50IGJh
c2VTaXplID0gc3RhdGljX2Nhc3Q8aW50PihzcXJ0KG1heE1lbW9yeSAvIDQuMGYpKTsKKyAgICAg
ICAgY29uc3QgZmxvYXQgd2lkdGhSYXRlID0gKHZpZXdSZWN0LncgKyAoREVGQVVMVF9USUxFX1cg
KiAyKSkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oYmFzZVNpemUpOworICAgICAgICBjb25zdCBmbG9h
dCBoZWlnaHRSYXRlID0gYmFzZVNpemUgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEhlaWdo
dCk7CisgICAgICAgIGNvbnN0IGZsb2F0IHJlY3RSYXRlID0gc3RkOjptYXgod2lkdGhSYXRlLCBo
ZWlnaHRSYXRlKTsKKworICAgICAgICByZW5kZXJSZWN0LncgPSBzdGF0aWNfY2FzdDxpbnQ+KGJh
c2VTaXplICogcmVjdFJhdGUpOworICAgICAgICByZW5kZXJSZWN0LmggPSBzdGF0aWNfY2FzdDxp
bnQ+KGJhc2VTaXplIC8gcmVjdFJhdGUpOworICAgICAgICByZW5kZXJSZWN0LnggPSB2aWV3UmVj
dC54ICsgKHZpZXdSZWN0LncgLyAyKSAtIChyZW5kZXJSZWN0LncgLyAyKTsKKyAgICAgICAgcmVu
ZGVyUmVjdC55ID0gdmlld1JlY3QueSArICh2aWV3UmVjdC5oIC8gMikgLSAocmVuZGVyUmVjdC5o
IC8gMik7CisKKyAgICAgICAgLy8gcmVwb3NpdGlvbiBvZiByZW5kZXJSZWN0LCBpZiB0aGUgcmVu
ZGVyUmVjdCBvdmVybGFwcGVkIHRoZSBjb250ZW50IHJlY3QsIHRoaXMgY29kZSBtb3ZlcyB0aGUg
cmVuZGVyUmVjdCBpbnNpZGUgdGhlIGNvbnRlbnQgcmVjdAorICAgICAgICBpbnQgY29sbGlzaW9u
U2lkZSA9IF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayhyZW5kZXJSZWN0LCBj
b250ZW50UmVjdCk7CisgICAgICAgIGlmIChjb2xsaXNpb25TaWRlID4gMCkKKyAgICAgICAgICAg
IF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9yZXNvbHZlKGNvbGxpc2lvblNpZGUsICZy
ZW5kZXJSZWN0LCBjb250ZW50UmVjdCk7CisKKyAgICAgICAgLy8gY2hlY2sgYWJub3JtYWwgcmVu
ZGVyIHJlY3QKKyAgICAgICAgaWYgKHJlbmRlclJlY3QueCA8IDApCisgICAgICAgICAgICByZW5k
ZXJSZWN0LnggPSAwOworICAgICAgICBpZiAocmVuZGVyUmVjdC55IDwgMCkKKyAgICAgICAgICAg
IHJlbmRlclJlY3QueSA9IDA7CisgICAgICAgIGlmIChyZW5kZXJSZWN0LncgPiBjb250ZW50V2lk
dGgpCisgICAgICAgICAgICByZW5kZXJSZWN0LncgPSBjb250ZW50V2lkdGg7CisgICAgICAgIGlm
IChyZW5kZXJSZWN0LmggPiBjb250ZW50SGVpZ2h0KQorICAgICAgICAgICAgcmVuZGVyUmVjdC5o
ID0gY29udGVudEhlaWdodDsKKyAgICB9CisKKyAgICAvLyBlbnF1ZXVlIHRpbGVzIGludG8gdGls
ZWQgYmFja2luZyBzdG9yZSBpbiBzcGlyYWwgb3JkZXIKKyAgICBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZ2
aWV3UmVjdCwgJnJlbmRlclJlY3QsIG1heE1lbW9yeSwgY3VycmVudFZpZXdab29tKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJl
X3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+YmFja2lu
Z19zdG9yZSk7CkBAIC0yMTgsNiArMzM1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RpbGVkX3Nt
YXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdr
X3ZpZXdfdGlsZWRfc21hcnRfZmx1c2g7CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9l
d2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbjsKICAgICBhcGktPnByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFydCA9IF9ld2tfdmlld190aWxl
ZF9zbWFydF9wcmVfcmVuZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRlcl9jYW5jZWwgPSBf
ZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5kaXNhYmxl
X3JlbmRlciA9IF9ld2tfdmlld190aWxlZF9zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGkt
PmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNDVlYzFi
Li42M2ZkYmI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMDMgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5s
ZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIHByZS1yZW5kZXIgaGFuZGxpbmcg
Y29kZSBpbiBFV2ViTGF1bmNoZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBwcmUtcmVuZGVyIGhhbmRsaW5nIGNvZGUgYnkgcHJlc3NpbmcgSW5z
ZXJ0IGtleS4KKworICAgICAgICAqIEVXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl9r
ZXlfZG93bik6CisKIDIwMTItMDEtMDMgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2hlbiBzaG93aW5nIHJlc3VsdHMuaHRtbCBwYXNzIGEgY29ycmVj
dCBVUkwgdG8gd2ViYnJvd3Nlci5vcGVuCmRpZmYgLS1naXQgYS9Ub29scy9FV2ViTGF1bmNoZXIv
bWFpbi5jIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwppbmRleCAxMTE4MTgzLi4yZDY0ZDRh
IDEwMDY0NAotLS0gYS9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jCisrKyBiL1Rvb2xzL0VXZWJM
YXVuY2hlci9tYWluLmMKQEAgLTU0OCw2ICs1NDgsOSBAQCBvbl9rZXlfZG93bih2b2lkICpkYXRh
LCBFdmFzICplLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQogICAgIH0gZWxz
ZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiZSIpKSB7CiAgICAgICAgIGluZm8oIlJlbmRlciByZXN1
bWVkIik7CiAgICAgICAgIGV3a192aWV3X2VuYWJsZV9yZW5kZXIob2JqKTsKKyAgICB9IGVsc2Ug
aWYgKCFzdHJjbXAoZXYtPmtleSwgIkluc2VydCIpKSB7CisgICAgICAgIGluZm8oIlByZS1yZW5k
ZXJpbmcgc3RhcnQiKTsKKyAgICAgICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFydChvYmopOwog
ICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121092</attachid>
            <date>2012-01-04 03:51:04 -0800</date>
            <delta_ts>2012-01-04 17:37:02 -0800</delta_ts>
            <desc>minor fix</desc>
            <filename>minor_fix.patch</filename>
            <type>text/plain</type>
            <size>20096</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxZDNhYTM5Li5mN2VmYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMDQgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDEyLTAxLTA0ICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlZmFjdG9yIHRoZSB3YXkg
dXNpbmcgY2Fpcm8gaW4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oCmluZGV4IGE1MzA3ZjAuLjFjZDZhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBJZiBkZWZp
bmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBj
b3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQorI2RlZmluZSBFV0tfQVJHQl9C
WVRFU19TSVpFIDQKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2RlZmluZSBF
V0tfSlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCAyNTI2OGIzLi5iZTA1MTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAK
QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oIgogCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdGlsZWRfbWF0cml4LmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFY29yZS5oPgpAQCAtMTgzOCw2ICsxODM5LDExMSBAQCB2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAjZW5kaWYK
IH0KIAorRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9h
ZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgaW50IGNvbHVtbiwgaW50IHJvdywgZmxv
YXQgem9vbSkKK3sKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUs
IHByaXYsIGZhbHNlKTsKKworICAgIGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlz
dHMocHJpdi0+bW9kZWwubWF0cml4LCBjb2x1bW4sIHJvdywgem9vbSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9hZGQocHJpdiwgY29sdW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
cmUsIEVpbmFfUmVjdGFuZ2xlKiB2aWV3UmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlclJlY3Qs
IGludCBtYXhNZW1vcnksIGZsb2F0IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRV
Uk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHZpZXdSZWN0LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHJlbmRlclJlY3QsIGZhbHNlKTsKKworICAgIGNvbnN0IGludCB0aWxlV2lkdGgg
PSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgY29uc3QgaW50IHRpbGVIZWlnaHQgPSBwcml2
LT52aWV3LnRpbGUuaGVpZ2h0OworCisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHZpZXdTbGlj
ZXI7CisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHJlbmRlclNsaWNlcjsKKworICAgIGlmICgh
ZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZ2aWV3U2xpY2VyLAorICAgICAgICB2aWV3UmVj
dC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0
aWxlSGVpZ2h0KSkgeworICAgICAgICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZpZXdTbGlj
ZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnks
IHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2Vy
X3NldHVwKCZyZW5kZXJTbGljZXIsCisgICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3Qt
PnksIHJlbmRlclJlY3QtPncsIHJlbmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkp
IHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIgZm9yICVk
LCVkKyVkeCVkIHRpbGU9JWR4JWQiLCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55LCByZW5k
ZXJSZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUgbG9vcC4K
KyAgICBpbnQgbWVtb3J5TGltaXRzID0gbWF4TWVtb3J5IC8gKEVXS19BUkdCX0JZVEVTX1NJWkUg
KiB0aWxlV2lkdGggKiB0aWxlSGVpZ2h0KTsKKyAgICBjb25zdCBpbnQgbWF4Vmlld1NpZGVMZW5n
dGggPSBzdGQ6Om1heCh2aWV3U2xpY2VyLmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEsIHZpZXdTbGlj
ZXIucm93MiAtIHZpZXdTbGljZXIucm93MSk7CisgICAgY29uc3QgaW50IG1heFJlbmRlclNpZGVM
ZW5ndGggPSBzdGQ6Om1heChyZW5kZXJTbGljZXIuY29sMiAtIHJlbmRlclNsaWNlci5jb2wxLCBy
ZW5kZXJTbGljZXIucm93MiAtIHJlbmRlclNsaWNlci5yb3cxKTsKKyAgICBjb25zdCBpbnQgbWF4
TG9vcENvdW50ID0gbWF4Vmlld1NpZGVMZW5ndGggKyBtYXhSZW5kZXJTaWRlTGVuZ3RoOworCisg
ICAgLy8gc3BpcmUgc3RhcnRzIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgdmlldyBhcmVhLgorICAg
IGludCBjZW50ZXJDb2x1bW4gPSAodmlld1NsaWNlci5jb2wxICsgdmlld1NsaWNlci5jb2wyKSAv
IDI7CisgICAgaW50IGNlbnRlclJvdyA9ICh2aWV3U2xpY2VyLnJvdzEgKyB2aWV3U2xpY2VyLnJv
dzIpIC8gMjsKKworICAgIGludCBzdGVwID0gMTsKKyAgICBjb25zdCBpbnQgc3F1YXJlU2lkZSA9
IDQ7CisgICAgZm9yIChpbnQgbG9vcCA9IDA7IGxvb3AgPCBtYXhMb29wQ291bnQ7IGxvb3ArKykg
eworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHN0ZXAgKiBzcXVhcmVTaWRlICsgMTsgaSsr
KSB7CisgICAgICAgICAgICBpZiAobWVtb3J5TGltaXRzIDw9IDApCisgICAgICAgICAgICAgICAg
Z290byBtZW1vcnlMaW1pdHNSZWFjaGVkOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIHRo
aXMgY29kZSBtZWFucyB0aGUgbG9vcCBydW5zIGxpa2Ugc3BpcmFsLiAoaS5nLiBsZWZ0LT5kb3du
LT5yaWdodC0+dXApCisgICAgICAgICAgICB3aGVuIGl0IG1vdmVzIGJhY2sgdG8gb3JpZ2luYWwg
cGxhY2UgYW5kIHRoZW4gd2FsayAxIHRpbGUgbGVmdCBhbmQgdXAuCisgICAgICAgICAgICB0aGUg
bG9vcCBrZWVwcyBvbiBkb2luZyB0aGlzIHVudGlsIGl0IHJlYWNoZXMgbWF4IG1lbW9yeSB0byBk
cmF3IHRpbGVzLgorICAgICAgICAgICAgZS5nLiApCisgICAgICAgICAgICAgICAgICAgICAgICAg
MzMzMzMzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIyMjIzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgMzIxMTIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIxMTIzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgMzIyMjIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMz
CisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGkgPiAwICYmIGkgPD0gc3RlcCkKKyAg
ICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4rKzsgLy8gbW92ZSBsZWZ0LgorICAgICAgICAgICAg
ZWxzZSBpZiAoaSA+IHN0ZXAgJiYgaSA8PSBzdGVwICogMikKKyAgICAgICAgICAgICAgICBjZW50
ZXJSb3crKzsgLy8gbW92ZSBkb3duLgorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAy
ICYmIGkgPD0gc3RlcCAqIDMpCisgICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uLS07IC8vIG1v
dmUgcmlnaHQuCisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAqIDMgJiYgaSA8PSBzdGVw
ICogNCkKKyAgICAgICAgICAgICAgICBjZW50ZXJSb3ctLTsgLy8gbW92ZSB1cC4KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBFUlIoIkVSUk9SIDogb3V0IG9mIGJvdW5kc1xyXG4i
KTsKKworICAgICAgICAgICAgLy8gc2tpcCBpbiB2aWV3IHBvcnQgYXJlYS4KKyAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIuY29sMSkgPCBjZW50ZXJDb2x1bW4KKyAg
ICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIuY29sMikgPiBjZW50
ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIu
cm93MSkgPCBjZW50ZXJSb3cKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZp
ZXdTbGljZXIucm93MikgPiBjZW50ZXJSb3cpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5jb2wxKSA8PSBj
ZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNs
aWNlci5jb2wyKSA+PSBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2Fz
dDxpbnQ+KHJlbmRlclNsaWNlci5yb3cxKSA8PSBjZW50ZXJSb3cKKyAgICAgICAgICAgICAgICAm
JiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5yb3cyKSA+PSBjZW50ZXJSb3cpIHsKKwor
ICAgICAgICAgICAgICAgIGlmICghZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90
aWxlX2FkZChld2tCYWNraW5nU3RvcmUsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93LCB6b29tKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgREJHKCJSPlsl
ZCAlZF0gIiwgY2VudGVyQ29sdW1uLCBjZW50ZXJSb3cpOworICAgICAgICAgICAgICAgIG1lbW9y
eUxpbWl0cy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNlbnRlclJvdy0t
OworICAgICAgICBjZW50ZXJDb2x1bW4tLTsKKyAgICAgICAgc3RlcCA9IHN0ZXAgKyAyOworICAg
IH0KKworbWVtb3J5TGltaXRzUmVhY2hlZDoKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9wcm9jZXNzX2lkbGVyX3N0YXJ0KHByaXYpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFz
X09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7CiAgICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmluZGV4IGU5
MTE5NDcuLjQ0NzQwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5oCkBAIC0xMTIsNiArMTEyLDcgQEAgdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1Vu
dXMKIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9u
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25l
ZCBpbnQgbiwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIG8sIEVpbmFfUmVjdGFuZ2xlKiB2
aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZs
b2F0IHpvb20pOwogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNl
bChFdmFzX09iamVjdCogbyk7CiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCogbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAppbmRleCAyOGU5ZjBiLi4wMDJhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAK
QEAgLTEwMDcsNiArMTAwNywxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9w
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRhKgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRl
cl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgV1JOKCJub3Qg
c3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2Nh
bmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3Vw
cG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKQEAgLTExMzksNiAr
MTE0NSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfc21hcnRfZmx1c2g7CiAg
ICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3Jl
Z2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3Nt
YXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFy
dCA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRl
cl9jYW5jZWwgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5k
aXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGkt
PmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3JlbmRlcjsKQEAgLTE4MzYs
NiArMTg0MywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludAogICAgIHJldHVybiBzbWFydERh
dGEtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoc21hcnREYXRhLCBudW1iZXIsIGN1
cnJlbnRab29tKTsKIH0KIAorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3RhcnQsIGZhbHNlKTsKKworICAgIHJldHVy
biBzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9zdGFydChzbWFydERhdGEpOworfQorCiB1bnNp
Z25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGQxYzY1ZWIuLmQwYmU2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgdm9pZCAoKmZsdXNoKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAg
ICAgRWluYV9Cb29sICgqcHJlX3JlbmRlcl9yZWdpb24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgs
IGZsb2F0IHpvb20pOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVz
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOwor
ICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfc3RhcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKICAgICB2b2lkICgqcHJlX3JlbmRlcl9jYW5jZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKICAgICBFaW5hX0Jvb2wgKCpkaXNhYmxlX3JlbmRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpOwogICAgIEVpbmFfQm9vbCAoKmVuYWJsZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKTsKQEAgLTE2OCw3ICsxNjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAg
KiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX1ZFUlNJT04gNFVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXMgYSB3aG9sZSBAYSBFd2tf
Vmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xODAsNyArMTgxLDcgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
VkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgog
ICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkg
e3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXMgdG8gemVybyBhIHdob2xlIEBhIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTMxNCw2ICszMTUsMTAgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CiAgICAg
ICAgIEVpbmFfQm9vbCBmcmFtZV9yZWN0OjE7CiAgICAgfSBjaGFuZ2VkOyAvKio8IEtlZXBzIHdo
YXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZS4gKi8KKyAgICBzdHJ1Y3Qgewor
ICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7CisgICAgICAgIGZsb2F0IHpvb207CisgICAgfSBwcmV2
aW91c1ZpZXc7CiB9OwogCiAvLy8gRGVmaW5lcyB0aGUgbW9kZXMgb2Ygdmlldy4KQEAgLTEyNDks
NiArMTI1NCwyMyBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lv
bihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzXwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2ln
bmVkIGludCBuKTsKIAogLyoqCisgKiBBc2tzIGVuZ2luZSB0byBzdGFydCBwcmUtcmVuZGVyaW5n
LgorICoKKyAqIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHRvIHByZS1yZW5kZXIgYXJv
dW5kIHRoZSB2aWV3IGFyZWEuCisgKiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaW5kIHRoZSBjZW50
ZXIgdmlldyBhcmVhIHdoZXJlIHRvIHN0YXJ0IHByZS1yZW5kZXJpbmcuCisgKiBBbmQgdGhlbiBm
cm9tIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXcgYXJlYSB0aGUgYmFja2luZyBzdG9yZSBhcHBlbmQg
dGhlIHJlbmRlciByZXF1ZXN0CisgKiBvdXR3YXJkIGluIHNwaXJhbCBvcmRlci4gU28gdGhhdCB0
aGUgdGlsZXMgd2hpY2ggYXJlIGNsb3NlIHRvIHZpZXcgYXJlYSBhcmUgZGlzcGxheWVkCisgKiBz
b29uZXIgdGhhbiBvdXRzaWRlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgdG8gYXNrIHByZS1yZW5k
ZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBhY2NlcHRlZCwg
QGMgRUlOQV9GQUxTRQorICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgcHJlLXJlbmRlciBm
ZWF0dXJlIG5vdCBzdXBwb3J0ZWQsIGV0YykKKyAqCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIENhbmNl
bHMgYW5kIGNsZWFycyBwcmV2aW91cyB0aGUgcHJlLXJlbmRlciByZXF1ZXN0cy4KICAqCiAgKiBA
cGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDI0MWZjMTYuLjk0NGQzNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMjA5LDYgKzIwOSwxMjMgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnQKICAgICAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsIG4sIHpvb20pOwogfQogCitzdGF0aWMgaW5saW5lIGludCBfZXdrX3ZpZXdfdGls
ZWRfcmVjdF9jb2xsaXNpb25fY2hlY2soRWluYV9SZWN0YW5nbGUgZGVzdGluYXRpb24sIEVpbmFf
UmVjdGFuZ2xlIHNvdXJjZSkKK3sKKyAgICBpbnQgZGlyZWN0aW9uID0gMDsKKyAgICBpZiAoZGVz
dGluYXRpb24ueCA8IHNvdXJjZS54KQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfCAo
MSA8PCAwKTsgLy8gMCBiaXQgc2hpZnQsIGxlZnQKKyAgICBpZiAoZGVzdGluYXRpb24ueSA8IHNv
dXJjZS55KQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfCAoMSA8PCAxKTsgLy8gMSBi
aXQgc2hpZnQsIHRvcAorICAgIGlmIChkZXN0aW5hdGlvbi54ICsgZGVzdGluYXRpb24udyA+IHNv
dXJjZS54ICsgc291cmNlLncpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8
IDIpOyAvLyAyIGJpdCBzaGlmdCwgcmlnaHQKKyAgICBpZiAoZGVzdGluYXRpb24ueSArIGRlc3Rp
bmF0aW9uLmggPiBzb3VyY2UueSArIHNvdXJjZS5oKQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJl
Y3Rpb24gfCAoMSA8PCAzKTsgLy8gMyBiaXQgc2hpZnQsIGJvdHRvbQorICAgIERCRygiY2hlY2sg
Y29sbGlzaW9uICVkXHJcbiIsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIGRpcmVjdGlvbjsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9yZXNv
bHZlKGludCBkaXJlY3Rpb24sIEVpbmFfUmVjdGFuZ2xlKiBkZXN0aW5hdGlvbiwgRWluYV9SZWN0
YW5nbGUgc291cmNlKQoreworICAgIGlmIChkaXJlY3Rpb24gJiAoMSA8PCAwKSkgLy8gMCBiaXQg
c2hpZnQsIGxlZnQKKyAgICAgICAgZGVzdGluYXRpb24tPnggPSBzb3VyY2UueDsKKyAgICBpZiAo
ZGlyZWN0aW9uICYgKDEgPDwgMSkpIC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICAgICAgZGVzdGlu
YXRpb24tPnkgPSBzb3VyY2UueTsKKyAgICBpZiAoZGlyZWN0aW9uICYgKDEgPDwgMikpIC8vIDIg
Yml0IHNoaWZ0LCByaWdodAorICAgICAgICBkZXN0aW5hdGlvbi0+eCA9IGRlc3RpbmF0aW9uLT54
IC0gKChkZXN0aW5hdGlvbi0+eCArIGRlc3RpbmF0aW9uLT53KSAtIChzb3VyY2UueCArIHNvdXJj
ZS53KSk7CisgICAgaWYgKGRpcmVjdGlvbiAmICgxIDw8IDMpKSAvLyAzIGJpdCBzaGlmdCwgYm90
dG9tCisgICAgICAgIGRlc3RpbmF0aW9uLT55ID0gZGVzdGluYXRpb24tPnkgLSAoKGRlc3RpbmF0
aW9uLT55ICsgZGVzdGluYXRpb24tPmgpIC0gKHNvdXJjZS55ICsgc291cmNlLmgpKTsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydChF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgaW50IGNvbnRlbnRXaWR0aCwg
Y29udGVudEhlaWdodDsKKyAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc21hcnREYXRh
LT5tYWluX2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29udGVudEhlaWdodCk7CisKKyAgICBpbnQg
dmlld1gsIHZpZXdZLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQ7CisgICAgZXdrX2ZyYW1lX3Zpc2li
bGVfY29udGVudF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBmYWxzZSwgJnZp
ZXdYLCAmdmlld1ksICZ2aWV3V2lkdGgsICZ2aWV3SGVpZ2h0KTsKKworICAgIGlmICh2aWV3V2lk
dGggPD0gMCB8fCB2aWV3SGVpZ2h0IDw9IDAgfHwgY29udGVudFdpZHRoIDw9IDAgfHwgY29udGVu
dEhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodmlld1dpZHRo
ID49IGNvbnRlbnRXaWR0aCAmJiB2aWV3SGVpZ2h0ID49IGNvbnRlbnRIZWlnaHQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGludCBwcmV2aW91c1ZpZXdYLCBwcmV2aW91c1ZpZXdZOwor
ICAgIHByZXZpb3VzVmlld1ggPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy54OworICAgIHByZXZp
b3VzVmlld1kgPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy55OworCisgICAgaWYgKHByZXZpb3Vz
Vmlld1ggPCAwIHx8IHByZXZpb3VzVmlld1ggPiBjb250ZW50V2lkdGggfHwgcHJldmlvdXNWaWV3
WSA8IDAgfHwgcHJldmlvdXNWaWV3WSA+IGNvbnRlbnRIZWlnaHQpCisgICAgICAgIHByZXZpb3Vz
Vmlld1ggPSBwcmV2aW91c1ZpZXdZID0gMDsKKworICAgIGZsb2F0IGN1cnJlbnRWaWV3Wm9vbSA9
IGV3a192aWV3X3pvb21fZ2V0KHNtYXJ0RGF0YS0+c2VsZik7CisKKyAgICAvLyBwcmUtcmVuZGVy
IHdvcmtzIHdoZW4gdHdvIGNvbmRpdGlvbnMgYXJlIG1ldC4KKyAgICAvLyB6b29tIGhhcyBiZWVu
IGNoYW5nZWQuCisgICAgLy8gYW5kIHRoZSB2aWV3IGhhcyBiZWVuIG1vdmVkIG1vcmUgdGhhbiB0
aWxlIHNpemUuCisgICAgaWYgKGFicyhwcmV2aW91c1ZpZXdYIC0gdmlld1gpIDwgREVGQVVMVF9U
SUxFX1cKKyAgICAgICAgJiYgYWJzKHByZXZpb3VzVmlld1kgLSB2aWV3WSkgPCBERUZBVUxUX1RJ
TEVfSAorICAgICAgICAmJiBzbWFydERhdGEtPnByZXZpb3VzVmlldy56b29tID09IGN1cnJlbnRW
aWV3Wm9vbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc3RvcmUg
cHJldmlvdXMgdmlldyBwb3NpdGlvbiBhbmQgem9vbS4KKyAgICBzbWFydERhdGEtPnByZXZpb3Vz
Vmlldy54ID0gdmlld1g7CisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueSA9IHZpZXdZOwor
ICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnpvb20gPSBjdXJyZW50Vmlld1pvb207CisKKyAg
ICAvLyBjYW5jZWxsaW5nIHByZXZpb3VzIHByZS1yZW5kZXJpbmcgbGlzdCBpZiBleGlzdHMuCisg
ICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoc21hcnREYXRhLT5zZWxmKTsKKworICAgIEV3
a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0gZXdrX3ZpZXdfdGlsZWRfdW51
c2VkX2NhY2hlX2dldChzbWFydERhdGEtPnNlbGYpOworICAgIGludCBtYXhNZW1vcnkgPSBld2tf
dGlsZV91bnVzZWRfY2FjaGVfbWF4X2dldCh0aWxlVW51c2VkQ2FjaGUpOworICAgIGlmIChtYXhN
ZW1vcnkgPD0gdmlld1dpZHRoICogdmlld0hlaWdodCAqIEVXS19BUkdCX0JZVEVTX1NJWkUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVpbmFfUmVjdGFuZ2xlIHZpZXdSZWN0ID0ge3Zp
ZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0fTsKKyAgICBFaW5hX1JlY3RhbmdsZSBj
b250ZW50UmVjdCA9IHswLCAwLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHR9OworCisgICAg
Ly8gZ2V0IGEgYmFzZSByZW5kZXIgcmVjdC4KKyAgICBjb25zdCBpbnQgY29udGVudE1lbW9yeSA9
IGNvbnRlbnRXaWR0aCAqIGNvbnRlbnRIZWlnaHQgKiBFV0tfQVJHQl9CWVRFU19TSVpFOworCisg
ICAgLy8gZ2V0IHJlbmRlciByZWN0J3Mgd2lkdGggYW5kIGhlaWdodC4KKyAgICBFaW5hX1JlY3Rh
bmdsZSByZW5kZXJSZWN0OworICAgIGlmIChtYXhNZW1vcnkgPiBjb250ZW50TWVtb3J5KQorICAg
ICAgICByZW5kZXJSZWN0ID0gY29udGVudFJlY3Q7CisgICAgZWxzZSB7CisgICAgICAgIC8vIE1h
a2UgYSBiYXNlIHJlY3RhbmdsZSBhcyBiaWcgYXMgcG9zc2libGUgd2l0aCB1c2luZyBtYXhNZW1v
cnkuCisgICAgICAgIC8vIGFuZCB0aGVuIHJlc2hhcGUgdGhlIGJhc2UgcmVjdGFuZ2xlIHRvIGZp
dCB0byBjb250ZW50cy4KKyAgICAgICAgY29uc3QgaW50IGJhc2VTaXplID0gc3RhdGljX2Nhc3Q8
aW50PihzcXJ0KG1heE1lbW9yeSAvIDQuMGYpKTsKKyAgICAgICAgY29uc3QgZmxvYXQgd2lkdGhS
YXRlID0gKHZpZXdSZWN0LncgKyAoREVGQVVMVF9USUxFX1cgKiAyKSkgLyBzdGF0aWNfY2FzdDxm
bG9hdD4oYmFzZVNpemUpOworICAgICAgICBjb25zdCBmbG9hdCBoZWlnaHRSYXRlID0gYmFzZVNp
emUgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEhlaWdodCk7CisgICAgICAgIGNvbnN0IGZs
b2F0IHJlY3RSYXRlID0gc3RkOjptYXgod2lkdGhSYXRlLCBoZWlnaHRSYXRlKTsKKworICAgICAg
ICByZW5kZXJSZWN0LncgPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplICogcmVjdFJhdGUpOwor
ICAgICAgICByZW5kZXJSZWN0LmggPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplIC8gcmVjdFJh
dGUpOworICAgICAgICByZW5kZXJSZWN0LnggPSB2aWV3UmVjdC54ICsgKHZpZXdSZWN0LncgLyAy
KSAtIChyZW5kZXJSZWN0LncgLyAyKTsKKyAgICAgICAgcmVuZGVyUmVjdC55ID0gdmlld1JlY3Qu
eSArICh2aWV3UmVjdC5oIC8gMikgLSAocmVuZGVyUmVjdC5oIC8gMik7CisKKyAgICAgICAgLy8g
cmVwb3NpdGlvbiBvZiByZW5kZXJSZWN0LCBpZiB0aGUgcmVuZGVyUmVjdCBvdmVybGFwcGVkIHRo
ZSBjb250ZW50IHJlY3QsIHRoaXMgY29kZSBtb3ZlcyB0aGUgcmVuZGVyUmVjdCBpbnNpZGUgdGhl
IGNvbnRlbnQgcmVjdC4KKyAgICAgICAgaW50IGNvbGxpc2lvblNpZGUgPSBfZXdrX3ZpZXdfdGls
ZWRfcmVjdF9jb2xsaXNpb25fY2hlY2socmVuZGVyUmVjdCwgY29udGVudFJlY3QpOworICAgICAg
ICBpZiAoY29sbGlzaW9uU2lkZSA+IDApCisgICAgICAgICAgICBfZXdrX3ZpZXdfdGlsZWRfcmVj
dF9jb2xsaXNpb25fcmVzb2x2ZShjb2xsaXNpb25TaWRlLCAmcmVuZGVyUmVjdCwgY29udGVudFJl
Y3QpOworCisgICAgICAgIC8vIGNoZWNrIGFibm9ybWFsIHJlbmRlciByZWN0CisgICAgICAgIGlm
IChyZW5kZXJSZWN0LnggPCAwKQorICAgICAgICAgICAgcmVuZGVyUmVjdC54ID0gMDsKKyAgICAg
ICAgaWYgKHJlbmRlclJlY3QueSA8IDApCisgICAgICAgICAgICByZW5kZXJSZWN0LnkgPSAwOwor
ICAgICAgICBpZiAocmVuZGVyUmVjdC53ID4gY29udGVudFdpZHRoKQorICAgICAgICAgICAgcmVu
ZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAgICAgICBpZiAocmVuZGVyUmVjdC5oID4gY29u
dGVudEhlaWdodCkKKyAgICAgICAgICAgIHJlbmRlclJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7Cisg
ICAgfQorCisgICAgLy8gZW5xdWV1ZSB0aWxlcyBpbnRvIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4g
c3BpcmFsIG9yZGVyLgorICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3Bp
cmFsX3F1ZXVlKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJnZpZXdSZWN0LCAmcmVuZGVyUmVj
dCwgbWF4TWVtb3J5LCBjdXJyZW50Vmlld1pvb20pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9jYW5jZWwoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKQEAgLTI0OCw2
ICszNjUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5mbHVzaCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9m
bHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9uID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0
X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMg
PSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CisgICAg
YXBpLT5wcmVfcmVuZGVyX3N0YXJ0ID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJf
c3RhcnQ7CiAgICAgYXBpLT5wcmVfcmVuZGVyX2NhbmNlbCA9IF9ld2tfdmlld190aWxlZF9zbWFy
dF9wcmVfcmVuZGVyX2NhbmNlbDsKICAgICBhcGktPmRpc2FibGVfcmVuZGVyID0gX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyOwogICAgIGFwaS0+ZW5hYmxlX3JlbmRlciA9IF9l
d2tfdmlld190aWxlZF9zbWFydF9lbmFibGVfcmVuZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmMWFmZTguLmNlM2VlM2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wMS0wNCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBBZGQgcHJlLXJlbmRlciBoYW5kbGluZyBjb2RlIGluIEVXZWJMYXVuY2hl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBy
ZS1yZW5kZXIgaGFuZGxpbmcgY29kZSBieSBwcmVzc2luZyBJbnNlcnQga2V5LgorCisgICAgICAg
ICogRVdlYkxhdW5jaGVyL21haW4uYzoKKyAgICAgICAgKG9uX2tleV9kb3duKToKKwogMjAxMi0w
MS0wNCAgTWFyeSBXdSAgPG1hcnkud3VAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIEVu
YWJsZSBET1dOTE9BRF9BVFRSSUJVVEUgaW4gQmxhY2tCZXJyeSBwb3J0aW5nCmRpZmYgLS1naXQg
YS9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwpp
bmRleCAxMTE4MTgzLi4yZDY0ZDRhIDEwMDY0NAotLS0gYS9Ub29scy9FV2ViTGF1bmNoZXIvbWFp
bi5jCisrKyBiL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMKQEAgLTU0OCw2ICs1NDgsOSBAQCBv
bl9rZXlfZG93bih2b2lkICpkYXRhLCBFdmFzICplLCBFdmFzX09iamVjdCAqb2JqLCB2b2lkICpl
dmVudF9pbmZvKQogICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiZSIpKSB7CiAgICAg
ICAgIGluZm8oIlJlbmRlciByZXN1bWVkIik7CiAgICAgICAgIGV3a192aWV3X2VuYWJsZV9yZW5k
ZXIob2JqKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtleSwgIkluc2VydCIpKSB7Cisg
ICAgICAgIGluZm8oIlByZS1yZW5kZXJpbmcgc3RhcnQiKTsKKyAgICAgICAgZXdrX3ZpZXdfcHJl
X3JlbmRlcl9zdGFydChvYmopOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="121482"
          type_id="1"
          status="+"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="121483"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121192</attachid>
            <date>2012-01-04 17:37:02 -0800</date>
            <delta_ts>2012-01-05 20:38:15 -0800</delta_ts>
            <desc>rebase patch</desc>
            <filename>rebase.patch</filename>
            <type>text/plain</type>
            <size>20101</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAxZDNhYTM5Li4wY2MzZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMDQgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDEyLTAxLTA0ICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlZmFjdG9yIHRoZSB3YXkg
dXNpbmcgY2Fpcm8gaW4gZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oCmluZGV4IGE1MzA3ZjAuLjFjZDZhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfcHJpdmF0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGV4dGVybiAiQyIgewogCiAvLyBJZiBkZWZp
bmVkLCBld2sgd2lsbCBkbyB0eXBlIGNoZWNraW5nIHRvIGVuc3VyZSBvYmplY3RzIGFyZSBvZiBj
b3JyZWN0IHR5cGUKICNkZWZpbmUgRVdLX1RZUEVfQ0hFQ0sgMQorI2RlZmluZSBFV0tfQVJHQl9C
WVRFU19TSVpFIDQKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2RlZmluZSBF
V0tfSlNfT0JKRUNUX01BR0lDIDB4Njk2OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCAyNTI2OGIzLi5iZTA1MTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAK
QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oIgogCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdGlsZWRfbWF0cml4LmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFY29yZS5oPgpAQCAtMTgzOCw2ICsxODM5LDExMSBAQCB2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAjZW5kaWYK
IH0KIAorRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9h
ZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgaW50IGNvbHVtbiwgaW50IHJvdywgZmxv
YXQgem9vbSkKK3sKKyAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUs
IHByaXYsIGZhbHNlKTsKKworICAgIGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlz
dHMocHJpdi0+bW9kZWwubWF0cml4LCBjb2x1bW4sIHJvdywgem9vbSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9hZGQocHJpdiwgY29sdW1uLCByb3csIHpvb20pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
cmUsIEVpbmFfUmVjdGFuZ2xlKiB2aWV3UmVjdCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlclJlY3Qs
IGludCBtYXhNZW1vcnksIGZsb2F0IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRV
Uk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHZpZXdSZWN0LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHJlbmRlclJlY3QsIGZhbHNlKTsKKworICAgIGNvbnN0IGludCB0aWxlV2lkdGgg
PSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgY29uc3QgaW50IHRpbGVIZWlnaHQgPSBwcml2
LT52aWV3LnRpbGUuaGVpZ2h0OworCisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHZpZXdTbGlj
ZXI7CisgICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHJlbmRlclNsaWNlcjsKKworICAgIGlmICgh
ZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZ2aWV3U2xpY2VyLAorICAgICAgICB2aWV3UmVj
dC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0
aWxlSGVpZ2h0KSkgeworICAgICAgICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZpZXdTbGlj
ZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnks
IHZpZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2Vy
X3NldHVwKCZyZW5kZXJTbGljZXIsCisgICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3Qt
PnksIHJlbmRlclJlY3QtPncsIHJlbmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkp
IHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIgZm9yICVk
LCVkKyVkeCVkIHRpbGU9JWR4JWQiLCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55LCByZW5k
ZXJSZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUgbG9vcC4K
KyAgICBpbnQgbWVtb3J5TGltaXRzID0gbWF4TWVtb3J5IC8gKEVXS19BUkdCX0JZVEVTX1NJWkUg
KiB0aWxlV2lkdGggKiB0aWxlSGVpZ2h0KTsKKyAgICBjb25zdCBpbnQgbWF4Vmlld1NpZGVMZW5n
dGggPSBzdGQ6Om1heCh2aWV3U2xpY2VyLmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEsIHZpZXdTbGlj
ZXIucm93MiAtIHZpZXdTbGljZXIucm93MSk7CisgICAgY29uc3QgaW50IG1heFJlbmRlclNpZGVM
ZW5ndGggPSBzdGQ6Om1heChyZW5kZXJTbGljZXIuY29sMiAtIHJlbmRlclNsaWNlci5jb2wxLCBy
ZW5kZXJTbGljZXIucm93MiAtIHJlbmRlclNsaWNlci5yb3cxKTsKKyAgICBjb25zdCBpbnQgbWF4
TG9vcENvdW50ID0gbWF4Vmlld1NpZGVMZW5ndGggKyBtYXhSZW5kZXJTaWRlTGVuZ3RoOworCisg
ICAgLy8gc3BpcmUgc3RhcnRzIGZyb20gdGhlIGNlbnRlciBvZiB0aGUgdmlldyBhcmVhLgorICAg
IGludCBjZW50ZXJDb2x1bW4gPSAodmlld1NsaWNlci5jb2wxICsgdmlld1NsaWNlci5jb2wyKSAv
IDI7CisgICAgaW50IGNlbnRlclJvdyA9ICh2aWV3U2xpY2VyLnJvdzEgKyB2aWV3U2xpY2VyLnJv
dzIpIC8gMjsKKworICAgIGludCBzdGVwID0gMTsKKyAgICBjb25zdCBpbnQgc3F1YXJlU2lkZSA9
IDQ7CisgICAgZm9yIChpbnQgbG9vcCA9IDA7IGxvb3AgPCBtYXhMb29wQ291bnQ7IGxvb3ArKykg
eworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHN0ZXAgKiBzcXVhcmVTaWRlICsgMTsgaSsr
KSB7CisgICAgICAgICAgICBpZiAobWVtb3J5TGltaXRzIDw9IDApCisgICAgICAgICAgICAgICAg
Z290byBtZW1vcnlMaW1pdHNSZWFjaGVkOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIHRo
aXMgY29kZSBtZWFucyB0aGUgbG9vcCBydW5zIGxpa2Ugc3BpcmFsLiAoaS5nLiBsZWZ0LT5kb3du
LT5yaWdodC0+dXApCisgICAgICAgICAgICB3aGVuIGl0IG1vdmVzIGJhY2sgdG8gb3JpZ2luYWwg
cGxhY2UgYW5kIHRoZW4gd2FsayAxIHRpbGUgbGVmdCBhbmQgdXAuCisgICAgICAgICAgICB0aGUg
bG9vcCBrZWVwcyBvbiBkb2luZyB0aGlzIHVudGlsIGl0IHJlYWNoZXMgbWF4IG1lbW9yeSB0byBk
cmF3IHRpbGVzLgorICAgICAgICAgICAgZS5nLiApCisgICAgICAgICAgICAgICAgICAgICAgICAg
MzMzMzMzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIyMjIzCisgICAgICAgICAgICAgICAg
ICAgICAgICAgMzIxMTIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzIxMTIzCisgICAgICAg
ICAgICAgICAgICAgICAgICAgMzIyMjIzCisgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMz
CisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGkgPiAwICYmIGkgPD0gc3RlcCkKKyAg
ICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4rKzsgLy8gbW92ZSBsZWZ0LgorICAgICAgICAgICAg
ZWxzZSBpZiAoaSA+IHN0ZXAgJiYgaSA8PSBzdGVwICogMikKKyAgICAgICAgICAgICAgICBjZW50
ZXJSb3crKzsgLy8gbW92ZSBkb3duLgorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAy
ICYmIGkgPD0gc3RlcCAqIDMpCisgICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uLS07IC8vIG1v
dmUgcmlnaHQuCisgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAqIDMgJiYgaSA8PSBzdGVw
ICogNCkKKyAgICAgICAgICAgICAgICBjZW50ZXJSb3ctLTsgLy8gbW92ZSB1cC4KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBFUlIoIkVSUk9SIDogb3V0IG9mIGJvdW5kc1xyXG4i
KTsKKworICAgICAgICAgICAgLy8gc2tpcCBpbiB2aWV3IHBvcnQgYXJlYS4KKyAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIuY29sMSkgPCBjZW50ZXJDb2x1bW4KKyAg
ICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIuY29sMikgPiBjZW50
ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdTbGljZXIu
cm93MSkgPCBjZW50ZXJSb3cKKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHZp
ZXdTbGljZXIucm93MikgPiBjZW50ZXJSb3cpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5jb2wxKSA8PSBj
ZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNs
aWNlci5jb2wyKSA+PSBjZW50ZXJDb2x1bW4KKyAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2Fz
dDxpbnQ+KHJlbmRlclNsaWNlci5yb3cxKSA8PSBjZW50ZXJSb3cKKyAgICAgICAgICAgICAgICAm
JiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclNsaWNlci5yb3cyKSA+PSBjZW50ZXJSb3cpIHsKKwor
ICAgICAgICAgICAgICAgIGlmICghZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90
aWxlX2FkZChld2tCYWNraW5nU3RvcmUsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93LCB6b29tKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgREJHKCJSPlsl
ZCAlZF0gIiwgY2VudGVyQ29sdW1uLCBjZW50ZXJSb3cpOworICAgICAgICAgICAgICAgIG1lbW9y
eUxpbWl0cy0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNlbnRlclJvdy0t
OworICAgICAgICBjZW50ZXJDb2x1bW4tLTsKKyAgICAgICAgc3RlcCA9IHN0ZXAgKyAyOworICAg
IH0KKworbWVtb3J5TGltaXRzUmVhY2hlZDoKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
aXRlbV9wcm9jZXNzX2lkbGVyX3N0YXJ0KHByaXYpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFz
X09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQsIGZsb2F0IHpvb20pCiB7CiAgICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5oCmluZGV4IGU5
MTE5NDcuLjQ0NzQwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZS5oCkBAIC0xMTIsNiArMTEyLDcgQEAgdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9zZXQoRXZhc19PYmplY3QqIG8sIEV3a19UaWxlX1Vu
dXMKIAogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9u
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3
LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pOwogRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25l
ZCBpbnQgbiwgZmxvYXQgem9vbSk7CitFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
cHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIG8sIEVpbmFfUmVjdGFuZ2xlKiB2
aWV3X3JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJfcmVjdCwgaW50IG1heF9tZW1vcnksIGZs
b2F0IHpvb20pOwogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX2NhbmNl
bChFdmFzX09iamVjdCogbyk7CiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlX3JlbmRlcihFdmFzX09iamVjdCogbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAppbmRleCAyOGU5ZjBiLi4wMDJhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAK
QEAgLTEwMDcsNiArMTAwNywxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9w
cmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFd2tfVmlld19TbWFydF9EYXRhKgogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRl
cl9zdGFydChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgV1JOKCJub3Qg
c3VwcG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX2Nh
bmNlbChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgV1JOKCJub3Qgc3Vw
cG9ydGVkIGJ5IGVuZ2luZS4gc21hcnREYXRhPSVwIiwgc21hcnREYXRhKTsKQEAgLTExMzksNiAr
MTE0NSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfc21hcnRfZmx1c2g7CiAg
ICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3Jl
Z2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3Nt
YXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFy
dCA9IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRl
cl9jYW5jZWwgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5k
aXNhYmxlX3JlbmRlciA9IF9ld2tfdmlld19zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGkt
PmVuYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZW5hYmxlX3JlbmRlcjsKQEAgLTE4MzYs
NiArMTg0MywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVkIGludAogICAgIHJldHVybiBzbWFydERh
dGEtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoc21hcnREYXRhLCBudW1iZXIsIGN1
cnJlbnRab29tKTsKIH0KIAorRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3RhcnQsIGZhbHNlKTsKKworICAgIHJldHVy
biBzbWFydERhdGEtPmFwaS0+cHJlX3JlbmRlcl9zdGFydChzbWFydERhdGEpOworfQorCiB1bnNp
Z25lZCBpbnQgZXdrX3ZpZXdfaW1oX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGQxYzY1ZWIuLmQwYmU2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oCkBAIC0xMzUsNiArMTM1LDcgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9DbGFzcyB7CiAgICAgdm9pZCAoKmZsdXNoKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CiAg
ICAgRWluYV9Cb29sICgqcHJlX3JlbmRlcl9yZWdpb24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgs
IGZsb2F0IHpvb20pOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVz
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOwor
ICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfc3RhcnQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKICAgICB2b2lkICgqcHJlX3JlbmRlcl9jYW5jZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
KTsKICAgICBFaW5hX0Jvb2wgKCpkaXNhYmxlX3JlbmRlcikoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpOwogICAgIEVpbmFfQm9vbCAoKmVuYWJsZV9yZW5kZXIpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKTsKQEAgLTE2OCw3ICsxNjksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
ICAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkCiAg
KiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgogICovCi0jZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gM1VMCisjZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX1ZFUlNJT04gNFVMCiAKIC8qKgogICogSW5pdGlhbGl6ZXMgYSB3aG9sZSBAYSBFd2tf
Vmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0xODAsNyArMTgxLDcgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyB7CiAgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
VkVSU0lPTgogICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgog
ICovCi0jZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkg
e3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisjZGVmaW5lIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDB9CiAKIC8qKgogICogSW5pdGlhbGl6ZXMgdG8gemVybyBhIHdob2xlIEBhIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KQEAgLTMxNCw2ICszMTUsMTAgQEAgc3RydWN0IF9F
d2tfVmlld19TbWFydF9EYXRhIHsKICAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CiAgICAg
ICAgIEVpbmFfQm9vbCBmcmFtZV9yZWN0OjE7CiAgICAgfSBjaGFuZ2VkOyAvKio8IEtlZXBzIHdo
YXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZS4gKi8KKyAgICBzdHJ1Y3Qgewor
ICAgICAgICBFdmFzX0Nvb3JkIHgsIHk7CisgICAgICAgIGZsb2F0IHpvb207CisgICAgfSBwcmV2
aW91c1ZpZXc7CiB9OwogCiAvLy8gRGVmaW5lcyB0aGUgbW9kZXMgb2Ygdmlldy4KQEAgLTEyNDks
NiArMTI1NCwyMyBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lv
bihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBFdmFzXwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QgKm8sIHVuc2ln
bmVkIGludCBuKTsKIAogLyoqCisgKiBBc2tzIGVuZ2luZSB0byBzdGFydCBwcmUtcmVuZGVyaW5n
LgorICoKKyAqIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHRvIHByZS1yZW5kZXIgYXJv
dW5kIHRoZSB2aWV3IGFyZWEuCisgKiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBmaW5kIHRoZSBjZW50
ZXIgdmlldyBhcmVhIHdoZXJlIHRvIHN0YXJ0IHByZS1yZW5kZXJpbmcuCisgKiBBbmQgdGhlbiBm
cm9tIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXcgYXJlYSB0aGUgYmFja2luZyBzdG9yZSBhcHBlbmQg
dGhlIHJlbmRlciByZXF1ZXN0CisgKiBvdXR3YXJkIGluIHNwaXJhbCBvcmRlci4gU28gdGhhdCB0
aGUgdGlsZXMgd2hpY2ggYXJlIGNsb3NlIHRvIHZpZXcgYXJlYSBhcmUgZGlzcGxheWVkCisgKiBz
b29uZXIgdGhhbiBvdXRzaWRlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgdG8gYXNrIHByZS1yZW5k
ZXIKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiByZXF1ZXN0IHdhcyBhY2NlcHRlZCwg
QGMgRUlOQV9GQUxTRQorICogICAgICAgICBvdGhlcndpc2UgKGVycm9ycywgcHJlLXJlbmRlciBm
ZWF0dXJlIG5vdCBzdXBwb3J0ZWQsIGV0YykKKyAqCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3ByZV9yZW5kZXJfc3RhcnQoRXZhc19PYmplY3QgKm8pOworCisvKioKICAqIENhbmNl
bHMgYW5kIGNsZWFycyBwcmV2aW91cyB0aGUgcHJlLXJlbmRlciByZXF1ZXN0cy4KICAqCiAgKiBA
cGFyYW0gbyB2aWV3IHRvIGNsZWFyIHByZS1yZW5kZXIgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDI0MWZjMTYuLjk0NGQzNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMjA5LDYgKzIwOSwxMjMgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnQKICAgICAgICAgICAgICAgIChzbWFydERhdGEtPmJhY2tp
bmdfc3RvcmUsIG4sIHpvb20pOwogfQogCitzdGF0aWMgaW5saW5lIGludCBfZXdrX3ZpZXdfdGls
ZWRfcmVjdF9jb2xsaXNpb25fY2hlY2soRWluYV9SZWN0YW5nbGUgZGVzdGluYXRpb24sIEVpbmFf
UmVjdGFuZ2xlIHNvdXJjZSkKK3sKKyAgICBpbnQgZGlyZWN0aW9uID0gMDsKKyAgICBpZiAoZGVz
dGluYXRpb24ueCA8IHNvdXJjZS54KQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfCAo
MSA8PCAwKTsgLy8gMCBiaXQgc2hpZnQsIGxlZnQKKyAgICBpZiAoZGVzdGluYXRpb24ueSA8IHNv
dXJjZS55KQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfCAoMSA8PCAxKTsgLy8gMSBi
aXQgc2hpZnQsIHRvcAorICAgIGlmIChkZXN0aW5hdGlvbi54ICsgZGVzdGluYXRpb24udyA+IHNv
dXJjZS54ICsgc291cmNlLncpCisgICAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8ICgxIDw8
IDIpOyAvLyAyIGJpdCBzaGlmdCwgcmlnaHQKKyAgICBpZiAoZGVzdGluYXRpb24ueSArIGRlc3Rp
bmF0aW9uLmggPiBzb3VyY2UueSArIHNvdXJjZS5oKQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJl
Y3Rpb24gfCAoMSA8PCAzKTsgLy8gMyBiaXQgc2hpZnQsIGJvdHRvbQorICAgIERCRygiY2hlY2sg
Y29sbGlzaW9uICVkXHJcbiIsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIGRpcmVjdGlvbjsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9yZXNv
bHZlKGludCBkaXJlY3Rpb24sIEVpbmFfUmVjdGFuZ2xlKiBkZXN0aW5hdGlvbiwgRWluYV9SZWN0
YW5nbGUgc291cmNlKQoreworICAgIGlmIChkaXJlY3Rpb24gJiAoMSA8PCAwKSkgLy8gMCBiaXQg
c2hpZnQsIGxlZnQKKyAgICAgICAgZGVzdGluYXRpb24tPnggPSBzb3VyY2UueDsKKyAgICBpZiAo
ZGlyZWN0aW9uICYgKDEgPDwgMSkpIC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICAgICAgZGVzdGlu
YXRpb24tPnkgPSBzb3VyY2UueTsKKyAgICBpZiAoZGlyZWN0aW9uICYgKDEgPDwgMikpIC8vIDIg
Yml0IHNoaWZ0LCByaWdodAorICAgICAgICBkZXN0aW5hdGlvbi0+eCA9IGRlc3RpbmF0aW9uLT54
IC0gKChkZXN0aW5hdGlvbi0+eCArIGRlc3RpbmF0aW9uLT53KSAtIChzb3VyY2UueCArIHNvdXJj
ZS53KSk7CisgICAgaWYgKGRpcmVjdGlvbiAmICgxIDw8IDMpKSAvLyAzIGJpdCBzaGlmdCwgYm90
dG9tCisgICAgICAgIGRlc3RpbmF0aW9uLT55ID0gZGVzdGluYXRpb24tPnkgLSAoKGRlc3RpbmF0
aW9uLT55ICsgZGVzdGluYXRpb24tPmgpIC0gKHNvdXJjZS55ICsgc291cmNlLmgpKTsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydChF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgaW50IGNvbnRlbnRXaWR0aCwg
Y29udGVudEhlaWdodDsKKyAgICBld2tfZnJhbWVfY29udGVudHNfc2l6ZV9nZXQoc21hcnREYXRh
LT5tYWluX2ZyYW1lLCAmY29udGVudFdpZHRoLCAmY29udGVudEhlaWdodCk7CisKKyAgICBpbnQg
dmlld1gsIHZpZXdZLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQ7CisgICAgZXdrX2ZyYW1lX3Zpc2li
bGVfY29udGVudF9nZW9tZXRyeV9nZXQoc21hcnREYXRhLT5tYWluX2ZyYW1lLCBmYWxzZSwgJnZp
ZXdYLCAmdmlld1ksICZ2aWV3V2lkdGgsICZ2aWV3SGVpZ2h0KTsKKworICAgIGlmICh2aWV3V2lk
dGggPD0gMCB8fCB2aWV3SGVpZ2h0IDw9IDAgfHwgY29udGVudFdpZHRoIDw9IDAgfHwgY29udGVu
dEhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodmlld1dpZHRo
ID49IGNvbnRlbnRXaWR0aCAmJiB2aWV3SGVpZ2h0ID49IGNvbnRlbnRIZWlnaHQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGludCBwcmV2aW91c1ZpZXdYLCBwcmV2aW91c1ZpZXdZOwor
ICAgIHByZXZpb3VzVmlld1ggPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy54OworICAgIHByZXZp
b3VzVmlld1kgPSBzbWFydERhdGEtPnByZXZpb3VzVmlldy55OworCisgICAgaWYgKHByZXZpb3Vz
Vmlld1ggPCAwIHx8IHByZXZpb3VzVmlld1ggPiBjb250ZW50V2lkdGggfHwgcHJldmlvdXNWaWV3
WSA8IDAgfHwgcHJldmlvdXNWaWV3WSA+IGNvbnRlbnRIZWlnaHQpCisgICAgICAgIHByZXZpb3Vz
Vmlld1ggPSBwcmV2aW91c1ZpZXdZID0gMDsKKworICAgIGZsb2F0IGN1cnJlbnRWaWV3Wm9vbSA9
IGV3a192aWV3X3pvb21fZ2V0KHNtYXJ0RGF0YS0+c2VsZik7CisKKyAgICAvLyBwcmUtcmVuZGVy
IHdvcmtzIHdoZW4gdHdvIGNvbmRpdGlvbnMgYXJlIG1ldC4KKyAgICAvLyB6b29tIGhhcyBiZWVu
IGNoYW5nZWQuCisgICAgLy8gYW5kIHRoZSB2aWV3IGhhcyBiZWVuIG1vdmVkIG1vcmUgdGhhbiB0
aWxlIHNpemUuCisgICAgaWYgKGFicyhwcmV2aW91c1ZpZXdYIC0gdmlld1gpIDwgREVGQVVMVF9U
SUxFX1cKKyAgICAgICAgJiYgYWJzKHByZXZpb3VzVmlld1kgLSB2aWV3WSkgPCBERUZBVUxUX1RJ
TEVfSAorICAgICAgICAmJiBzbWFydERhdGEtPnByZXZpb3VzVmlldy56b29tID09IGN1cnJlbnRW
aWV3Wm9vbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gc3RvcmUg
cHJldmlvdXMgdmlldyBwb3NpdGlvbiBhbmQgem9vbS4KKyAgICBzbWFydERhdGEtPnByZXZpb3Vz
Vmlldy54ID0gdmlld1g7CisgICAgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueSA9IHZpZXdZOwor
ICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3Lnpvb20gPSBjdXJyZW50Vmlld1pvb207CisKKyAg
ICAvLyBjYW5jZWxsaW5nIHByZXZpb3VzIHByZS1yZW5kZXJpbmcgbGlzdCBpZiBleGlzdHMuCisg
ICAgZXdrX3ZpZXdfcHJlX3JlbmRlcl9jYW5jZWwoc21hcnREYXRhLT5zZWxmKTsKKworICAgIEV3
a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0gZXdrX3ZpZXdfdGlsZWRfdW51
c2VkX2NhY2hlX2dldChzbWFydERhdGEtPnNlbGYpOworICAgIGludCBtYXhNZW1vcnkgPSBld2tf
dGlsZV91bnVzZWRfY2FjaGVfbWF4X2dldCh0aWxlVW51c2VkQ2FjaGUpOworICAgIGlmIChtYXhN
ZW1vcnkgPD0gdmlld1dpZHRoICogdmlld0hlaWdodCAqIEVXS19BUkdCX0JZVEVTX1NJWkUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVpbmFfUmVjdGFuZ2xlIHZpZXdSZWN0ID0ge3Zp
ZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0fTsKKyAgICBFaW5hX1JlY3RhbmdsZSBj
b250ZW50UmVjdCA9IHswLCAwLCBjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHR9OworCisgICAg
Ly8gZ2V0IGEgYmFzZSByZW5kZXIgcmVjdC4KKyAgICBjb25zdCBpbnQgY29udGVudE1lbW9yeSA9
IGNvbnRlbnRXaWR0aCAqIGNvbnRlbnRIZWlnaHQgKiBFV0tfQVJHQl9CWVRFU19TSVpFOworCisg
ICAgLy8gZ2V0IHJlbmRlciByZWN0J3Mgd2lkdGggYW5kIGhlaWdodC4KKyAgICBFaW5hX1JlY3Rh
bmdsZSByZW5kZXJSZWN0OworICAgIGlmIChtYXhNZW1vcnkgPiBjb250ZW50TWVtb3J5KQorICAg
ICAgICByZW5kZXJSZWN0ID0gY29udGVudFJlY3Q7CisgICAgZWxzZSB7CisgICAgICAgIC8vIE1h
a2UgYSBiYXNlIHJlY3RhbmdsZSBhcyBiaWcgYXMgcG9zc2libGUgd2l0aCB1c2luZyBtYXhNZW1v
cnkuCisgICAgICAgIC8vIGFuZCB0aGVuIHJlc2hhcGUgdGhlIGJhc2UgcmVjdGFuZ2xlIHRvIGZp
dCB0byBjb250ZW50cy4KKyAgICAgICAgY29uc3QgaW50IGJhc2VTaXplID0gc3RhdGljX2Nhc3Q8
aW50PihzcXJ0KG1heE1lbW9yeSAvIDQuMGYpKTsKKyAgICAgICAgY29uc3QgZmxvYXQgd2lkdGhS
YXRlID0gKHZpZXdSZWN0LncgKyAoREVGQVVMVF9USUxFX1cgKiAyKSkgLyBzdGF0aWNfY2FzdDxm
bG9hdD4oYmFzZVNpemUpOworICAgICAgICBjb25zdCBmbG9hdCBoZWlnaHRSYXRlID0gYmFzZVNp
emUgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEhlaWdodCk7CisgICAgICAgIGNvbnN0IGZs
b2F0IHJlY3RSYXRlID0gc3RkOjptYXgod2lkdGhSYXRlLCBoZWlnaHRSYXRlKTsKKworICAgICAg
ICByZW5kZXJSZWN0LncgPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplICogcmVjdFJhdGUpOwor
ICAgICAgICByZW5kZXJSZWN0LmggPSBzdGF0aWNfY2FzdDxpbnQ+KGJhc2VTaXplIC8gcmVjdFJh
dGUpOworICAgICAgICByZW5kZXJSZWN0LnggPSB2aWV3UmVjdC54ICsgKHZpZXdSZWN0LncgLyAy
KSAtIChyZW5kZXJSZWN0LncgLyAyKTsKKyAgICAgICAgcmVuZGVyUmVjdC55ID0gdmlld1JlY3Qu
eSArICh2aWV3UmVjdC5oIC8gMikgLSAocmVuZGVyUmVjdC5oIC8gMik7CisKKyAgICAgICAgLy8g
cmVwb3NpdGlvbiBvZiByZW5kZXJSZWN0LCBpZiB0aGUgcmVuZGVyUmVjdCBvdmVybGFwcGVkIHRo
ZSBjb250ZW50IHJlY3QsIHRoaXMgY29kZSBtb3ZlcyB0aGUgcmVuZGVyUmVjdCBpbnNpZGUgdGhl
IGNvbnRlbnQgcmVjdC4KKyAgICAgICAgaW50IGNvbGxpc2lvblNpZGUgPSBfZXdrX3ZpZXdfdGls
ZWRfcmVjdF9jb2xsaXNpb25fY2hlY2socmVuZGVyUmVjdCwgY29udGVudFJlY3QpOworICAgICAg
ICBpZiAoY29sbGlzaW9uU2lkZSA+IDApCisgICAgICAgICAgICBfZXdrX3ZpZXdfdGlsZWRfcmVj
dF9jb2xsaXNpb25fcmVzb2x2ZShjb2xsaXNpb25TaWRlLCAmcmVuZGVyUmVjdCwgY29udGVudFJl
Y3QpOworCisgICAgICAgIC8vIGNoZWNrIGFibm9ybWFsIHJlbmRlciByZWN0CisgICAgICAgIGlm
IChyZW5kZXJSZWN0LnggPCAwKQorICAgICAgICAgICAgcmVuZGVyUmVjdC54ID0gMDsKKyAgICAg
ICAgaWYgKHJlbmRlclJlY3QueSA8IDApCisgICAgICAgICAgICByZW5kZXJSZWN0LnkgPSAwOwor
ICAgICAgICBpZiAocmVuZGVyUmVjdC53ID4gY29udGVudFdpZHRoKQorICAgICAgICAgICAgcmVu
ZGVyUmVjdC53ID0gY29udGVudFdpZHRoOworICAgICAgICBpZiAocmVuZGVyUmVjdC5oID4gY29u
dGVudEhlaWdodCkKKyAgICAgICAgICAgIHJlbmRlclJlY3QuaCA9IGNvbnRlbnRIZWlnaHQ7Cisg
ICAgfQorCisgICAgLy8gZW5xdWV1ZSB0aWxlcyBpbnRvIHRpbGVkIGJhY2tpbmcgc3RvcmUgaW4g
c3BpcmFsIG9yZGVyLgorICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3Bp
cmFsX3F1ZXVlKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9yZSwgJnZpZXdSZWN0LCAmcmVuZGVyUmVj
dCwgbWF4TWVtb3J5LCBjdXJyZW50Vmlld1pvb20pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9wcmVfcmVuZGVyX2NhbmNlbChFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiB7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9jYW5jZWwoc21hcnREYXRhLT5iYWNraW5nX3N0b3JlKTsKQEAgLTI0OCw2
ICszNjUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2V0KEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKiBhcGkpCiAgICAgYXBpLT5mbHVzaCA9IF9ld2tfdmlld190aWxlZF9zbWFydF9m
bHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9uID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0
X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMg
PSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CisgICAg
YXBpLT5wcmVfcmVuZGVyX3N0YXJ0ID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJf
c3RhcnQ7CiAgICAgYXBpLT5wcmVfcmVuZGVyX2NhbmNlbCA9IF9ld2tfdmlld190aWxlZF9zbWFy
dF9wcmVfcmVuZGVyX2NhbmNlbDsKICAgICBhcGktPmRpc2FibGVfcmVuZGVyID0gX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2Rpc2FibGVfcmVuZGVyOwogICAgIGFwaS0+ZW5hYmxlX3JlbmRlciA9IF9l
d2tfdmlld190aWxlZF9zbWFydF9lbmFibGVfcmVuZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkyYzIwZTcuLmI4Mjg0N2YgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wMS0wNCAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBBZGQgcHJlLXJlbmRlciBoYW5kbGluZyBjb2RlIGluIEVXZWJMYXVuY2hl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCisKKyAgICAgICAgQWRkIHBy
ZS1yZW5kZXIgaGFuZGxpbmcgY29kZSBieSBwcmVzc2luZyBJbnNlcnQga2V5LgorCisgICAgICAg
ICogRVdlYkxhdW5jaGVyL21haW4uYzoKKyAgICAgICAgKG9uX2tleV9kb3duKToKKwogMjAxMi0w
MS0wNCAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lh
LmNvbT4KIAogICAgICAgICBBZGRpbmcgbXlzZWxmIHRvIGNvbW1pdHRlcnMgbGlzdC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMgYi9Ub29scy9FV2ViTGF1bmNoZXIvbWFp
bi5jCmluZGV4IDExMTgxODMuLjJkNjRkNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0VXZWJMYXVuY2hl
ci9tYWluLmMKKysrIGIvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwpAQCAtNTQ4LDYgKzU0OCw5
IEBAIG9uX2tleV9kb3duKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvYmosIHZv
aWQgKmV2ZW50X2luZm8pCiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJlIikpIHsK
ICAgICAgICAgaW5mbygiUmVuZGVyIHJlc3VtZWQiKTsKICAgICAgICAgZXdrX3ZpZXdfZW5hYmxl
X3JlbmRlcihvYmopOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiSW5zZXJ0Iikp
IHsKKyAgICAgICAgaW5mbygiUHJlLXJlbmRlcmluZyBzdGFydCIpOworICAgICAgICBld2tfdmll
d19wcmVfcmVuZGVyX3N0YXJ0KG9iaik7CiAgICAgfQogfQogCg==
</data>
<flag name="commit-queue"
          id="121607"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121391</attachid>
            <date>2012-01-05 20:38:15 -0800</date>
            <delta_ts>2012-01-06 03:25:40 -0800</delta_ts>
            <desc>upload again due to cr-linux failure.</desc>
            <filename>rebase2.patch</filename>
            <type>text/plain</type>
            <size>20130</size>
            <attacher name="JungJik Lee">jungjik.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA2ODQ5NTM3Li5lY2EyMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMDUgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIG5ldyBwcmUtcmVuZGVyaW5nIGNvZGUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgorCisgICAgICAgIEFkZCBuZXcgcHJl
LXJlbmRlcmluZyBjb2RlIHRvIHByZS1yZW5kZXIgdGhlIHZpZXcgYXJlYSBtb3JlIGVmZmljaWVu
dGx5LgorICAgICAgICBBdCBmaXJzdCBmaW5kIGNlbnRlcmVkIHZpZXcgcG9zaXRpb24gd2hlcmUg
YmFja2luZyBzdG9yZSBzdGFydHMgdG8gcXVldWluZyB0aGUgcmVuZGVyIHJlcXVlc3QgZnJvbS4K
KyAgICAgICAgQW5kIGFwcGVuZCB0aGUgcmVxdWVzdCBpbnRvIHRoZSB0aWxlZCBiYWNraW5nIHN0
b3JlIGluIHNwaXJhbCBvcmRlci4KKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKToKKyAgICAgICAgKGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKToKKyAgICAgICAgKiBld2sv
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfc3RhcnQpOgorICAgICAgICAoZXdr
X3ZpZXdfYmFzZV9zbWFydF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9zdGFy
dCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3Rp
bGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9yZWN0X2NvbGxpc2lvbl9jaGVjayk6
CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVjdF9jb2xsaXNpb25fcmVzb2x2ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9zdGFydCk6CisgICAgICAgIChl
d2tfdmlld190aWxlZF9zbWFydF9zZXQpOgorCiAyMDEyLTAxLTA1ICBLd2FuZ0h5dWsgS2ltICA8
aHl1a2kua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludmFsaWRhdGlvbiByZXF1
ZXN0IGZvciBld2tfdmlldyBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgcmVuZGVyaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA5YWIxMjExLi4yMDI1OTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApAQCAtNDUsNiArNDUsNyBAQCBleHRlcm4gIkMiIHsK
IAogLy8gSWYgZGVmaW5lZCwgZXdrIHdpbGwgZG8gdHlwZSBjaGVja2luZyB0byBlbnN1cmUgb2Jq
ZWN0cyBhcmUgb2YgY29ycmVjdCB0eXBlCiAjZGVmaW5lIEVXS19UWVBFX0NIRUNLIDEKKyNkZWZp
bmUgRVdLX0FSR0JfQllURVNfU0laRSA0CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKICNkZWZpbmUgRVdLX0pTX09CSkVDVF9NQUdJQyAweDY5Njk2OQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKaW5kZXggMjUyNjhiMy4u
YmUwNTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKIAorI2luY2x1ZGUgImV3a19wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX21hdHJpeC5oIgogI2luY2x1ZGUgImV3a190aWxlZF9w
cml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTE4MzgsNiArMTgzOSwxMTEgQEAgdm9p
ZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0
b3JlKQogI2VuZGlmCiB9CiAKK0VpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGludCBjb2x1bW4s
IGludCByb3csIGZsb2F0IHpvb20pCit7CisgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdr
QmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CisKKyAgICBpZiAoZXdrX3RpbGVfbWF0cml4X3Rp
bGVfZXhhY3RfZXhpc3RzKHByaXYtPm1vZGVsLm1hdHJpeCwgY29sdW1uLCByb3csIHpvb20pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIV9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlcXVlc3RfYWRkKHByaXYsIGNvbHVtbiwgcm93LCB6b29tKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCog
ZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3RhbmdsZSogdmlld1JlY3QsIEVpbmFfUmVjdGFuZ2xl
KiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5LCBmbG9hdCB6b29tKQoreworICAgIFBSSVZfREFU
QV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdiwgZmFsc2UpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3UmVjdCwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZW5kZXJSZWN0LCBmYWxzZSk7CisKKyAgICBjb25zdCBp
bnQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOworICAgIGNvbnN0IGludCB0aWxl
SGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKKworICAgIEVpbmFfVGlsZV9HcmlkX1Ns
aWNlciB2aWV3U2xpY2VyOworICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciByZW5kZXJTbGljZXI7
CisKKyAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmdmlld1NsaWNlciwKKyAg
ICAgICAgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgs
IHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAg
Z3JpZCB2aWV3U2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxlPSVkeCVkIiwgdmlld1JlY3QtPngs
IHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhl
aWdodCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWVpbmFfdGls
ZV9ncmlkX3NsaWNlcl9zZXR1cCgmcmVuZGVyU2xpY2VyLAorICAgICAgICByZW5kZXJSZWN0LT54
LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgs
IHRpbGVIZWlnaHQpKSB7CisgICAgICAgIEVSUigiY291bGQgbm90IHNldHVwIGdyaWQgUmVuZGVy
U2xpY2VyIGZvciAlZCwlZCslZHglZCB0aWxlPSVkeCVkIiwgcmVuZGVyUmVjdC0+eSwgcmVuZGVy
UmVjdC0+eSwgcmVuZGVyUmVjdC0+dywgcmVuZGVyUmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVp
Z2h0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHNldCBsaW1pdHMg
b2YgdGhlIGxvb3AuCisgICAgaW50IG1lbW9yeUxpbWl0cyA9IG1heE1lbW9yeSAvIChFV0tfQVJH
Ql9CWVRFU19TSVpFICogdGlsZVdpZHRoICogdGlsZUhlaWdodCk7CisgICAgY29uc3QgaW50IG1h
eFZpZXdTaWRlTGVuZ3RoID0gc3RkOjptYXgodmlld1NsaWNlci5jb2wyIC0gdmlld1NsaWNlci5j
b2wxLCB2aWV3U2xpY2VyLnJvdzIgLSB2aWV3U2xpY2VyLnJvdzEpOworICAgIGNvbnN0IGludCBt
YXhSZW5kZXJTaWRlTGVuZ3RoID0gc3RkOjptYXgocmVuZGVyU2xpY2VyLmNvbDIgLSByZW5kZXJT
bGljZXIuY29sMSwgcmVuZGVyU2xpY2VyLnJvdzIgLSByZW5kZXJTbGljZXIucm93MSk7CisgICAg
Y29uc3QgaW50IG1heExvb3BDb3VudCA9IG1heFZpZXdTaWRlTGVuZ3RoICsgbWF4UmVuZGVyU2lk
ZUxlbmd0aDsKKworICAgIC8vIHNwaXJlIHN0YXJ0cyBmcm9tIHRoZSBjZW50ZXIgb2YgdGhlIHZp
ZXcgYXJlYS4KKyAgICBpbnQgY2VudGVyQ29sdW1uID0gKHZpZXdTbGljZXIuY29sMSArIHZpZXdT
bGljZXIuY29sMikgLyAyOworICAgIGludCBjZW50ZXJSb3cgPSAodmlld1NsaWNlci5yb3cxICsg
dmlld1NsaWNlci5yb3cyKSAvIDI7CisKKyAgICBpbnQgc3RlcCA9IDE7CisgICAgY29uc3QgaW50
IHNxdWFyZVNpZGUgPSA0OworICAgIGZvciAoaW50IGxvb3AgPSAwOyBsb29wIDwgbWF4TG9vcENv
dW50OyBsb29wKyspIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzdGVwICogc3F1YXJl
U2lkZSArIDE7IGkrKykgeworICAgICAgICAgICAgaWYgKG1lbW9yeUxpbWl0cyA8PSAwKQorICAg
ICAgICAgICAgICAgIGdvdG8gbWVtb3J5TGltaXRzUmVhY2hlZDsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICB0aGlzIGNvZGUgbWVhbnMgdGhlIGxvb3AgcnVucyBsaWtlIHNwaXJhbC4gKGku
Zy4gbGVmdC0+ZG93bi0+cmlnaHQtPnVwKQorICAgICAgICAgICAgd2hlbiBpdCBtb3ZlcyBiYWNr
IHRvIG9yaWdpbmFsIHBsYWNlIGFuZCB0aGVuIHdhbGsgMSB0aWxlIGxlZnQgYW5kIHVwLgorICAg
ICAgICAgICAgdGhlIGxvb3Aga2VlcHMgb24gZG9pbmcgdGhpcyB1bnRpbCBpdCByZWFjaGVzIG1h
eCBtZW1vcnkgdG8gZHJhdyB0aWxlcy4KKyAgICAgICAgICAgIGUuZy4gKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIDMzMzMzMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAg
ICAgICAgICAgICAgICAgICAgICAgIDMyMTEyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMy
MTEyMworICAgICAgICAgICAgICAgICAgICAgICAgIDMyMjIyMworICAgICAgICAgICAgICAgICAg
ICAgICAgIDMzMzMzMworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBp
IDw9IHN0ZXApCisgICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uKys7IC8vIG1vdmUgbGVmdC4K
KyAgICAgICAgICAgIGVsc2UgaWYgKGkgPiBzdGVwICYmIGkgPD0gc3RlcCAqIDIpCisgICAgICAg
ICAgICAgICAgY2VudGVyUm93Kys7IC8vIG1vdmUgZG93bi4KKyAgICAgICAgICAgIGVsc2UgaWYg
KGkgPiBzdGVwICogMiAmJiBpIDw9IHN0ZXAgKiAzKQorICAgICAgICAgICAgICAgIGNlbnRlckNv
bHVtbi0tOyAvLyBtb3ZlIHJpZ2h0LgorICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0ZXAgKiAz
ICYmIGkgPD0gc3RlcCAqIDQpCisgICAgICAgICAgICAgICAgY2VudGVyUm93LS07IC8vIG1vdmUg
dXAuCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgRVJSKCJFUlJPUiA6IG91dCBv
ZiBib3VuZHNcclxuIik7CisKKyAgICAgICAgICAgIC8vIHNraXAgaW4gdmlldyBwb3J0IGFyZWEu
CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLmNvbDEpIDwgY2Vu
dGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2Vy
LmNvbDIpID4gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50
Pih2aWV3U2xpY2VyLnJvdzEpIDwgY2VudGVyUm93CisgICAgICAgICAgICAgICAgJiYgc3RhdGlj
X2Nhc3Q8aW50Pih2aWV3U2xpY2VyLnJvdzIpID4gY2VudGVyUm93KQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGlj
ZXIuY29sMSkgPD0gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8
aW50PihyZW5kZXJTbGljZXIuY29sMikgPj0gY2VudGVyQ29sdW1uCisgICAgICAgICAgICAgICAg
JiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIucm93MSkgPD0gY2VudGVyUm93CisgICAg
ICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJTbGljZXIucm93MikgPj0gY2Vu
dGVyUm93KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoIWV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfdGlsZV9hZGQoZXdrQmFja2luZ1N0b3JlLCBjZW50ZXJDb2x1bW4sIGNlbnRl
clJvdywgem9vbSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIERCRygiUj5bJWQgJWRdICIsIGNlbnRlckNvbHVtbiwgY2VudGVyUm93KTsKKyAgICAgICAg
ICAgICAgICBtZW1vcnlMaW1pdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjZW50ZXJSb3ctLTsKKyAgICAgICAgY2VudGVyQ29sdW1uLS07CisgICAgICAgIHN0ZXAgPSBz
dGVwICsgMjsKKyAgICB9CisKK21lbW9yeUxpbWl0c1JlYWNoZWQ6CisgICAgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydChwcml2KTsKKworICAgIHJldHVy
biB0cnVlOworfQorCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBmbG9hdCB6b29t
KQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdiwg
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmUuaAppbmRleCBlOTExOTQ3Li40NDc0MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaApAQCAtMTEyLDYgKzExMiw3IEBAIHZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBv
LCBFd2tfVGlsZV9VbnVzCiAKIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
IEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKIEVpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVj
dCogbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOworRWluYV9Cb29sIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBvLCBFaW5h
X1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3RhbmdsZSogcmVuZGVyX3JlY3QsIGludCBt
YXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pOwogCiBFaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIG8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKaW5kZXggZGQwZDg5Yi4uNTNhMmQwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwCkBAIC0xMDA1LDYgKzEwMDUsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXdrX1ZpZXdfU21hcnRfRGF0
YSoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X3ByZV9yZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQorewor
ICAgIFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0
YSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
cHJlX3JlbmRlcl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAg
IFdSTigibm90IHN1cHBvcnRlZCBieSBlbmdpbmUuIHNtYXJ0RGF0YT0lcCIsIHNtYXJ0RGF0YSk7
CkBAIC0xMTM3LDYgKzExNDMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFzZV9zbWFydF9zZXQo
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkKICAgICBhcGktPmZsdXNoID0gX2V3a192aWV3X3Nt
YXJ0X2ZsdXNoOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWdpb24gPSBfZXdrX3ZpZXdfc21hcnRf
cHJlX3JlbmRlcl9yZWdpb247CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyA9
IF9ld2tfdmlld19zbWFydF9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1czsKKyAgICBhcGktPnBy
ZV9yZW5kZXJfc3RhcnQgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9zdGFydDsKICAgICBh
cGktPnByZV9yZW5kZXJfY2FuY2VsID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfY2FuY2Vs
OwogICAgIGFwaS0+ZGlzYWJsZV9yZW5kZXIgPSBfZXdrX3ZpZXdfc21hcnRfZGlzYWJsZV9yZW5k
ZXI7CiAgICAgYXBpLT5lbmFibGVfcmVuZGVyID0gX2V3a192aWV3X3NtYXJ0X2VuYWJsZV9yZW5k
ZXI7CkBAIC0xODM0LDYgKzE4NDEsMTQgQEAgRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQKICAgICBy
ZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKHNtYXJ0RGF0
YSwgbnVtYmVyLCBjdXJyZW50Wm9vbSk7CiB9CiAKK0VpbmFfQm9vbCBld2tfdmlld19wcmVfcmVu
ZGVyX3N0YXJ0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+YXBpLT5wcmVfcmVuZGVyX3N0YXJ0LCBmYWxzZSk7
CisKKyAgICByZXR1cm4gc21hcnREYXRhLT5hcGktPnByZV9yZW5kZXJfc3RhcnQoc21hcnREYXRh
KTsKK30KKwogdW5zaWduZWQgaW50IGV3a192aWV3X2ltaF9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBkMWM2NWViLi5kMGJlNjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICAgIHZvaWQgKCpmbHVzaCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QpOwogICAgIEVpbmFfQm9vbCAoKnByZV9yZW5kZXJfcmVnaW9uKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKICAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVyX3Jl
bGF0aXZlX3JhZGl1cykoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIHVuc2lnbmVkIGludCBuLCBm
bG9hdCB6b29tKTsKKyAgICBFaW5hX0Jvb2wgKCpwcmVfcmVuZGVyX3N0YXJ0KShFd2tfVmlld19T
bWFydF9EYXRhICpzZCk7CiAgICAgdm9pZCAoKnByZV9yZW5kZXJfY2FuY2VsKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCk7CiAgICAgRWluYV9Cb29sICgqZGlzYWJsZV9yZW5kZXIpKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKTsKICAgICBFaW5hX0Jvb2wgKCplbmFibGVfcmVuZGVyKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCk7CkBAIC0xNjgsNyArMTY5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9DbGFzcyB7CiAgKiBUaGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVy
c2lvbiBmaWVsZAogICogaW4gdGhlIEBhIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4K
ICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDNVTAorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDRVTAogCiAvKioKICAqIEluaXRpYWxpemVzIGEg
d2hvbGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgpAQCAtMTgwLDcgKzE4MSw3
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX1ZFUlNJT04KICAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04KICAqLwotI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19p
bml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwfQogCiAvKioKICAqIEluaXRpYWxpemVzIHRvIHplcm8gYSB3
aG9sZSBAYSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCkBAIC0zMTQsNiArMzE1LDEw
IEBAIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgICAgICAgIEVpbmFfQm9vbCBwb3Np
dGlvbjoxOwogICAgICAgICBFaW5hX0Jvb2wgZnJhbWVfcmVjdDoxOwogICAgIH0gY2hhbmdlZDsg
LyoqPCBLZWVwcyB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9jYWxjdWxhdGUuICovCisg
ICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5OworICAgICAgICBmbG9hdCB6b29t
OworICAgIH0gcHJldmlvdXNWaWV3OwogfTsKIAogLy8vIERlZmluZXMgdGhlIG1vZGVzIG9mIHZp
ZXcuCkBAIC0xMjQ5LDYgKzEyNTQsMjMgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgeCwgRXZhc18KIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2Jq
ZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CiAKIC8qKgorICogQXNrcyBlbmdpbmUgdG8gc3RhcnQg
cHJlLXJlbmRlcmluZy4KKyAqCisgKiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIG1ldGhvZCB0byBw
cmUtcmVuZGVyIGFyb3VuZCB0aGUgdmlldyBhcmVhLgorICogVGhlIGZpcnN0IHN0ZXAgaXMgdG8g
ZmluZCB0aGUgY2VudGVyIHZpZXcgYXJlYSB3aGVyZSB0byBzdGFydCBwcmUtcmVuZGVyaW5nLgor
ICogQW5kIHRoZW4gZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFyZWEgdGhlIGJhY2tpbmcg
c3RvcmUgYXBwZW5kIHRoZSByZW5kZXIgcmVxdWVzdAorICogb3V0d2FyZCBpbiBzcGlyYWwgb3Jk
ZXIuIFNvIHRoYXQgdGhlIHRpbGVzIHdoaWNoIGFyZSBjbG9zZSB0byB2aWV3IGFyZWEgYXJlIGRp
c3BsYXllZAorICogc29vbmVyIHRoYW4gb3V0c2lkZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRv
IGFzayBwcmUtcmVuZGVyCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgcmVxdWVzdCB3
YXMgYWNjZXB0ZWQsIEBjIEVJTkFfRkFMU0UKKyAqICAgICAgICAgb3RoZXJ3aXNlIChlcnJvcnMs
IHByZS1yZW5kZXIgZmVhdHVyZSBub3Qgc3VwcG9ydGVkLCBldGMpCisgKgorICovCitFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3N0YXJ0KEV2YXNfT2JqZWN0ICpvKTsKKwor
LyoqCiAgKiBDYW5jZWxzIGFuZCBjbGVhcnMgcHJldmlvdXMgdGhlIHByZS1yZW5kZXIgcmVxdWVz
dHMuCiAgKgogICogQHBhcmFtIG8gdmlldyB0byBjbGVhciBwcmUtcmVuZGVyIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCBiOGFjZTBmLi4zMTAx
YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTIwOSw2
ICsyMDksMTIzIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9y
ZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV3a19WaWV3X1NtYXJ0CiAgICAgICAgICAgICAgICAoc21h
cnREYXRhLT5iYWNraW5nX3N0b3JlLCBuLCB6b29tKTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQg
X2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX2NoZWNrKEVpbmFfUmVjdGFuZ2xlIGRlc3Rp
bmF0aW9uLCBFaW5hX1JlY3RhbmdsZSBzb3VyY2UpCit7CisgICAgaW50IGRpcmVjdGlvbiA9IDA7
CisgICAgaWYgKGRlc3RpbmF0aW9uLnggPCBzb3VyY2UueCkKKyAgICAgICAgZGlyZWN0aW9uID0g
ZGlyZWN0aW9uIHwgKDEgPDwgMCk7IC8vIDAgYml0IHNoaWZ0LCBsZWZ0CisgICAgaWYgKGRlc3Rp
bmF0aW9uLnkgPCBzb3VyY2UueSkKKyAgICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEg
PDwgMSk7IC8vIDEgYml0IHNoaWZ0LCB0b3AKKyAgICBpZiAoZGVzdGluYXRpb24ueCArIGRlc3Rp
bmF0aW9uLncgPiBzb3VyY2UueCArIHNvdXJjZS53KQorICAgICAgICBkaXJlY3Rpb24gPSBkaXJl
Y3Rpb24gfCAoMSA8PCAyKTsgLy8gMiBiaXQgc2hpZnQsIHJpZ2h0CisgICAgaWYgKGRlc3RpbmF0
aW9uLnkgKyBkZXN0aW5hdGlvbi5oID4gc291cmNlLnkgKyBzb3VyY2UuaCkKKyAgICAgICAgZGly
ZWN0aW9uID0gZGlyZWN0aW9uIHwgKDEgPDwgMyk7IC8vIDMgYml0IHNoaWZ0LCBib3R0b20KKyAg
ICBEQkcoImNoZWNrIGNvbGxpc2lvbiAlZFxyXG4iLCBkaXJlY3Rpb24pOworICAgIHJldHVybiBk
aXJlY3Rpb247Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfcmVjdF9j
b2xsaXNpb25fcmVzb2x2ZShpbnQgZGlyZWN0aW9uLCBFaW5hX1JlY3RhbmdsZSogZGVzdGluYXRp
b24sIEVpbmFfUmVjdGFuZ2xlIHNvdXJjZSkKK3sKKyAgICBpZiAoZGlyZWN0aW9uICYgKDEgPDwg
MCkpIC8vIDAgYml0IHNoaWZ0LCBsZWZ0CisgICAgICAgIGRlc3RpbmF0aW9uLT54ID0gc291cmNl
Lng7CisgICAgaWYgKGRpcmVjdGlvbiAmICgxIDw8IDEpKSAvLyAxIGJpdCBzaGlmdCwgdG9wCisg
ICAgICAgIGRlc3RpbmF0aW9uLT55ID0gc291cmNlLnk7CisgICAgaWYgKGRpcmVjdGlvbiAmICgx
IDw8IDIpKSAvLyAyIGJpdCBzaGlmdCwgcmlnaHQKKyAgICAgICAgZGVzdGluYXRpb24tPnggPSBk
ZXN0aW5hdGlvbi0+eCAtICgoZGVzdGluYXRpb24tPnggKyBkZXN0aW5hdGlvbi0+dykgLSAoc291
cmNlLnggKyBzb3VyY2UudykpOworICAgIGlmIChkaXJlY3Rpb24gJiAoMSA8PCAzKSkgLy8gMyBi
aXQgc2hpZnQsIGJvdHRvbQorICAgICAgICBkZXN0aW5hdGlvbi0+eSA9IGRlc3RpbmF0aW9uLT55
IC0gKChkZXN0aW5hdGlvbi0+eSArIGRlc3RpbmF0aW9uLT5oKSAtIChzb3VyY2UueSArIHNvdXJj
ZS5oKSk7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9y
ZW5kZXJfc3RhcnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQoreworICAgIGludCBj
b250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQ7CisgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFtZSwgJmNvbnRlbnRXaWR0aCwgJmNvbnRlbnRIZWlnaHQp
OworCisgICAgaW50IHZpZXdYLCB2aWV3WSwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0OworICAgIGV3
a19mcmFtZV92aXNpYmxlX2NvbnRlbnRfZ2VvbWV0cnlfZ2V0KHNtYXJ0RGF0YS0+bWFpbl9mcmFt
ZSwgZmFsc2UsICZ2aWV3WCwgJnZpZXdZLCAmdmlld1dpZHRoLCAmdmlld0hlaWdodCk7CisKKyAg
ICBpZiAodmlld1dpZHRoIDw9IDAgfHwgdmlld0hlaWdodCA8PSAwIHx8IGNvbnRlbnRXaWR0aCA8
PSAwIHx8IGNvbnRlbnRIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKHZpZXdXaWR0aCA+PSBjb250ZW50V2lkdGggJiYgdmlld0hlaWdodCA+PSBjb250ZW50SGVp
Z2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgcHJldmlvdXNWaWV3WCwgcHJl
dmlvdXNWaWV3WTsKKyAgICBwcmV2aW91c1ZpZXdYID0gc21hcnREYXRhLT5wcmV2aW91c1ZpZXcu
eDsKKyAgICBwcmV2aW91c1ZpZXdZID0gc21hcnREYXRhLT5wcmV2aW91c1ZpZXcueTsKKworICAg
IGlmIChwcmV2aW91c1ZpZXdYIDwgMCB8fCBwcmV2aW91c1ZpZXdYID4gY29udGVudFdpZHRoIHx8
IHByZXZpb3VzVmlld1kgPCAwIHx8IHByZXZpb3VzVmlld1kgPiBjb250ZW50SGVpZ2h0KQorICAg
ICAgICBwcmV2aW91c1ZpZXdYID0gcHJldmlvdXNWaWV3WSA9IDA7CisKKyAgICBmbG9hdCBjdXJy
ZW50Vmlld1pvb20gPSBld2tfdmlld196b29tX2dldChzbWFydERhdGEtPnNlbGYpOworCisgICAg
Ly8gcHJlLXJlbmRlciB3b3JrcyB3aGVuIHR3byBjb25kaXRpb25zIGFyZSBtZXQuCisgICAgLy8g
em9vbSBoYXMgYmVlbiBjaGFuZ2VkLgorICAgIC8vIGFuZCB0aGUgdmlldyBoYXMgYmVlbiBtb3Zl
ZCBtb3JlIHRoYW4gdGlsZSBzaXplLgorICAgIGlmIChhYnMocHJldmlvdXNWaWV3WCAtIHZpZXdY
KSA8IERFRkFVTFRfVElMRV9XCisgICAgICAgICYmIGFicyhwcmV2aW91c1ZpZXdZIC0gdmlld1kp
IDwgREVGQVVMVF9USUxFX0gKKyAgICAgICAgJiYgc21hcnREYXRhLT5wcmV2aW91c1ZpZXcuem9v
bSA9PSBjdXJyZW50Vmlld1pvb20pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8vIHN0b3JlIHByZXZpb3VzIHZpZXcgcG9zaXRpb24gYW5kIHpvb20uCisgICAgc21hcnRE
YXRhLT5wcmV2aW91c1ZpZXcueCA9IHZpZXdYOworICAgIHNtYXJ0RGF0YS0+cHJldmlvdXNWaWV3
LnkgPSB2aWV3WTsKKyAgICBzbWFydERhdGEtPnByZXZpb3VzVmlldy56b29tID0gY3VycmVudFZp
ZXdab29tOworCisgICAgLy8gY2FuY2VsbGluZyBwcmV2aW91cyBwcmUtcmVuZGVyaW5nIGxpc3Qg
aWYgZXhpc3RzLgorICAgIGV3a192aWV3X3ByZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+c2Vs
Zik7CisKKyAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSA9IGV3a192
aWV3X3RpbGVkX3VudXNlZF9jYWNoZV9nZXQoc21hcnREYXRhLT5zZWxmKTsKKyAgICBpbnQgbWF4
TWVtb3J5ID0gZXdrX3RpbGVfdW51c2VkX2NhY2hlX21heF9nZXQodGlsZVVudXNlZENhY2hlKTsK
KyAgICBpZiAobWF4TWVtb3J5IDw9IHZpZXdXaWR0aCAqIHZpZXdIZWlnaHQgKiBFV0tfQVJHQl9C
WVRFU19TSVpFKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFaW5hX1JlY3RhbmdsZSB2
aWV3UmVjdCA9IHt2aWV3WCwgdmlld1ksIHZpZXdXaWR0aCwgdmlld0hlaWdodH07CisgICAgRWlu
YV9SZWN0YW5nbGUgY29udGVudFJlY3QgPSB7MCwgMCwgY29udGVudFdpZHRoLCBjb250ZW50SGVp
Z2h0fTsKKworICAgIC8vIGdldCBhIGJhc2UgcmVuZGVyIHJlY3QuCisgICAgY29uc3QgaW50IGNv
bnRlbnRNZW1vcnkgPSBjb250ZW50V2lkdGggKiBjb250ZW50SGVpZ2h0ICogRVdLX0FSR0JfQllU
RVNfU0laRTsKKworICAgIC8vIGdldCByZW5kZXIgcmVjdCdzIHdpZHRoIGFuZCBoZWlnaHQuCisg
ICAgRWluYV9SZWN0YW5nbGUgcmVuZGVyUmVjdDsKKyAgICBpZiAobWF4TWVtb3J5ID4gY29udGVu
dE1lbW9yeSkKKyAgICAgICAgcmVuZGVyUmVjdCA9IGNvbnRlbnRSZWN0OworICAgIGVsc2Ugewor
ICAgICAgICAvLyBNYWtlIGEgYmFzZSByZWN0YW5nbGUgYXMgYmlnIGFzIHBvc3NpYmxlIHdpdGgg
dXNpbmcgbWF4TWVtb3J5LgorICAgICAgICAvLyBhbmQgdGhlbiByZXNoYXBlIHRoZSBiYXNlIHJl
Y3RhbmdsZSB0byBmaXQgdG8gY29udGVudHMuCisgICAgICAgIGNvbnN0IGludCBiYXNlU2l6ZSA9
IHN0YXRpY19jYXN0PGludD4oc3FydChtYXhNZW1vcnkgLyA0LjBmKSk7CisgICAgICAgIGNvbnN0
IGZsb2F0IHdpZHRoUmF0ZSA9ICh2aWV3UmVjdC53ICsgKERFRkFVTFRfVElMRV9XICogMikpIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGJhc2VTaXplKTsKKyAgICAgICAgY29uc3QgZmxvYXQgaGVpZ2h0
UmF0ZSA9IGJhc2VTaXplIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRIZWlnaHQpOworICAg
ICAgICBjb25zdCBmbG9hdCByZWN0UmF0ZSA9IHN0ZDo6bWF4KHdpZHRoUmF0ZSwgaGVpZ2h0UmF0
ZSk7CisKKyAgICAgICAgcmVuZGVyUmVjdC53ID0gc3RhdGljX2Nhc3Q8aW50PihiYXNlU2l6ZSAq
IHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC5oID0gc3RhdGljX2Nhc3Q8aW50PihiYXNl
U2l6ZSAvIHJlY3RSYXRlKTsKKyAgICAgICAgcmVuZGVyUmVjdC54ID0gdmlld1JlY3QueCArICh2
aWV3UmVjdC53IC8gMikgLSAocmVuZGVyUmVjdC53IC8gMik7CisgICAgICAgIHJlbmRlclJlY3Qu
eSA9IHZpZXdSZWN0LnkgKyAodmlld1JlY3QuaCAvIDIpIC0gKHJlbmRlclJlY3QuaCAvIDIpOwor
CisgICAgICAgIC8vIHJlcG9zaXRpb24gb2YgcmVuZGVyUmVjdCwgaWYgdGhlIHJlbmRlclJlY3Qg
b3ZlcmxhcHBlZCB0aGUgY29udGVudCByZWN0LCB0aGlzIGNvZGUgbW92ZXMgdGhlIHJlbmRlclJl
Y3QgaW5zaWRlIHRoZSBjb250ZW50IHJlY3QuCisgICAgICAgIGludCBjb2xsaXNpb25TaWRlID0g
X2V3a192aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX2NoZWNrKHJlbmRlclJlY3QsIGNvbnRlbnRS
ZWN0KTsKKyAgICAgICAgaWYgKGNvbGxpc2lvblNpZGUgPiAwKQorICAgICAgICAgICAgX2V3a192
aWV3X3RpbGVkX3JlY3RfY29sbGlzaW9uX3Jlc29sdmUoY29sbGlzaW9uU2lkZSwgJnJlbmRlclJl
Y3QsIGNvbnRlbnRSZWN0KTsKKworICAgICAgICAvLyBjaGVjayBhYm5vcm1hbCByZW5kZXIgcmVj
dAorICAgICAgICBpZiAocmVuZGVyUmVjdC54IDwgMCkKKyAgICAgICAgICAgIHJlbmRlclJlY3Qu
eCA9IDA7CisgICAgICAgIGlmIChyZW5kZXJSZWN0LnkgPCAwKQorICAgICAgICAgICAgcmVuZGVy
UmVjdC55ID0gMDsKKyAgICAgICAgaWYgKHJlbmRlclJlY3QudyA+IGNvbnRlbnRXaWR0aCkKKyAg
ICAgICAgICAgIHJlbmRlclJlY3QudyA9IGNvbnRlbnRXaWR0aDsKKyAgICAgICAgaWYgKHJlbmRl
clJlY3QuaCA+IGNvbnRlbnRIZWlnaHQpCisgICAgICAgICAgICByZW5kZXJSZWN0LmggPSBjb250
ZW50SGVpZ2h0OworICAgIH0KKworICAgIC8vIGVucXVldWUgdGlsZXMgaW50byB0aWxlZCBiYWNr
aW5nIHN0b3JlIGluIHNwaXJhbCBvcmRlci4KKyAgICBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShzbWFydERhdGEtPmJhY2tpbmdfc3RvcmUsICZ2aWV3UmVj
dCwgJnJlbmRlclJlY3QsIG1heE1lbW9yeSwgY3VycmVudFZpZXdab29tKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRl
cl9jYW5jZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogewogICAgIGV3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfY2FuY2VsKHNtYXJ0RGF0YS0+YmFja2luZ19zdG9y
ZSk7CkBAIC0yNDgsNiArMzY1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3RpbGVkX3NtYXJ0X3Nl
dChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdf
dGlsZWRfc21hcnRfZmx1c2g7CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmll
d190aWxlZF9zbWFydF9wcmVfcmVuZGVyX3JlZ2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzID0gX2V3a192aWV3X3RpbGVkX3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVf
cmFkaXVzOworICAgIGFwaS0+cHJlX3JlbmRlcl9zdGFydCA9IF9ld2tfdmlld190aWxlZF9zbWFy
dF9wcmVfcmVuZGVyX3N0YXJ0OwogICAgIGFwaS0+cHJlX3JlbmRlcl9jYW5jZWwgPSBfZXdrX3Zp
ZXdfdGlsZWRfc21hcnRfcHJlX3JlbmRlcl9jYW5jZWw7CiAgICAgYXBpLT5kaXNhYmxlX3JlbmRl
ciA9IF9ld2tfdmlld190aWxlZF9zbWFydF9kaXNhYmxlX3JlbmRlcjsKICAgICBhcGktPmVuYWJs
ZV9yZW5kZXIgPSBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfZW5hYmxlX3JlbmRlcjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMTJkOWExLi5jNjY0
MTY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMDUgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5sZWVAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIHByZS1yZW5kZXIgaGFuZGxpbmcgY29kZSBp
biBFV2ViTGF1bmNoZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgorCisg
ICAgICAgIEFkZCBwcmUtcmVuZGVyIGhhbmRsaW5nIGNvZGUgYnkgcHJlc3NpbmcgSW5zZXJ0IGtl
eS4KKworICAgICAgICAqIEVXZWJMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChvbl9rZXlfZG93
bik6CisKIDIwMTItMDEtMDUgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRG9uJ3QgaGFyZGNvZGUgZXhwZWN0ZWQgZmlsZSBVUklzIGluIGFzIHRoZXkg
ZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvVG9vbHMvRVdlYkxhdW5jaGVyL21h
aW4uYyBiL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMKaW5kZXggMTExODE4My4uMmQ2NGQ0YSAx
MDA2NDQKLS0tIGEvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYworKysgYi9Ub29scy9FV2ViTGF1
bmNoZXIvbWFpbi5jCkBAIC01NDgsNiArNTQ4LDkgQEAgb25fa2V5X2Rvd24odm9pZCAqZGF0YSwg
RXZhcyAqZSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKICAgICB9IGVsc2Ug
aWYgKCFzdHJjbXAoZXYtPmtleSwgImUiKSkgewogICAgICAgICBpbmZvKCJSZW5kZXIgcmVzdW1l
ZCIpOwogICAgICAgICBld2tfdmlld19lbmFibGVfcmVuZGVyKG9iaik7CisgICAgfSBlbHNlIGlm
ICghc3RyY21wKGV2LT5rZXksICJJbnNlcnQiKSkgeworICAgICAgICBpbmZvKCJQcmUtcmVuZGVy
aW5nIHN0YXJ0Iik7CisgICAgICAgIGV3a192aWV3X3ByZV9yZW5kZXJfc3RhcnQob2JqKTsKICAg
ICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>