<?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>61915</bug_id>
          
          <creation_ts>2011-06-02 02:55:52 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add efl port&apos;s ewk_view files</short_desc>
          <delta_ts>2011-12-21 21:12:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61838</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>youngtaeck.song</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>414011</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 02:55:52 -0700</bug_when>
    <thetext>I have added Source/WebKit2/UIProcess/API/efl directory
and created Source/WebKit2/UIProcess/API/efl/ewk_view.cpp and Source/WebKit2/UIProcess/API/efl/ewk_view.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414018</commentid>
    <comment_count>1</comment_count>
      <attachid>95745</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 03:09:15 -0700</bug_when>
    <thetext>Created attachment 95745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414019</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 03:11:53 -0700</bug_when>
    <thetext>Attachment 95745 did not pass style-queue:

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

Last 3072 characters of output:
dentifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:178:  _ewk_view_on_mouse_move is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:178:  event_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:187:  _ewk_view_on_key_down is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:187:  event_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:196:  _ewk_view_on_key_up is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:196:  event_info is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:205:  _parent_sc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:217:  _ewk_view_priv_del is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:225:  _ewk_view_smart_add is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:266:  _ewk_view_smart_del is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:275:  _ewk_view_smart_resize is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:287:  _ewk_view_smart_move is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:294:  _ewk_view_smart_calculate is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:319:  _ewk_view_smart_show is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:327:  _ewk_view_smart_hide is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:334:  ewk_view_smart_set is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:386:  ewk_view_add is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:404:  ewk_view_page_get is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 41 in 3 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>414132</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-02 08:24:10 -0700</bug_when>
    <thetext>I&apos;m not sure who would review this.  I can rubber stamp it... but I don&apos;t really know anything about EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414193</commentid>
    <comment_count>4</comment_count>
      <attachid>95745</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-02 09:32:16 -0700</bug_when>
    <thetext>Comment on attachment 95745
Patch

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

I don&apos;t know much about WebKit2, but I&apos;ve found some small issues, after a quick glance over the code.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:33
&gt; +static const char EWK_VIEW_TYPE_STR[] = &quot;EWK_View&quot;;

EWK_View is also used by EWK1 -- at least while the two APIs are coexisting here, I&apos;d change that to &quot;EWK2_View&quot; or something similar.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:58
&gt; +static void _ewk_view_smart_focus_in(Ewk_View_Smart_Data* sd)
&gt; +{
&gt; +    if (!sd)
&gt; +        return;
&gt; +    EWK_VIEW_PRIV_GET(sd, priv);

This pattern repeats all over -- wouldn&apos;t it be nicer you had a macro like EWK_VIEW_PRIV_GET_OR_RETURN, like you have on current WebKitEFL?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:222
&gt; +{
&gt; +    if (!priv)
&gt; +        return;
&gt; +
&gt; +    free(priv);

This will leak the RefPtr on the Ewk_View_Private_Data structure -- attribute 0 to it before freeing the structure.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:246
&gt; +    if (!sd-&gt;priv)
&gt; +        return;

sd leaks here.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:102
&gt; +struct _Ewk_View_Smart_Data {
&gt; +    Evas_Object_Smart_Clipped_Data base;
&gt; +    const Ewk_View_Smart_Class* api;     /**&lt; reference to casted class instance */
&gt; +    Evas_Object* self;                   /**&lt; reference to owner object */
&gt; +    Evas_Object *backing_store;          /**&lt; reference to backing store */

Small style issue: * aligned to the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414606</commentid>
    <comment_count>5</comment_count>
      <attachid>95846</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 19:26:41 -0700</bug_when>
    <thetext>Created attachment 95846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414609</commentid>
    <comment_count>6</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 19:35:31 -0700</bug_when>
    <thetext>Leandro,
Thank you very much for you comments :)
This patch is significant to me because it is my first patch for webkit!

I have upload new patch which is fixed for your comments.
I&apos;d appreciate it if you would review it again :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414612</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-02 19:49:08 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=95846&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:41
&gt; +    //  - if overridden, have to call parent method if desired

If possible, I like to use /* */ instead of // for c header.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:102
&gt; +    Evas_Object *backing_store; /**&lt; reference to backing store */

it&apos;s missed.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:115
&gt; +EAPI WKPageRef ewk_view_page_get(Evas_Object*);

Isn&apos;t it better to keep a parameter name like WebKit/EFL?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:120
&gt; +#endif // ewk_view_h

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414619</commentid>
    <comment_count>8</comment_count>
      <attachid>95847</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 19:59:40 -0700</bug_when>
    <thetext>Created attachment 95847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414649</commentid>
    <comment_count>9</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 21:54:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 95745 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95745&amp;action=review
&gt; 
&gt; I don&apos;t know much about WebKit2, but I&apos;ve found some small issues, after a quick glance over the code.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:33
&gt; &gt; +static const char EWK_VIEW_TYPE_STR[] = &quot;EWK_View&quot;;
&gt; 
&gt; EWK_View is also used by EWK1 -- at least while the two APIs are coexisting here, I&apos;d change that to &quot;EWK2_View&quot; or something similar.
Done. I changed name to &quot;EWK2_View&quot;

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:58
&gt; &gt; +static void _ewk_view_smart_focus_in(Ewk_View_Smart_Data* sd)
&gt; &gt; +{
&gt; &gt; +    if (!sd)
&gt; &gt; +        return;
&gt; &gt; +    EWK_VIEW_PRIV_GET(sd, priv);
&gt; 
&gt; This pattern repeats all over -- wouldn&apos;t it be nicer you had a macro like EWK_VIEW_PRIV_GET_OR_RETURN, like you have on current WebKitEFL?
Done. I added EWK_VIEW_PRIV_GET_OR_RETURN macro

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:222
&gt; &gt; +{
&gt; &gt; +    if (!priv)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    free(priv);
&gt; 
&gt; This will leak the RefPtr on the Ewk_View_Private_Data structure -- attribute 0 to it before freeing the structure.
Done. I added priv-&gt;view=0
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:246
&gt; &gt; +    if (!sd-&gt;priv)
&gt; &gt; +        return;
&gt; 
&gt; sd leaks here.
Done. I added free(sd)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:102
&gt; &gt; +struct _Ewk_View_Smart_Data {
&gt; &gt; +    Evas_Object_Smart_Clipped_Data base;
&gt; &gt; +    const Ewk_View_Smart_Class* api;     /**&lt; reference to casted class instance */
&gt; &gt; +    Evas_Object* self;                   /**&lt; reference to owner object */
&gt; &gt; +    Evas_Object *backing_store;          /**&lt; reference to backing store */
&gt; 
&gt; Small style issue: * aligned to the type.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414651</commentid>
    <comment_count>10</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 21:55:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95846&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:41
&gt; &gt; +    //  - if overridden, have to call parent method if desired
&gt; 
&gt; If possible, I like to use /* */ instead of // for c header.
&gt; 
Done. I change // to /**/

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:102
&gt; &gt; +    Evas_Object *backing_store; /**&lt; reference to backing store */
&gt; 
&gt; it&apos;s missed.
Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:115
&gt; &gt; +EAPI WKPageRef ewk_view_page_get(Evas_Object*);
&gt; 
&gt; Isn&apos;t it better to keep a parameter name like WebKit/EFL?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:120
&gt; &gt; +#endif // ewk_view_h
&gt; 
&gt; Ditto.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414984</commentid>
    <comment_count>11</comment_count>
      <attachid>95847</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-03 10:23:31 -0700</bug_when>
    <thetext>Comment on attachment 95847
Patch

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

I know nothing about WebKit2. I&apos;m reviewing only style and other possibly minor issues.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:286
&gt; +    if (!sd-&gt;priv) {
&gt; +        EINA_LOG_CRIT(&quot;could not allocate _Ewk_View_Private_Data&quot;);
&gt; +        free(sd);
&gt; +        return;

Dangling reference. evas_object_smart_data_set(o, 0);

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:320
&gt; +    EWK_VIEW_SD_GET(o, sd);

EWK_VIEW_SD_GET_OR_RETURN(...)

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:332
&gt; +    EWK_VIEW_SD_GET(o, sd);

Ditto. Please review all EWK_VIEW_SD_GET() usage on the following functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416290</commentid>
    <comment_count>12</comment_count>
      <attachid>96196</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-06 21:30:53 -0700</bug_when>
    <thetext>Created attachment 96196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416293</commentid>
    <comment_count>13</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-06 21:33:46 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 95847 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95847&amp;action=review
&gt; 
&gt; I know nothing about WebKit2. I&apos;m reviewing only style and other possibly minor issues.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:286
&gt; &gt; +    if (!sd-&gt;priv) {
&gt; &gt; +        EINA_LOG_CRIT(&quot;could not allocate _Ewk_View_Private_Data&quot;);
&gt; &gt; +        free(sd);
&gt; &gt; +        return;
&gt; 
&gt; Dangling reference. evas_object_smart_data_set(o, 0);
&gt; 
I&apos;ve added evas_object_smart_data_set(o, 0) before free(sd)

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:320
&gt; &gt; +    EWK_VIEW_SD_GET(o, sd);
&gt; 
&gt; EWK_VIEW_SD_GET_OR_RETURN(...)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:332
&gt; &gt; +    EWK_VIEW_SD_GET(o, sd);
&gt; 
&gt; Ditto. Please review all EWK_VIEW_SD_GET() usage on the following functions.

I&apos;ve checked all EWK_VIEW_SD_GET and EWK_VIEW_PRIV_GET and replace some with *_GET_OR_RETURN</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417900</commentid>
    <comment_count>14</comment_count>
      <attachid>96561</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 01:50:11 -0700</bug_when>
    <thetext>Created attachment 96561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417901</commentid>
    <comment_count>15</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 01:52:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=96561) [details]
&gt; Patch

I replaced WebView to PageClientImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417923</commentid>
    <comment_count>16</comment_count>
      <attachid>96561</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-09 02:44:26 -0700</bug_when>
    <thetext>Comment on attachment 96561
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:43
&gt; +#ifndef EWK_TYPE_CHECK
&gt; +#define EWK_VIEW_TYPE_CHECK(o, ...) do { } while (0)
&gt; +#else
&gt; +#define EWK_VIEW_TYPE_CHECK(o, ...)                                     \

Shouldnt this be in some common header file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417972</commentid>
    <comment_count>17</comment_count>
      <attachid>96580</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 06:26:24 -0700</bug_when>
    <thetext>Created attachment 96580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417976</commentid>
    <comment_count>18</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 06:38:46 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 96561 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96561&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:43
&gt; &gt; +#ifndef EWK_TYPE_CHECK
&gt; &gt; +#define EWK_VIEW_TYPE_CHECK(o, ...) do { } while (0)
&gt; &gt; +#else
&gt; &gt; +#define EWK_VIEW_TYPE_CHECK(o, ...)                                     \
&gt; 
&gt; Shouldnt this be in some common header file?

The EWK_VIEW_TYPE_CHECK is used before getting evas_object_smart_data,
and evas_object_smart_data is used only in the ewk_view.
So, I think that we can leave that macro in the cpp file.

Anyway, I modified some codes in the new patch.

1. remove EWK_TYPE_CHECK
+#ifndef EWK_TYPE_CHECK
Adding above ifndef is my mistake.
I copied that code from WebKit1&apos;s ewk_view but it is not used in the WebKit2&apos;s ewk_view.
So, I have removed above ifndef from the code.

2. add EWK_TYPE_CHECK for EWK_VIEW_SD_GET
EWK_TYPE_CHECK was done only in the EWK_VIEW_SD_GET_OR_RETURN.
So, I have added EWK_TYPE_CHECK for EWK_VIEW_SD_GET too.

3. add eina_log_domain
I have added variable _ewk2_log_dom for eina_log_domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418009</commentid>
    <comment_count>19</comment_count>
      <attachid>96580</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-09 07:35:04 -0700</bug_when>
    <thetext>Comment on attachment 96580
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:126
&gt; +    NativeWebWheelEvent wheelEvent = NativeWebWheelEvent(ev, &amp;position);

NativeWebWheelEvent wheelEvent(ev, &amp;position);

Please review other constructors as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418451</commentid>
    <comment_count>20</comment_count>
      <attachid>96683</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 18:31:46 -0700</bug_when>
    <thetext>Created attachment 96683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418454</commentid>
    <comment_count>21</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-09 18:32:59 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 96580 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96580&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:126
&gt; &gt; +    NativeWebWheelEvent wheelEvent = NativeWebWheelEvent(ev, &amp;position);
&gt; 
&gt; NativeWebWheelEvent wheelEvent(ev, &amp;position);
&gt; 
&gt; Please review other constructors as well.

Done.
I&apos;ve modified that as follows:
priv-&gt;pageClient-&gt;page()-&gt;handleMouseEvent(NativeWebMouseEvent(ev, &amp;position));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418578</commentid>
    <comment_count>22</comment_count>
      <attachid>96712</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 01:31:02 -0700</bug_when>
    <thetext>Created attachment 96712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418580</commentid>
    <comment_count>23</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 01:32:21 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=96712) [details]
&gt; Patch

I removed free(sd) code from _ewk_view_smart_del() as follows:
 static void _ewk_view_smart_del(Evas_Object* o)
 {
     EWK_VIEW_SD_GET(o, sd);
-    if (sd) {
-        if (sd-&gt;priv)
-            _ewk_view_priv_del(sd-&gt;priv);
-        evas_object_smart_data_set(o, 0);
-        free(sd);
-    }
+    if (sd &amp;&amp; sd-&gt;priv)
+        _ewk_view_priv_del(sd-&gt;priv);
 
     _parent_sc.del(o);
 }
Because sd will be freed in the _parent_sc.del(o).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418661</commentid>
    <comment_count>24</comment_count>
      <attachid>96736</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 04:52:05 -0700</bug_when>
    <thetext>Created attachment 96736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418662</commentid>
    <comment_count>25</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 04:53:01 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=96736) [details]
&gt; Patch

I&apos;ve added #include &quot;NativeWebKeyboardEvent.h&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418754</commentid>
    <comment_count>26</comment_count>
      <attachid>96736</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-10 09:54:58 -0700</bug_when>
    <thetext>Comment on attachment 96736
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:380
&gt; +Eina_Bool ewk_view_smart_set(Ewk_View_Smart_Class* api)

Shouldn&apos;t this be called ewk_view_smart_class_init() or something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419379</commentid>
    <comment_count>27</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-12 18:55:46 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 96736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96736&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:380
&gt; &gt; +Eina_Bool ewk_view_smart_set(Ewk_View_Smart_Class* api)
&gt; 
&gt; Shouldn&apos;t this be called ewk_view_smart_class_init() or something like this?

ewk_view_smart_set() is called in the _ewk_view_smart_class_new().
We have to fill the Smart_Class functions and Ewk APIs before we create Evas_Smart using evas_smart_class_new().
ewk_view_smart_set()&apos;s codes can be resident in the _ewk_view_smart_class_new() function, but I made that as a separate function for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419552</commentid>
    <comment_count>28</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-13 07:40:06 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (...)
&gt; ewk_view_smart_set()&apos;s codes can be resident in the _ewk_view_smart_class_new()
&gt; function, but I made that as a separate function for readability.

But if you call it &quot;ewk_view_smart_set&quot;, you&apos;re basically telling me: &quot;set the smart property of ewk_view&quot;. Which doesn&apos;t make much sense, does it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420339</commentid>
    <comment_count>29</comment_count>
      <attachid>97100</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 05:34:16 -0700</bug_when>
    <thetext>Created attachment 97100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420342</commentid>
    <comment_count>30</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 05:37:35 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (...)
&gt; &gt; ewk_view_smart_set()&apos;s codes can be resident in the _ewk_view_smart_class_new()
&gt; &gt; function, but I made that as a separate function for readability.
&gt; 
&gt; But if you call it &quot;ewk_view_smart_set&quot;, you&apos;re basically telling me: &quot;set the smart property of ewk_view&quot;. Which doesn&apos;t make much sense, does it?

Oops, I did not catch your point.
I thought your comments&apos; &quot;called&quot; is function call :(
You mean rename!

yes, I agree that ewk_view_smart_class_init() is better name than ewk_view_smart_set()
And I&apos;ve uploaded new patch for that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420455</commentid>
    <comment_count>31</comment_count>
      <attachid>97100</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-14 08:57:28 -0700</bug_when>
    <thetext>Comment on attachment 97100
Patch

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

Looks almost OK -- just a couple of questions.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:348
&gt; +    if (priv-&gt;pageClient &amp;&amp; sd-&gt;changed.size &amp;&amp; ((w != sd-&gt;view.w) || (h != sd-&gt;view.h))) {

Couldn&apos;t you just use sd-&gt;changed.size here?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:355
&gt; +    if (sd-&gt;changed.position &amp;&amp; ((x != sd-&gt;view.x) || (y != sd-&gt;view.y))) {

Ditto, for sd-&gt;changed.position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420930</commentid>
    <comment_count>32</comment_count>
      <attachid>97214</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 18:32:33 -0700</bug_when>
    <thetext>Created attachment 97214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420932</commentid>
    <comment_count>33</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 18:36:58 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 97100 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97100&amp;action=review
&gt; 
&gt; Looks almost OK -- just a couple of questions.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:348
&gt; &gt; +    if (priv-&gt;pageClient &amp;&amp; sd-&gt;changed.size &amp;&amp; ((w != sd-&gt;view.w) || (h != sd-&gt;view.h))) {
&gt; 
&gt; Couldn&apos;t you just use sd-&gt;changed.size here?
&gt; 

I&apos;ve modified that code as follows:
-    if (priv-&gt;pageClient &amp;&amp; sd-&gt;changed.size &amp;&amp; ((w != sd-&gt;view.w) || (h != sd-&gt;view.h))) {
-        priv-&gt;pageClient-&gt;page()-&gt;drawingArea()-&gt;setSize(IntSize(w, h), IntSize());
+    if (sd-&gt;changed.size &amp;&amp; ((w != sd-&gt;view.w) || (h != sd-&gt;view.h))) {
+        if (priv-&gt;pageClient)
+            priv-&gt;pageClient-&gt;page()-&gt;drawingArea()-&gt;setSize(IntSize(w, h), IntSize());

I&apos;ve just move priv-&gt;pageClient.


&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:355
&gt; &gt; +    if (sd-&gt;changed.position &amp;&amp; ((x != sd-&gt;view.x) || (y != sd-&gt;view.y))) {
&gt; 
&gt; Ditto, for sd-&gt;changed.position.

I don&apos;t know what can I do more.
Actually, I could not catch your point.
Would you explain more about what you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421350</commentid>
    <comment_count>34</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-15 09:12:04 -0700</bug_when>
    <thetext>(In reply to comment #33)

&gt; I don&apos;t know what can I do more.
&gt; Actually, I could not catch your point.
&gt; Would you explain more about what you want?

Flags in sd-&gt;changed, AFAICT from these snippets, determine if something has changed values; so, if you keep these flags updated whenever something changed, there&apos;s no need to check the values again, only the respective flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421770</commentid>
    <comment_count>35</comment_count>
      <attachid>97399</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-15 22:24:44 -0700</bug_when>
    <thetext>Created attachment 97399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421771</commentid>
    <comment_count>36</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-15 22:26:31 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; 
&gt; &gt; I don&apos;t know what can I do more.
&gt; &gt; Actually, I could not catch your point.
&gt; &gt; Would you explain more about what you want?
&gt; 
&gt; Flags in sd-&gt;changed, AFAICT from these snippets, determine if something has changed values; so, if you keep these flags updated whenever something changed, there&apos;s no need to check the values again, only the respective flag.

Now, I understand what you mean.
Yes, I agree that the size and position variable checking codes are not necessary.
So, I&apos;ve removed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421946</commentid>
    <comment_count>37</comment_count>
      <attachid>97399</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-16 07:28:12 -0700</bug_when>
    <thetext>Comment on attachment 97399
Patch

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

LGTM, just some small nits.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:354
&gt; +    if (sd-&gt;changed.size) {
&gt; +        if (priv-&gt;pageClient)
&gt; +            priv-&gt;pageClient-&gt;page()-&gt;drawingArea()-&gt;setSize(IntSize(w, h), IntSize());
&gt; +        sd-&gt;view.w = w;
&gt; +        sd-&gt;view.h = h;
&gt; +    }
&gt; +    sd-&gt;changed.size = EINA_FALSE;

You could move the attribution to sd-&gt;changed.size inside the if block. Same below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422356</commentid>
    <comment_count>38</comment_count>
      <attachid>97529</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-16 17:45:07 -0700</bug_when>
    <thetext>Created attachment 97529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422357</commentid>
    <comment_count>39</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-16 17:45:58 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 97399 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97399&amp;action=review
&gt; 
&gt; LGTM, just some small nits.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:354
&gt; &gt; +    if (sd-&gt;changed.size) {
&gt; &gt; +        if (priv-&gt;pageClient)
&gt; &gt; +            priv-&gt;pageClient-&gt;page()-&gt;drawingArea()-&gt;setSize(IntSize(w, h), IntSize());
&gt; &gt; +        sd-&gt;view.w = w;
&gt; &gt; +        sd-&gt;view.h = h;
&gt; &gt; +    }
&gt; &gt; +    sd-&gt;changed.size = EINA_FALSE;
&gt; 
&gt; You could move the attribution to sd-&gt;changed.size inside the if block. Same below.

Yes, I&apos;ve moved that inside the if block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422633</commentid>
    <comment_count>40</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-17 08:16:15 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt;
&gt; Yes, I&apos;ve moved that inside the if block.
&gt;

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426000</commentid>
    <comment_count>41</comment_count>
      <attachid>97529</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-23 00:50:04 -0700</bug_when>
    <thetext>Comment on attachment 97529
Patch

Internal r+ on my side. However, reviewer should review this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521727</commentid>
    <comment_count>42</comment_count>
      <attachid>119394</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-12-15 01:01:52 -0800</bug_when>
    <thetext>Created attachment 119394
Patch for ewk_view.

I&apos;ve modified codes to follow changed ewk_*&apos;s coding style rule by referencing https://bugs.webkit.org/show_bug.cgi?id=69073.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523693</commentid>
    <comment_count>43</comment_count>
      <attachid>119807</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-12-18 21:05:30 -0800</bug_when>
    <thetext>Created attachment 119807
patch for ewk_view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523694</commentid>
    <comment_count>44</comment_count>
      <attachid>119808</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-12-18 21:10:25 -0800</bug_when>
    <thetext>Created attachment 119808
patch for ewk_view.

I changed Ewk_View_Smart_Class functions&apos; return-type from void to Eina_Bool,
and modified ewk_view.h&apos;s style to follow the efl style. (ewk_view.cpp follows WebKit style.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523715</commentid>
    <comment_count>45</comment_count>
      <attachid>119808</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-18 21:56:52 -0800</bug_when>
    <thetext>Comment on attachment 119808
patch for ewk_view.

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:175
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

Do not use c type casting. Please use C++ casting.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:183
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:191
&gt; +    Evas_Event_Mouse_Wheel* wheelEvent = (Evas_Event_Mouse_Wheel*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:192
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:200
&gt; +    Evas_Event_Mouse_Down* downEvent = (Evas_Event_Mouse_Down*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:201
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:209
&gt; +    Evas_Event_Mouse_Up* upEvent = (Evas_Event_Mouse_Up*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:218
&gt; +    Evas_Event_Mouse_Move* moveEvent = (Evas_Event_Mouse_Move*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:219
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:227
&gt; +    Evas_Event_Key_Down* downEvent = (Evas_Event_Key_Down*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:228
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:236
&gt; +    Evas_Event_Key_Up* upEvent = (Evas_Event_Key_Up*)eventInfo;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:237
&gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:248
&gt; +        (Ewk_View_Private_Data*)calloc(1, sizeof(Ewk_View_Private_Data));

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523730</commentid>
    <comment_count>46</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-12-18 22:30:28 -0800</bug_when>
    <thetext>Thank you for your comment, Gyuyoung.
I will update patch after changing all c style type casting to c++ style.

(In reply to comment #45)
&gt; (From update of attachment 119808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119808&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:175
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; Do not use c type casting. Please use C++ casting.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:183
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:191
&gt; &gt; +    Evas_Event_Mouse_Wheel* wheelEvent = (Evas_Event_Mouse_Wheel*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:192
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:200
&gt; &gt; +    Evas_Event_Mouse_Down* downEvent = (Evas_Event_Mouse_Down*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:201
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:209
&gt; &gt; +    Evas_Event_Mouse_Up* upEvent = (Evas_Event_Mouse_Up*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:218
&gt; &gt; +    Evas_Event_Mouse_Move* moveEvent = (Evas_Event_Mouse_Move*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:219
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:227
&gt; &gt; +    Evas_Event_Key_Down* downEvent = (Evas_Event_Key_Down*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:228
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:236
&gt; &gt; +    Evas_Event_Key_Up* upEvent = (Evas_Event_Key_Up*)eventInfo;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:237
&gt; &gt; +    Ewk_View_Smart_Data* smartData = (Ewk_View_Smart_Data*)data;
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:248
&gt; &gt; +        (Ewk_View_Private_Data*)calloc(1, sizeof(Ewk_View_Private_Data));
&gt; 
&gt; ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523731</commentid>
    <comment_count>47</comment_count>
      <attachid>119816</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-12-18 22:31:13 -0800</bug_when>
    <thetext>Created attachment 119816
patch for ewk_view.

Change c style type casting to c++ style type casting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525947</commentid>
    <comment_count>48</comment_count>
      <attachid>119816</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-21 20:23:04 -0800</bug_when>
    <thetext>Comment on attachment 119816
patch for ewk_view.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525961</commentid>
    <comment_count>49</comment_count>
      <attachid>119816</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 20:47:30 -0800</bug_when>
    <thetext>Comment on attachment 119816
patch for ewk_view.

OK.  rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525970</commentid>
    <comment_count>50</comment_count>
      <attachid>119816</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 21:12:16 -0800</bug_when>
    <thetext>Comment on attachment 119816
patch for ewk_view.

Clearing flags on attachment: 119816

Committed r103492: &lt;http://trac.webkit.org/changeset/103492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525971</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 21:12:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95745</attachid>
            <date>2011-06-02 03:09:15 -0700</date>
            <delta_ts>2011-06-02 19:26:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110602190858.patch</filename>
            <type>text/plain</type>
            <size>19973</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4ODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzYzg1MzNhOWE4NDU0Yzkx
NTIwYTBhNGRlYWRhY2U3YzE3NmE4NmUwLi5iMGM0M2M0YjRmMWY5NThkMzM5ZjQxNjMxY2FhNjYw
ZDhmMzUxZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMDIgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKIDIwMTEtMDYtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTliNGRiZmQ4ZmU5
YTM0MTIwMDA0NWQ0ZWNmMzdlYWVmNTIzMGY2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQwOSBAQAor
LyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPEVjb3Jl
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0tfVmlldyI7CisK
K3N0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKKyAgICBSZWZQdHI8V2ViVmlldz4gdmll
dzsKK307CisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUKG8sIHB0cikgXAorICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFy
dF9kYXRhX2dldChvKQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpIFwKKyAg
ICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5wcml2CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIGlm
IChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVybjsKKyAgICBzZC0+Y2hhbmdlZC5hbnkg
PSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChzZC0+c2VsZik7Cit9
CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2lu
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIGlmICghc2QpCisgICAgICAgIHJldHVy
bjsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT52aWV3LT5w
YWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBX
ZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgaWYg
KCFzZCkKKyAgICAgICAgcmV0dXJuOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsK
KworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94
eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBpZiAo
IXNkKQorICAgICAgICByZXR1cm47CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwor
CisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBzZC0+dmlldy55fTsKKyAg
ICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdoZWVsRXZlbnQgPSBOYXRpdmVXZWJXaGVlbEV2ZW50KGV2
LCAmcG9zaXRpb24pOworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudCh3
aGVlbEV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24o
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYp
Cit7CisgICAgaWYgKCFzZCkKKyAgICAgICAgcmV0dXJuOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwgc2Qt
PnZpZXcueX07CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gTmF0aXZlV2Vi
TW91c2VFdmVudChldiwgJnBvc2l0aW9uKTsKKyAgICBwcml2LT52aWV3LT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQobW91c2VFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9VcCogZXYpCit7CisgICAgaWYgKCFzZCkKKyAgICAgICAgcmV0dXJuOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZp
ZXcueCwgc2QtPnZpZXcueX07CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50ID0g
TmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKTsKKyAgICBwcml2LT52aWV3LT5wYWdl
KCktPmhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIGV2KQoreworICAgIGlmICghc2QpCisgICAgICAgIHJldHVybjsK
KyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBFdmFzX1BvaW50IHBvc2l0
aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQg
bW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJp
di0+dmlldy0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOworfQorCitzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIGlmICghc2QpCisgICAgICAg
IHJldHVybjsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT52
aWV3LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChl
dikpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCit7CisgICAgaWYgKCFz
ZCkKKyAgICAgICAgcmV0dXJuOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKwor
ICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KGV2KSk7Cit9CisKKy8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBldmVudF9pbmZvKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwor
ICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX291dCk7CisgICAg
c2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRf
TW91c2VfV2hlZWwqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3Vz
ZV93aGVlbCk7CisgICAgc2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2KTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3du
KiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBl
dik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXApOworICAgIHNkLT5hcGktPm1vdXNlX3Vw
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CisgICAgc2Qt
PmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
a2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVudF9LZXlf
RG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsK
KyAgICBzZC0+YXBpLT5rZXlfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBl
dmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tl
eV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7Cisg
ICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNz
IF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKKworc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAgIChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KSk7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm4gMDsgLy8gY291bGQgbm90IGFsbG9j
YXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YQorCisgICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7
CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBmcmVlKHByaXYpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQoreworICAg
IGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8p
OworICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNjID0gZXZhc19zbWFydF9jbGFzc19nZXQo
c21hcnQpOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSAoY29uc3QgRXdr
X1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisKKyAg
ICBpZiAoIXNkKSB7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNhbGxvYygx
LCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAgICBpZiAoIXNkKQorICAgICAg
ICAgICAgcmV0dXJuOyAvLyBjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfU21hcnRfRGF0YQor
ICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAgfQorCisgICAg
c2QtPnNlbGYgPSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3KHNkKTsKKyAg
ICBzZC0+YXBpID0gYXBpOworCisgICAgX3BhcmVudF9zYy5hZGQobyk7CisKKyAgICBpZiAoIXNk
LT5wcml2KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBjcmVhdGUgYmFja2luZ19zdG9yZSBp
bWFnZQorICAgIHNkLT5iYWNraW5nX3N0b3JlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNkLT5i
YXNlLmV2YXMpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFja2luZ19z
dG9yZSwgRUlOQV9GQUxTRSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzZC0+
YmFja2luZ19zdG9yZSwgbyk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9y
ZSk7CisKKyNkZWZpbmUgQ09OTkVDVChzLCBjKSBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19h
ZGQobywgcywgYywgc2QpCisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdr
X3ZpZXdfb25fZm9jdXNfaW4pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQs
IF9ld2tfdmlld19vbl9mb2N1c19vdXQpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VT
RV9XSEVFTCwgX2V3a192aWV3X29uX21vdXNlX3doZWVsKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FM
TEJBQ0tfTU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOworICAgIENPTk5FQ1Qo
RVZBU19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKKyAgICBDT05O
RUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOwor
ICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3du
KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3Vw
KTsKKyN1bmRlZiBDT05ORUNUCit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwo
RXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBfcGFyZW50X3NjLmRlbChvKTsKKyAgICBf
ZXdrX3ZpZXdfcHJpdl9kZWwocHJpdik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorewor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9yZXNpemUoc2Qt
PmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHNk
LT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChz
ZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgdywgaCk7CisKKyAgICBzZC0+Y2hhbmdlZC5zaXplID0g
RUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwg
RXZhc19Db29yZCB5KQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgc2QtPmNo
YW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
c2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHByaXYpOworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKworICAgIHNkLT5j
aGFuZ2VkLmFueSA9IEVJTkFfRkFMU0U7CisKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQo
bywgJngsICZ5LCAmdywgJmgpOworCisgICAgaWYgKHByaXYtPnZpZXcgJiYgc2QtPmNoYW5nZWQu
c2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0gc2QtPnZpZXcuaCkpKSB7CisgICAg
ICAgIHByaXYtPnZpZXctPnNldFNpemUoSW50U2l6ZSh3LCBoKSk7CisgICAgICAgIHNkLT52aWV3
LncgPSB3OworICAgICAgICBzZC0+dmlldy5oID0gaDsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQu
c2l6ZSA9IEVJTkFfRkFMU0U7CisKKyAgICBpZiAoc2QtPmNoYW5nZWQucG9zaXRpb24gJiYgKCh4
ICE9IHNkLT52aWV3LngpIHx8ICh5ICE9IHNkLT52aWV3LnkpKSkgeworICAgICAgICBldmFzX29i
amVjdF9tb3ZlKHNkLT5iYWNraW5nX3N0b3JlLCB4LCB5KTsKKyAgICAgICAgc2QtPnZpZXcueCA9
IHg7CisgICAgICAgIHNkLT52aWV3LnkgPSB5OworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5wb3Np
dGlvbiA9IEVJTkFfRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93
KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgaWYg
KGV2YXNfb2JqZWN0X2NsaXBlZXNfZ2V0KHNkLT5iYXNlLmNsaXBwZXIpKQorICAgICAgICBldmFz
X29iamVjdF9zaG93KHNkLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2Qt
PmJhY2tpbmdfc3RvcmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShF
dmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGV2YXNf
b2JqZWN0X2hpZGUoc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+
YmFja2luZ19zdG9yZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9zZXQoRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MqIGFwaSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoYXBpLCBFSU5BX0ZBTFNFKTsKKworICAgIGlmIChhcGktPnZlcnNpb24gIT0gRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfVkVSU0lPTikgeworICAgICAgICBFSU5BX0xPR19DUklUCisgICAgICAgICAg
ICAoIkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMg
ZXhwZWN0ZWQuIiwKKyAgICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfVkVSU0lPTik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKwor
ICAgIGlmIChFSU5BX1VOTElLRUxZKCFfcGFyZW50X3NjLmFkZCkpCisgICAgICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZfcGFyZW50X3NjKTsKKworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZhcGktPnNjKTsKKworICAgIC8vIHNldCBFdmFz
X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5zYy5hZGQgPSBfZXdrX3ZpZXdfc21hcnRfYWRkOworICAg
IGFwaS0+c2MuZGVsID0gX2V3a192aWV3X3NtYXJ0X2RlbDsKKyAgICBhcGktPnNjLm1vdmUgPSBf
ZXdrX3ZpZXdfc21hcnRfbW92ZTsKKyAgICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tfdmlld19zbWFy
dF9yZXNpemU7CisgICAgYXBpLT5zYy5zaG93ID0gX2V3a192aWV3X3NtYXJ0X3Nob3c7CisgICAg
YXBpLT5zYy5oaWRlID0gX2V3a192aWV3X3NtYXJ0X2hpZGU7CisgICAgYXBpLT5zYy5jYWxjdWxh
dGUgPSBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlOworICAgIGFwaS0+c2MuZGF0YSA9IEVXS19W
SUVXX1RZUEVfU1RSOyAvKiB1c2VkIGJ5IHR5cGUgY2hlY2tpbmcgKi8KKworICAgIC8vIHNldCBF
d2tfVmlld19TbWFydF9DbGFzcworICAgIGFwaS0+Zm9jdXNfaW4gPSBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW47CisgICAgYXBpLT5mb2N1c19vdXQgPSBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0
OworICAgIGFwaS0+bW91c2Vfd2hlZWwgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWw7Cisg
ICAgYXBpLT5tb3VzZV9kb3duID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd247CisgICAgYXBp
LT5tb3VzZV91cCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV91cDsKKyAgICBhcGktPm1vdXNlX21v
dmUgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZTsKKyAgICBhcGktPmtleV9kb3duID0gX2V3
a192aWV3X3NtYXJ0X2tleV9kb3duOworICAgIGFwaS0+a2V5X3VwID0gX2V3a192aWV3X3NtYXJ0
X2tleV91cDsKKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZh
c19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQoreworICAgIHN0YXRpYyBF
d2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTigiRXdrX1ZpZXciKTsKKyAgICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOwor
CisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkgeworICAgICAgICBld2tfdmlld19zbWFy
dF9zZXQoJmFwaSk7CisgICAgICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmFwaS5z
Yyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0OworfQorCitFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCit7CisgICAgRXZhc19PYmplY3QqIG8gPSBldmFzX29iamVjdF9zbWFydF9h
ZGQoZSwgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKKyAgICBpZiAoIW8pCisgICAgICAg
IHJldHVybiAwOworCisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVChzZCwgcHJpdik7CisKKyAgICBwcml2LT52aWV3ID0gV2ViVmlldzo6Y3JlYXRlKHRv
SW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNraW5nX3N0b3Jl
KTsKKyAgICBpZiAoIXByaXYtPnZpZXcpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG8pOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbzsKK30KKworV0tQYWdlUmVm
IGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dF
VChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgIHJldHVybiB0
b0FQSShwcml2LT52aWV3LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRjMmJiYTI1ODhmMjFlNzE4ZDQyZjRjMTQ4
ZGEwOGNhZDBiOGQ1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgICBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdfaAorI2Rl
ZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0
eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNz
OworCisvKioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNs
YXNzZXMuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNfU21h
cnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAq
LworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8vIGV2ZW50IGhhbmRsaW5nOgor
ICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRl
c2lyZWQKKyAgICB2b2lkICgqZm9jdXNfaW4pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAg
ICB2b2lkICgqZm9jdXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9pZCAo
Km1vdXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9kb3duKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7CisgICAgdm9pZCAoKm1v
dXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9V
cCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CisgICAgdm9pZCAoKmtleV9kb3duKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOwor
ICAgIHZvaWQgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2
ZW50X0tleV9VcCAqZXYpOworfTsKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
TiAxVUwgLyoqIHRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZp
ZWxkIGluIHRoZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgKi8KKworLyoqCisgKiBJ
bml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoK
KyAqIEBwYXJhbSBzbWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBmb3IgdGhlICJi
YXNlIiBmaWVsZAorICogKEV2YXNfU21hcnRfQ2xhc3MpLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
VkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgor
ICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkg
e3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT059CisKKy8qKgor
ICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVj
dHVyZS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEwpCisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9uLgorICoKKyAq
IFNpbWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgd2lsbCBzZXQg
dmVyc2lvbiBmaWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0
ZXN0IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhlIHNwZWNpZmlj
IHZhbHVlLgorICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1lIGZpZWxkIGFz
IGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZhaWxhYmxlIHdo
aWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGdsb2JhbCEpCisgKiBh
bmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisKK3R5cGVkZWYg
c3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworLyoK
KyAqIFN0cnVjdHVyZSB0byBjb250YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQgaXMgdG8gYmUg
Y29uc2lkZXJlZAorICogcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRlbmRlZCBvciBj
aGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzCisgKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1YmxpYyBoZWFk
ZXIgZmlsZSkuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CisgICAgRXZhc19P
YmplY3RfU21hcnRfQ2xpcHBlZF9EYXRhIGJhc2U7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqIGFwaTsgICAgIC8qKjwgcmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFzcyBpbnN0YW5jZSAq
LworICAgIEV2YXNfT2JqZWN0KiBzZWxmOyAgICAgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5j
ZSB0byBvd25lciBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCAqYmFja2luZ19zdG9yZTsgICAg
ICAgICAgLyoqPCByZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZSAqLworICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdjsgICAgICAgICAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwg
YysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBo
OyAgICAgICAgICAgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KKyAgICB9IHZpZXc7CisgICAg
c3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgd2hhdCBjaGFuZ2VkIHNp
bmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6MTsKKyAg
ICAgICAgRWluYV9Cb29sIHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7Cisg
ICAgfSBjaGFuZ2VkOworfTsKKworRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMq
LCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsKK0VBUEkgV0tQYWdlUmVmIGV3a192aWV3
X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0Kik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisjZW5kaWYgLy8gZXdrX3ZpZXdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95846</attachid>
            <date>2011-06-02 19:26:41 -0700</date>
            <delta_ts>2011-06-02 19:59:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110603112631.patch</filename>
            <type>text/plain</type>
            <size>22926</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc5ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4OTVkMzQwMTYxODFmMWE0
OGM1Y2Q1NGQzZmUwNTdiOGFkMmE3YmIzLi4wODQ3NWVlNjc3Y2RkNDY4YTI3ZGI0ZDFiYTRlZTVi
ZmFmNmExZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMDIgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKIDIwMTEtMDYtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEzOTVkMjVm
YzFjY2E1NjIzZDA1N2QwMDM2MjdjOTgyMjgwYzNiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ1MiBA
QAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPEVj
b3JlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXci
OworCitzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CisgICAgUmVmUHRyPFdlYlZpZXc+
IHZpZXc7Cit9OworCisjaWZuZGVmIEVXS19UWVBFX0NIRUNLCisjZGVmaW5lIEVXS19WSUVXX1RZ
UEVfQ0hFQ0sobywgLi4uKSBkbyB7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBFV0tfVklF
V19UWVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZh
c19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFz
X1NtYXJ0KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAor
ICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAg
KCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQo
X3RtcF9zKTsgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykpIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVs
bCkiKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVX
X1RZUEVfU1RSKSkgeyAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICgiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwgICAg
XAorICAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCki
LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBFV0tfVklFV19UWVBFX1NUUiwg
X3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworI2RlZmluZSBFV0tf
VklFV19TRF9HRVQobywgcHRyKSBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisKKyNkZWZp
bmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgICBcCisg
ICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAg
XAorICAgIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVj
dCAlcCAoJXMpIiwgXAorICAgICAgICAgICAgICAgICBvLCBldmFzX29iamVjdF90eXBlX2dldChv
KSk7ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwdHIpIFwKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5wcml2CisK
KyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwdHIsIC4uLikgICAgICAg
ICAgIFwKKyAgICBpZiAoIXNkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgic21hcnQgZGF0YSBpcyBudWxsIik7
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9M
T0dfQ1JJVCgibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAgICAgICAg
ICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7IFwKKyAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJl
dHVybjsKKyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2hhbmdlZChzZC0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorewor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZp
ZXctPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNl
ZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT52aWV3
LT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQg
fCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54
LCBzZC0+dmlldy55fTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdoZWVsRXZlbnQgPSBOYXRp
dmVXZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+
aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBzZC0+dmll
dy55fTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBOYXRpdmVXZWJNb3Vz
ZUV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChtb3VzZUV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAg
ICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIE5h
dGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZw
b3NpdGlvbik7CisgICAgcHJpdi0+dmlldy0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNl
RXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldikKK3sK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1Bv
aW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYk1v
dXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbik7
CisgICAgcHJpdi0+dmlldy0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+
aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT52aWV3LT5wYWdlKCktPmhhbmRsZUtleWJv
YXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQorCisvLyBFdmVudCBIYW5k
bGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+
YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1vdXNlX3doZWVs
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CisgICAgc2Qt
PmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsK
KyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9p
ZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNf
RXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
Pm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24q
IGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9V
cCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYpOworfQorCitz
dGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYgPQorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIGlmICghcHJpdikgeworICAgICAgICBFSU5B
X0xPR19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQorewor
ICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+dmlldyA9IDA7Cisg
ICAgZnJlZShwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFz
X09iamVjdCogbykKK3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0
X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2
YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFz
cyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOworCisgICAgaWYgKCFzZCkgeworICAgICAgICBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAgICAg
ICAgaWYgKCFzZCkgeworICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAgfQorCisg
ICAgc2QtPnNlbGYgPSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3KHNkKTsK
KyAgICBzZC0+YXBpID0gYXBpOworCisgICAgaWYgKCFzZC0+cHJpdikgeworICAgICAgICBFSU5B
X0xPR19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwor
ICAgICAgICBmcmVlKHNkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYXJlbnRf
c2MuYWRkKG8pOworCisgICAgLy8gY3JlYXRlIGJhY2tpbmdfc3RvcmUgaW1hZ2UKKyAgICBzZC0+
YmFja2luZ19zdG9yZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKKyAg
ICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJTkFfRkFM
U0UpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3RvcmUs
IG8pOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOworCisjZGVmaW5l
IENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG8sIHMsIGMsIHNk
KQorICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19JTiwgX2V3a192aWV3X29uX2ZvY3Vz
X2luKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdfb25f
Zm9jdXNfb3V0KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfV0hFRUwsIF9ld2tf
dmlld19vbl9tb3VzZV93aGVlbCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX0RP
V04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tf
TU9VU0VfVVAsIF9ld2tfdmlld19vbl9tb3VzZV91cCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExC
QUNLX01PVVNFX01PVkUsIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKTsKKyAgICBDT05ORUNUKEVW
QVNfQ0FMTEJBQ0tfS0VZX0RPV04sIF9ld2tfdmlld19vbl9rZXlfZG93bik7CisgICAgQ09OTkVD
VChFVkFTX0NBTExCQUNLX0tFWV9VUCwgX2V3a192aWV3X29uX2tleV91cCk7CisjdW5kZWYgQ09O
TkVDVAorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBv
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIF9wYXJlbnRfc2MuZGVsKG8pOworICAgIF9ld2tf
dmlld19wcml2X2RlbChwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmFj
a2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2QtPmJh
Y2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5i
YWNraW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKKworICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBFSU5B
X1RSVUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBzZC0+Y2hhbmdl
ZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5n
ZWQuYW55ID0gRUlOQV9GQUxTRTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAm
eCwgJnksICZ3LCAmaCk7CisKKyAgICBpZiAocHJpdi0+dmlldyAmJiBzZC0+Y2hhbmdlZC5zaXpl
ICYmICgodyAhPSBzZC0+dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkpIHsKKyAgICAgICAg
cHJpdi0+dmlldy0+c2V0U2l6ZShJbnRTaXplKHcsIGgpKTsKKyAgICAgICAgc2QtPnZpZXcudyA9
IHc7CisgICAgICAgIHNkLT52aWV3LmggPSBoOworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5zaXpl
ID0gRUlOQV9GQUxTRTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0g
c2QtPnZpZXcueCkgfHwgKHkgIT0gc2QtPnZpZXcueSkpKSB7CisgICAgICAgIGV2YXNfb2JqZWN0
X21vdmUoc2QtPmJhY2tpbmdfc3RvcmUsIHgsIHkpOworICAgICAgICBzZC0+dmlldy54ID0geDsK
KyAgICAgICAgc2QtPnZpZXcueSA9IHk7CisgICAgfQorICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9u
ID0gRUlOQV9GQUxTRTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoZXZh
c19vYmplY3RfY2xpcGVlc19nZXQoc2QtPmJhc2UuY2xpcHBlcikpCisgICAgICAgIGV2YXNfb2Jq
ZWN0X3Nob3coc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFj
a2luZ19zdG9yZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9oaWRlKEV2YXNf
T2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgZXZhc19vYmpl
Y3RfaGlkZShzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNr
aW5nX3N0b3JlKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X3NldChFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChh
cGksIEVJTkFfRkFMU0UpOworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQKKyAgICAgICAgICAgICgi
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBl
Y3RlZC4iLAorICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2MuYWRkKSkKKyAgICAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOworCisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOworCisgICAgLy8gc2V0IEV2YXNfU21h
cnRfQ2xhc3MKKyAgICBhcGktPnNjLmFkZCA9IF9ld2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBp
LT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVsOworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tf
dmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2MucmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGkt
PnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9
IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7CisgICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdf
VFlQRV9TVFI7IC8qIHVzZWQgYnkgdHlwZSBjaGVja2luZyAqLworCisgICAgLy8gc2V0IEV3a19W
aWV3X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1
c19pbjsKKyAgICBhcGktPmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7Cisg
ICAgYXBpLT5tb3VzZV93aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBh
cGktPm1vdXNlX2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1v
dXNlX3VwID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9
IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworc3RhdGljIGlubGluZSBFdmFzX1Nt
YXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCit7CisgICAgc3RhdGljIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJT
SU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CisKKyAg
ICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CisgICAgICAgIGV3a192aWV3X3NtYXJ0X3Nl
dCgmYXBpKTsKKyAgICAgICAgc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmYXBpLnNjKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc21hcnQ7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfdmlld19h
ZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKK3sKKyAgICBFdmFzX09iamVjdCogbyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChl
LCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghbykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisKKyAgICBwcml2LT52aWV3ID0gV2ViVmlldzo6
Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNr
aW5nX3N0b3JlKTsKKyAgICBpZiAoIXByaXYtPnZpZXcpIHsKKyAgICAgICAgZXZhc19vYmplY3Rf
ZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbzsKK30KKwor
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAg
IHJldHVybiB0b0FQSShwcml2LT52aWV3LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE4MDMwOTI2MzM3YjExYTdm
MDA3ZjI5YjUyMGFjYTAyMTg2MTU2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Zp
ZXdfaAorI2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFy
dF9EYXRhOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzOworCisvKioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4g
Ynkgc3ViLWNsYXNzZXMuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAg
IEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBj
aGFuZ2VkLiAqLworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8vIGV2ZW50IGhh
bmRsaW5nOgorICAgIC8vICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0
aG9kIGlmIGRlc2lyZWQKKyAgICB2b2lkICgqZm9jdXNfaW4pKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkKTsKKyAgICB2b2lkICgqZm9jdXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7Cisg
ICAgdm9pZCAoKm1vdXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9kb3duKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7CisgICAg
dm9pZCAoKm1vdXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9VcCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CisgICAgdm9pZCAoKmtl
eV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biAqZXYpOworICAgIHZvaWQgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworfTsKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiAxVUwgLyoqIHRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2
ZXJzaW9uIGZpZWxkIGluIHRoZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgKi8KKwor
LyoqCisgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0
dXJlLgorICoKKyAqIEBwYXJhbSBzbWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBm
b3IgdGhlICJiYXNlIiBmaWVsZAorICogKEV2YXNfU21hcnRfQ2xhc3MpLgorICoKKyAqIEBzZWUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTgorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xh
c3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT059
CisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVS
U0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9D
TEFTU19JTklUX05VTEwpCisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9u
LgorICoKKyAqIFNpbWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQg
d2lsbCBzZXQgdmVyc2lvbiBmaWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVs
ZCkgdG8gbGF0ZXN0IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhl
IHNwZWNpZmljIHZhbHVlLgorICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1l
IGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZh
aWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGdsb2Jh
bCEpCisgKiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9W
RVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisK
K3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhOworLyoKKyAqIFN0cnVjdHVyZSB0byBjb250YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQg
aXMgdG8gYmUgY29uc2lkZXJlZAorICogcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRl
bmRlZCBvciBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzCisgKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1
YmxpYyBoZWFkZXIgZmlsZSkuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7Cisg
ICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9EYXRhIGJhc2U7CisgICAgY29uc3QgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MqIGFwaTsgLyoqPCByZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3Rh
bmNlICovCisgICAgRXZhc19PYmplY3QqIHNlbGY7IC8qKjwgcmVmZXJlbmNlIHRvIG93bmVyIG9i
amVjdCAqLworICAgIEV2YXNfT2JqZWN0ICpiYWNraW5nX3N0b3JlOyAvKio8IHJlZmVyZW5jZSB0
byBiYWNraW5nIHN0b3JlICovCisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2OyAvKio8
IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAg
ICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAqLwor
ICAgIH0gdmlldzsKKyAgICBzdHJ1Y3QgeyAvKio8IHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNt
YXJ0X2NhbGN1bGF0ZSAqLworICAgICAgICBFaW5hX0Jvb2wgYW55OjE7CisgICAgICAgIEVpbmFf
Qm9vbCBzaXplOjE7CisgICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOworICAgIH0gY2hhbmdl
ZDsKK307CisKK0VBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiwgV0tDb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZik7CitFQVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChF
dmFzX09iamVjdCopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8v
IGV3a192aWV3X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95847</attachid>
            <date>2011-06-02 19:59:40 -0700</date>
            <delta_ts>2011-06-06 21:30:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110603115929.patch</filename>
            <type>text/plain</type>
            <size>23012</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc5ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4OTVkMzQwMTYxODFmMWE0
OGM1Y2Q1NGQzZmUwNTdiOGFkMmE3YmIzLi4wODQ3NWVlNjc3Y2RkNDY4YTI3ZGI0ZDFiYTRlZTVi
ZmFmNmExZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMDIgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKIDIwMTEtMDYtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGEzOTVkMjVm
YzFjY2E1NjIzZDA1N2QwMDM2MjdjOTgyMjgwYzNiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ1MiBA
QAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPEVj
b3JlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXci
OworCitzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CisgICAgUmVmUHRyPFdlYlZpZXc+
IHZpZXc7Cit9OworCisjaWZuZGVmIEVXS19UWVBFX0NIRUNLCisjZGVmaW5lIEVXS19WSUVXX1RZ
UEVfQ0hFQ0sobywgLi4uKSBkbyB7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBFV0tfVklF
V19UWVBFX0NIRUNLKG8sIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZh
c19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFz
X1NtYXJ0KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAor
ICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAg
KCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQo
X3RtcF9zKTsgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykpIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVs
bCkiKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVX
X1RZUEVfU1RSKSkgeyAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICgiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwgICAg
XAorICAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCki
LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBFV0tfVklFV19UWVBFX1NUUiwg
X3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworI2RlZmluZSBFV0tf
VklFV19TRF9HRVQobywgcHRyKSBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisKKyNkZWZp
bmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgICBcCisg
ICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAg
XAorICAgIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVj
dCAlcCAoJXMpIiwgXAorICAgICAgICAgICAgICAgICBvLCBldmFzX29iamVjdF90eXBlX2dldChv
KSk7ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwdHIpIFwKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5wcml2CisK
KyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwdHIsIC4uLikgICAgICAg
ICAgIFwKKyAgICBpZiAoIXNkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgic21hcnQgZGF0YSBpcyBudWxsIik7
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9M
T0dfQ1JJVCgibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAgICAgICAg
ICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7IFwKKyAg
ICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJl
dHVybjsKKyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2hhbmdlZChzZC0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorewor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZp
ZXctPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNl
ZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT52aWV3
LT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQg
fCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54
LCBzZC0+dmlldy55fTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdoZWVsRXZlbnQgPSBOYXRp
dmVXZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+
aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNk
LCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBzZC0+dmll
dy55fTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBOYXRpdmVXZWJNb3Vz
ZUV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChtb3VzZUV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAg
ICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIE5h
dGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZw
b3NpdGlvbik7CisgICAgcHJpdi0+dmlldy0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNl
RXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldikKK3sK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1Bv
aW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYk1v
dXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbik7
CisgICAgcHJpdi0+dmlldy0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+
aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT52aWV3LT5wYWdlKCktPmhhbmRsZUtleWJv
YXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQorCisvLyBFdmVudCBIYW5k
bGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+
YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1vdXNlX3doZWVs
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CisgICAgc2Qt
PmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsK
KyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9p
ZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNf
RXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
Pm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24q
IGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9V
cCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYpOworfQorCitz
dGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYgPQorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIGlmICghcHJpdikgeworICAgICAgICBFSU5B
X0xPR19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQorewor
ICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+dmlldyA9IDA7Cisg
ICAgZnJlZShwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFz
X09iamVjdCogbykKK3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0
X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2
YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFz
cyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBFV0tfVklFV19T
RF9HRVQobywgc2QpOworCisgICAgaWYgKCFzZCkgeworICAgICAgICBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAgICAg
ICAgaWYgKCFzZCkgeworICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAgfQorCisg
ICAgc2QtPnNlbGYgPSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3KHNkKTsK
KyAgICBzZC0+YXBpID0gYXBpOworCisgICAgaWYgKCFzZC0+cHJpdikgeworICAgICAgICBFSU5B
X0xPR19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwor
ICAgICAgICBmcmVlKHNkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYXJlbnRf
c2MuYWRkKG8pOworCisgICAgLy8gY3JlYXRlIGJhY2tpbmdfc3RvcmUgaW1hZ2UKKyAgICBzZC0+
YmFja2luZ19zdG9yZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKKyAg
ICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJTkFfRkFM
U0UpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3RvcmUs
IG8pOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOworCisjZGVmaW5l
IENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG8sIHMsIGMsIHNk
KQorICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19JTiwgX2V3a192aWV3X29uX2ZvY3Vz
X2luKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdfb25f
Zm9jdXNfb3V0KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfV0hFRUwsIF9ld2tf
dmlld19vbl9tb3VzZV93aGVlbCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX0RP
V04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tf
TU9VU0VfVVAsIF9ld2tfdmlld19vbl9tb3VzZV91cCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExC
QUNLX01PVVNFX01PVkUsIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKTsKKyAgICBDT05ORUNUKEVW
QVNfQ0FMTEJBQ0tfS0VZX0RPV04sIF9ld2tfdmlld19vbl9rZXlfZG93bik7CisgICAgQ09OTkVD
VChFVkFTX0NBTExCQUNLX0tFWV9VUCwgX2V3a192aWV3X29uX2tleV91cCk7CisjdW5kZWYgQ09O
TkVDVAorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBv
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIF9wYXJlbnRfc2MuZGVsKG8pOworICAgIF9ld2tf
dmlld19wcml2X2RlbChwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmFj
a2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2QtPmJh
Y2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5i
YWNraW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKKworICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBFSU5B
X1RSVUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBzZC0+Y2hhbmdl
ZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5n
ZWQuYW55ID0gRUlOQV9GQUxTRTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAm
eCwgJnksICZ3LCAmaCk7CisKKyAgICBpZiAocHJpdi0+dmlldyAmJiBzZC0+Y2hhbmdlZC5zaXpl
ICYmICgodyAhPSBzZC0+dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkpIHsKKyAgICAgICAg
cHJpdi0+dmlldy0+c2V0U2l6ZShJbnRTaXplKHcsIGgpKTsKKyAgICAgICAgc2QtPnZpZXcudyA9
IHc7CisgICAgICAgIHNkLT52aWV3LmggPSBoOworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5zaXpl
ID0gRUlOQV9GQUxTRTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0g
c2QtPnZpZXcueCkgfHwgKHkgIT0gc2QtPnZpZXcueSkpKSB7CisgICAgICAgIGV2YXNfb2JqZWN0
X21vdmUoc2QtPmJhY2tpbmdfc3RvcmUsIHgsIHkpOworICAgICAgICBzZC0+dmlldy54ID0geDsK
KyAgICAgICAgc2QtPnZpZXcueSA9IHk7CisgICAgfQorICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9u
ID0gRUlOQV9GQUxTRTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoZXZh
c19vYmplY3RfY2xpcGVlc19nZXQoc2QtPmJhc2UuY2xpcHBlcikpCisgICAgICAgIGV2YXNfb2Jq
ZWN0X3Nob3coc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFj
a2luZ19zdG9yZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9oaWRlKEV2YXNf
T2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgZXZhc19vYmpl
Y3RfaGlkZShzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNr
aW5nX3N0b3JlKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X3NldChFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChh
cGksIEVJTkFfRkFMU0UpOworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFS
VF9DTEFTU19WRVJTSU9OKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQKKyAgICAgICAgICAgICgi
RXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBl
Y3RlZC4iLAorICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2MuYWRkKSkKKyAgICAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOworCisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOworCisgICAgLy8gc2V0IEV2YXNfU21h
cnRfQ2xhc3MKKyAgICBhcGktPnNjLmFkZCA9IF9ld2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBp
LT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVsOworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tf
dmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2MucmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGkt
PnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9
IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7CisgICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdf
VFlQRV9TVFI7IC8qIHVzZWQgYnkgdHlwZSBjaGVja2luZyAqLworCisgICAgLy8gc2V0IEV3a19W
aWV3X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1
c19pbjsKKyAgICBhcGktPmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7Cisg
ICAgYXBpLT5tb3VzZV93aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBh
cGktPm1vdXNlX2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1v
dXNlX3VwID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9
IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworc3RhdGljIGlubGluZSBFdmFzX1Nt
YXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCit7CisgICAgc3RhdGljIEV3a19W
aWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJT
SU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CisKKyAg
ICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CisgICAgICAgIGV3a192aWV3X3NtYXJ0X3Nl
dCgmYXBpKTsKKyAgICAgICAgc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmYXBpLnNjKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc21hcnQ7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfdmlld19h
ZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKK3sKKyAgICBFdmFzX09iamVjdCogbyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChl
LCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghbykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisKKyAgICBwcml2LT52aWV3ID0gV2ViVmlldzo6
Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNr
aW5nX3N0b3JlKTsKKyAgICBpZiAoIXByaXYtPnZpZXcpIHsKKyAgICAgICAgZXZhc19vYmplY3Rf
ZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbzsKK30KKwor
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAg
IHJldHVybiB0b0FQSShwcml2LT52aWV3LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY1YjFiODFjYzM4NjdmYmY0
YjhlYWRmZTExNWZjNWJlMzRkYWRjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Zp
ZXdfaAorI2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFy
dF9EYXRhOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzOworCisvKioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4g
Ynkgc3ViLWNsYXNzZXMuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAg
IEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBj
aGFuZ2VkLiAqLworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8qIGV2ZW50IGhh
bmRsaW5nOgorICAgICAgIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRo
b2QgaWYgZGVzaXJlZCAqLworICAgIHZvaWQgKCpmb2N1c19pbikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpOworICAgIHZvaWQgKCpmb2N1c19vdXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsK
KyAgICB2b2lkICgqbW91c2Vfd2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsICpldik7CisgICAgdm9pZCAoKm1vdXNlX2Rvd24pKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KTsKKyAg
ICB2b2lkICgqbW91c2VfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1VwICpldik7CisgICAgdm9pZCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAgICB2b2lkICgq
a2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duICpldik7CisgICAgdm9pZCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7Cit9OworI2RlZmluZSBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OIDFVTCAvKiogdGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhl
IHZlcnNpb24gZmllbGQgaW4gdGhlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSAqLwor
CisvKioKKyAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1
Y3R1cmUuCisgKgorICogQHBhcmFtIHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNl
IGZvciB0aGUgImJhc2UiIGZpZWxkCisgKiAoRXZhc19TbWFydF9DbGFzcykuCisgKgorICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFN
RV9WRVJTSU9OCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9j
bGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
Tn0KKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRf
Q2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9W
RVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJU
X0NMQVNTX0lOSVRfTlVMTCkKKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUg
RXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlIGFuZCBzZXQKKyAqIG5hbWUgYW5kIHZlcnNp
b24uCisgKgorICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwsIGJ1
dCB3aWxsIHNldCB2ZXJzaW9uIGZpZWxkIG9mCisgKiBFdmFzX1NtYXJ0X0NsYXNzIChiYXNlIGZp
ZWxkKSB0byBsYXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OIGFuZCBuYW1lCisgKiB0byB0
aGUgc3BlY2lmaWMgdmFsdWUuCisgKgorICogSXQgd2lsbCBrZWVwIGEgcmVmZXJlbmNlIHRvIG5h
bWUgZmllbGQgYXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBpcywKKyAqIG5hbWUgbXVzdCBiZSBh
dmFpbGFibGUgd2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2VkIChoaW50OiBzdGF0aWMgb3IgZ2xv
YmFsISkKKyAqIGFuZCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAqCisgKiBAc2VlIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
X1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRl
X0RhdGE7CisvKgorICogU3RydWN0dXJlIHRvIGNvbnRhaW4gaW50ZXJuYWwgVmlldyBkYXRhLCBp
dCBpcyB0byBiZSBjb25zaWRlcmVkCisgKiBwcml2YXRlIGJ5IHVzZXJzLCBidXQgbWF5IGJlIGV4
dGVuZGVkIG9yIGNoYW5nZWQgYnkgc3ViLWNsYXNzZXMKKyAqICh0aGF0J3Mgd2h5IGl0J3MgaW4g
cHVibGljIGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsK
KyAgICBFdmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFzZTsKKyAgICBjb25zdCBFd2tf
Vmlld19TbWFydF9DbGFzcyogYXBpOyAvKio8IHJlZmVyZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5z
dGFuY2UgKi8KKyAgICBFdmFzX09iamVjdCogc2VsZjsgICAgICAgICAgICAgICAvKio8IHJlZmVy
ZW5jZSB0byBvd25lciBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCogYmFja2luZ19zdG9yZTsg
ICAgICAvKio8IHJlZmVyZW5jZSB0byBiYWNraW5nIHN0b3JlICovCisgICAgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwcml2OyAgICAgLyoqPCBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGMrKyBz
dHVmZiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsgICAg
ICAgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KKyAgICB9IHZpZXc7CisgICAgc3RydWN0IHsg
ICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFy
dF9jYWxjdWxhdGUgKi8KKyAgICAgICAgRWluYV9Cb29sIGFueToxOworICAgICAgICBFaW5hX0Jv
b2wgc2l6ZToxOworICAgICAgICBFaW5hX0Jvb2wgcG9zaXRpb246MTsKKyAgICB9IGNoYW5nZWQ7
Cit9OworCitFQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZik7CitFQVBJIFdLUGFn
ZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogZXdrX3ZpZXdfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96196</attachid>
            <date>2011-06-06 21:30:53 -0700</date>
            <delta_ts>2011-06-09 01:49:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110607133051.patch</filename>
            <type>text/plain</type>
            <size>23383</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0N2Q0NDVlZjZiNTA1NDdj
NThmNTVkNzhlNTQyMzhmNTVlNmVlZTBhLi43OThlYjRmNGFiZWMyNmFkYjc0Nzk1ZmY5YjVmNDZi
NjY3MTBmODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMDYgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKIDIwMTEtMDYtMDYgIEpvaG4gU3VsbGl2YW4gIDxzdWxsaXZhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2I1ODQ2
NDY2MGM0MTNhMGI1ZGVlYjdjMjgyOGE5YWI0YWEwNGFjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDcw
IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5h
dGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVkZSA8
RWNvcmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitzdGF0aWMgY29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmll
dyI7CisKK3N0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKKyAgICBSZWZQdHI8V2ViVmll
dz4gdmlldzsKK307CisKKyNpZm5kZWYgRVdLX1RZUEVfQ0hFQ0sKKyNkZWZpbmUgRVdLX1ZJRVdf
VFlQRV9DSEVDSyhvLCAuLi4pIGRvIHsgfSB3aGlsZSAoMCkKKyNlbHNlCisjZGVmaW5lIEVXS19W
SUVXX1RZUEVfQ0hFQ0sobywgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBl
dmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IEV2
YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICBc
CisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKCIl
cCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dl
dChfdG1wX3MpOyBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3NjKSkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19DUklU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihu
dWxsKSIpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gX19WQV9BUkdT
X187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJ
RVdfVFlQRV9TVFIpKSB7ICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgKCIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCAg
ICBcCisgICAgICAgICAgICAgICAgIG8sIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxs
KSIsICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIEVXS19WSUVXX1RZUEVfU1RS
LCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1
cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisjZGVmaW5lIEVX
S19WSUVXX1NEX0dFVChvLCBwdHIpIFwKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKworI2Rl
ZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAgICAgIFwK
KyAgICBFV0tfVklFV19UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAg
ICBcCisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgibm8gc21hcnQgZGF0YSBmb3Igb2Jq
ZWN0ICVwICglcykiLCBcCisgICAgICAgICAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0
KG8pKTsgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHB0cikgXAorICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHRyID0gc2QtPnByaXYK
KworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHB0ciwgLi4uKSAgICAg
ICAgICAgXAorICAgIGlmICghc2QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJzbWFydCBkYXRhIGlzIG51bGwi
KTsgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVXS19WSUVXX1BSSVZfR0VUKHNk
LCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcHRyKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5B
X0xPR19DUklUKCJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgXAorICAgICAg
ICAgICAgICAgICBzZC0+c2VsZiwgZXZhc19vYmplY3RfdHlwZV9nZXQoc2QtPnNlbGYpKTsgXAor
ICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKKyAgICAgICAg
cmV0dXJuOworICAgIHNkLT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jaGFuZ2VkKHNkLT5zZWxmKTsKK30KKworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGlu
ZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+
dmlldy0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1
c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQorewor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZp
ZXctPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNl
ZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3
LngsIHNkLT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgd2hlZWxFdmVudCA9IE5h
dGl2ZVdlYldoZWVsRXZlbnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+dmlldy0+cGFnZSgp
LT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9Eb3duKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52
aWV3Lnl9OworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1v
dXNlRXZlbnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+dmlldy0+cGFnZSgpLT5oYW5kbGVN
b3VzZUV2ZW50KG1vdXNlRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
bW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKwor
ICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAg
TmF0aXZlV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gTmF0aXZlV2ViTW91c2VFdmVudChldiwg
JnBvc2l0aW9uKTsKKyAgICBwcml2LT52aWV3LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQobW91
c2VFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQor
eworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNf
UG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgTmF0aXZlV2Vi
TW91c2VFdmVudCBtb3VzZUV2ZW50ID0gTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9u
KTsKKyAgICBwcml2LT52aWV3LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+dmlldy0+cGFnZSgp
LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXYpKTsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnZpZXctPnBhZ2UoKS0+aGFuZGxlS2V5
Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKKy8vIEV2ZW50IEhh
bmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaS0+Zm9jdXNfaW4pOworICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPmZvY3VzX291dCk7CisgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CisgICAgc2QtPmFwaS0+bW91c2Vfd2hl
ZWwoc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9p
ZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7Cisg
ICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24qKWV2
ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKKyAgICBz
ZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19v
bl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXAp
OworICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZh
c19FdmVudF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aS0+bW91c2VfbW92ZSk7CisgICAgc2QtPmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93
biogZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmtleV9kb3duKTsKKyAgICBzZC0+YXBpLT5rZXlfZG93bihzZCwgZXYpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5
X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmtleV91cCk7CisgICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7Cit9CisK
K3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfTlVMTDsKKworc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXpl
b2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIEVJ
TkFfTE9HX0NSSVQoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEiKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7
CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT52aWV3ID0gMDsK
KyAgICBmcmVlKHByaXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2
YXNfT2JqZWN0KiBvKQoreworICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmpl
Y3Rfc21hcnRfc21hcnRfZ2V0KG8pOworICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNjID0g
ZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0Ns
YXNzKiBhcGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIEVXS19WSUVX
X1NEX0dFVChvLCBzZCk7CisKKyAgICBpZiAoIXNkKSB7CisgICAgICAgIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAg
ICAgICBpZiAoIXNkKSB7CisgICAgICAgICAgICBFSU5BX0xPR19DUklUKCJjb3VsZCBub3QgYWxs
b2NhdGUgRXdrX1ZpZXdfU21hcnRfRGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIHNkKTsKKyAgICB9CisK
KyAgICBzZC0+c2VsZiA9IG87CisgICAgc2QtPnByaXYgPSBfZXdrX3ZpZXdfcHJpdl9uZXcoc2Qp
OworICAgIHNkLT5hcGkgPSBhcGk7CisKKyAgICBpZiAoIXNkLT5wcml2KSB7CisgICAgICAgIEVJ
TkFfTE9HX0NSSVQoImNvdWxkIG5vdCBhbGxvY2F0ZSBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7
CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIDApOworICAgICAgICBmcmVl
KHNkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYXJlbnRfc2MuYWRkKG8pOwor
CisgICAgLy8gY3JlYXRlIGJhY2tpbmdfc3RvcmUgaW1hZ2UKKyAgICBzZC0+YmFja2luZ19zdG9y
ZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKKyAgICBldmFzX29iamVj
dF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJTkFfRkFMU0UpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3RvcmUsIG8pOworICAgIGV2
YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOworCisjZGVmaW5lIENPTk5FQ1Qocywg
YykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG8sIHMsIGMsIHNkKQorICAgIENPTk5F
Q1QoRVZBU19DQUxMQkFDS19GT0NVU19JTiwgX2V3a192aWV3X29uX2ZvY3VzX2luKTsKKyAgICBD
T05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KTsK
KyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfV0hFRUwsIF9ld2tfdmlld19vbl9tb3Vz
ZV93aGVlbCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmll
d19vbl9tb3VzZV9kb3duKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIF9l
d2tfdmlld19vbl9tb3VzZV91cCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX01P
VkUsIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tf
S0VZX0RPV04sIF9ld2tfdmlld19vbl9rZXlfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExC
QUNLX0tFWV9VUCwgX2V3a192aWV3X29uX2tleV91cCk7CisjdW5kZWYgQ09OTkVDVAorfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVX
S19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgaWYgKHNkKSB7CisgICAgICAgIGlmIChzZC0+cHJp
dikKKyAgICAgICAgICAgIF9ld2tfdmlld19wcml2X2RlbChzZC0+cHJpdik7CisgICAgICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIDApOworICAgICAgICBmcmVlKHNkKTsKKyAgICB9
CisKKyAgICBfcGFyZW50X3NjLmRlbChvKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVj
dF9yZXNpemUoc2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdl
X3NpemVfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFn
ZV9maWxsX3NldChzZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgdywgaCk7CisKKyAgICBzZC0+Y2hh
bmdlZC5zaXplID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QpOworCisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAg
X2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4obywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
dik7CisgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5nZWQuYW55ID0g
RUlOQV9GQUxTRTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAmeCwgJnksICZ3
LCAmaCk7CisKKyAgICBpZiAocHJpdi0+dmlldyAmJiBzZC0+Y2hhbmdlZC5zaXplICYmICgodyAh
PSBzZC0+dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkpIHsKKyAgICAgICAgcHJpdi0+dmll
dy0+c2V0U2l6ZShJbnRTaXplKHcsIGgpKTsKKyAgICAgICAgc2QtPnZpZXcudyA9IHc7CisgICAg
ICAgIHNkLT52aWV3LmggPSBoOworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5zaXplID0gRUlOQV9G
QUxTRTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5wb3NpdGlvbiAmJiAoKHggIT0gc2QtPnZpZXcu
eCkgfHwgKHkgIT0gc2QtPnZpZXcueSkpKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc2Qt
PmJhY2tpbmdfc3RvcmUsIHgsIHkpOworICAgICAgICBzZC0+dmlldy54ID0geDsKKyAgICAgICAg
c2QtPnZpZXcueSA9IHk7CisgICAgfQorICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9G
QUxTRTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Nob3coRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBpZiAo
ZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc2QtPmJhc2UuY2xpcHBlcikpCisgICAgICAgIGV2YXNf
b2JqZWN0X3Nob3coc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+
YmFja2luZ19zdG9yZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9oaWRlKEV2
YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwor
CisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVj
dF9oaWRlKHNkLT5iYWNraW5nX3N0b3JlKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0
X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0UpOworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAh
PSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQK
KyAgICAgICAgICAgICgiRXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hp
bGUgJWx1IHdhcyBleHBlY3RlZC4iLAorICAgICAgICAgICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBF
V0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CisgICAgfQorCisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2MuYWRkKSkKKyAgICAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRfc2MpOworCisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOworCisgICAg
Ly8gc2V0IEV2YXNfU21hcnRfQ2xhc3MKKyAgICBhcGktPnNjLmFkZCA9IF9ld2tfdmlld19zbWFy
dF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVsOworICAgIGFwaS0+
c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2MucmVzaXplID0gX2V3
a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdrX3ZpZXdfc21hcnRf
c2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsKKyAgICBhcGkt
PnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7CisgICAgYXBpLT5zYy5k
YXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8qIHVzZWQgYnkgdHlwZSBjaGVja2luZyAqLworCisg
ICAgLy8gc2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tf
dmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGktPmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFy
dF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3Vz
ZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93
bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFw
aS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5
X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdr
X3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30KKworc3RhdGlj
IGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCit7Cisg
ICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBz
bWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CisgICAgICAgIGV3
a192aWV3X3NtYXJ0X3NldCgmYXBpKTsKKyAgICAgICAgc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNz
X25ldygmYXBpLnNjKTsKKyAgICB9CisKKyAgICByZXR1cm4gc21hcnQ7Cit9CisKK0V2YXNfT2Jq
ZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBFdmFzX09iamVjdCogbyA9IGV2YXNfb2Jq
ZWN0X3NtYXJ0X2FkZChlLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICgh
bykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAg
IGlmICghc2QpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG8pOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAgaWYgKCFw
cml2KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgcHJpdi0+dmlldyA9IFdlYlZpZXc6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJl
ZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBzZC0+YmFja2luZ19zdG9yZSk7CisgICAgaWYgKCFw
cml2LT52aWV3KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgcmV0dXJuIG87Cit9CisKK1dLUGFnZVJlZiBld2tfdmlld19wYWdl
X2dldChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOwor
CisgICAgcmV0dXJuIHRvQVBJKHByaXYtPnZpZXctPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjgwOTI0MGIzYTc3
Nzc0NzU2YzkwMTFmNDE4NmNhZTU3MDUxMGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMCwwICsxLDEyMCBAQAorLyoK
KyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBl
d2tfdmlld19oCisjZGVmaW5lIGV3a192aWV3X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3
X1NtYXJ0X0RhdGE7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3M7CisKKy8qKgorICogRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJp
ZGRlbiBieSBzdWItY2xhc3Nlcy4KKyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7
CisgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRv
IGJlIGNoYW5nZWQuICovCisgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOworCisgICAgLyogZXZl
bnQgaGFuZGxpbmc6CisgICAgICAgLSBpZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50
IG1ldGhvZCBpZiBkZXNpcmVkICovCisgICAgdm9pZCAoKmZvY3VzX2luKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCk7CisgICAgdm9pZCAoKmZvY3VzX291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QpOworICAgIHZvaWQgKCptb3VzZV93aGVlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNv
bnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2KTsKKyAgICB2b2lkICgqbW91c2VfZG93biko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYp
OworICAgIHZvaWQgKCptb3VzZV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfVXAgKmV2KTsKKyAgICB2b2lkICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOworICAgIHZv
aWQgKCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X0Rvd24gKmV2KTsKKyAgICB2b2lkICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAgKmV2KTsKK307CisjZGVmaW5lIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04gMVVMIC8qKiB0aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50
byB0aGUgdmVyc2lvbiBmaWVsZCBpbiB0aGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJl
ICovCisKKy8qKgorICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZS4KKyAqCisgKiBAcGFyYW0gc21hcnRfY2xhc3NfaW5pdCBpbml0aWFsaXplciB0
byB1c2UgZm9yIHRoZSAiYmFzZSIgZmllbGQKKyAqIChFdmFzX1NtYXJ0X0NsYXNzKS4KKyAqCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OQU1FX1ZFUlNJT04KKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNt
YXJ0X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorCisvKioKKyAqIEluaXRpYWxpemVyIHRv
IHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVAorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMKQorCisvKioKKyAq
IEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1
cmUgYW5kIHNldAorICogbmFtZSBhbmQgdmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YK
KyAqIEV2YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NM
QVNTX1ZFUlNJT04gYW5kIG5hbWUKKyAqIHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqCisgKiBJ
dCB3aWxsIGtlZXAgYSByZWZlcmVuY2UgdG8gbmFtZSBmaWVsZCBhcyBhICJjb25zdCBjaGFyICoi
LCB0aGF0IGlzLAorICogbmFtZSBtdXN0IGJlIGF2YWlsYWJsZSB3aGlsZSB0aGUgc3RydWN0dXJl
IGlzIHVzZWQgKGhpbnQ6IHN0YXRpYyBvciBnbG9iYWwhKQorICogYW5kIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04obmFtZSkgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NM
QVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIEV3a19WaWV3X1ByaXZhdGVfRGF0YTsKKy8qCisgKiBTdHJ1Y3R1cmUgdG8g
Y29udGFpbiBpbnRlcm5hbCBWaWV3IGRhdGEsIGl0IGlzIHRvIGJlIGNvbnNpZGVyZWQKKyAqIHBy
aXZhdGUgYnkgdXNlcnMsIGJ1dCBtYXkgYmUgZXh0ZW5kZWQgb3IgY2hhbmdlZCBieSBzdWItY2xh
c3NlcworICogKHRoYXQncyB3aHkgaXQncyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICovCitz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBw
ZWRfRGF0YSBiYXNlOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGk7IC8qKjwg
cmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFzcyBpbnN0YW5jZSAqLworICAgIEV2YXNfT2JqZWN0KiBz
ZWxmOyAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlIHRvIG93bmVyIG9iamVjdCAqLworICAg
IEV2YXNfT2JqZWN0KiBiYWNraW5nX3N0b3JlOyAgICAgIC8qKjwgcmVmZXJlbmNlIHRvIGJhY2tp
bmcgc3RvcmUgKi8KKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXY7ICAgICAvKio8IHNo
b3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAgICAg
ICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAgICAgICAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAq
LworICAgIH0gdmlldzsKKyAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAvKio8
IHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0IHNtYXJ0X2NhbGN1bGF0ZSAqLworICAgICAgICBFaW5h
X0Jvb2wgYW55OjE7CisgICAgICAgIEVpbmFfQm9vbCBzaXplOjE7CisgICAgICAgIEVpbmFfQm9v
bCBwb3NpdGlvbjoxOworICAgIH0gY2hhbmdlZDsKK307CisKK0VBUEkgRXZhc19PYmplY3QqIGV3
a192aWV3X2FkZChFdmFzKiBlLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmKTsKK0VBUEkgV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNf
T2JqZWN0KiBvKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiBl
d2tfdmlld19oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96561</attachid>
            <date>2011-06-09 01:50:11 -0700</date>
            <delta_ts>2011-06-09 06:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110609175008.patch</filename>
            <type>text/plain</type>
            <size>23469</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTFiN2U0YjE3NTcwYjlk
MDRiMjJhZTNmNTNhY2Q2NTVjNjU3Njc5Li5hNDk1NzExMjcxYzYyOGRiZDliYWYzNGQ2MTlmM2Q3
NzQxMTljNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMDkgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKIDIwMTEtMDYtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYyYTE4MGVlMWM3
NmY4OTA4NjdmMmNjZGRhMzNjOGQxM2JiYjg1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ2NyBAQAor
LyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1
ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRl
IDxFY29yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0YXRpYyBjb25zdCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9W
aWV3IjsKKworc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdl
Q2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBFdmFzX09iamVjdCogdG91Y2g7Cit9OworCisj
aWZuZGVmIEVXS19UWVBFX0NIRUNLCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgLi4u
KSBkbyB7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKG8s
IC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9n
ZXQobyk7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1wX3Mg
PSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgXAorICAgICAgICBpZiAoRUlO
QV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBz
bWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBf
dG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1Nt
YXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3RtcF9zKTsgXAorICAg
ICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVz
KSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAoRUlOQV9VTkxJS0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVXX1RZUEVfU1RSKSkgeyAg
ICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBu
b3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwgICAgXAorICAgICAgICAgICAg
ICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiLCAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0YSk7
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQobywg
cHRyKSBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisKKyNkZWZpbmUgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgICBcCisgICAgRVdLX1ZJRVdfVFlQ
RV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgXAorICAgIEVXS19WSUVX
X1NEX0dFVChvLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAo
IXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEVJTkFfTE9HX0NSSVQoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgXAor
ICAgICAgICAgICAgICAgICBvLCBldmFzX29iamVjdF90eXBlX2dldChvKSk7ICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpIFwKKyAg
ICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5wcml2CisKKyNkZWZpbmUgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwdHIsIC4uLikgICAgICAgICAgIFwKKyAgICBpZiAo
IXNkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRUlOQV9MT0dfQ1JJVCgic21hcnQgZGF0YSBpcyBudWxsIik7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgibm8gcHJp
dmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAgICAgICAgICAgICAgICAgc2QtPnNl
bGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7IFwKKyAgICAgICAgcmV0dXJuIF9f
VkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
KQoreworICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVybjsKKyAgICBzZC0+
Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChz
ZC0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBh
Z2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5w
YWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBX
ZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBz
ZC0+dmlldy55fTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IHdoZWVsRXZlbnQgPSBOYXRpdmVX
ZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBzZC0+
dmlldy55fTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBOYXRpdmVXZWJN
b3VzZUV2ZW50KGV2LCAmcG9zaXRpb24pOworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+
aGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50
X01vdXNlX1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9
OworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZl
bnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVN
b3VzZUV2ZW50KG1vdXNlRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
bW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Nb3ZlKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYp
CisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9Owor
ICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVNb3Vz
ZUV2ZW50KG1vdXNlRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5
X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24q
IGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAg
IHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlf
dXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikK
K3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2
LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChldikpOworfQorCisvLyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKKyAg
ICBzZC0+YXBpLT5mb2N1c19pbihzZCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9m
b2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19vdXQpOworICAgIHNk
LT5hcGktPmZvY3VzX291dChzZCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX1doZWVsKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vf
d2hlZWwpOworICAgIHNkLT5hcGktPm1vdXNlX3doZWVsKHNkLCBldik7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biog
ZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaS0+bW91c2VfZG93bik7CisgICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZXYp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVu
dF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9VcCopZXZlbnRfaW5mbzsKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsKKyAgICBzZC0+YXBpLT5tb3VzZV91cChz
ZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBk
YXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBF
dmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRf
aW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRh
KilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX21vdmUpOworICAgIHNkLT5h
cGktPm1vdXNlX21vdmUoc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tl
eV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9p
bmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rv
d24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7Cisg
ICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlf
VXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOworICAg
IHNkLT5hcGktPmtleV91cChzZCwgZXYpOworfQorCitzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBf
cGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CisKK3N0YXRpYyBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCkKK3sKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQorICAgICAgICAoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkp
OworICAgIGlmICghcHJpdikgeworICAgICAgICBFSU5BX0xPR19DUklUKCJjb3VsZCBub3QgYWxs
b2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwo
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAg
cmV0dXJuOworCisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51bGxwdHI7CisgICAgZnJlZShwcml2
KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykK
K3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0
X2dldChvKTsKKyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xh
c3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNv
bnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2Qp
OworCisgICAgaWYgKCFzZCkgeworICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilj
YWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgaWYgKCFzZCkg
eworICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3
X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAgfQorCisgICAgc2QtPnNlbGYg
PSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3KHNkKTsKKyAgICBzZC0+YXBp
ID0gYXBpOworCisgICAgaWYgKCFzZC0+cHJpdikgeworICAgICAgICBFSU5BX0xPR19DUklUKCJj
b3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICBldmFz
X29iamVjdF9zbWFydF9kYXRhX3NldChvLCAwKTsKKyAgICAgICAgZnJlZShzZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBfcGFyZW50X3NjLmFkZChvKTsKKworICAgIC8vIGNyZWF0
ZSBiYWNraW5nX3N0b3JlIGltYWdlCisgICAgc2QtPmJhY2tpbmdfc3RvcmUgPSBldmFzX29iamVj
dF9pbWFnZV9hZGQoc2QtPmJhc2UuZXZhcyk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFf
c2V0KHNkLT5iYWNraW5nX3N0b3JlLCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9zbWFy
dF9tZW1iZXJfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93
KHNkLT5iYWNraW5nX3N0b3JlKTsKKworI2RlZmluZSBDT05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0
X2V2ZW50X2NhbGxiYWNrX2FkZChvLCBzLCBjLCBzZCkKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJB
Q0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19pbik7CisgICAgQ09OTkVDVChFVkFTX0NB
TExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3X29uX2ZvY3VzX291dCk7CisgICAgQ09OTkVDVChF
VkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOworICAg
IENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93
bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91
c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdf
b25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBfZXdr
X3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfVVAsIF9l
d2tfdmlld19vbl9rZXlfdXApOworI3VuZGVmIENPTk5FQ1QKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIGlmIChzZCkgeworICAgICAgICBpZiAoc2QtPnByaXYpCisgICAgICAgICAg
ICBfZXdrX3ZpZXdfcHJpdl9kZWwoc2QtPnByaXYpOworICAgICAgICBldmFzX29iamVjdF9zbWFy
dF9kYXRhX3NldChvLCAwKTsKKyAgICAgICAgZnJlZShzZCk7CisgICAgfQorCisgICAgX3BhcmVu
dF9zYy5kZWwobyk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5i
YWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzZC0+
YmFja2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc2Qt
PmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgpOworCisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJ
TkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKwor
ICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFy
dF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0
ZShFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOworICAgIEV2YXNf
Q29vcmQgeCwgeSwgdywgaDsKKworICAgIHNkLT5jaGFuZ2VkLmFueSA9IEVJTkFfRkFMU0U7CisK
KyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQobywgJngsICZ5LCAmdywgJmgpOworCisgICAg
aWYgKHByaXYtPnBhZ2VDbGllbnQgJiYgc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZp
ZXcudykgfHwgKGggIT0gc2QtPnZpZXcuaCkpKSB7CisgICAgICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHcsIGgpLCBJbnRTaXplKCkp
OworICAgICAgICBzZC0+dmlldy53ID0gdzsKKyAgICAgICAgc2QtPnZpZXcuaCA9IGg7CisgICAg
fQorICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBFSU5BX0ZBTFNFOworCisgICAgaWYgKHNkLT5jaGFu
Z2VkLnBvc2l0aW9uICYmICgoeCAhPSBzZC0+dmlldy54KSB8fCAoeSAhPSBzZC0+dmlldy55KSkp
IHsKKyAgICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7Cisg
ICAgICAgIHNkLT52aWV3LnggPSB4OworICAgICAgICBzZC0+dmlldy55ID0geTsKKyAgICB9Cisg
ICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX0ZBTFNFOworfQorCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dldChz
ZC0+YmFzZS5jbGlwcGVyKSkKKyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFzZS5jbGlw
cGVyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9oaWRlKHNk
LT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X2hpZGUoc2QtPmJhY2tpbmdfc3RvcmUp
OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNz
KiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9G
QUxTRSk7CisKKyAgICBpZiAoYXBpLT52ZXJzaW9uICE9IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZF
UlNJT04pIHsKKyAgICAgICAgRUlOQV9MT0dfQ1JJVAorICAgICAgICAgICAgKCJFd2tfVmlld19T
bWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAlbHUgd2FzIGV4cGVjdGVkLiIsCisg
ICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICBpZiAoRUlOQV9V
TkxJS0VMWSghX3BhcmVudF9zYy5hZGQpKQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9jbGlw
cGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jbGlw
cGVkX3NtYXJ0X3NldCgmYXBpLT5zYyk7CisKKyAgICAvLyBzZXQgRXZhc19TbWFydF9DbGFzcwor
ICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0X2FkZDsKKyAgICBhcGktPnNjLmRlbCA9
IF9ld2tfdmlld19zbWFydF9kZWw7CisgICAgYXBpLT5zYy5tb3ZlID0gX2V3a192aWV3X3NtYXJ0
X21vdmU7CisgICAgYXBpLT5zYy5yZXNpemUgPSBfZXdrX3ZpZXdfc21hcnRfcmVzaXplOworICAg
IGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93OworICAgIGFwaS0+c2MuaGlkZSA9
IF9ld2tfdmlld19zbWFydF9oaWRlOworICAgIGFwaS0+c2MuY2FsY3VsYXRlID0gX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZTsKKyAgICBhcGktPnNjLmRhdGEgPSBFV0tfVklFV19UWVBFX1NUUjsg
LyogdXNlZCBieSB0eXBlIGNoZWNraW5nICovCisKKyAgICAvLyBzZXQgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MKKyAgICBhcGktPmZvY3VzX2luID0gX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luOworICAg
IGFwaS0+Zm9jdXNfb3V0ID0gX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dDsKKyAgICBhcGktPm1v
dXNlX3doZWVsID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsOworICAgIGFwaS0+bW91c2Vf
ZG93biA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duOworICAgIGFwaS0+bW91c2VfdXAgPSBf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfdXA7CisgICAgYXBpLT5tb3VzZV9tb3ZlID0gX2V3a192aWV3
X3NtYXJ0X21vdXNlX21vdmU7CisgICAgYXBpLT5rZXlfZG93biA9IF9ld2tfdmlld19zbWFydF9r
ZXlfZG93bjsKKyAgICBhcGktPmtleV91cCA9IF9ld2tfdmlld19zbWFydF9rZXlfdXA7CisKKyAg
ICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMgaW5saW5lIEV2YXNfU21hcnQqIF9ld2tf
dmlld19zbWFydF9jbGFzc19uZXcodm9pZCkKK3sKKyAgICBzdGF0aWMgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgYXBpID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04oIkV3a19W
aWV3Iik7CisgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0gMDsKKworICAgIGlmIChFSU5B
X1VOTElLRUxZKCFzbWFydCkpIHsKKyAgICAgICAgZXdrX3ZpZXdfc21hcnRfc2V0KCZhcGkpOwor
ICAgICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZhcGkuc2MpOworICAgIH0KKwor
ICAgIHJldHVybiBzbWFydDsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBl
LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQor
eworICAgIEV2YXNfT2JqZWN0KiBvID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmll
d19zbWFydF9jbGFzc19uZXcoKSk7CisgICAgaWYgKCFvKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgaWYgKCFzZCkgeworICAgICAgICBldmFz
X29iamVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKKyAgICBpZiAoIXByaXYpIHsKKyAgICAgICAgZXZhc19vYmpl
Y3RfZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlQ2xp
ZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChw
YWdlR3JvdXBSZWYpLCBzZC0+YmFja2luZ19zdG9yZSk7CisKKyAgICByZXR1cm4gbzsKK30KKwor
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdiwgMCk7CisKKyAgICByZXR1cm4gdG9BUEkocHJpdi0+cGFnZUNsaWVu
dC0+cGFnZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcyODA5MjQwYjNhNzc3NzQ3NTZjOTAxMWY0MTg2Y2FlNTcwNTEwYmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a192aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdf
aAorCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKK3R5cGVkZWYgc3RydWN0
IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFzczsKKworLyoqCisgKiBF
d2sgdmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgorICovCitz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKKyAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAv
Kio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KKyAgICB1bnNpZ25l
ZCBsb25nIHZlcnNpb247CisKKyAgICAvKiBldmVudCBoYW5kbGluZzoKKyAgICAgICAtIGlmIG92
ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQgKi8KKyAgICB2
b2lkICgqZm9jdXNfaW4pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAgICB2b2lkICgqZm9j
dXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9pZCAoKm1vdXNlX3doZWVs
KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAq
ZXYpOworICAgIHZvaWQgKCptb3VzZV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7CisgICAgdm9pZCAoKm1vdXNlX3VwKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpOworICAg
IHZvaWQgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9Nb3ZlICpldik7CisgICAgdm9pZCAoKmtleV9kb3duKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOworICAgIHZvaWQgKCpr
ZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAq
ZXYpOworfTsKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwgLyoqIHRo
ZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkIGluIHRoZSBF
d2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgKi8KKworLyoqCisgKiBJbml0aWFsaXplciBm
b3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSBz
bWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBmb3IgdGhlICJiYXNlIiBmaWVsZAor
ICogKEV2YXNfU21hcnRfQ2xhc3MpLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICovCisjZGVmaW5l
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNz
X2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDB9CisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0
X0NsYXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
VkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgor
ICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFS
VF9DTEFTU19JTklUX05VTEwpCisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xl
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJz
aW9uLgorICoKKyAqIFNpbWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBi
dXQgd2lsbCBzZXQgdmVyc2lvbiBmaWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBm
aWVsZCkgdG8gbGF0ZXN0IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8g
dGhlIHNwZWNpZmljIHZhbHVlLgorICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBu
YW1lIGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUg
YXZhaWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGds
b2JhbCEpCisgKiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmlu
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkp
CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhOworLyoKKyAqIFN0cnVjdHVyZSB0byBjb250YWluIGludGVybmFsIFZpZXcgZGF0YSwg
aXQgaXMgdG8gYmUgY29uc2lkZXJlZAorICogcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBl
eHRlbmRlZCBvciBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzCisgKiAodGhhdCdzIHdoeSBpdCdzIGlu
IHB1YmxpYyBoZWFkZXIgZmlsZSkuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7
CisgICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9EYXRhIGJhc2U7CisgICAgY29uc3QgRXdr
X1ZpZXdfU21hcnRfQ2xhc3MqIGFwaTsgLyoqPCByZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGlu
c3RhbmNlICovCisgICAgRXZhc19PYmplY3QqIHNlbGY7ICAgICAgICAgICAgICAgLyoqPCByZWZl
cmVuY2UgdG8gb3duZXIgb2JqZWN0ICovCisgICAgRXZhc19PYmplY3QqIGJhY2tpbmdfc3RvcmU7
ICAgICAgLyoqPCByZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZSAqLworICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdjsgICAgIC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysg
c3R1ZmYgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7ICAg
ICAgIC8qKjwgbGFzdCB1c2VkIHZpZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21h
cnRfY2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6MTsKKyAgICAgICAgRWluYV9C
b29sIHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CisgICAgfSBjaGFuZ2Vk
OworfTsKKworRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOworRUFQSSBXS1Bh
Z2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qIGV3a192aWV3X2ggKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96580</attachid>
            <date>2011-06-09 06:26:24 -0700</date>
            <delta_ts>2011-06-09 18:31:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110609222623.patch</filename>
            <type>text/plain</type>
            <size>24556</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZTJmMTVkZDQ2ZjJlOTdm
Y2RhMThhODg2ZTAzZWNkMzRlNmI4MjQyLi5iZjIzYjkyMDk0NDE0YmRiNzQyZjZmYjA1MDAwZGRl
YWYzYmRmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcgQEAKIDIwMTEtMDYtMDkgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKKzIwMTEtMDYtMDkgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1
bmcuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIFBhZ2VDbGllbnRJbXBsIGFuZCBXZWJQYWdlUHJv
eHlFZmwgZm9yIGVmbCBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRmZTU1NTViOTEzMGFlOTRmMDliZThiYzZiNDY0Y2Yw
NTRhYjFiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ3MSBAQAorLyoKKyAgIENvcHlyaWdodCAoQykg
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5j
bHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgi
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25z
dCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKKworc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVu
dDsKKyAgICBFdmFzX09iamVjdCogdG91Y2g7Cit9OworCitpbnQgX2V3azJfbG9nX2RvbSA9IC0x
OworCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHJldCA9IDE7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIq
IF90bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2JqZWN0
X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5B
X1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgKF9ld2syX2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBl
IDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChf
dG1wX3MpOyAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3Nj
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2syX2xvZ19kb20s
ICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZ
KF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9TVFIpKSB7ICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2sy
X2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVw
KSEiLCBcCisgICAgICAgICAgICAgICAgIG8sIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihu
dWxsKSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIEVX
S19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQo
bywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAwOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyZXQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVj
dF9zbWFydF9kYXRhX2dldChvKTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHB0ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01f
Q1JJVChfZXdrMl9sb2dfZG9tLCAibm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBc
CisgICAgICAgICAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwor
I2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKSBcCisgICAgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwdHIgPSBzZC0+cHJpdgorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlm
ICghc2QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2Rv
bSwgInNtYXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChf
ZXdrMl9sb2dfZG9tLCAibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAg
ICAgICAgICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCit7CisgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKKyAgICAgICAgcmV0dXJuOworICAgIHNk
LT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2Vk
KHNkLT5zZWxmKTsKK30KKworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFn
ZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2Vi
UGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8
IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3Lngs
IHNkLT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgd2hlZWxFdmVudCA9IE5hdGl2
ZVdlYldoZWVsRXZlbnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFn
ZSgpLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9Eb3duKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNk
LT52aWV3Lnl9OworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQgbW91c2VFdmVudCA9IE5hdGl2ZVdl
Yk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbik7CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgp
LT5oYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfVXAqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwg
cHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwgc2QtPnZpZXcu
eX07CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gTmF0aXZlV2ViTW91c2VF
dmVudChldiwgJnBvc2l0aW9uKTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQobW91c2VFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX01vdmUqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJp
dikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwgc2QtPnZpZXcueX07
CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50ID0gTmF0aXZlV2ViTW91c2VFdmVu
dChldiwgJnBvc2l0aW9uKTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQobW91c2VFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9r
ZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisg
ICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQoZXYpKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tl
eV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2
KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KGV2KSk7Cit9CisKKy8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBldmVudF9pbmZvKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwor
ICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX291dCk7CisgICAg
c2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRf
TW91c2VfV2hlZWwqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3Vz
ZV93aGVlbCk7CisgICAgc2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2KTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3du
KiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBl
dik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXApOworICAgIHNkLT5hcGktPm1vdXNlX3Vw
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CisgICAgc2Qt
PmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
a2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVudF9LZXlf
RG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsK
KyAgICBzZC0+YXBpLT5rZXlfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBl
dmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tl
eV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7Cisg
ICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNz
IF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKKworc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAgIChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KSk7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xv
Z19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAg
IGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51
bGxwdHI7CisgICAgZnJlZShwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0
X2FkZChFdmFzX09iamVjdCogbykKK3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2
YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNz
KiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBF
V0tfVklFV19TRF9HRVQobywgc2QpOworCisgICAgaWYgKCFzZCkgeworICAgICAgICBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEp
KTsKKyAgICAgICAgaWYgKCFzZCkgeworICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3
azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9zZXQobywgc2QpOworICAgIH0KKworICAgIHNkLT5zZWxmID0gbzsKKyAgICBzZC0+cHJp
diA9IF9ld2tfdmlld19wcml2X25ldyhzZCk7CisgICAgc2QtPmFwaSA9IGFwaTsKKworICAgIGlm
ICghc2QtPnByaXYpIHsKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwg
ImNvdWxkIG5vdCBhbGxvY2F0ZSBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAgICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIDApOworICAgICAgICBmcmVlKHNkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYXJlbnRfc2MuYWRkKG8pOworCisgICAgLy8gY3Jl
YXRlIGJhY2tpbmdfc3RvcmUgaW1hZ2UKKyAgICBzZC0+YmFja2luZ19zdG9yZSA9IGV2YXNfb2Jq
ZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBo
YV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3RvcmUsIG8pOworICAgIGV2YXNfb2JqZWN0X3No
b3coc2QtPmJhY2tpbmdfc3RvcmUpOworCisjZGVmaW5lIENPTk5FQ1QocywgYykgZXZhc19vYmpl
Y3RfZXZlbnRfY2FsbGJhY2tfYWRkKG8sIHMsIGMsIHNkKQorICAgIENPTk5FQ1QoRVZBU19DQUxM
QkFDS19GT0NVU19JTiwgX2V3a192aWV3X29uX2ZvY3VzX2luKTsKKyAgICBDT05ORUNUKEVWQVNf
Q0FMTEJBQ0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KTsKKyAgICBDT05ORUNU
KEVWQVNfQ0FMTEJBQ0tfTU9VU0VfV0hFRUwsIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk7Cisg
ICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl9tb3VzZV9k
b3duKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl9t
b3VzZV91cCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX01PVkUsIF9ld2tfdmll
d19vbl9tb3VzZV9tb3ZlKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIF9l
d2tfdmlld19vbl9rZXlfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tFWV9VUCwg
X2V3a192aWV3X29uX2tleV91cCk7CisjdW5kZWYgQ09OTkVDVAorfQorCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dF
VChvLCBzZCk7CisgICAgaWYgKHNkKSB7CisgICAgICAgIGlmIChzZC0+cHJpdikKKyAgICAgICAg
ICAgIF9ld2tfdmlld19wcml2X2RlbChzZC0+cHJpdik7CisgICAgICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2RhdGFfc2V0KG8sIDApOworICAgICAgICBmcmVlKHNkKTsKKyAgICB9CisKKyAgICBfcGFy
ZW50X3NjLmRlbChvKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShF
dmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9yZXNpemUoc2Qt
PmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHNk
LT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldChz
ZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgdywgaCk7CisKKyAgICBzZC0+Y2hhbmdlZC5zaXplID0g
RUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwg
RXZhc19Db29yZCB5KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwor
CisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAgX2V3a192aWV3X3Nt
YXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3Vs
YXRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CisgICAgRXZh
c19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5nZWQuYW55ID0gRUlOQV9GQUxTRTsK
KworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAmeCwgJnksICZ3LCAmaCk7CisKKyAg
ICBpZiAocHJpdi0+cGFnZUNsaWVudCAmJiBzZC0+Y2hhbmdlZC5zaXplICYmICgodyAhPSBzZC0+
dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkpIHsKKyAgICAgICAgcHJpdi0+cGFnZUNsaWVu
dC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKEludFNpemUodywgaCksIEludFNpemUo
KSk7CisgICAgICAgIHNkLT52aWV3LncgPSB3OworICAgICAgICBzZC0+dmlldy5oID0gaDsKKyAg
ICB9CisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFfRkFMU0U7CisKKyAgICBpZiAoc2QtPmNo
YW5nZWQucG9zaXRpb24gJiYgKCh4ICE9IHNkLT52aWV3LngpIHx8ICh5ICE9IHNkLT52aWV3Lnkp
KSkgeworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5iYWNraW5nX3N0b3JlLCB4LCB5KTsK
KyAgICAgICAgc2QtPnZpZXcueCA9IHg7CisgICAgICAgIHNkLT52aWV3LnkgPSB5OworICAgIH0K
KyAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgaWYgKGV2YXNfb2JqZWN0X2NsaXBlZXNfZ2V0
KHNkLT5iYXNlLmNsaXBwZXIpKQorICAgICAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYXNlLmNs
aXBwZXIpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0X2hpZGUo
c2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFja2luZ19zdG9y
ZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9zZXQoRXdrX1ZpZXdfU21hcnRfQ2xh
c3MqIGFwaSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXBpLCBFSU5B
X0ZBTFNFKTsKKworICAgIGlmIChhcGktPnZlcnNpb24gIT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
VkVSU0lPTikgeworICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLAorICAg
ICAgICAgICAgICJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAl
bHUgd2FzIGV4cGVjdGVkLiIsCisgICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19W
SUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICB9CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5hZGQpKQorICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmYXBpLT5zYyk7CisKKyAgICAvLyBz
ZXQgRXZhc19TbWFydF9DbGFzcworICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0X2Fk
ZDsKKyAgICBhcGktPnNjLmRlbCA9IF9ld2tfdmlld19zbWFydF9kZWw7CisgICAgYXBpLT5zYy5t
b3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdmU7CisgICAgYXBpLT5zYy5yZXNpemUgPSBfZXdrX3Zp
ZXdfc21hcnRfcmVzaXplOworICAgIGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93
OworICAgIGFwaS0+c2MuaGlkZSA9IF9ld2tfdmlld19zbWFydF9oaWRlOworICAgIGFwaS0+c2Mu
Y2FsY3VsYXRlID0gX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZTsKKyAgICBhcGktPnNjLmRhdGEg
PSBFV0tfVklFV19UWVBFX1NUUjsgLyogdXNlZCBieSB0eXBlIGNoZWNraW5nICovCisKKyAgICAv
LyBzZXQgRXdrX1ZpZXdfU21hcnRfQ2xhc3MKKyAgICBhcGktPmZvY3VzX2luID0gX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luOworICAgIGFwaS0+Zm9jdXNfb3V0ID0gX2V3a192aWV3X3NtYXJ0X2Zv
Y3VzX291dDsKKyAgICBhcGktPm1vdXNlX3doZWVsID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3do
ZWVsOworICAgIGFwaS0+bW91c2VfZG93biA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duOwor
ICAgIGFwaS0+bW91c2VfdXAgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXA7CisgICAgYXBpLT5t
b3VzZV9tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7CisgICAgYXBpLT5rZXlfZG93
biA9IF9ld2tfdmlld19zbWFydF9rZXlfZG93bjsKKyAgICBhcGktPmtleV91cCA9IF9ld2tfdmll
d19zbWFydF9rZXlfdXA7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMgaW5s
aW5lIEV2YXNfU21hcnQqIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkKK3sKKyAgICBz
dGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgYXBpID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OQU1FX1ZFUlNJT04oIkV3a19WaWV3Iik7CisgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0
ID0gMDsKKworICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKKyAgICAgICAgZXdrX3Zp
ZXdfc21hcnRfc2V0KCZhcGkpOworICAgICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3
KCZhcGkuc2MpOworICAgIH0KKworICAgIHJldHVybiBzbWFydDsKK30KKworRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIGlmIChfZXdrMl9sb2dfZG9tIDwgMCkKKyAgICAg
ICAgX2V3azJfbG9nX2RvbSA9IGVpbmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiRXdrMl9WaWV3Iiwg
MCk7CisKKyAgICBFdmFzX09iamVjdCogbyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghbykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGlmICghc2QpIHsKKyAgICAgICAg
ZXZhc19vYmplY3RfZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIGV2YXNf
b2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdi0+cGFn
ZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0b0lt
cGwocGFnZUdyb3VwUmVmKSwgc2QtPmJhY2tpbmdfc3RvcmUpOworCisgICAgcmV0dXJuIG87Cit9
CisKK1dLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOworCisgICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VD
bGllbnQtPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjgwOTI0MGIzYTc3Nzc0NzU2YzkwMTFmNDE4NmNhZTU3MDUx
MGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdmlld19oCisjZGVmaW5lIGV3a192
aWV3X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7Cit0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CisKKy8qKgor
ICogRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KKyAq
Lworc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CisgICAgRXZhc19TbWFydF9DbGFzcyBz
YzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCisgICAgdW5z
aWduZWQgbG9uZyB2ZXJzaW9uOworCisgICAgLyogZXZlbnQgaGFuZGxpbmc6CisgICAgICAgLSBp
ZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVkICovCisg
ICAgdm9pZCAoKmZvY3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9pZCAo
KmZvY3VzX291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworICAgIHZvaWQgKCptb3VzZV93
aGVlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hl
ZWwgKmV2KTsKKyAgICB2b2lkICgqbW91c2VfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOworICAgIHZvaWQgKCptb3VzZV91cCko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KTsK
KyAgICB2b2lkICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOworICAgIHZvaWQgKCprZXlfZG93bikoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKKyAgICB2b2lk
ICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
VXAgKmV2KTsKK307CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMIC8q
KiB0aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZCBpbiB0
aGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlICovCisKKy8qKgorICogSW5pdGlhbGl6
ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAcGFy
YW0gc21hcnRfY2xhc3NfaW5pdCBpbml0aWFsaXplciB0byB1c2UgZm9yIHRoZSAiYmFzZSIgZmll
bGQKKyAqIChFdmFzX1NtYXJ0X0NsYXNzKS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04K
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KKyAqLworI2Rl
ZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9j
bGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwfQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJ
T04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNf
U01BUlRfQ0xBU1NfSU5JVF9OVUxMKQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3
aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgYW5kIHNldAorICogbmFtZSBhbmQg
dmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVM
TCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKKyAqIEV2YXNfU21hcnRfQ2xhc3MgKGJh
c2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNTX1ZFUlNJT04gYW5kIG5hbWUKKyAq
IHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqCisgKiBJdCB3aWxsIGtlZXAgYSByZWZlcmVuY2Ug
dG8gbmFtZSBmaWVsZCBhcyBhICJjb25zdCBjaGFyICoiLCB0aGF0IGlzLAorICogbmFtZSBtdXN0
IGJlIGF2YWlsYWJsZSB3aGlsZSB0aGUgc3RydWN0dXJlIGlzIHVzZWQgKGhpbnQ6IHN0YXRpYyBv
ciBnbG9iYWwhKQorICogYW5kIHdpbGwgbm90IGJlIG1vZGlmaWVkLgorICoKKyAqIEBzZWUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5h
bWUpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3X1By
aXZhdGVfRGF0YTsKKy8qCisgKiBTdHJ1Y3R1cmUgdG8gY29udGFpbiBpbnRlcm5hbCBWaWV3IGRh
dGEsIGl0IGlzIHRvIGJlIGNvbnNpZGVyZWQKKyAqIHByaXZhdGUgYnkgdXNlcnMsIGJ1dCBtYXkg
YmUgZXh0ZW5kZWQgb3IgY2hhbmdlZCBieSBzdWItY2xhc3NlcworICogKHRoYXQncyB3aHkgaXQn
cyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICovCitzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Rh
dGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBwZWRfRGF0YSBiYXNlOworICAgIGNvbnN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGk7IC8qKjwgcmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFz
cyBpbnN0YW5jZSAqLworICAgIEV2YXNfT2JqZWN0KiBzZWxmOyAgICAgICAgICAgICAgIC8qKjwg
cmVmZXJlbmNlIHRvIG93bmVyIG9iamVjdCAqLworICAgIEV2YXNfT2JqZWN0KiBiYWNraW5nX3N0
b3JlOyAgICAgIC8qKjwgcmVmZXJlbmNlIHRvIGJhY2tpbmcgc3RvcmUgKi8KKyAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXY7ICAgICAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwg
YysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBo
OyAgICAgICAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAqLworICAgIH0gdmlldzsKKyAgICBzdHJ1
Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAvKio8IHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0
IHNtYXJ0X2NhbGN1bGF0ZSAqLworICAgICAgICBFaW5hX0Jvb2wgYW55OjE7CisgICAgICAgIEVp
bmFfQm9vbCBzaXplOjE7CisgICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOworICAgIH0gY2hh
bmdlZDsKK307CisKK0VBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKTsKK0VBUEkg
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiBld2tfdmlld19oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96683</attachid>
            <date>2011-06-09 18:31:46 -0700</date>
            <delta_ts>2011-06-10 01:30:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110610103144.patch</filename>
            <type>text/plain</type>
            <size>24356</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZTJmMTVkZDQ2ZjJlOTdm
Y2RhMThhODg2ZTAzZWNkMzRlNmI4MjQyLi5iZjIzYjkyMDk0NDE0YmRiNzQyZjZmYjA1MDAwZGRl
YWYzYmRmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcgQEAKIDIwMTEtMDYtMDkgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBvZiBXZWJLaXQyIGVmbCBwb3J0
J3MgRXZhc19PYmplY3QKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21v
dXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAg
KF9ld2tfdmlld19zbWFydF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5
X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25f
bW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2Rl
bCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF9oaWRlKToKKyAgICAgICAgKGV3a192aWV3X3NtYXJ0X3NldCk6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KToKKyAgICAgICAgKGV3a192aWV3X2FkZCk6CisgICAgICAg
IChld2tfdmlld19wYWdlX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuaDogQWRkZWQuCisKKzIwMTEtMDYtMDkgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1
bmcuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIFBhZ2VDbGllbnRJbXBsIGFuZCBXZWJQYWdlUHJv
eHlFZmwgZm9yIGVmbCBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE0ODU5ZGRkM2YwMTNkMmM5OGU1YmViNjM0NGQ1MGYy
ZDZiNTQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ2NyBAQAorLyoKKyAgIENvcHlyaWdodCAoQykg
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5j
bHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgi
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25z
dCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKKworc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVu
dDsKKyAgICBFdmFzX09iamVjdCogdG91Y2g7Cit9OworCitpbnQgX2V3azJfbG9nX2RvbSA9IC0x
OworCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHJldCA9IDE7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIq
IF90bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2JqZWN0
X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5B
X1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgKF9ld2syX2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBl
IDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChf
dG1wX3MpOyAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3Nj
KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2syX2xvZ19kb20s
ICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZ
KF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9TVFIpKSB7ICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2sy
X2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVw
KSEiLCBcCisgICAgICAgICAgICAgICAgIG8sIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihu
dWxsKSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIEVX
S19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQo
bywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAwOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyZXQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVj
dF9zbWFydF9kYXRhX2dldChvKTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHB0ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01f
Q1JJVChfZXdrMl9sb2dfZG9tLCAibm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBc
CisgICAgICAgICAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwor
I2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKSBcCisgICAgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwdHIgPSBzZC0+cHJpdgorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlm
ICghc2QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2Rv
bSwgInNtYXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChf
ZXdrMl9sb2dfZG9tLCAibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAg
ICAgICAgICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QpCit7CisgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKKyAgICAgICAgcmV0dXJuOworICAgIHNk
LT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2Vk
KHNkLT5zZWxmKTsKK30KKworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFn
ZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2Vi
UGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8
IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3Lngs
IHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlV2hlZWxF
dmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30KKworc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNv
bnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmll
dy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmll
dy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2Qt
PnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5k
bGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+
aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQorCisvLyBFdmVu
dCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7Cit9
CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01v
dXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1vdXNl
X3doZWVsKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3du
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQor
eworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3du
KilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7Cisg
ICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVu
dF9Nb3VzZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNl
X3VwKTsKKyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCog
bywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0g
KEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGktPm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5
X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2
KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50
X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYpOwor
fQorCitzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFT
U19JTklUX05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19w
cml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYgPQorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwg
c2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIGlmICghcHJpdikgeworICAgICAg
ICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFsbG9jYXRlIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcHJpdjsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAgIHJldHVybjsK
KworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAgIGZyZWUocHJpdik7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCit7CisgICAg
Y29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7
CisgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChz
bWFydCk7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tf
Vmlld19TbWFydF9DbGFzcyopc2M7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAg
IGlmICghc2QpIHsKKyAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEs
IHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIGlmICghc2QpIHsKKyAgICAg
ICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2Nh
dGUgRXdrX1ZpZXdfU21hcnRfRGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIHNkKTsKKyAgICB9CisKKyAg
ICBzZC0+c2VsZiA9IG87CisgICAgc2QtPnByaXYgPSBfZXdrX3ZpZXdfcHJpdl9uZXcoc2QpOwor
ICAgIHNkLT5hcGkgPSBhcGk7CisKKyAgICBpZiAoIXNkLT5wcml2KSB7CisgICAgICAgIEVJTkFf
TE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSIpOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCAw
KTsKKyAgICAgICAgZnJlZShzZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfcGFy
ZW50X3NjLmFkZChvKTsKKworICAgIC8vIGNyZWF0ZSBiYWNraW5nX3N0b3JlIGltYWdlCisgICAg
c2QtPmJhY2tpbmdfc3RvcmUgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc2QtPmJhc2UuZXZhcyk7
CisgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBFSU5B
X0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5iYWNraW5nX3N0
b3JlLCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKKworI2Rl
ZmluZSBDT05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChvLCBzLCBj
LCBzZCkKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9m
b2N1c19pbik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3
X29uX2ZvY3VzX291dCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBf
ZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VT
RV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExC
QUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19D
QUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVD
VChFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENP
Tk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3VuZGVm
IENPTk5FQ1QKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVj
dCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGlmIChzZCkgeworICAg
ICAgICBpZiAoc2QtPnByaXYpCisgICAgICAgICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwoc2QtPnBy
aXYpOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCAwKTsKKyAgICAgICAg
ZnJlZShzZCk7CisgICAgfQorCisgICAgX3BhcmVudF9zYy5kZWwobyk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOwor
CisgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBl
dmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CisgICAg
ZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgp
OworCisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZChzZCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2
YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0g
RUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpOworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKworICAgIHNk
LT5jaGFuZ2VkLmFueSA9IEVJTkFfRkFMU0U7CisKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9n
ZXQobywgJngsICZ5LCAmdywgJmgpOworCisgICAgaWYgKHByaXYtPnBhZ2VDbGllbnQgJiYgc2Qt
PmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0gc2QtPnZpZXcuaCkp
KSB7CisgICAgICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0
U2l6ZShJbnRTaXplKHcsIGgpLCBJbnRTaXplKCkpOworICAgICAgICBzZC0+dmlldy53ID0gdzsK
KyAgICAgICAgc2QtPnZpZXcuaCA9IGg7CisgICAgfQorICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBF
SU5BX0ZBTFNFOworCisgICAgaWYgKHNkLT5jaGFuZ2VkLnBvc2l0aW9uICYmICgoeCAhPSBzZC0+
dmlldy54KSB8fCAoeSAhPSBzZC0+dmlldy55KSkpIHsKKyAgICAgICAgZXZhc19vYmplY3RfbW92
ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7CisgICAgICAgIHNkLT52aWV3LnggPSB4OworICAg
ICAgICBzZC0+dmlldy55ID0geTsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBF
SU5BX0ZBTFNFOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09i
amVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAg
IGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dldChzZC0+YmFzZS5jbGlwcGVyKSkKKyAgICAgICAg
ZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9zaG93
KHNkLT5iYWNraW5nX3N0b3JlKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hp
ZGUoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCk7CisKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNf
b2JqZWN0X2hpZGUoc2QtPmJhY2tpbmdfc3RvcmUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdf
c21hcnRfc2V0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9GQUxTRSk7CisKKyAgICBpZiAoYXBpLT52ZXJz
aW9uICE9IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04pIHsKKyAgICAgICAgRUlOQV9MT0df
RE9NX0NSSVQoX2V3azJfbG9nX2RvbSwKKyAgICAgICAgICAgICAiRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgJXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4iLAorICAgICAgICAg
ICAgIGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKKyAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKEVJTkFfVU5MSUtFTFko
IV9wYXJlbnRfc2MuYWRkKSkKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFy
dF9zZXQoJl9wYXJlbnRfc2MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFy
dF9zZXQoJmFwaS0+c2MpOworCisgICAgLy8gc2V0IEV2YXNfU21hcnRfQ2xhc3MKKyAgICBhcGkt
PnNjLmFkZCA9IF9ld2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3Zp
ZXdfc21hcnRfZGVsOworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOwor
ICAgIGFwaS0+c2MucmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNj
LnNob3cgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3Zp
ZXdfc21hcnRfaGlkZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9j
YWxjdWxhdGU7CisgICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8qIHVzZWQg
YnkgdHlwZSBjaGVja2luZyAqLworCisgICAgLy8gc2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzCisg
ICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGktPmZv
Y3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93aGVl
bCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24gPSBf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192aWV3
X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9t
b3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247
CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0dXJu
IEVJTkFfVFJVRTsKK30KKworc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21h
cnRfY2xhc3NfbmV3KHZvaWQpCit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFw
aSA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOwor
ICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VM
WSghc21hcnQpKSB7CisgICAgICAgIGV3a192aWV3X3NtYXJ0X3NldCgmYXBpKTsKKyAgICAgICAg
c21hcnQgPSBldmFzX3NtYXJ0X2NsYXNzX25ldygmYXBpLnNjKTsKKyAgICB9CisKKyAgICByZXR1
cm4gc21hcnQ7Cit9CisKK0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBp
ZiAoX2V3azJfbG9nX2RvbSA8IDApCisgICAgICAgIF9ld2syX2xvZ19kb20gPSBlaW5hX2xvZ19k
b21haW5fcmVnaXN0ZXIoIkV3azJfVmlldyIsIDApOworCisgICAgRXZhc19PYmplY3QqIG8gPSBl
dmFzX29iamVjdF9zbWFydF9hZGQoZSwgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKKyAg
ICBpZiAoIW8pCisgICAgICAgIHJldHVybiAwOworCisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKKyAgICBpZiAoIXNkKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAg
IGlmICghcHJpdikgeworICAgICAgICBldmFzX29iamVjdF9kZWwobyk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3Jl
YXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNraW5n
X3N0b3JlKTsKKworICAgIHJldHVybiBvOworfQorCitXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9n
ZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBz
ZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKwor
ICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4MDkyNDBi
M2E3Nzc3NDc1NmM5MDExZjQxODZjYWU1NzA1MTBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAK
Ky8qCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgZXdrX3ZpZXdfaAorI2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tf
Vmlld19TbWFydF9EYXRhOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3
a19WaWV3X1NtYXJ0X0NsYXNzOworCisvKioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92
ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgeworICAgIEV2YXNfU21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJl
ZSB0byBiZSBjaGFuZ2VkLiAqLworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8q
IGV2ZW50IGhhbmRsaW5nOgorICAgICAgIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBh
cmVudCBtZXRob2QgaWYgZGVzaXJlZCAqLworICAgIHZvaWQgKCpmb2N1c19pbikoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QpOworICAgIHZvaWQgKCpmb2N1c19vdXQpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKTsKKyAgICB2b2lkICgqbW91c2Vfd2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNk
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsICpldik7CisgICAgdm9pZCAoKm1vdXNlX2Rv
d24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24g
KmV2KTsKKyAgICB2b2lkICgqbW91c2VfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1VwICpldik7CisgICAgdm9pZCAoKm1vdXNlX21vdmUpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAg
ICB2b2lkICgqa2V5X2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2
ZW50X0tleV9Eb3duICpldik7CisgICAgdm9pZCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwICpldik7Cit9OworI2RlZmluZSBFV0tfVklF
V19TTUFSVF9DTEFTU19WRVJTSU9OIDFVTCAvKiogdGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0
IGludG8gdGhlIHZlcnNpb24gZmllbGQgaW4gdGhlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVj
dHVyZSAqLworCisvKioKKyAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9D
bGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtIHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6
ZXIgdG8gdXNlIGZvciB0aGUgImJhc2UiIGZpZWxkCisgKiAoRXZhc19TbWFydF9DbGFzcykuCisg
KgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKworLyoqCisgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAq
IEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCkKKworLyoq
CisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlIGFuZCBzZXQKKyAqIG5hbWUgYW5kIHZlcnNpb24uCisgKgorICogU2ltaWxhciB0byBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwsIGJ1dCB3aWxsIHNldCB2ZXJzaW9uIGZpZWxk
IG9mCisgKiBFdmFzX1NtYXJ0X0NsYXNzIChiYXNlIGZpZWxkKSB0byBsYXRlc3QgRVZBU19TTUFS
VF9DTEFTU19WRVJTSU9OIGFuZCBuYW1lCisgKiB0byB0aGUgc3BlY2lmaWMgdmFsdWUuCisgKgor
ICogSXQgd2lsbCBrZWVwIGEgcmVmZXJlbmNlIHRvIG5hbWUgZmllbGQgYXMgYSAiY29uc3QgY2hh
ciAqIiwgdGhhdCBpcywKKyAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUgd2hpbGUgdGhlIHN0cnVj
dHVyZSBpcyB1c2VkIChoaW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKKyAqIGFuZCB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAor
ICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVRfTkFNRV9WRVJTSU9OKG5hbWUpIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFS
VF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7CisvKgorICogU3RydWN0dXJl
IHRvIGNvbnRhaW4gaW50ZXJuYWwgVmlldyBkYXRhLCBpdCBpcyB0byBiZSBjb25zaWRlcmVkCisg
KiBwcml2YXRlIGJ5IHVzZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVkIG9yIGNoYW5nZWQgYnkgc3Vi
LWNsYXNzZXMKKyAqICh0aGF0J3Mgd2h5IGl0J3MgaW4gcHVibGljIGhlYWRlciBmaWxlKS4KKyAq
Lworc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKKyAgICBFdmFzX09iamVjdF9TbWFydF9D
bGlwcGVkX0RhdGEgYmFzZTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpOyAv
Kio8IHJlZmVyZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2UgKi8KKyAgICBFdmFzX09iamVj
dCogc2VsZjsgICAgICAgICAgICAgICAvKio8IHJlZmVyZW5jZSB0byBvd25lciBvYmplY3QgKi8K
KyAgICBFdmFzX09iamVjdCogYmFja2luZ19zdG9yZTsgICAgICAvKio8IHJlZmVyZW5jZSB0byBi
YWNraW5nIHN0b3JlICovCisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2OyAgICAgLyoq
PCBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGMrKyBzdHVmZiAqLworICAgIHN0cnVjdCB7Cisg
ICAgICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsgICAgICAgLyoqPCBsYXN0IHVzZWQgdmlld3Bv
cnQgKi8KKyAgICB9IHZpZXc7CisgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAg
LyoqPCB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9jYWxjdWxhdGUgKi8KKyAgICAgICAg
RWluYV9Cb29sIGFueToxOworICAgICAgICBFaW5hX0Jvb2wgc2l6ZToxOworICAgICAgICBFaW5h
X0Jvb2wgcG9zaXRpb246MTsKKyAgICB9IGNoYW5nZWQ7Cit9OworCitFQVBJIEV2YXNfT2JqZWN0
KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZik7CitFQVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChF
dmFzX09iamVjdCogbyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYg
LyogZXdrX3ZpZXdfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96712</attachid>
            <date>2011-06-10 01:31:02 -0700</date>
            <delta_ts>2011-06-10 04:51:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110610173101.patch</filename>
            <type>text/plain</type>
            <size>24113</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg1MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWFjM2IxYTIxZGQ0YTNm
OGE0ZjNlYzc2YjQwYWQ3NzBmMzIwNDI2Li44Y2VkMjM2NWZmZTNlNGJiNmZjNmVlNjJhODFiNmM3
MTM3NzQ2NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTAgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld19hZGQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFnZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6IEFk
ZGVkLgorCiAyMDExLTA2LTA5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWRkNmRlMDc3YmMzNDdjMTYw
NThhYjBhYTkyNjA0YmFkYmQyNTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDYzIEBACisvKgorICAg
Q29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNl
RXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUGFn
ZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKworI2luY2x1ZGUgPEVjb3Jl
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwor
CitzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CisgICAgT3duUHRyPFBhZ2VDbGllbnRJ
bXBsPiBwYWdlQ2xpZW50OworICAgIEV2YXNfT2JqZWN0KiB0b3VjaDsKK307CisKK2ludCBfZXdr
Ml9sb2dfZG9tID0gLTE7CisKKyNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQg
cmV0ID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgY29uc3QgY2hhciogX3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydCogX3RtcF9z
ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOyAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAoX2V3azJfbG9nX2RvbSwgIiVwICglcykgaXMgbm90IGEgc21hcnQg
b2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgX3RtcF9vdHlw
ZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHJldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21h
cnRfY2xhc3NfZ2V0KF90bXBfcyk7ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5M
SUtFTFkoIV90bXBfc2MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAo
X2V3azJfbG9nX2RvbSwgIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAi
KG51bGwpIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJl
dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg
KEVJTkFfVU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBFX1NUUikpIHsgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAoX2V3azJfbG9nX2RvbSwgIiVwICglcykgaXMgbm90IG9mIGFuIGV3a192aWV3IChu
ZWVkICVwLCBnb3QgJXApISIsIFwKKyAgICAgICAgICAgICAgICAgbywgX3RtcF9vdHlwZSA/IF90
bXBfb3R5cGUgOiAiKG51bGwpIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgRVdLX1ZJRVdfVFlQRV9TVFIsIF90bXBfc2MtPmRhdGEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldCA9IDA7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVX
S19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBFV0tfVklFV19UWVBFX0NIRUNLKG8sIHJldCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHB0ciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgaWYgKHJldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcHRyID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworCisjZGVmaW5lIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBFV0tfVklFV19TRF9HRVQobywgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJubyBzbWFydCBkYXRhIGZvciBvYmpl
Y3QgJXAgKCVzKSIsIFwKKyAgICAgICAgICAgICAgICAgbywgZXZhc19vYmplY3RfdHlwZV9nZXQo
bykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19W
QV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpIFwKKyAgICBF
d2tfVmlld19Qcml2YXRlX0RhdGEqIHB0ciA9IHNkLT5wcml2CisKKyNkZWZpbmUgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwdHIsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgaWYgKCFzZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJ
VChfZXdrMl9sb2dfZG9tLCAic21hcnQgZGF0YSBpcyBudWxsIik7ICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVX
S19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFf
TE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVjdCAl
cCAoJXMpIiwgXAorICAgICAgICAgICAgICAgICBzZC0+c2VsZiwgZXZhc19vYmplY3RfdHlwZV9n
ZXQoc2QtPnNlbGYpKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFf
QVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmll
d19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBpZiAoc2QtPmNoYW5nZWQuYW55KQorICAgICAgICBy
ZXR1cm47CisgICAgc2QtPmNoYW5nZWQuYW55ID0gRUlOQV9UUlVFOworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NoYW5nZWQoc2QtPnNlbGYpOworfQorCisvLyBEZWZhdWx0IEV2ZW50IEhhbmRsaW5n
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5w
YWdlQ2xpZW50LT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJ
c0ZvY3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qp
Cit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJp
di0+cGFnZUNsaWVudC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpW
aWV3SXNGb2N1c2VkIHwgV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24g
PSB7c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgp
LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXYsICZwb3NpdGlvbikpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKK3sKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0
aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBh
Z2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24p
KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldikKK3sKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0
aW9uID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBh
Z2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24p
KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYpCit7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBw
b3NpdGlvbiA9IHtzZC0+dmlldy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50
LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0
aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tfVmll
d19TbWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCit7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNs
aWVudC0+cGFnZSgpLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
ZXYpKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19T
bWFydF9EYXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQoreworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7
Cit9CisKKy8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2lu
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQor
eworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOworICAgIHNkLT5hcGktPmZv
Y3VzX2luKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lk
KiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX291dCk7CisgICAgc2QtPmFwaS0+Zm9jdXNf
b3V0KHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2
ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CisgICAg
c2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2
ZW50X01vdXNlX0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5t
b3VzZV9kb3duKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09i
amVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBl
diA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaS0+bW91c2VfdXApOworICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91
c2VfTW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZvOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CisgICAgc2QtPmFwaS0+bW91c2VfbW92
ZShzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCog
ZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAg
RXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biopZXZlbnRfaW5m
bzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilk
YXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsKKyAgICBzZC0+YXBpLT5r
ZXlfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZv
aWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQorewor
ICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5m
bzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilk
YXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7CisgICAgc2QtPmFwaS0+a2V5
X3VwKHNkLCBldik7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBF
VkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKKworc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0Rh
dGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgaWYgKCFw
cml2KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBu
b3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJp
dl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51bGxwdHI7CisgICAgZnJl
ZShwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVj
dCogbykKK3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0
X3NtYXJ0X2dldChvKTsKKyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21h
cnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBp
ID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworCisgICAgaWYgKCFzZCkgeworICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgaWYg
KCFzZCkgeworICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNv
dWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQobywgc2Qp
OworICAgIH0KKworICAgIHNkLT5zZWxmID0gbzsKKyAgICBzZC0+cHJpdiA9IF9ld2tfdmlld19w
cml2X25ldyhzZCk7CisgICAgc2QtPmFwaSA9IGFwaTsKKworICAgIGlmICghc2QtPnByaXYpIHsK
KyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxv
Y2F0ZSBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2RhdGFfc2V0KG8sIDApOworICAgICAgICBmcmVlKHNkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIF9wYXJlbnRfc2MuYWRkKG8pOworCisgICAgLy8gY3JlYXRlIGJhY2tpbmdfc3Rv
cmUgaW1hZ2UKKyAgICBzZC0+YmFja2luZ19zdG9yZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChz
ZC0+YmFzZS5ldmFzKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIEVJTkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQo
c2QtPmJhY2tpbmdfc3RvcmUsIG8pOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdf
c3RvcmUpOworCisjZGVmaW5lIENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJh
Y2tfYWRkKG8sIHMsIGMsIHNkKQorICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19JTiwg
X2V3a192aWV3X29uX2ZvY3VzX2luKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNf
T1VULCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tf
TU9VU0VfV0hFRUwsIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk7CisgICAgQ09OTkVDVChFVkFT
X0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKTsKKyAgICBDT05O
RUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl9tb3VzZV91cCk7CisgICAg
Q09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX01PVkUsIF9ld2tfdmlld19vbl9tb3VzZV9tb3Zl
KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIF9ld2tfdmlld19vbl9rZXlf
ZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tFWV9VUCwgX2V3a192aWV3X29uX2tl
eV91cCk7CisjdW5kZWYgQ09OTkVDVAorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
ZGVsKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAg
aWYgKHNkICYmIHNkLT5wcml2KQorICAgICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwoc2QtPnByaXYp
OworCisgICAgX3BhcmVudF9zYy5kZWwobyk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFn
ZV9zaXplX3NldChzZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgpOworCisgICAgc2QtPmNo
YW5nZWQuc2l6ZSA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkKTsKKworICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAg
IF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYpOworICAgIEV2YXNfQ29vcmQgeCwgeSwgdywgaDsKKworICAgIHNkLT5jaGFuZ2VkLmFueSA9
IEVJTkFfRkFMU0U7CisKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQobywgJngsICZ5LCAm
dywgJmgpOworCisgICAgaWYgKHByaXYtPnBhZ2VDbGllbnQgJiYgc2QtPmNoYW5nZWQuc2l6ZSAm
JiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0gc2QtPnZpZXcuaCkpKSB7CisgICAgICAgIHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHcs
IGgpLCBJbnRTaXplKCkpOworICAgICAgICBzZC0+dmlldy53ID0gdzsKKyAgICAgICAgc2QtPnZp
ZXcuaCA9IGg7CisgICAgfQorICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBFSU5BX0ZBTFNFOworCisg
ICAgaWYgKHNkLT5jaGFuZ2VkLnBvc2l0aW9uICYmICgoeCAhPSBzZC0+dmlldy54KSB8fCAoeSAh
PSBzZC0+dmlldy55KSkpIHsKKyAgICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19z
dG9yZSwgeCwgeSk7CisgICAgICAgIHNkLT52aWV3LnggPSB4OworICAgICAgICBzZC0+dmlldy55
ID0geTsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX0ZBTFNFOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVjdCogbykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGlmIChldmFzX29iamVj
dF9jbGlwZWVzX2dldChzZC0+YmFzZS5jbGlwcGVyKSkKKyAgICAgICAgZXZhc19vYmplY3Rfc2hv
dyhzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0
b3JlKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFz
X29iamVjdF9oaWRlKHNkLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X2hpZGUoc2Qt
PmJhY2tpbmdfc3RvcmUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfc2V0KEV3a19W
aWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGFwaSwgRUlOQV9GQUxTRSk7CisKKyAgICBpZiAoYXBpLT52ZXJzaW9uICE9IEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04pIHsKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJf
bG9nX2RvbSwKKyAgICAgICAgICAgICAiRXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lv
biAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4iLAorICAgICAgICAgICAgIGFwaSwgYXBpLT52
ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2MuYWRk
KSkKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRf
c2MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2Mp
OworCisgICAgLy8gc2V0IEV2YXNfU21hcnRfQ2xhc3MKKyAgICBhcGktPnNjLmFkZCA9IF9ld2tf
dmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVsOwor
ICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2MucmVz
aXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdrX3Zp
ZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsK
KyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7CisgICAg
YXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8qIHVzZWQgYnkgdHlwZSBjaGVja2lu
ZyAqLworCisgICAgLy8gc2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5mb2N1c19p
biA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGktPmZvY3VzX291dCA9IF9ld2tf
dmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93aGVlbCA9IF9ld2tfdmlld19z
bWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRf
bW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3Vw
OworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOworICAg
IGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CisgICAgYXBpLT5rZXlf
dXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30K
Kworc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFz
X1NtYXJ0KiBzbWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7Cisg
ICAgICAgIGV3a192aWV3X3NtYXJ0X3NldCgmYXBpKTsKKyAgICAgICAgc21hcnQgPSBldmFzX3Nt
YXJ0X2NsYXNzX25ldygmYXBpLnNjKTsKKyAgICB9CisKKyAgICByZXR1cm4gc21hcnQ7Cit9CisK
K0V2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBpZiAoX2V3azJfbG9nX2Rv
bSA8IDApCisgICAgICAgIF9ld2syX2xvZ19kb20gPSBlaW5hX2xvZ19kb21haW5fcmVnaXN0ZXIo
IkV3azJfVmlldyIsIDApOworCisgICAgRXZhc19PYmplY3QqIG8gPSBldmFzX29iamVjdF9zbWFy
dF9hZGQoZSwgX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKKyAgICBpZiAoIW8pCisgICAg
ICAgIHJldHVybiAwOworCisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoIXNk
KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgIGlmICghcHJpdikgewor
ICAgICAgICBldmFzX29iamVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRvSW1wbChjb250
ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNraW5nX3N0b3JlKTsKKworICAg
IHJldHVybiBvOworfQorCitXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3Qq
IG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKworICAgIHJldHVybiB0b0FQ
SShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4MDkyNDBiM2E3Nzc3NDc1NmM5MDEx
ZjQxODZjYWU1NzA1MTBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgICBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdfaAor
I2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRh
OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzOworCisvKioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3Vi
LWNsYXNzZXMuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNf
U21hcnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2Vk
LiAqLworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8qIGV2ZW50IGhhbmRsaW5n
OgorICAgICAgIC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYg
ZGVzaXJlZCAqLworICAgIHZvaWQgKCpmb2N1c19pbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
OworICAgIHZvaWQgKCpmb2N1c19vdXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAgICB2
b2lkICgqbW91c2Vfd2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1doZWVsICpldik7CisgICAgdm9pZCAoKm1vdXNlX2Rvd24pKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KTsKKyAgICB2b2lk
ICgqbW91c2VfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwICpldik7CisgICAgdm9pZCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAgICB2b2lkICgqa2V5X2Rv
d24pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpl
dik7CisgICAgdm9pZCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfS2V5X1VwICpldik7Cit9OworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19W
RVJTSU9OIDFVTCAvKiogdGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNp
b24gZmllbGQgaW4gdGhlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSAqLworCisvKioK
KyAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUu
CisgKgorICogQHBhcmFtIHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0
aGUgImJhc2UiIGZpZWxkCisgKiAoRXZhc19TbWFydF9DbGFzcykuCisgKgorICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJT
SU9OCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19p
bml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMH0KKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hv
bGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lO
SVRfTkFNRV9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLwor
I2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCkKKworLyoqCisgKiBJbml0aWFsaXpl
ciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlIGFuZCBzZXQK
KyAqIG5hbWUgYW5kIHZlcnNpb24uCisgKgorICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05VTEwsIGJ1dCB3aWxsIHNldCB2ZXJzaW9uIGZpZWxkIG9mCisgKiBFdmFzX1Nt
YXJ0X0NsYXNzIChiYXNlIGZpZWxkKSB0byBsYXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9O
IGFuZCBuYW1lCisgKiB0byB0aGUgc3BlY2lmaWMgdmFsdWUuCisgKgorICogSXQgd2lsbCBrZWVw
IGEgcmVmZXJlbmNlIHRvIG5hbWUgZmllbGQgYXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBpcywK
KyAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUgd2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2VkICho
aW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKKyAqIGFuZCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAq
CisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklF
V19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1Nf
SU5JVAorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
KG5hbWUpIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTihuYW1lKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7CisvKgorICogU3RydWN0dXJlIHRvIGNvbnRhaW4gaW50
ZXJuYWwgVmlldyBkYXRhLCBpdCBpcyB0byBiZSBjb25zaWRlcmVkCisgKiBwcml2YXRlIGJ5IHVz
ZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVkIG9yIGNoYW5nZWQgYnkgc3ViLWNsYXNzZXMKKyAqICh0
aGF0J3Mgd2h5IGl0J3MgaW4gcHVibGljIGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tf
Vmlld19TbWFydF9EYXRhIHsKKyAgICBFdmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFz
ZTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpOyAvKio8IHJlZmVyZW5jZSB0
byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2UgKi8KKyAgICBFdmFzX09iamVjdCogc2VsZjsgICAgICAg
ICAgICAgICAvKio8IHJlZmVyZW5jZSB0byBvd25lciBvYmplY3QgKi8KKyAgICBFdmFzX09iamVj
dCogYmFja2luZ19zdG9yZTsgICAgICAvKio8IHJlZmVyZW5jZSB0byBiYWNraW5nIHN0b3JlICov
CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2OyAgICAgLyoqPCBzaG91bGQgbmV2ZXIg
YmUgYWNjZXNzZWQsIGMrKyBzdHVmZiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIEV2YXNfQ29v
cmQgeCwgeSwgdywgaDsgICAgICAgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KKyAgICB9IHZp
ZXc7CisgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCB3aGF0IGNoYW5n
ZWQgc2luY2UgbGFzdCBzbWFydF9jYWxjdWxhdGUgKi8KKyAgICAgICAgRWluYV9Cb29sIGFueTox
OworICAgICAgICBFaW5hX0Jvb2wgc2l6ZToxOworICAgICAgICBFaW5hX0Jvb2wgcG9zaXRpb246
MTsKKyAgICB9IGNoYW5nZWQ7Cit9OworCitFQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQo
RXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZik7CitFQVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogZXdrX3ZpZXdfaCAq
Lwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96736</attachid>
            <date>2011-06-10 04:52:05 -0700</date>
            <delta_ts>2011-06-14 05:33:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110610205204.patch</filename>
            <type>text/plain</type>
            <size>24150</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg1MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWFjM2IxYTIxZGQ0YTNm
OGE0ZjNlYzc2YjQwYWQ3NzBmMzIwNDI2Li44Y2VkMjM2NWZmZTNlNGJiNmZjNmVlNjJhODFiNmM3
MTM3NzQ2NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTAgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld19hZGQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFnZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6IEFk
ZGVkLgorCiAyMDExLTA2LTA5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWY4M2U5YzY0OTdiN2RhYTg5
OWQ5MTVlMzYxM2VkYWU2MTJkNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDY0IEBACisvKgorICAg
Q29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJv
YXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBjaGFy
IEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKKworc3RydWN0IF9Fd2tfVmlld19Q
cml2YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAg
ICBFdmFzX09iamVjdCogdG91Y2g7Cit9OworCitpbnQgX2V3azJfbG9nX2RvbSA9IC0xOworCisj
ZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHJldCA9IDE7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90bXBf
b3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2JqZWN0X3NtYXJ0
X3NtYXJ0X2dldChvKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElL
RUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9l
d2syX2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihu
dWxsKSIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXQg
PSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0
IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChfdG1wX3Mp
OyAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3NjKSkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2syX2xvZ19kb20sICIlcCAo
JXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBf
c2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9TVFIpKSB7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2syX2xvZ19k
b20sICIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCBc
CisgICAgICAgICAgICAgICAgIG8sIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIEVXS19WSUVX
X1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQobywgcHRy
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdL
X1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAwOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyZXQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFy
dF9kYXRhX2dldChvKTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0
ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJRVdfU0Rf
R0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChf
ZXdrMl9sb2dfZG9tLCAibm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBcCisgICAg
ICAgICAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmlu
ZSBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKSBcCisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBwdHIgPSBzZC0+cHJpdgorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
ZCwgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghc2Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgInNt
YXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZB
X0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9s
b2dfZG9tLCAibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwKKyAgICAgICAg
ICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxmKSk7ICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7
CisgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKKyAgICAgICAgcmV0dXJuOworICAgIHNkLT5jaGFu
Z2VkLmFueSA9IEVJTkFfVFJVRTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jaGFuZ2VkKHNkLT5z
ZWxmKTsKK30KKworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT52
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwgV2ViUGFnZVBy
b3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8IFdlYlBh
Z2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3LngsIHNkLT52
aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChO
YXRpdmVXZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBz
ZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmlldy54LCBz
ZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcu
eCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVNb3Vz
ZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQorCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNv
bnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxl
S2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0
IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJv
YXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQorCisvLyBFdmVudCBIYW5k
bGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+
YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1vdXNlX3doZWVs
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAg
IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVu
dF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CisgICAgc2Qt
PmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50
X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsK
KyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9p
ZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNf
RXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
Pm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24q
IGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBF
dmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9V
cCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYpOworfQorCitz
dGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25l
dyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IHByaXYgPQorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIGlmICghcHJpdikgeworICAgICAgICBFSU5B
X0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4g
cHJpdjsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAgIHJldHVybjsKKworICAg
IHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAgIGZyZWUocHJpdik7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCit7CisgICAgY29uc3Qg
RXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CisgICAg
Y29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7
CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyopc2M7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKworICAgIGlmICgh
c2QpIHsKKyAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVv
ZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIGlmICghc2QpIHsKKyAgICAgICAgICAg
IEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgRXdr
X1ZpZXdfU21hcnRfRGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIHNkKTsKKyAgICB9CisKKyAgICBzZC0+
c2VsZiA9IG87CisgICAgc2QtPnByaXYgPSBfZXdrX3ZpZXdfcHJpdl9uZXcoc2QpOworICAgIHNk
LT5hcGkgPSBhcGk7CisKKyAgICBpZiAoIXNkLT5wcml2KSB7CisgICAgICAgIEVJTkFfTE9HX0RP
TV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSIpOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCAwKTsKKyAg
ICAgICAgZnJlZShzZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfcGFyZW50X3Nj
LmFkZChvKTsKKworICAgIC8vIGNyZWF0ZSBiYWNraW5nX3N0b3JlIGltYWdlCisgICAgc2QtPmJh
Y2tpbmdfc3RvcmUgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc2QtPmJhc2UuZXZhcyk7CisgICAg
ZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBFSU5BX0ZBTFNF
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBv
KTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKKworI2RlZmluZSBD
T05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChvLCBzLCBjLCBzZCkK
KyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19p
bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3X29uX2Zv
Y3VzX291dCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBfZXdrX3Zp
ZXdfb25fbW91c2Vfd2hlZWwpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9ET1dO
LCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01P
VVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFD
S19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVDVChFVkFT
X0NBTExCQUNLX0tFWV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENPTk5FQ1Qo
RVZBU19DQUxMQkFDS19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3VuZGVmIENPTk5F
Q1QKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykK
K3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGlmIChzZCAmJiBzZC0+cHJpdikK
KyAgICAgICAgX2V3a192aWV3X3ByaXZfZGVsKHNkLT5wcml2KTsKKworICAgIF9wYXJlbnRfc2Mu
ZGVsKG8pOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmFja2lu
Z19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNkLT5iYWNr
aW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKKworICAgIHNkLT5jaGFuZ2VkLnNpemUgPSBFSU5BX1RS
VUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBz
ZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hh
bmdlZChzZCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKyAgICBFdmFzX0Nvb3Jk
IHgsIHksIHcsIGg7CisKKyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX0ZBTFNFOworCisgICAg
ZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KG8sICZ4LCAmeSwgJncsICZoKTsKKworICAgIGlmIChw
cml2LT5wYWdlQ2xpZW50ICYmIHNkLT5jaGFuZ2VkLnNpemUgJiYgKCh3ICE9IHNkLT52aWV3Lncp
IHx8IChoICE9IHNkLT52aWV3LmgpKSkgeworICAgICAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdl
KCktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZSh3LCBoKSwgSW50U2l6ZSgpKTsKKyAg
ICAgICAgc2QtPnZpZXcudyA9IHc7CisgICAgICAgIHNkLT52aWV3LmggPSBoOworICAgIH0KKyAg
ICBzZC0+Y2hhbmdlZC5zaXplID0gRUlOQV9GQUxTRTsKKworICAgIGlmIChzZC0+Y2hhbmdlZC5w
b3NpdGlvbiAmJiAoKHggIT0gc2QtPnZpZXcueCkgfHwgKHkgIT0gc2QtPnZpZXcueSkpKSB7Cisg
ICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc2QtPmJhY2tpbmdfc3RvcmUsIHgsIHkpOworICAgICAg
ICBzZC0+dmlldy54ID0geDsKKyAgICAgICAgc2QtPnZpZXcueSA9IHk7CisgICAgfQorICAgIHNk
LT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9GQUxTRTsKK30KKworc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X3Nob3coRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBzZCk7CisKKyAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc2QtPmJh
c2UuY2xpcHBlcikpCisgICAgICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhc2UuY2xpcHBlcik7
CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9oaWRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFz
ZS5jbGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNraW5nX3N0b3JlKTsKK30K
KworRWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBp
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0Up
OworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9O
KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sCisgICAgICAgICAg
ICAgIkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMg
ZXhwZWN0ZWQuIiwKKyAgICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfVkVSU0lPTik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKwor
ICAgIGlmIChFSU5BX1VOTElLRUxZKCFfcGFyZW50X3NjLmFkZCkpCisgICAgICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZfcGFyZW50X3NjKTsKKworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZhcGktPnNjKTsKKworICAgIC8vIHNldCBFdmFz
X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5zYy5hZGQgPSBfZXdrX3ZpZXdfc21hcnRfYWRkOworICAg
IGFwaS0+c2MuZGVsID0gX2V3a192aWV3X3NtYXJ0X2RlbDsKKyAgICBhcGktPnNjLm1vdmUgPSBf
ZXdrX3ZpZXdfc21hcnRfbW92ZTsKKyAgICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tfdmlld19zbWFy
dF9yZXNpemU7CisgICAgYXBpLT5zYy5zaG93ID0gX2V3a192aWV3X3NtYXJ0X3Nob3c7CisgICAg
YXBpLT5zYy5oaWRlID0gX2V3a192aWV3X3NtYXJ0X2hpZGU7CisgICAgYXBpLT5zYy5jYWxjdWxh
dGUgPSBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlOworICAgIGFwaS0+c2MuZGF0YSA9IEVXS19W
SUVXX1RZUEVfU1RSOyAvKiB1c2VkIGJ5IHR5cGUgY2hlY2tpbmcgKi8KKworICAgIC8vIHNldCBF
d2tfVmlld19TbWFydF9DbGFzcworICAgIGFwaS0+Zm9jdXNfaW4gPSBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW47CisgICAgYXBpLT5mb2N1c19vdXQgPSBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0
OworICAgIGFwaS0+bW91c2Vfd2hlZWwgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWw7Cisg
ICAgYXBpLT5tb3VzZV9kb3duID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd247CisgICAgYXBp
LT5tb3VzZV91cCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV91cDsKKyAgICBhcGktPm1vdXNlX21v
dmUgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZTsKKyAgICBhcGktPmtleV9kb3duID0gX2V3
a192aWV3X3NtYXJ0X2tleV9kb3duOworICAgIGFwaS0+a2V5X3VwID0gX2V3a192aWV3X3NtYXJ0
X2tleV91cDsKKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZh
c19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQoreworICAgIHN0YXRpYyBF
d2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTigiRXdrX1ZpZXciKTsKKyAgICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOwor
CisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkgeworICAgICAgICBld2tfdmlld19zbWFy
dF9zZXQoJmFwaSk7CisgICAgICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmFwaS5z
Yyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0OworfQorCitFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpCit7CisgICAgaWYgKF9ld2syX2xvZ19kb20gPCAwKQorICAgICAgICBfZXdr
Ml9sb2dfZG9tID0gZWluYV9sb2dfZG9tYWluX3JlZ2lzdGVyKCJFd2syX1ZpZXciLCAwKTsKKwor
ICAgIEV2YXNfT2JqZWN0KiBvID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld19z
bWFydF9jbGFzc19uZXcoKSk7CisgICAgaWYgKCFvKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgaWYgKCFzZCkgeworICAgICAgICBldmFzX29i
amVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVXS19WSUVXX1BS
SVZfR0VUKHNkLCBwcml2KTsKKyAgICBpZiAoIXByaXYpIHsKKyAgICAgICAgZXZhc19vYmplY3Rf
ZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlQ2xpZW50
ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdl
R3JvdXBSZWYpLCBzZC0+YmFja2luZ19zdG9yZSk7CisKKyAgICByZXR1cm4gbzsKK30KKworV0tQ
YWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdiwgMCk7CisKKyAgICByZXR1cm4gdG9BUEkocHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcyODA5MjQwYjNhNzc3NzQ3NTZjOTAxMWY0MTg2Y2FlNTcwNTEwYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a192aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdfaAor
CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3
a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKK3R5cGVkZWYgc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19TbWFydF9DbGFzczsKKworLyoqCisgKiBFd2sg
dmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgorICovCitzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKKyAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8
IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KKyAgICB1bnNpZ25lZCBs
b25nIHZlcnNpb247CisKKyAgICAvKiBldmVudCBoYW5kbGluZzoKKyAgICAgICAtIGlmIG92ZXJy
aWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQgKi8KKyAgICB2b2lk
ICgqZm9jdXNfaW4pKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAgICB2b2lkICgqZm9jdXNf
b3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9pZCAoKm1vdXNlX3doZWVsKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYp
OworICAgIHZvaWQgKCptb3VzZV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7CisgICAgdm9pZCAoKm1vdXNlX3VwKShFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpOworICAgIHZv
aWQgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlICpldik7CisgICAgdm9pZCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9E
YXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOworICAgIHZvaWQgKCprZXlf
dXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYp
OworfTsKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwgLyoqIHRoZSB2
ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkIGluIHRoZSBFd2tf
Vmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgKi8KKworLyoqCisgKiBJbml0aWFsaXplciBmb3Ig
d2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSBzbWFy
dF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVzZSBmb3IgdGhlICJiYXNlIiBmaWVsZAorICog
KEV2YXNfU21hcnRfQ2xhc3MpLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNl
ZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICovCisjZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2lu
aXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9
CisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0Ns
YXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVS
U0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICog
QHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9D
TEFTU19JTklUX05VTEwpCisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3
a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9u
LgorICoKKyAqIFNpbWlsYXIgdG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQg
d2lsbCBzZXQgdmVyc2lvbiBmaWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVs
ZCkgdG8gbGF0ZXN0IEVWQVNfU01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhl
IHNwZWNpZmljIHZhbHVlLgorICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1l
IGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZh
aWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGdsb2Jh
bCEpCisgKiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9W
RVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisK
K3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhOworLyoKKyAqIFN0cnVjdHVyZSB0byBjb250YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQg
aXMgdG8gYmUgY29uc2lkZXJlZAorICogcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRl
bmRlZCBvciBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzCisgKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1
YmxpYyBoZWFkZXIgZmlsZSkuCisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7Cisg
ICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9EYXRhIGJhc2U7CisgICAgY29uc3QgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3MqIGFwaTsgLyoqPCByZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3Rh
bmNlICovCisgICAgRXZhc19PYmplY3QqIHNlbGY7ICAgICAgICAgICAgICAgLyoqPCByZWZlcmVu
Y2UgdG8gb3duZXIgb2JqZWN0ICovCisgICAgRXZhc19PYmplY3QqIGJhY2tpbmdfc3RvcmU7ICAg
ICAgLyoqPCByZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZSAqLworICAgIEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdjsgICAgIC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1
ZmYgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7ICAgICAg
IC8qKjwgbGFzdCB1c2VkIHZpZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7ICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKjwgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRf
Y2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6MTsKKyAgICAgICAgRWluYV9Cb29s
IHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CisgICAgfSBjaGFuZ2VkOwor
fTsKKworRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOworRUFQSSBXS1BhZ2VS
ZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorI2VuZGlmIC8qIGV3a192aWV3X2ggKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97100</attachid>
            <date>2011-06-14 05:34:16 -0700</date>
            <delta_ts>2011-06-14 18:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110614213347.patch</filename>
            <type>text/plain</type>
            <size>24177</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2MjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmOWU5MzNhNmVlMjg0NWZk
MWNjY2NhOWEzMDk4NDZlMjE1MjE4MjhhLi5kMjA1MzIzZjA1MTRmMDE5MWNjZGQ5ZWE1MDMxMDFm
YWJmNjVkZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTQgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAg
KGV3a192aWV3X3BhZ2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOiBBZGRlZC4KKwogMjAxMS0wNi0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM5NzQ3
MDUwNGM2OTViMDk0NjQwNGY4N2U2MGQxOGU2NTE4MWQ1MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ2
NCBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJO
YXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5o
IgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0
aWMgY29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CisKK3N0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKKyAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBh
Z2VDbGllbnQ7CisgICAgRXZhc19PYmplY3QqIHRvdWNoOworfTsKKworaW50IF9ld2syX2xvZ19k
b20gPSAtMTsKKworI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKG8sIHJldCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGludCByZXQgPSAx
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25z
dCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBldmFz
X29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgIChfZXdrMl9sb2dfZG9tLCAiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3Qh
IiwgbywgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3Rt
cF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgcmV0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFz
c19nZXQoX3RtcF9zKTsgICAgICAgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSgh
X3RtcF9zYykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChfZXdrMl9s
b2dfZG9tLCAiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCki
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0ID0gMDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9V
TkxJS0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVXX1RZUEVfU1RSKSkgeyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
IChfZXdrMl9sb2dfZG9tLCAiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAs
IGdvdCAlcCkhIiwgXAorICAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlw
ZSA6ICIobnVsbCkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0ID0gMDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRVdLX1ZJRVdf
U0RfR0VUKG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRy
ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBp
ZiAocmV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZh
c19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVXS19WSUVXX1NEX0dFVChvLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9M
T0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAo
JXMpIiwgXAorICAgICAgICAgICAgICAgICBvLCBldmFzX29iamVjdF90eXBlX2dldChvKSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1Nf
XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9CisKKyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHB0cikgXAorICAgIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHRyID0gc2QtPnByaXYKKworI2RlZmluZSBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHB0ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoIXNkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2sy
X2xvZ19kb20sICJzbWFydCBkYXRhIGlzIG51bGwiKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJRVdf
UFJJVl9HRVQoc2QsIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9N
X0NSSVQoX2V3azJfbG9nX2RvbSwgIm5vIHByaXZhdGUgZGF0YSBmb3Igb2JqZWN0ICVwICglcyki
LCBcCisgICAgICAgICAgICAgICAgIHNkLT5zZWxmLCBldmFzX29iamVjdF90eXBlX2dldChzZC0+
c2VsZikpOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkKQoreworICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVybjsK
KyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2hhbmdlZChzZC0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGll
bnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNl
ZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdl
Q2xpZW50LT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0Zv
Y3VzZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+
dmlldy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7
c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5o
YW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2KQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7
c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5o
YW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9E
YXRhKiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldikKK3sKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9u
ID0ge3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24pKTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKK3sKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5w
YWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgp
LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXYpKTsKK30KKwor
Ly8gRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCog
ZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19pbik7CisgICAgc2QtPmFwaS0+Zm9jdXNfaW4o
c2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKKyAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2Qp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopZXZlbnRfaW5m
bzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilk
YXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3doZWVsKTsKKyAgICBzZC0+YXBp
LT5tb3VzZV93aGVlbChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfTW91
c2VfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX2Rv
d24pOworICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5tb3VzZV91cCk7CisgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19P
YmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3Zl
KiBldiA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBl
dik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2
ZW50X0tleV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X2Rvd24pOworICAgIHNkLT5hcGktPmtleV9kb3du
KHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCogZGF0
YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZh
c19FdmVudF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwKilldmVudF9pbmZvOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKKyAgICBzZC0+YXBpLT5rZXlfdXAoc2Qs
IGV2KTsKK30KKworc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVWQVNfU01B
UlRfQ0xBU1NfSU5JVF9OVUxMOworCitzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdr
X3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2ID0KKyAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopY2Fs
bG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICBpZiAoIXByaXYpIHsK
KyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxv
Y2F0ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChF
d2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBmcmVlKHByaXYp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQor
eworICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRf
Z2V0KG8pOworICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNjID0gZXZhc19zbWFydF9jbGFz
c19nZXQoc21hcnQpOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSAoY29u
c3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7
CisKKyAgICBpZiAoIXNkKSB7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNh
bGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAgICBpZiAoIXNkKSB7
CisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90
IGFsbG9jYXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAg
fQorCisgICAgc2QtPnNlbGYgPSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3
KHNkKTsKKyAgICBzZC0+YXBpID0gYXBpOworCisgICAgaWYgKCFzZC0+cHJpdikgeworICAgICAg
ICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFsbG9jYXRlIF9F
d2tfVmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9z
ZXQobywgMCk7CisgICAgICAgIGZyZWUoc2QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX3BhcmVudF9zYy5hZGQobyk7CisKKyAgICAvLyBjcmVhdGUgYmFja2luZ19zdG9yZSBpbWFn
ZQorICAgIHNkLT5iYWNraW5nX3N0b3JlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNkLT5iYXNl
LmV2YXMpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFja2luZ19zdG9y
ZSwgRUlOQV9GQUxTRSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzZC0+YmFj
a2luZ19zdG9yZSwgbyk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7
CisKKyNkZWZpbmUgQ09OTkVDVChzLCBjKSBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQo
bywgcywgYywgc2QpCisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdrX3Zp
ZXdfb25fZm9jdXNfaW4pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQsIF9l
d2tfdmlld19vbl9mb2N1c19vdXQpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9X
SEVFTCwgX2V3a192aWV3X29uX21vdXNlX3doZWVsKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJB
Q0tfTU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOworICAgIENPTk5FQ1QoRVZB
U19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKKyAgICBDT05ORUNU
KEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOworICAg
IENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3duKTsK
KyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3VwKTsK
KyN1bmRlZiBDT05ORUNUCit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZh
c19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoc2Qg
JiYgc2QtPnByaXYpCisgICAgICAgIF9ld2tfdmlld19wcml2X2RlbChzZC0+cHJpdik7CisKKyAg
ICBfcGFyZW50X3NjLmRlbChvKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jl
c2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9yZXNp
emUoc2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVf
c2V0KHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxs
X3NldChzZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgdywgaCk7CisKKyAgICBzZC0+Y2hhbmdlZC5z
aXplID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QpOworCisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAgX2V3a192
aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
Y2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7Cisg
ICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5nZWQuYW55ID0gRUlOQV9G
QUxTRTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAmeCwgJnksICZ3LCAmaCk7
CisKKyAgICBpZiAocHJpdi0+cGFnZUNsaWVudCAmJiBzZC0+Y2hhbmdlZC5zaXplICYmICgodyAh
PSBzZC0+dmlldy53KSB8fCAoaCAhPSBzZC0+dmlldy5oKSkpIHsKKyAgICAgICAgcHJpdi0+cGFn
ZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKEludFNpemUodywgaCksIElu
dFNpemUoKSk7CisgICAgICAgIHNkLT52aWV3LncgPSB3OworICAgICAgICBzZC0+dmlldy5oID0g
aDsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFfRkFMU0U7CisKKyAgICBpZiAo
c2QtPmNoYW5nZWQucG9zaXRpb24gJiYgKCh4ICE9IHNkLT52aWV3LngpIHx8ICh5ICE9IHNkLT52
aWV3LnkpKSkgeworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5iYWNraW5nX3N0b3JlLCB4
LCB5KTsKKyAgICAgICAgc2QtPnZpZXcueCA9IHg7CisgICAgICAgIHNkLT52aWV3LnkgPSB5Owor
ICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgaWYgKGV2YXNfb2JqZWN0X2NsaXBl
ZXNfZ2V0KHNkLT5iYXNlLmNsaXBwZXIpKQorICAgICAgICBldmFzX29iamVjdF9zaG93KHNkLT5i
YXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogbykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0
X2hpZGUoc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFja2lu
Z19zdG9yZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19pbml0KEV3a19W
aWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGFwaSwgRUlOQV9GQUxTRSk7CisKKyAgICBpZiAoYXBpLT52ZXJzaW9uICE9IEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04pIHsKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJf
bG9nX2RvbSwKKyAgICAgICAgICAgICAiRXdrX1ZpZXdfU21hcnRfQ2xhc3MgJXAgaXMgdmVyc2lv
biAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4iLAorICAgICAgICAgICAgIGFwaSwgYXBpLT52
ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9wYXJlbnRfc2MuYWRk
KSkKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJl9wYXJlbnRf
c2MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2Mp
OworCisgICAgLy8gc2V0IEV2YXNfU21hcnRfQ2xhc3MKKyAgICBhcGktPnNjLmFkZCA9IF9ld2tf
dmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVsOwor
ICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2MucmVz
aXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdrX3Zp
ZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlkZTsK
KyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7CisgICAg
YXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8qIHVzZWQgYnkgdHlwZSBjaGVja2lu
ZyAqLworCisgICAgLy8gc2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5mb2N1c19p
biA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGktPmZvY3VzX291dCA9IF9ld2tf
dmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93aGVlbCA9IF9ld2tfdmlld19z
bWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRf
bW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3Vw
OworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlOworICAg
IGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247CisgICAgYXBpLT5rZXlf
dXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0dXJuIEVJTkFfVFJVRTsKK30K
Kworc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZv
aWQpCit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFz
X1NtYXJ0KiBzbWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7Cisg
ICAgICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQoJmFwaSk7CisgICAgICAgIHNtYXJ0ID0g
ZXZhc19zbWFydF9jbGFzc19uZXcoJmFwaS5zYyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0
OworfQorCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgaWYgKF9ld2sy
X2xvZ19kb20gPCAwKQorICAgICAgICBfZXdrMl9sb2dfZG9tID0gZWluYV9sb2dfZG9tYWluX3Jl
Z2lzdGVyKCJFd2syX1ZpZXciLCAwKTsKKworICAgIEV2YXNfT2JqZWN0KiBvID0gZXZhc19vYmpl
Y3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcoKSk7CisgICAgaWYgKCFv
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAg
aWYgKCFzZCkgeworICAgICAgICBldmFzX29iamVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKyAgICBpZiAoIXBy
aXYpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBzZC0+YmFja2luZ19zdG9yZSk7
CisKKyAgICByZXR1cm4gbzsKK30KKworV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNf
T2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7CisKKyAgICByZXR1
cm4gdG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyODA5MjQwYjNhNzc3NzQ3
NTZjOTAxMWY0MTg2Y2FlNTcwNTEwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICAg
Q29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a192
aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21h
cnRfRGF0YTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyBFd2tfVmlld19T
bWFydF9DbGFzczsKKworLyoqCisgKiBFd2sgdmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVu
IGJ5IHN1Yi1jbGFzc2VzLgorICovCitzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKKyAg
ICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlzIGZyZWUgdG8gYmUg
Y2hhbmdlZC4gKi8KKyAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CisKKyAgICAvKiBldmVudCBo
YW5kbGluZzoKKyAgICAgICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2FsbCBwYXJlbnQgbWV0
aG9kIGlmIGRlc2lyZWQgKi8KKyAgICB2b2lkICgqZm9jdXNfaW4pKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkKTsKKyAgICB2b2lkICgqZm9jdXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7
CisgICAgdm9pZCAoKm1vdXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9kb3duKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duICpldik7Cisg
ICAgdm9pZCAoKm1vdXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9VcCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9tb3ZlKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7CisgICAgdm9pZCAo
KmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
RG93biAqZXYpOworICAgIHZvaWQgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworfTsKKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfVkVSU0lPTiAxVUwgLyoqIHRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBpbnRvIHRo
ZSB2ZXJzaW9uIGZpZWxkIGluIHRoZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgKi8K
KworLyoqCisgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgorICoKKyAqIEBwYXJhbSBzbWFydF9jbGFzc19pbml0IGluaXRpYWxpemVyIHRvIHVz
ZSBmb3IgdGhlICJiYXNlIiBmaWVsZAorICogKEV2YXNfU21hcnRfQ2xhc3MpLgorICoKKyAqIEBz
ZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05B
TUVfVkVSU0lPTgorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoc21hcnRf
Y2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJ
T04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisKKy8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVy
byBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAc2VlIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05BTUVfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
CisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMIEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEwpCisKKy8qKgorICogSW5p
dGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSBh
bmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9uLgorICoKKyAqIFNpbWlsYXIgdG8gRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgd2lsbCBzZXQgdmVyc2lvbiBmaWVsZCBvZgorICog
RXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0ZXN0IEVWQVNfU01BUlRfQ0xBU1Nf
VkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhlIHNwZWNpZmljIHZhbHVlLgorICoKKyAqIEl0IHdp
bGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1lIGZpZWxkIGFzIGEgImNvbnN0IGNoYXIgKiIsIHRo
YXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZhaWxhYmxlIHdoaWxlIHRoZSBzdHJ1Y3R1cmUgaXMg
dXNlZCAoaGludDogc3RhdGljIG9yIGdsb2JhbCEpCisgKiBhbmQgd2lsbCBub3QgYmUgbW9kaWZp
ZWQuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1Nf
SU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworLyoKKyAqIFN0cnVjdHVyZSB0byBjb250
YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQgaXMgdG8gYmUgY29uc2lkZXJlZAorICogcHJpdmF0
ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRlbmRlZCBvciBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2Vz
CisgKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1YmxpYyBoZWFkZXIgZmlsZSkuCisgKi8KK3N0cnVj
dCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CisgICAgRXZhc19PYmplY3RfU21hcnRfQ2xpcHBlZF9E
YXRhIGJhc2U7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaTsgLyoqPCByZWZl
cmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3RhbmNlICovCisgICAgRXZhc19PYmplY3QqIHNlbGY7
ICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0ICovCisgICAgRXZh
c19PYmplY3QqIGJhY2tpbmdfc3RvcmU7ICAgICAgLyoqPCByZWZlcmVuY2UgdG8gYmFja2luZyBz
dG9yZSAqLworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdjsgICAgIC8qKjwgc2hvdWxk
IG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBF
dmFzX0Nvb3JkIHgsIHksIHcsIGg7ICAgICAgIC8qKjwgbGFzdCB1c2VkIHZpZXdwb3J0ICovCisg
ICAgfSB2aWV3OworICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgd2hh
dCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9v
bCBhbnk6MTsKKyAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBv
c2l0aW9uOjE7CisgICAgfSBjaGFuZ2VkOworfTsKKworRUFQSSBFdmFzX09iamVjdCogZXdrX3Zp
ZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYpOworRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmpl
Y3QqIG8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qIGV3a192
aWV3X2ggKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97214</attachid>
            <date>2011-06-14 18:32:33 -0700</date>
            <delta_ts>2011-06-15 22:24:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110615103225.patch</filename>
            <type>text/plain</type>
            <size>24189</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg3OTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlZjczZDBlZjVjZTk4ZmMx
YWU4ODQ2MTA1YjY2ZWZjNTk5MWVhMjUyLi5lOWYxMWMzZTQxZTIxY2QwZWRhN2VjMjZkY2VjYThi
NWU4NjYxMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTQgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAg
KGV3a192aWV3X3BhZ2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOiBBZGRlZC4KKwogMjAxMS0wNi0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM3NzIzODQ5
ZDdhNDM4MGI3OWEwOWU2ZjMzNzE0NWM3OGZiMThjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMCwwICsxLDQ2NSBA
QAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgor
I2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1w
bC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMg
Y29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CisKK3N0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKKyAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VD
bGllbnQ7CisgICAgRXZhc19PYmplY3QqIHRvdWNoOworfTsKKworaW50IF9ld2syX2xvZ19kb20g
PSAtMTsKKworI2RlZmluZSBFV0tfVklFV19UWVBFX0NIRUNLKG8sIHJldCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGludCByZXQgPSAxOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBj
aGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQobyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBldmFzX29i
amVjdF9zbWFydF9zbWFydF9nZXQobyk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
RUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgIChfZXdrMl9sb2dfZG9tLCAiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwg
bywgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9v
dHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgcmV0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19n
ZXQoX3RtcF9zKTsgICAgICAgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3Rt
cF9zYykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChfZXdrMl9sb2df
ZG9tLCAiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3QhIiwgbywgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0ID0gMDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJ
S0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVXX1RZUEVfU1RSKSkgeyAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChf
ZXdrMl9sb2dfZG9tLCAiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdv
dCAlcCkhIiwgXAorICAgICAgICAgICAgICAgICBvLCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6
ICIobnVsbCkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0ID0gMDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRVdLX1ZJRVdfU0Rf
R0VUKG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0g
MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAo
cmV0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBwdHIgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19v
YmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVX
S19WSUVXX1NEX0dFVChvLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0df
RE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAoJXMp
IiwgXAorICAgICAgICAgICAgICAgICBvLCBldmFzX29iamVjdF90eXBlX2dldChvKSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
CisKKyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHB0cikgXAorICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHRyID0gc2QtPnByaXYKKworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHB0ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBpZiAoIXNkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xv
Z19kb20sICJzbWFydCBkYXRhIGlzIG51bGwiKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVQoc2QsIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NS
SVQoX2V3azJfbG9nX2RvbSwgIm5vIHByaXZhdGUgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCBc
CisgICAgICAgICAgICAgICAgIHNkLT5zZWxmLCBldmFzX29iamVjdF90eXBlX2dldChzZC0+c2Vs
ZikpOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkKQoreworICAgIGlmIChzZC0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVybjsKKyAg
ICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX1RSVUU7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2hh
bmdlZChzZC0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworc3RhdGljIHZvaWQgX2V3a192
aWV3X3NtYXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVXS19W
SUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQt
PnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCB8
IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBF
V0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xp
ZW50LT5wYWdlKCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3Vz
ZWQgfCBXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+dmll
dy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZVdo
ZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2Qt
PnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5k
bGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2Qt
PnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5k
bGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShFd2tfVmlld19TbWFydF9EYXRh
KiBzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldikKK3sKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0g
e3NkLT52aWV3LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+
aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldikKK3sKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdl
KCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5o
YW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXYpKTsKK30KKworLy8g
RXZlbnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0
YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19pbik7CisgICAgc2QtPmFwaS0+Zm9jdXNfaW4oc2Qp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKKyAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2QpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVu
dF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopZXZlbnRfaW5mbzsK
KyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRh
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3doZWVsKTsKKyAgICBzZC0+YXBpLT5t
b3VzZV93aGVlbChzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vf
ZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5m
bykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2Vf
RG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5h
cGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX2Rvd24p
OworICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2
b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2YXNf
RXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5t
b3VzZV91cCk7CisgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKK30KKworc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmpl
Y3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBl
diA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50
X0tleV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X2Rvd24pOworICAgIHNkLT5hcGktPmtleV9kb3duKHNk
LCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19F
dmVudF9LZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwKilldmVudF9pbmZvOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKKyAgICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2
KTsKK30KKworc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVWQVNfU01BUlRf
Q0xBU1NfSU5JVF9OVUxMOworCitzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3Zp
ZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwcml2ID0KKyAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopY2FsbG9j
KDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICBpZiAoIXByaXYpIHsKKyAg
ICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxvY2F0
ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7CisgICAgaWYgKCFwcml2KQorICAgICAgICByZXR1
cm47CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0cjsKKyAgICBmcmVlKHByaXYpOwor
fQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQorewor
ICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0
KG8pOworICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNjID0gZXZhc19zbWFydF9jbGFzc19n
ZXQoc21hcnQpOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSAoY29uc3Qg
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisK
KyAgICBpZiAoIXNkKSB7CisgICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNhbGxv
YygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAgICBpZiAoIXNkKSB7Cisg
ICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFs
bG9jYXRlIEV3a19WaWV3X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChvLCBzZCk7CisgICAgfQor
CisgICAgc2QtPnNlbGYgPSBvOworICAgIHNkLT5wcml2ID0gX2V3a192aWV3X3ByaXZfbmV3KHNk
KTsKKyAgICBzZC0+YXBpID0gYXBpOworCisgICAgaWYgKCFzZC0+cHJpdikgeworICAgICAgICBF
SU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFsbG9jYXRlIF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQo
bywgMCk7CisgICAgICAgIGZyZWUoc2QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
X3BhcmVudF9zYy5hZGQobyk7CisKKyAgICAvLyBjcmVhdGUgYmFja2luZ19zdG9yZSBpbWFnZQor
ICAgIHNkLT5iYWNraW5nX3N0b3JlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNkLT5iYXNlLmV2
YXMpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2FscGhhX3NldChzZC0+YmFja2luZ19zdG9yZSwg
RUlOQV9GQUxTRSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzZC0+YmFja2lu
Z19zdG9yZSwgbyk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7CisK
KyNkZWZpbmUgQ09OTkVDVChzLCBjKSBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQobywg
cywgYywgc2QpCisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdrX3ZpZXdf
b25fZm9jdXNfaW4pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQsIF9ld2tf
dmlld19vbl9mb2N1c19vdXQpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9XSEVF
TCwgX2V3a192aWV3X29uX21vdXNlX3doZWVsKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tf
TU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19D
QUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKKyAgICBDT05ORUNUKEVW
QVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOworICAgIENP
Tk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3duKTsKKyAg
ICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3VwKTsKKyN1
bmRlZiBDT05ORUNUCit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19P
YmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoc2QgJiYg
c2QtPnByaXYpCisgICAgICAgIF9ld2tfdmlld19wcml2X2RlbChzZC0+cHJpdik7CisKKyAgICBf
cGFyZW50X3NjLmRlbChvKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6
ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9yZXNpemUo
c2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0
KHNkLT5iYWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3Nl
dChzZC0+YmFja2luZ19zdG9yZSwgMCwgMCwgdywgaCk7CisKKyAgICBzZC0+Y2hhbmdlZC5zaXpl
ID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNkKTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdmUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQg
eCwgRXZhc19Db29yZCB5KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2Qp
OworCisgICAgc2QtPmNoYW5nZWQucG9zaXRpb24gPSBFSU5BX1RSVUU7CisgICAgX2V3a192aWV3
X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2Fs
Y3VsYXRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7CisgICAg
RXZhc19Db29yZCB4LCB5LCB3LCBoOworCisgICAgc2QtPmNoYW5nZWQuYW55ID0gRUlOQV9GQUxT
RTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChvLCAmeCwgJnksICZ3LCAmaCk7CisK
KyAgICBpZiAoc2QtPmNoYW5nZWQuc2l6ZSAmJiAoKHcgIT0gc2QtPnZpZXcudykgfHwgKGggIT0g
c2QtPnZpZXcuaCkpKSB7CisgICAgICAgIGlmIChwcml2LT5wYWdlQ2xpZW50KQorICAgICAgICAg
ICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKEludFNp
emUodywgaCksIEludFNpemUoKSk7CisgICAgICAgIHNkLT52aWV3LncgPSB3OworICAgICAgICBz
ZC0+dmlldy5oID0gaDsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJTkFfRkFMU0U7
CisKKyAgICBpZiAoc2QtPmNoYW5nZWQucG9zaXRpb24gJiYgKCh4ICE9IHNkLT52aWV3LngpIHx8
ICh5ICE9IHNkLT52aWV3LnkpKSkgeworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5iYWNr
aW5nX3N0b3JlLCB4LCB5KTsKKyAgICAgICAgc2QtPnZpZXcueCA9IHg7CisgICAgICAgIHNkLT52
aWV3LnkgPSB5OworICAgIH0KKyAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfRkFMU0U7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBvKQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgaWYgKGV2YXNf
b2JqZWN0X2NsaXBlZXNfZ2V0KHNkLT5iYXNlLmNsaXBwZXIpKQorICAgICAgICBldmFzX29iamVj
dF9zaG93KHNkLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tp
bmdfc3RvcmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09i
amVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAg
IGV2YXNfb2JqZWN0X2hpZGUoc2QtPmJhc2UuY2xpcHBlcik7CisgICAgZXZhc19vYmplY3RfaGlk
ZShzZC0+YmFja2luZ19zdG9yZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFz
c19pbml0KEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGFwaSwgRUlOQV9GQUxTRSk7CisKKyAgICBpZiAoYXBpLT52ZXJzaW9u
ICE9IEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04pIHsKKyAgICAgICAgRUlOQV9MT0dfRE9N
X0NSSVQoX2V3azJfbG9nX2RvbSwKKyAgICAgICAgICAgICAiRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
JXAgaXMgdmVyc2lvbiAlbHUgd2hpbGUgJWx1IHdhcyBleHBlY3RlZC4iLAorICAgICAgICAgICAg
IGFwaSwgYXBpLT52ZXJzaW9uLCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OKTsKKyAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisgICAgfQorCisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV9w
YXJlbnRfc2MuYWRkKSkKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9z
ZXQoJl9wYXJlbnRfc2MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2xpcHBlZF9zbWFydF9z
ZXQoJmFwaS0+c2MpOworCisgICAgLy8gc2V0IEV2YXNfU21hcnRfQ2xhc3MKKyAgICBhcGktPnNj
LmFkZCA9IF9ld2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdf
c21hcnRfZGVsOworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAg
IGFwaS0+c2MucmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNo
b3cgPSBfZXdrX3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdf
c21hcnRfaGlkZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGU7CisgICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8qIHVzZWQgYnkg
dHlwZSBjaGVja2luZyAqLworCisgICAgLy8gc2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzCisgICAg
YXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGktPmZvY3Vz
X291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93aGVlbCA9
IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24gPSBfZXdr
X3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192aWV3X3Nt
YXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3Vz
ZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd247Cisg
ICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKK30KKworc3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRf
Y2xhc3NfbmV3KHZvaWQpCit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAg
IHN0YXRpYyBFdmFzX1NtYXJ0KiBzbWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSgh
c21hcnQpKSB7CisgICAgICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQoJmFwaSk7CisgICAg
ICAgIHNtYXJ0ID0gZXZhc19zbWFydF9jbGFzc19uZXcoJmFwaS5zYyk7CisgICAgfQorCisgICAg
cmV0dXJuIHNtYXJ0OworfQorCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7Cisg
ICAgaWYgKF9ld2syX2xvZ19kb20gPCAwKQorICAgICAgICBfZXdrMl9sb2dfZG9tID0gZWluYV9s
b2dfZG9tYWluX3JlZ2lzdGVyKCJFd2syX1ZpZXciLCAwKTsKKworICAgIEV2YXNfT2JqZWN0KiBv
ID0gZXZhc19vYmplY3Rfc21hcnRfYWRkKGUsIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcoKSk7
CisgICAgaWYgKCFvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEVXS19WSUVXX1NEX0dFVChv
LCBzZCk7CisgICAgaWYgKCFzZCkgeworICAgICAgICBldmFzX29iamVjdF9kZWwobyk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsK
KyAgICBpZiAoIXByaXYpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG8pOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBzZC0+YmFj
a2luZ19zdG9yZSk7CisKKyAgICByZXR1cm4gbzsKK30KKworV0tQYWdlUmVmIGV3a192aWV3X3Bh
Z2VfZ2V0KEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7
CisKKyAgICByZXR1cm4gdG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyODA5
MjQwYjNhNzc3NzQ3NTZjOTAxMWY0MTg2Y2FlNTcwNTEwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0wLDAgKzEsMTIw
IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIGV3a192aWV3X2gKKyNkZWZpbmUgZXdrX3ZpZXdfaAorCisjaW5jbHVkZSA8RXZhcy5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEg
RXdrX1ZpZXdfU21hcnRfRGF0YTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFz
cyBFd2tfVmlld19TbWFydF9DbGFzczsKKworLyoqCisgKiBFd2sgdmlldydzIGNsYXNzLCB0byBi
ZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgorICovCitzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0NsYXNzIHsKKyAgICBFdmFzX1NtYXJ0X0NsYXNzIHNjOyAvKio8IGFsbCBidXQgJ2RhdGEnIGlz
IGZyZWUgdG8gYmUgY2hhbmdlZC4gKi8KKyAgICB1bnNpZ25lZCBsb25nIHZlcnNpb247CisKKyAg
ICAvKiBldmVudCBoYW5kbGluZzoKKyAgICAgICAtIGlmIG92ZXJyaWRkZW4sIGhhdmUgdG8gY2Fs
bCBwYXJlbnQgbWV0aG9kIGlmIGRlc2lyZWQgKi8KKyAgICB2b2lkICgqZm9jdXNfaW4pKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAgICB2b2lkICgqZm9jdXNfb3V0KShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCk7CisgICAgdm9pZCAoKm1vdXNlX3doZWVsKShFd2tfVmlld19TbWFydF9EYXRh
ICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCAqZXYpOworICAgIHZvaWQgKCptb3Vz
ZV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9E
b3duICpldik7CisgICAgdm9pZCAoKm1vdXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCAqZXYpOworICAgIHZvaWQgKCptb3VzZV9tb3ZlKShF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlICpldik7
CisgICAgdm9pZCAoKmtleV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biAqZXYpOworICAgIHZvaWQgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworfTsKKyNkZWZpbmUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiAxVUwgLyoqIHRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRv
IHB1dCBpbnRvIHRoZSB2ZXJzaW9uIGZpZWxkIGluIHRoZSBFd2tfVmlld19TbWFydF9DbGFzcyBz
dHJ1Y3R1cmUgKi8KKworLyoqCisgKiBJbml0aWFsaXplciBmb3Igd2hvbGUgRXdrX1ZpZXdfU21h
cnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBwYXJhbSBzbWFydF9jbGFzc19pbml0IGluaXRp
YWxpemVyIHRvIHVzZSBmb3IgdGhlICJiYXNlIiBmaWVsZAorICogKEV2YXNfU21hcnRfQ2xhc3Mp
LgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05BTUVfVkVSU0lPTgorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVQoc21hcnRfY2xhc3NfaW5pdCkge3NtYXJ0X2NsYXNzX2luaXQsIEVXS19WSUVXX1NNQVJU
X0NMQVNTX1ZFUlNJT04sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9CisKKy8qKgorICogSW5pdGlh
bGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAq
CisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxM
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEwpCisK
Ky8qKgorICogSW5pdGlhbGl6ZXIgdG8gemVybyBhIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNz
IHN0cnVjdHVyZSBhbmQgc2V0CisgKiBuYW1lIGFuZCB2ZXJzaW9uLgorICoKKyAqIFNpbWlsYXIg
dG8gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMLCBidXQgd2lsbCBzZXQgdmVyc2lvbiBm
aWVsZCBvZgorICogRXZhc19TbWFydF9DbGFzcyAoYmFzZSBmaWVsZCkgdG8gbGF0ZXN0IEVWQVNf
U01BUlRfQ0xBU1NfVkVSU0lPTiBhbmQgbmFtZQorICogdG8gdGhlIHNwZWNpZmljIHZhbHVlLgor
ICoKKyAqIEl0IHdpbGwga2VlcCBhIHJlZmVyZW5jZSB0byBuYW1lIGZpZWxkIGFzIGEgImNvbnN0
IGNoYXIgKiIsIHRoYXQgaXMsCisgKiBuYW1lIG11c3QgYmUgYXZhaWxhYmxlIHdoaWxlIHRoZSBz
dHJ1Y3R1cmUgaXMgdXNlZCAoaGludDogc3RhdGljIG9yIGdsb2JhbCEpCisgKiBhbmQgd2lsbCBu
b3QgYmUgbW9kaWZpZWQuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05V
TEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05BTUVfVkVSU0lPTihuYW1lKSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNf
U01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkpCisKK3R5cGVkZWYgc3RydWN0IF9F
d2tfVmlld19Qcml2YXRlX0RhdGEgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworLyoKKyAqIFN0cnVj
dHVyZSB0byBjb250YWluIGludGVybmFsIFZpZXcgZGF0YSwgaXQgaXMgdG8gYmUgY29uc2lkZXJl
ZAorICogcHJpdmF0ZSBieSB1c2VycywgYnV0IG1heSBiZSBleHRlbmRlZCBvciBjaGFuZ2VkIGJ5
IHN1Yi1jbGFzc2VzCisgKiAodGhhdCdzIHdoeSBpdCdzIGluIHB1YmxpYyBoZWFkZXIgZmlsZSku
CisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSB7CisgICAgRXZhc19PYmplY3RfU21h
cnRfQ2xpcHBlZF9EYXRhIGJhc2U7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFw
aTsgLyoqPCByZWZlcmVuY2UgdG8gY2FzdGVkIGNsYXNzIGluc3RhbmNlICovCisgICAgRXZhc19P
YmplY3QqIHNlbGY7ICAgICAgICAgICAgICAgLyoqPCByZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0
ICovCisgICAgRXZhc19PYmplY3QqIGJhY2tpbmdfc3RvcmU7ICAgICAgLyoqPCByZWZlcmVuY2Ug
dG8gYmFja2luZyBzdG9yZSAqLworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdjsgICAg
IC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYgKi8KKyAgICBzdHJ1Y3Qg
eworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7ICAgICAgIC8qKjwgbGFzdCB1c2VkIHZp
ZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qKjwgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlICovCisgICAg
ICAgIEVpbmFfQm9vbCBhbnk6MTsKKyAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKKyAgICAgICAg
RWluYV9Cb29sIHBvc2l0aW9uOjE7CisgICAgfSBjaGFuZ2VkOworfTsKKworRUFQSSBFdmFzX09i
amVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOworRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9n
ZXQoRXZhc19PYmplY3QqIG8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2Vu
ZGlmIC8qIGV3a192aWV3X2ggKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97399</attachid>
            <date>2011-06-15 22:24:44 -0700</date>
            <delta_ts>2011-06-16 17:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110616142420.patch</filename>
            <type>text/plain</type>
            <size>24100</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg5MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NmYxODlkMThiNDE2MmRm
MjJmYjNhZDE5OWEzNmVkZTBmYzkyZTg2Li4wNjE4ZWEzMzgyNzY2OWEwZmRlYWIxYjIxMjE4NWYx
N2IwNmM0YzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTUgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAg
KGV3a192aWV3X3BhZ2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOiBBZGRlZC4KKwogMjAxMS0wNi0xNCAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjRlYjkwOTBm
NDA1MWY2NmFhNTQwODQ2OTIzYTU4ZWRiMmY1NTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDY1IEBA
CisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisj
aW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBs
LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBj
b25zdCBjaGFyIEVXS19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKKworc3RydWN0IF9F
d2tfVmlld19Qcml2YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNs
aWVudDsKKyAgICBFdmFzX09iamVjdCogdG91Y2g7Cit9OworCitpbnQgX2V3azJfbG9nX2RvbSA9
IC0xOworCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgcmV0KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHJldCA9IDE7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNo
YXIqIF90bXBfb3R5cGUgPSBldmFzX29iamVjdF90eXBlX2dldChvKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2Jq
ZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChF
SU5BX1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgKF9ld2syX2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBv
LCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290
eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dl
dChfdG1wX3MpOyAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1w
X3NjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9ld2syX2xvZ19k
b20sICIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCBvLCAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElL
RUxZKF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9TVFIpKSB7ICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19ET01fQ1JJVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKF9l
d2syX2xvZ19kb20sICIlcCAoJXMpIGlzIG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290
ICVwKSEiLCBcCisgICAgICAgICAgICAgICAgIG8sIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDog
IihudWxsKSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
IEVXS19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICByZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFV0tfVklFV19TRF9H
RVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSAw
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChy
ZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29i
amVjdF9zbWFydF9kYXRhX2dldChvKTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHB0ciwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdL
X1ZJRVdfU0RfR0VUKG8sIHB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19E
T01fQ1JJVChfZXdrMl9sb2dfZG9tLCAibm8gc21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcyki
LCBcCisgICAgICAgICAgICAgICAgIG8sIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0K
KworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzZCwgcHRyKSBcCisgICAgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBwdHIgPSBzZC0+cHJpdgorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGlmICghc2QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9n
X2RvbSwgInNtYXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19QUklW
X0dFVChzZCwgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgaWYgKCFwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJ
VChfZXdrMl9sb2dfZG9tLCAibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwK
KyAgICAgICAgICAgICAgICAgc2QtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNkLT5zZWxm
KSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QpCit7CisgICAgaWYgKHNkLT5jaGFuZ2VkLmFueSkKKyAgICAgICAgcmV0dXJuOworICAg
IHNkLT5jaGFuZ2VkLmFueSA9IEVJTkFfVFJVRTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jaGFu
Z2VkKHNkLT5zZWxmKTsKK30KKworLy8gRGVmYXVsdCBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfZm9jdXNfaW4oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwg
V2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGll
bnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNl
ZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3
LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlV2hl
ZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+
dmlldy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV91cChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+
dmlldy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2KQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7
c2QtPnZpZXcueCwgc2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5o
YW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2KQoreworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhh
bmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldikpOworfQorCisvLyBF
dmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRh
LCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKKyAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7
Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpLT5mb2N1c19vdXQpOworICAgIHNkLT5hcGktPmZvY3VzX291dChzZCk7Cit9
CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50
X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOwor
ICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNkLT5hcGktPm1v
dXNlX3doZWVsKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9k
b3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZv
KQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9E
b3duKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7
CisgICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19F
dmVudF9Nb3VzZV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1v
dXNlX3VwKTsKKyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgZXYpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2
ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPm1vdXNlX21vdmUpOworICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRf
S2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CisgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2Qs
IGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2
ZW50X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOworICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYp
OworfQorCitzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9D
TEFTU19JTklUX05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFd2tfVmlld19Qcml2
YXRlX0RhdGEqIHByaXYgPQorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2Mo
MSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOworICAgIGlmICghcHJpdikgeworICAg
ICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLCAiY291bGQgbm90IGFsbG9jYXRl
IEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICByZXR1cm4gcHJpdjsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAgIGZyZWUocHJpdik7Cit9
CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCit7Cisg
ICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQo
byk7CisgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dl
dChzbWFydCk7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBF
d2tfVmlld19TbWFydF9DbGFzcyopc2M7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKwor
ICAgIGlmICghc2QpIHsKKyAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9j
KDEsIHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIGlmICghc2QpIHsKKyAg
ICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxs
b2NhdGUgRXdrX1ZpZXdfU21hcnRfRGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIHNkKTsKKyAgICB9CisK
KyAgICBzZC0+c2VsZiA9IG87CisgICAgc2QtPnByaXYgPSBfZXdrX3ZpZXdfcHJpdl9uZXcoc2Qp
OworICAgIHNkLT5hcGkgPSBhcGk7CisKKyAgICBpZiAoIXNkLT5wcml2KSB7CisgICAgICAgIEVJ
TkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChv
LCAwKTsKKyAgICAgICAgZnJlZShzZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBf
cGFyZW50X3NjLmFkZChvKTsKKworICAgIC8vIGNyZWF0ZSBiYWNraW5nX3N0b3JlIGltYWdlCisg
ICAgc2QtPmJhY2tpbmdfc3RvcmUgPSBldmFzX29iamVjdF9pbWFnZV9hZGQoc2QtPmJhc2UuZXZh
cyk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBF
SU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNkLT5iYWNraW5n
X3N0b3JlLCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKKwor
I2RlZmluZSBDT05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChvLCBz
LCBjLCBzZCkKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19v
bl9mb2N1c19pbik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192
aWV3X29uX2ZvY3VzX291dCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVM
LCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19N
T1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NB
TExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZB
U19DQUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09O
TkVDVChFVkFTX0NBTExCQUNLX0tFWV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAg
IENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3Vu
ZGVmIENPTk5FQ1QKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09i
amVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGlmIChzZCAmJiBz
ZC0+cHJpdikKKyAgICAgICAgX2V3a192aWV3X3ByaXZfZGVsKHNkLT5wcml2KTsKKworICAgIF9w
YXJlbnRfc2MuZGVsKG8pOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXpl
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKK3sKKyAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShz
ZC0+YmFja2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6ZV9zZXQo
c2QtPmJhY2tpbmdfc3RvcmUsIHcsIGgpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0
KHNkLT5iYWNraW5nX3N0b3JlLCAwLCAwLCB3LCBoKTsKKworICAgIHNkLT5jaGFuZ2VkLnNpemUg
PSBFSU5BX1RSVUU7CisgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOworfQorCitzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW92ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHkpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCk7
CisKKyAgICBzZC0+Y2hhbmdlZC5wb3NpdGlvbiA9IEVJTkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdf
c21hcnRfY2hhbmdlZChzZCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxj
dWxhdGUoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKKyAgICBF
dmFzX0Nvb3JkIHgsIHksIHcsIGg7CisKKyAgICBzZC0+Y2hhbmdlZC5hbnkgPSBFSU5BX0ZBTFNF
OworCisgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KG8sICZ4LCAmeSwgJncsICZoKTsKKwor
ICAgIGlmIChzZC0+Y2hhbmdlZC5zaXplKSB7CisgICAgICAgIGlmIChwcml2LT5wYWdlQ2xpZW50
KQorICAgICAgICAgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5z
ZXRTaXplKEludFNpemUodywgaCksIEludFNpemUoKSk7CisgICAgICAgIHNkLT52aWV3LncgPSB3
OworICAgICAgICBzZC0+dmlldy5oID0gaDsKKyAgICB9CisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9
IEVJTkFfRkFMU0U7CisKKyAgICBpZiAoc2QtPmNoYW5nZWQucG9zaXRpb24pIHsKKyAgICAgICAg
ZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7CisgICAgICAgIHNkLT52
aWV3LnggPSB4OworICAgICAgICBzZC0+dmlldy55ID0geTsKKyAgICB9CisgICAgc2QtPmNoYW5n
ZWQucG9zaXRpb24gPSBFSU5BX0ZBTFNFOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21h
cnRfc2hvdyhFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkKTsKKworICAgIGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dldChzZC0+YmFzZS5jbGlw
cGVyKSkKKyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFzZS5jbGlwcGVyKTsKKyAgICBl
dmFzX29iamVjdF9zaG93KHNkLT5iYWNraW5nX3N0b3JlKTsKK30KKworc3RhdGljIHZvaWQgX2V3
a192aWV3X3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCk7CisKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYXNlLmNsaXBw
ZXIpOworICAgIGV2YXNfb2JqZWN0X2hpZGUoc2QtPmJhY2tpbmdfc3RvcmUpOworfQorCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFzcyogYXBp
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIEVJTkFfRkFMU0Up
OworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9O
KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sCisgICAgICAgICAg
ICAgIkV3a19WaWV3X1NtYXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMg
ZXhwZWN0ZWQuIiwKKyAgICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01B
UlRfQ0xBU1NfVkVSU0lPTik7CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKwor
ICAgIGlmIChFSU5BX1VOTElLRUxZKCFfcGFyZW50X3NjLmFkZCkpCisgICAgICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZfcGFyZW50X3NjKTsKKworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZhcGktPnNjKTsKKworICAgIC8vIHNldCBFdmFz
X1NtYXJ0X0NsYXNzCisgICAgYXBpLT5zYy5hZGQgPSBfZXdrX3ZpZXdfc21hcnRfYWRkOworICAg
IGFwaS0+c2MuZGVsID0gX2V3a192aWV3X3NtYXJ0X2RlbDsKKyAgICBhcGktPnNjLm1vdmUgPSBf
ZXdrX3ZpZXdfc21hcnRfbW92ZTsKKyAgICBhcGktPnNjLnJlc2l6ZSA9IF9ld2tfdmlld19zbWFy
dF9yZXNpemU7CisgICAgYXBpLT5zYy5zaG93ID0gX2V3a192aWV3X3NtYXJ0X3Nob3c7CisgICAg
YXBpLT5zYy5oaWRlID0gX2V3a192aWV3X3NtYXJ0X2hpZGU7CisgICAgYXBpLT5zYy5jYWxjdWxh
dGUgPSBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlOworICAgIGFwaS0+c2MuZGF0YSA9IEVXS19W
SUVXX1RZUEVfU1RSOyAvKiB1c2VkIGJ5IHR5cGUgY2hlY2tpbmcgKi8KKworICAgIC8vIHNldCBF
d2tfVmlld19TbWFydF9DbGFzcworICAgIGFwaS0+Zm9jdXNfaW4gPSBfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW47CisgICAgYXBpLT5mb2N1c19vdXQgPSBfZXdrX3ZpZXdfc21hcnRfZm9jdXNfb3V0
OworICAgIGFwaS0+bW91c2Vfd2hlZWwgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWw7Cisg
ICAgYXBpLT5tb3VzZV9kb3duID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd247CisgICAgYXBp
LT5tb3VzZV91cCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV91cDsKKyAgICBhcGktPm1vdXNlX21v
dmUgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZTsKKyAgICBhcGktPmtleV9kb3duID0gX2V3
a192aWV3X3NtYXJ0X2tleV9kb3duOworICAgIGFwaS0+a2V5X3VwID0gX2V3a192aWV3X3NtYXJ0
X2tleV91cDsKKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZh
c19TbWFydCogX2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldyh2b2lkKQoreworICAgIHN0YXRpYyBF
d2tfVmlld19TbWFydF9DbGFzcyBhcGkgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVf
VkVSU0lPTigiRXdrX1ZpZXciKTsKKyAgICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOwor
CisgICAgaWYgKEVJTkFfVU5MSUtFTFkoIXNtYXJ0KSkgeworICAgICAgICBld2tfdmlld19zbWFy
dF9jbGFzc19pbml0KCZhcGkpOworICAgICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3
KCZhcGkuc2MpOworICAgIH0KKworICAgIHJldHVybiBzbWFydDsKK30KKworRXZhc19PYmplY3Qq
IGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIGlmIChfZXdrMl9sb2dfZG9tIDwgMCkKKyAgICAg
ICAgX2V3azJfbG9nX2RvbSA9IGVpbmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiRXdrMl9WaWV3Iiwg
MCk7CisKKyAgICBFdmFzX09iamVjdCogbyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChlLCBfZXdr
X3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghbykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIGlmICghc2QpIHsKKyAgICAgICAg
ZXZhc19vYmplY3RfZGVsKG8pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBFV0tf
VklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIGV2YXNf
b2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdi0+cGFn
ZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0b0lt
cGwocGFnZUdyb3VwUmVmKSwgc2QtPmJhY2tpbmdfc3RvcmUpOworCisgICAgcmV0dXJuIG87Cit9
CisKK1dLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VF9PUl9SRVRVUk4oc2QsIHByaXYsIDApOworCisgICAgcmV0dXJuIHRvQVBJKHByaXYtPnBhZ2VD
bGllbnQtPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MjgwOTI0MGIzYTc3Nzc0NzU2YzkwMTFmNDE4NmNhZTU3MDUx
MGJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdmlld19oCisjZGVmaW5lIGV3a192
aWV3X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3Ry
dWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7Cit0eXBlZGVmIHN0
cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CisKKy8qKgor
ICogRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4KKyAq
Lworc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CisgICAgRXZhc19TbWFydF9DbGFzcyBz
YzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCisgICAgdW5z
aWduZWQgbG9uZyB2ZXJzaW9uOworCisgICAgLyogZXZlbnQgaGFuZGxpbmc6CisgICAgICAgLSBp
ZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVkICovCisg
ICAgdm9pZCAoKmZvY3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9pZCAo
KmZvY3VzX291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworICAgIHZvaWQgKCptb3VzZV93
aGVlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hl
ZWwgKmV2KTsKKyAgICB2b2lkICgqbW91c2VfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOworICAgIHZvaWQgKCptb3VzZV91cCko
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2KTsK
KyAgICB2b2lkICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOworICAgIHZvaWQgKCprZXlfZG93bikoRXdrX1ZpZXdf
U21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKKyAgICB2b2lk
ICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlf
VXAgKmV2KTsKK307CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVMIC8q
KiB0aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZCBpbiB0
aGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlICovCisKKy8qKgorICogSW5pdGlhbGl6
ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqCisgKiBAcGFy
YW0gc21hcnRfY2xhc3NfaW5pdCBpbml0aWFsaXplciB0byB1c2UgZm9yIHRoZSAiYmFzZSIgZmll
bGQKKyAqIChFdmFzX1NtYXJ0X0NsYXNzKS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04K
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KKyAqLworI2Rl
ZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFydF9j
bGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwfQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19T
bWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19J
TklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJ
T04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVWQVNf
U01BUlRfQ0xBU1NfSU5JVF9OVUxMKQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3
aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgYW5kIHNldAorICogbmFtZSBhbmQg
dmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVM
TCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKKyAqIEV2YXNfU21hcnRfQ2xhc3MgKGJh
c2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNTX1ZFUlNJT04gYW5kIG5hbWUKKyAq
IHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqCisgKiBJdCB3aWxsIGtlZXAgYSByZWZlcmVuY2Ug
dG8gbmFtZSBmaWVsZCBhcyBhICJjb25zdCBjaGFyICoiLCB0aGF0IGlzLAorICogbmFtZSBtdXN0
IGJlIGF2YWlsYWJsZSB3aGlsZSB0aGUgc3RydWN0dXJlIGlzIHVzZWQgKGhpbnQ6IHN0YXRpYyBv
ciBnbG9iYWwhKQorICogYW5kIHdpbGwgbm90IGJlIG1vZGlmaWVkLgorICoKKyAqIEBzZWUgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8KKyNk
ZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkgRVdLX1ZJ
RVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5h
bWUpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3X1By
aXZhdGVfRGF0YTsKKy8qCisgKiBTdHJ1Y3R1cmUgdG8gY29udGFpbiBpbnRlcm5hbCBWaWV3IGRh
dGEsIGl0IGlzIHRvIGJlIGNvbnNpZGVyZWQKKyAqIHByaXZhdGUgYnkgdXNlcnMsIGJ1dCBtYXkg
YmUgZXh0ZW5kZWQgb3IgY2hhbmdlZCBieSBzdWItY2xhc3NlcworICogKHRoYXQncyB3aHkgaXQn
cyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICovCitzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0Rh
dGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBwZWRfRGF0YSBiYXNlOworICAgIGNvbnN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGk7IC8qKjwgcmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFz
cyBpbnN0YW5jZSAqLworICAgIEV2YXNfT2JqZWN0KiBzZWxmOyAgICAgICAgICAgICAgIC8qKjwg
cmVmZXJlbmNlIHRvIG93bmVyIG9iamVjdCAqLworICAgIEV2YXNfT2JqZWN0KiBiYWNraW5nX3N0
b3JlOyAgICAgIC8qKjwgcmVmZXJlbmNlIHRvIGJhY2tpbmcgc3RvcmUgKi8KKyAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXY7ICAgICAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwg
YysrIHN0dWZmICovCisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBo
OyAgICAgICAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAqLworICAgIH0gdmlldzsKKyAgICBzdHJ1
Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAvKio8IHdoYXQgY2hhbmdlZCBzaW5jZSBsYXN0
IHNtYXJ0X2NhbGN1bGF0ZSAqLworICAgICAgICBFaW5hX0Jvb2wgYW55OjE7CisgICAgICAgIEVp
bmFfQm9vbCBzaXplOjE7CisgICAgICAgIEVpbmFfQm9vbCBwb3NpdGlvbjoxOworICAgIH0gY2hh
bmdlZDsKK307CisKK0VBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBlLCBXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKTsKK0VBUEkg
V0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiBld2tfdmlld19oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97529</attachid>
            <date>2011-06-16 17:45:07 -0700</date>
            <delta_ts>2011-12-15 01:01:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61915-20110617094430.patch</filename>
            <type>text/plain</type>
            <size>24104</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYWUxZjUyYWNjYjYxNTFm
YTQyNGMyMzc2ZjA2ODg3YjU3YjI1NzA3Li4zMWI2MzI0OGEyOGU4NmJjMDAyY2ViN2ZlZmQyOTMz
ZTI5YWEzYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDYtMTYgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3Zp
ZXcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxOTE1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6IEFkZGVk
LgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV91cCk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X29uX2Zv
Y3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwpOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmll
d19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfZGVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3
X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6CisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfaGlk
ZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9jbGFzc19pbml0KToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfYWRkKToKKyAgICAgICAg
KGV3a192aWV3X3BhZ2VfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOiBBZGRlZC4KKwogMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNTE1ZGY2OTViMjcw
MzE2NzAzNzAzZWExODQ2YmRlNDFlZWRmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTAsMCArMSw0NjUgQEAKKy8q
CisgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorCisjaW5jbHVkZSAiTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0
IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOworCitzdHJ1Y3QgX0V3a19W
aWV3X1ByaXZhdGVfRGF0YSB7CisgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50
OworICAgIEV2YXNfT2JqZWN0KiB0b3VjaDsKK307CisKK2ludCBfZXdrMl9sb2dfZG9tID0gLTE7
CisKKyNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCByZXQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQgcmV0ID0gMTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciog
X3RtcF9vdHlwZSA9IGV2YXNfb2JqZWN0X3R5cGVfZ2V0KG8pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydCogX3RtcF9zID0gZXZhc19vYmplY3Rf
c21hcnRfc21hcnRfZ2V0KG8pOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFf
VU5MSUtFTFkoIV90bXBfcykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAoX2V3azJfbG9nX2RvbSwgIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUg
OiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IHJldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Y29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KF90
bXBfcyk7ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfc2Mp
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIEVJTkFfTE9HX0RPTV9DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoX2V3azJfbG9nX2RvbSwg
IiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsIG8sICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldCA9IDA7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFko
X3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBFX1NUUikpIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoX2V3azJf
bG9nX2RvbSwgIiVwICglcykgaXMgbm90IG9mIGFuIGV3a192aWV3IChuZWVkICVwLCBnb3QgJXAp
ISIsIFwKKyAgICAgICAgICAgICAgICAgbywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51
bGwpIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgRVdL
X1ZJRVdfVFlQRV9TVFIsIF90bXBfc2MtPmRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHJldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChv
LCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBFV0tfVklFV19UWVBFX0NIRUNLKG8sIHJldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHB0ciA9IDA7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJldCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcHRyID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KG8pOworCisjZGVmaW5lIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgcHRyLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklF
V19TRF9HRVQobywgcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGlmICghcHRyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0RPTV9D
UklUKF9ld2syX2xvZ19kb20sICJubyBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsIFwK
KyAgICAgICAgICAgICAgICAgbywgZXZhc19vYmplY3RfdHlwZV9nZXQobykpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisj
ZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwdHIpIFwKKyAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHB0ciA9IHNkLT5wcml2CisKKyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwdHIsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYg
KCFzZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9t
LCAic21hcnQgZGF0YSBpcyBudWxsIik7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBpZiAoIXB0cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9l
d2syX2xvZ19kb20sICJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgXAorICAg
ICAgICAgICAgICAgICBzZC0+c2VsZiwgZXZhc19vYmplY3RfdHlwZV9nZXQoc2QtPnNlbGYpKTsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCkKK3sKKyAgICBpZiAoc2QtPmNoYW5nZWQuYW55KQorICAgICAgICByZXR1cm47CisgICAgc2Qt
PmNoYW5nZWQuYW55ID0gRUlOQV9UUlVFOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQo
c2QtPnNlbGYpOworfQorCisvLyBEZWZhdWx0IEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3N0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9mb2N1c19pbihFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKK3sKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdl
KCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQ
YWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9mb2N1c19vdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwg
V2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JF
VFVSTihzZCwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c2QtPnZpZXcueCwg
c2QtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2
ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXYsICZwb3NpdGlvbikpOworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3
LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBj
b25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldikKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc2QsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NkLT52aWV3
LngsIHNkLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAmcG9zaXRpb24pKTsKK30KKworc3RhdGlj
IHZvaWQgX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzZC0+
dmlldy54LCBzZC0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRs
ZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgJnBvc2l0aW9uKSk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9rZXlfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXYpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNkLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5o
YW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXYpKTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwg
Y29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzZCwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxl
S2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2KSk7Cit9CisKKy8vIEV2ZW50
IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOworICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKK30K
Kworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGktPmZvY3VzX291dCk7CisgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50X2luZm87CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV93aGVlbCk7CisgICAgc2QtPmFwaS0+bW91c2Vf
d2hlZWwoc2QsIGV2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24o
dm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7
CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24q
KWV2ZW50X2luZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKKyAg
ICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlbnRfaW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50
X01vdXNlX1VwKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vf
dXApOworICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7Cit9CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSAo
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+bW91c2VfbW92ZSk7CisgICAgc2QtPmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOworfQor
CitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwg
RXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlf
RG93biogZXYgPSAoRXZhc19FdmVudF9LZXlfRG93biopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsKKyAgICBzZC0+YXBpLT5rZXlfZG93bihzZCwgZXYp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQoreworICAgIEV2YXNfRXZlbnRf
S2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGktPmtleV91cCk7CisgICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7Cit9
CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTDsKKworc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3By
aXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiA9CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBz
aXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAg
IEVJTkFfTE9HX0RPTV9DUklUKF9ld2syX2xvZ19kb20sICJjb3VsZCBub3QgYWxsb2NhdGUgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJl
dHVybiBwcml2OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAgIGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51bGxwdHI7CisgICAgZnJlZShwcml2KTsKK30KKwor
c3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKK3sKKyAgICBj
b25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChvKTsK
KyAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNt
YXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19W
aWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworCisgICAg
aWYgKCFzZCkgeworICAgICAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKiljYWxsb2MoMSwg
c2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgaWYgKCFzZCkgeworICAgICAg
ICAgICAgRUlOQV9MT0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxvY2F0
ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQobywgc2QpOworICAgIH0KKworICAg
IHNkLT5zZWxmID0gbzsKKyAgICBzZC0+cHJpdiA9IF9ld2tfdmlld19wcml2X25ldyhzZCk7Cisg
ICAgc2QtPmFwaSA9IGFwaTsKKworICAgIGlmICghc2QtPnByaXYpIHsKKyAgICAgICAgRUlOQV9M
T0dfRE9NX0NSSVQoX2V3azJfbG9nX2RvbSwgImNvdWxkIG5vdCBhbGxvY2F0ZSBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIik7CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfc2V0KG8sIDAp
OworICAgICAgICBmcmVlKHNkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYXJl
bnRfc2MuYWRkKG8pOworCisgICAgLy8gY3JlYXRlIGJhY2tpbmdfc3RvcmUgaW1hZ2UKKyAgICBz
ZC0+YmFja2luZ19zdG9yZSA9IGV2YXNfb2JqZWN0X2ltYWdlX2FkZChzZC0+YmFzZS5ldmFzKTsK
KyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc2QtPmJhY2tpbmdfc3RvcmUsIEVJTkFf
RkFMU0UpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3Rv
cmUsIG8pOworICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOworCisjZGVm
aW5lIENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG8sIHMsIGMs
IHNkKQorICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19JTiwgX2V3a192aWV3X29uX2Zv
Y3VzX2luKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdf
b25fZm9jdXNfb3V0KTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0VfV0hFRUwsIF9l
d2tfdmlld19vbl9tb3VzZV93aGVlbCk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNF
X0RPV04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJB
Q0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl9tb3VzZV91cCk7CisgICAgQ09OTkVDVChFVkFTX0NB
TExCQUNLX01PVVNFX01PVkUsIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKTsKKyAgICBDT05ORUNU
KEVWQVNfQ0FMTEJBQ0tfS0VZX0RPV04sIF9ld2tfdmlld19vbl9rZXlfZG93bik7CisgICAgQ09O
TkVDVChFVkFTX0NBTExCQUNLX0tFWV9VUCwgX2V3a192aWV3X29uX2tleV91cCk7CisjdW5kZWYg
Q09OTkVDVAorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZGVsKEV2YXNfT2JqZWN0
KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgaWYgKHNkICYmIHNkLT5w
cml2KQorICAgICAgICBfZXdrX3ZpZXdfcHJpdl9kZWwoc2QtPnByaXYpOworCisgICAgX3BhcmVu
dF9zYy5kZWwobyk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9yZXNpemUoRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQoreworICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5i
YWNraW5nX3N0b3JlLCB3LCBoKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9zaXplX3NldChzZC0+
YmFja2luZ19zdG9yZSwgdywgaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZmlsbF9zZXQoc2Qt
PmJhY2tpbmdfc3RvcmUsIDAsIDAsIHcsIGgpOworCisgICAgc2QtPmNoYW5nZWQuc2l6ZSA9IEVJ
TkFfVFJVRTsKKyAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2
YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKwor
ICAgIHNkLT5jaGFuZ2VkLnBvc2l0aW9uID0gRUlOQV9UUlVFOworICAgIF9ld2tfdmlld19zbWFy
dF9jaGFuZ2VkKHNkKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0
ZShFdmFzX09iamVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNk
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYpOworICAgIEV2YXNf
Q29vcmQgeCwgeSwgdywgaDsKKworICAgIHNkLT5jaGFuZ2VkLmFueSA9IEVJTkFfRkFMU0U7CisK
KyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQobywgJngsICZ5LCAmdywgJmgpOworCisgICAg
aWYgKHNkLT5jaGFuZ2VkLnNpemUpIHsKKyAgICAgICAgaWYgKHByaXYtPnBhZ2VDbGllbnQpCisg
ICAgICAgICAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFNp
emUoSW50U2l6ZSh3LCBoKSwgSW50U2l6ZSgpKTsKKyAgICAgICAgc2QtPnZpZXcudyA9IHc7Cisg
ICAgICAgIHNkLT52aWV3LmggPSBoOworICAgICAgICBzZC0+Y2hhbmdlZC5zaXplID0gRUlOQV9G
QUxTRTsKKyAgICB9CisKKyAgICBpZiAoc2QtPmNoYW5nZWQucG9zaXRpb24pIHsKKyAgICAgICAg
ZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7CisgICAgICAgIHNkLT52
aWV3LnggPSB4OworICAgICAgICBzZC0+dmlldy55ID0geTsKKyAgICAgICAgc2QtPmNoYW5nZWQu
cG9zaXRpb24gPSBFSU5BX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X3NtYXJ0X3Nob3coRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCk7CisKKyAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc2QtPmJhc2Uu
Y2xpcHBlcikpCisgICAgICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhc2UuY2xpcHBlcik7Cisg
ICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7Cit9CisKK3N0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9oaWRlKEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QpOworCisgICAgZXZhc19vYmplY3RfaGlkZShzZC0+YmFzZS5j
bGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9oaWRlKHNkLT5iYWNraW5nX3N0b3JlKTsKK30KKwor
RWluYV9Cb29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
IGFwaSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYXBpLCBFSU5BX0ZB
TFNFKTsKKworICAgIGlmIChhcGktPnZlcnNpb24gIT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVS
U0lPTikgeworICAgICAgICBFSU5BX0xPR19ET01fQ1JJVChfZXdrMl9sb2dfZG9tLAorICAgICAg
ICAgICAgICJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAlbHUg
d2FzIGV4cGVjdGVkLiIsCisgICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVX
X1NNQVJUX0NMQVNTX1ZFUlNJT04pOworICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9
CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3BhcmVudF9zYy5hZGQpKQorICAgICAgICBldmFz
X29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmX3BhcmVudF9zYyk7CisKKyAgICBldmFz
X29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmYXBpLT5zYyk7CisKKyAgICAvLyBzZXQg
RXZhc19TbWFydF9DbGFzcworICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0X2FkZDsK
KyAgICBhcGktPnNjLmRlbCA9IF9ld2tfdmlld19zbWFydF9kZWw7CisgICAgYXBpLT5zYy5tb3Zl
ID0gX2V3a192aWV3X3NtYXJ0X21vdmU7CisgICAgYXBpLT5zYy5yZXNpemUgPSBfZXdrX3ZpZXdf
c21hcnRfcmVzaXplOworICAgIGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93Owor
ICAgIGFwaS0+c2MuaGlkZSA9IF9ld2tfdmlld19zbWFydF9oaWRlOworICAgIGFwaS0+c2MuY2Fs
Y3VsYXRlID0gX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZTsKKyAgICBhcGktPnNjLmRhdGEgPSBF
V0tfVklFV19UWVBFX1NUUjsgLyogdXNlZCBieSB0eXBlIGNoZWNraW5nICovCisKKyAgICAvLyBz
ZXQgRXdrX1ZpZXdfU21hcnRfQ2xhc3MKKyAgICBhcGktPmZvY3VzX2luID0gX2V3a192aWV3X3Nt
YXJ0X2ZvY3VzX2luOworICAgIGFwaS0+Zm9jdXNfb3V0ID0gX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X291dDsKKyAgICBhcGktPm1vdXNlX3doZWVsID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVs
OworICAgIGFwaS0+bW91c2VfZG93biA9IF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duOworICAg
IGFwaS0+bW91c2VfdXAgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXA7CisgICAgYXBpLT5tb3Vz
ZV9tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7CisgICAgYXBpLT5rZXlfZG93biA9
IF9ld2tfdmlld19zbWFydF9rZXlfZG93bjsKKyAgICBhcGktPmtleV91cCA9IF9ld2tfdmlld19z
bWFydF9rZXlfdXA7CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCitzdGF0aWMgaW5saW5l
IEV2YXNfU21hcnQqIF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcodm9pZCkKK3sKKyAgICBzdGF0
aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgYXBpID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04oIkV3a19WaWV3Iik7CisgICAgc3RhdGljIEV2YXNfU21hcnQqIHNtYXJ0ID0g
MDsKKworICAgIGlmIChFSU5BX1VOTElLRUxZKCFzbWFydCkpIHsKKyAgICAgICAgZXdrX3ZpZXdf
c21hcnRfY2xhc3NfaW5pdCgmYXBpKTsKKyAgICAgICAgc21hcnQgPSBldmFzX3NtYXJ0X2NsYXNz
X25ldygmYXBpLnNjKTsKKyAgICB9CisKKyAgICByZXR1cm4gc21hcnQ7Cit9CisKK0V2YXNfT2Jq
ZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBpZiAoX2V3azJfbG9nX2RvbSA8IDApCisg
ICAgICAgIF9ld2syX2xvZ19kb20gPSBlaW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoIkV3azJfVmll
dyIsIDApOworCisgICAgRXZhc19PYmplY3QqIG8gPSBldmFzX29iamVjdF9zbWFydF9hZGQoZSwg
X2V3a192aWV3X3NtYXJ0X2NsYXNzX25ldygpKTsKKyAgICBpZiAoIW8pCisgICAgICAgIHJldHVy
biAwOworCisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBpZiAoIXNkKSB7CisgICAg
ICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworICAgIGlmICghcHJpdikgeworICAgICAgICBl
dmFzX29iamVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHByaXYt
PnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwg
dG9JbXBsKHBhZ2VHcm91cFJlZiksIHNkLT5iYWNraW5nX3N0b3JlKTsKKworICAgIHJldHVybiBv
OworfQorCitXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIG8pCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCAwKTsKKworICAgIHJldHVybiB0b0FQSShwcml2LT5w
YWdlQ2xpZW50LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI4MDkyNDBiM2E3Nzc3NDc1NmM5MDExZjQxODZjYWU1
NzA1MTBiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3ZpZXdfaAorI2RlZmluZSBl
d2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVm
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFydF9EYXRhOwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOworCisv
KioKKyAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMu
CisgKi8KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNfU21hcnRfQ2xh
c3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAqLworICAg
IHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8qIGV2ZW50IGhhbmRsaW5nOgorICAgICAg
IC0gaWYgb3ZlcnJpZGRlbiwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYgZGVzaXJlZCAq
LworICAgIHZvaWQgKCpmb2N1c19pbikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworICAgIHZv
aWQgKCpmb2N1c19vdXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKKyAgICB2b2lkICgqbW91
c2Vfd2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X1doZWVsICpldik7CisgICAgdm9pZCAoKm1vdXNlX2Rvd24pKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24gKmV2KTsKKyAgICB2b2lkICgqbW91c2Vf
dXApKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpl
dik7CisgICAgdm9pZCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25z
dCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAgICB2b2lkICgqa2V5X2Rvd24pKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duICpldik7CisgICAg
dm9pZCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwICpldik7Cit9OworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OIDFV
TCAvKiogdGhlIHZlcnNpb24geW91IGhhdmUgdG8gcHV0IGludG8gdGhlIHZlcnNpb24gZmllbGQg
aW4gdGhlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZSAqLworCisvKioKKyAqIEluaXRp
YWxpemVyIGZvciB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICog
QHBhcmFtIHNtYXJ0X2NsYXNzX2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0aGUgImJhc2Ui
IGZpZWxkCisgKiAoRXZhc19TbWFydF9DbGFzcykuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX05VTEwKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJT
SU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKi8K
KyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21h
cnRfY2xhc3NfaW5pdCwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMH0KKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1Zp
ZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xB
U1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9W
RVJTSU9OCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChF
VkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCkKKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJv
IGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlIGFuZCBzZXQKKyAqIG5hbWUg
YW5kIHZlcnNpb24uCisgKgorICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9DTEFTU19JTklU
X05VTEwsIGJ1dCB3aWxsIHNldCB2ZXJzaW9uIGZpZWxkIG9mCisgKiBFdmFzX1NtYXJ0X0NsYXNz
IChiYXNlIGZpZWxkKSB0byBsYXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OIGFuZCBuYW1l
CisgKiB0byB0aGUgc3BlY2lmaWMgdmFsdWUuCisgKgorICogSXQgd2lsbCBrZWVwIGEgcmVmZXJl
bmNlIHRvIG5hbWUgZmllbGQgYXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBpcywKKyAqIG5hbWUg
bXVzdCBiZSBhdmFpbGFibGUgd2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2VkIChoaW50OiBzdGF0
aWMgb3IgZ2xvYmFsISkKKyAqIGFuZCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAqCisgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICov
CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lP
TihuYW1lKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSBFd2tfVmll
d19Qcml2YXRlX0RhdGE7CisvKgorICogU3RydWN0dXJlIHRvIGNvbnRhaW4gaW50ZXJuYWwgVmll
dyBkYXRhLCBpdCBpcyB0byBiZSBjb25zaWRlcmVkCisgKiBwcml2YXRlIGJ5IHVzZXJzLCBidXQg
bWF5IGJlIGV4dGVuZGVkIG9yIGNoYW5nZWQgYnkgc3ViLWNsYXNzZXMKKyAqICh0aGF0J3Mgd2h5
IGl0J3MgaW4gcHVibGljIGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFy
dF9EYXRhIHsKKyAgICBFdmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFzZTsKKyAgICBj
b25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpOyAvKio8IHJlZmVyZW5jZSB0byBjYXN0ZWQg
Y2xhc3MgaW5zdGFuY2UgKi8KKyAgICBFdmFzX09iamVjdCogc2VsZjsgICAgICAgICAgICAgICAv
Kio8IHJlZmVyZW5jZSB0byBvd25lciBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCogYmFja2lu
Z19zdG9yZTsgICAgICAvKio8IHJlZmVyZW5jZSB0byBiYWNraW5nIHN0b3JlICovCisgICAgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2OyAgICAgLyoqPCBzaG91bGQgbmV2ZXIgYmUgYWNjZXNz
ZWQsIGMrKyBzdHVmZiAqLworICAgIHN0cnVjdCB7CisgICAgICAgIEV2YXNfQ29vcmQgeCwgeSwg
dywgaDsgICAgICAgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KKyAgICB9IHZpZXc7CisgICAg
c3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCB3aGF0IGNoYW5nZWQgc2luY2Ug
bGFzdCBzbWFydF9jYWxjdWxhdGUgKi8KKyAgICAgICAgRWluYV9Cb29sIGFueToxOworICAgICAg
ICBFaW5hX0Jvb2wgc2l6ZToxOworICAgICAgICBFaW5hX0Jvb2wgcG9zaXRpb246MTsKKyAgICB9
IGNoYW5nZWQ7Cit9OworCitFQVBJIEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwg
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZik7CitF
QVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogZXdrX3ZpZXdfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119394</attachid>
            <date>2011-12-15 01:01:52 -0800</date>
            <delta_ts>2011-12-18 21:10:25 -0800</delta_ts>
            <desc>Patch for ewk_view.</desc>
            <filename>ewk_view.patch</filename>
            <type>text/plain</type>
            <size>25460</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3MGRiZGJiLi44NzZlMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTEtMTItMTUgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3ZpZXcgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQp
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luKToKKyAgICAgICAgKF9ld2tfdmll
d19zbWFydF9mb2N1c19vdXQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVs
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKToKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9tb3VzZV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92
ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192
aWV3X3NtYXJ0X2tleV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOgorICAg
ICAgICAoX2V3a192aWV3X29uX2ZvY3VzX291dCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91
c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X29uX21vdXNlX2Rvd24pOgorICAgICAgICAo
X2V3a192aWV3X29uX21vdXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9tb3Zl
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdf
b25fa2V5X3VwKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChfZXdr
X3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfZGVsKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9yZXNpemUp
OgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdmUpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NhbGN1bGF0ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfc2hvdyk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfaGlkZSk6CisgICAgICAgIChld2tfdmlld19zbWFydF9jbGFzc19p
bml0KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9jbGFzc19uZXcpOgorICAgICAgICAoZXdr
X3ZpZXdfYWRkKToKKyAgICAgICAgKGV3a192aWV3X3BhZ2VfZ2V0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOiBBZGRlZC4KKwogMjAxMS0xMi0xNCAgSmluZyBaaGFv
ICA8amluZ3poYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9wZW5pbmcgdHdvIHBvcHVwIG1l
bnVzIGJ5IGRpc3BhdGNoRXZlbnQoKSBtYWtlcyBwcm9ibGVtcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lM2ViOGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDYyIEBACisvKgorICAgQ29w
eXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0
aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBjaGFyIEVX
S19WSUVXX1RZUEVfU1RSW10gPSAiRVdLMl9WaWV3IjsKKworc3RydWN0IF9Fd2tfVmlld19Qcml2
YXRlX0RhdGEgeworICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKK307CisK
KyNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1bHQpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYm9vbCByZXN1bHQgPSB0cnVlOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgY2hhciogX3RtcF9vdHlwZSA9IGV2YXNf
b2JqZWN0X3R5cGVfZ2V0KGV3a1ZpZXcpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0
IEV2YXNfU21hcnQqIF90bXBfcyA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChld2tWaWV3
KTsgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zKSkgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9H
X0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBld2tWaWV3LCBf
dG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBj
b25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBfdG1wX3NjID0gZXZhc19zbWFydF9jbGFzc19nZXQoX3Rt
cF9zKTsgICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfc2MpKSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5B
X0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3Qh
IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmll
dywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgaWYgKEVJTkFfVU5MSUtFTFkoX3RtcF9zYy0+ZGF0YSAhPSBFV0tfVklFV19UWVBFX1NUUikp
IHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5BX0xPR19DUklUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICgiJXAgKCVzKSBpcyBub3Qgb2YgYW4gZXdrX3ZpZXcgKG5lZWQgJXAsIGdvdCAlcCkhIiwg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmlldywgX3RtcF9vdHlwZSA/IF90bXBf
b3R5cGUgOiAiKG51bGwpIiwgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIEVX
S19WSUVXX1RZUEVfU1RSLCBfdG1wX3NjLT5kYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnRE
YXRhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tfVklFV19U
WVBFX0NIRUNLKGV3a1ZpZXcsIF90bXBfcmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gMDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChfdG1wX3Jlc3VsdCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KGV3a1ZpZXcpOworCisjZGVmaW5lIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAuLi4pICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJ
TkFfTE9HX0NSSVQoIm5vIHNtYXJ0IGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBld2tWaWV3LCBldmFzX29iamVjdF90eXBl
X2dldChld2tWaWV3KSk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
VkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfQorCisjZGVmaW5lIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJp
dikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiA9IHNtYXJ0RGF0YS0+cHJpdgorCisjZGVmaW5lIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIC4uLikgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGlmICghc21hcnREYXRhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgic21h
cnQgZGF0YSBpcyBudWxsIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFV0tf
VklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgaWYgKCFwcml2KSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xP
R19DUklUKCJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVjdCAlcCAoJXMpIiwgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgc21hcnREYXRhLT5zZWxmLCBldmFzX29iamVjdF90
eXBlX2dldChzbWFydERhdGEtPnNlbGYpKTsgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FS
R1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKQoreworICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuYW55
KQorICAgICAgICByZXR1cm47CisgICAgc21hcnREYXRhLT5jaGFuZ2VkLmFueSA9IHRydWU7Cisg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChzbWFydERhdGEtPnNlbGYpOworfQorCisvLyBE
ZWZhdWx0IEV2ZW50IEhhbmRsaW5nLgorc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZvY3Vz
X2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkIHwg
V2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfZm9jdXNfb3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KQorCisgICAg
cHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
bW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2
ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3Nt
YXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVu
dC0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hlZWxFdmVu
dCwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9k
b3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Eb3duKiBkb3duRXZlbnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdikKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52
aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsICZwb3NpdGlv
bikpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXAoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50
KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpCisK
KyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEt
PnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgJnBvc2l0aW9uKSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQpCit7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdikKKworICAgIEV2YXNfUG9p
bnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyAg
ICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBF
dmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdikKKworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCkp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQpCit7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdikKKworICAgIHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KHVwRXZlbnQpKTsKK30KKworLy8gRXZlbnQgSGFuZGxpbmcuCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyogY2FudmFzLCBFdmFzX09i
amVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+Zm9jdXNfaW4pOworICAgIHNtYXJ0RGF0YS0+YXBp
LT5mb2N1c19pbihzbWFydERhdGEpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9j
dXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZv
aWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnRE
YXRhLT5hcGktPmZvY3VzX291dCk7CisgICAgc21hcnREYXRhLT5hcGktPmZvY3VzX291dChzbWFy
dERhdGEpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCog
ZGF0YSwgRXZhcyogY2FudmFzLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZv
KQoreworICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIHdoZWVsRXZlbnQgPSAoRXZhc19FdmVu
dF9Nb3VzZV9XaGVlbCopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3Vz
ZV93aGVlbChzbWFydERhdGEsIHdoZWVsRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBk
b3duRXZlbnQgPSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVudEluZm87CisgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9kb3duKTsKKyAgICBz
bWFydERhdGEtPmFwaS0+bW91c2VfZG93bihzbWFydERhdGEsIGRvd25FdmVudCk7Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMs
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVu
dF9Nb3VzZV9VcCogdXBFdmVudCA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudEluZm87Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEq
KWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV91cCk7
CisgICAgc21hcnREYXRhLT5hcGktPm1vdXNlX3VwKHNtYXJ0RGF0YSwgdXBFdmVudCk7Cit9CisK
K3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGNh
bnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIG1vdmVFdmVudCA9IChFdmFzX0V2ZW50X01vdXNlX01vdmUqKWV2
ZW50SW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERh
dGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkt
Pm1vdXNlX21vdmUpOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKHNtYXJ0RGF0YSwg
bW92ZUV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQq
IGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQgPSAoRXZhc19FdmVudF9L
ZXlfRG93biopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFy
dERhdGEtPmFwaS0+a2V5X2Rvd24pOworICAgIHNtYXJ0RGF0YS0+YXBpLT5rZXlfZG93bihzbWFy
dERhdGEsIGRvd25FdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAo
dm9pZCogZGF0YSwgRXZhcyogY2FudmFzLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZl
bnRJbmZvKQoreworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiB1cEV2ZW50ID0gKEV2YXNfRXZlbnRf
S2V5X1VwKilldmVudEluZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0g
KEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0
RGF0YS0+YXBpLT5rZXlfdXApOworICAgIHNtYXJ0RGF0YS0+YXBpLT5rZXlfdXAoc21hcnREYXRh
LCB1cEV2ZW50KTsKK30KKworc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgZ19wYXJlbnRTbWFydENs
YXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CisKK3N0YXRpYyBFd2tfVmlld19Qcml2
YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEpCit7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KKyAgICAgICAgKEV3a19W
aWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEp
KTsKKyAgICBpZiAoIXByaXYpIHsKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFs
bG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICByZXR1cm4gcHJpdjsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVs
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBpZiAoIXByaXYpCisgICAgICAg
IHJldHVybjsKKworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBudWxscHRyOworICAgIGZyZWUocHJp
dik7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpCit7CisgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFy
dF9zbWFydF9nZXQoZXdrVmlldyk7CisgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc21hcnRD
bGFzcyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0KHNtYXJ0KTsKKyAgICBjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKilzbWFydENsYXNz
OworICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworCisgICAgaWYgKCFz
bWFydERhdGEpIHsKKyAgICAgICAgc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNh
bGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAgICBpZiAoIXNtYXJ0
RGF0YSkgeworICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIEV3
a19WaWV3X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBldmFzX29iamVjdF9zbWFydF9kYXRhX3NldChld2tWaWV3LCBzbWFydERhdGEpOworICAg
IH0KKworICAgIHNtYXJ0RGF0YS0+c2VsZiA9IGV3a1ZpZXc7CisgICAgc21hcnREYXRhLT5wcml2
ID0gX2V3a192aWV3X3ByaXZfbmV3KHNtYXJ0RGF0YSk7CisgICAgc21hcnREYXRhLT5hcGkgPSBh
cGk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YS0+cHJpdikgeworICAgICAgICBFSU5BX0xPR19DUklU
KCJjb3VsZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9kYXRhX3NldChld2tWaWV3LCAwKTsKKyAgICAgICAgZnJlZShzbWFy
dERhdGEpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ19wYXJlbnRTbWFydENsYXNz
LmFkZChld2tWaWV3KTsKKworICAgIC8vIENyZWF0ZSBldmFzX29iamVjdF9pbWFnZSB0byBkcmF3
IHdlYiBjb250ZW50cy4KKyAgICBzbWFydERhdGEtPmltYWdlID0gZXZhc19vYmplY3RfaW1hZ2Vf
YWRkKHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9z
ZXQoc21hcnREYXRhLT5pbWFnZSwgZmFsc2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxl
ZF9zZXQoc21hcnREYXRhLT5pbWFnZSwgdHJ1ZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVt
YmVyX2FkZChzbWFydERhdGEtPmltYWdlLCBld2tWaWV3KTsKKyAgICBldmFzX29iamVjdF9zaG93
KHNtYXJ0RGF0YS0+aW1hZ2UpOworCisjZGVmaW5lIENPTk5FQ1QocywgYykgZXZhc19vYmplY3Rf
ZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1ZpZXcsIHMsIGMsIHNtYXJ0RGF0YSkKKyAgICBDT05ORUNU
KEVWQVNfQ0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19pbik7CisgICAgQ09O
TkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3X29uX2ZvY3VzX291dCk7Cisg
ICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBfZXdrX3ZpZXdfb25fbW91c2Vf
d2hlZWwpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdf
b25fbW91c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdr
X3ZpZXdfb25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZF
LCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tF
WV9ET1dOLCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFD
S19LRVlfVVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3VuZGVmIENPTk5FQ1QKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBpZiAoc21hcnREYXRh
ICYmIHNtYXJ0RGF0YS0+cHJpdikKKyAgICAgICAgX2V3a192aWV3X3ByaXZfZGVsKHNtYXJ0RGF0
YS0+cHJpdik7CisKKyAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBF
dmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisKKyAgICBldmFzX29iamVjdF9yZXNp
emUoc21hcnREYXRhLT5pbWFnZSwgd2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19vYmplY3RfaW1h
Z2Vfc2l6ZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgd2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19v
YmplY3RfaW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5pbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdo
dCk7CisKKyAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IHRydWU7CisgICAgX2V3a192aWV3
X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X21vdmUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IHRydWU7CisgICAgX2V3a192aWV3
X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3Nt
YXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRXZhc19Db29yZCB4LCB5LCB3aWR0aCwg
aGVpZ2h0OworCisgICAgc21hcnREYXRhLT5jaGFuZ2VkLmFueSA9IGZhbHNlOworCisgICAgZXZh
c19vYmplY3RfZ2VvbWV0cnlfZ2V0KGV3a1ZpZXcsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0KTsK
KyAgICBFdmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+
aW1hZ2UpOworCisgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplKSB7CisgICAgICAgIGlm
IChwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBw
cml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSwgSW50U2l6ZSgpKTsKKyAgICAgICAgc21hcnREYXRhLT52aWV3LndpZHRo
ID0gd2lkdGg7CisgICAgICAgIHNtYXJ0RGF0YS0+dmlldy5oZWlnaHQgPSBoZWlnaHQ7CisgICAg
ICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjbGlwLCB3LCBoKTsKKyAgICAgICAgc21hcnREYXRhLT5j
aGFuZ2VkLnNpemUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2Vk
LnBvc2l0aW9uKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwg
eCwgeSk7CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgeCwgeSk7CisgICAgICAgIHNt
YXJ0RGF0YS0+dmlldy54ID0geDsKKyAgICAgICAgc21hcnREYXRhLT52aWV3LnkgPSB5OworICAg
ICAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBmYWxzZTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKworICAg
IGlmIChldmFzX29iamVjdF9jbGlwZWVzX2dldChzbWFydERhdGEtPmJhc2UuY2xpcHBlcikpCisg
ICAgICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpOworICAgIGV2
YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9oaWRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKworICAgIGV2YXNfb2JqZWN0X2hp
ZGUoc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X2hpZGUoc21hcnRE
YXRhLT5pbWFnZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19pbml0KEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGFwaSwgZmFsc2UpOworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoIkV3a19WaWV3X1Nt
YXJ0X0NsYXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMgZXhwZWN0ZWQuIiwKKyAg
ICAgICAgICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lP
Tik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoRUlOQV9VTkxJS0VM
WSghZ19wYXJlbnRTbWFydENsYXNzLmFkZCkpCisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Ns
aXBwZWRfc21hcnRfc2V0KCZnX3BhcmVudFNtYXJ0Q2xhc3MpOworCisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOworCisgICAgLy8gU2V0IEV2YXNfU21h
cnRfQ2xhc3MgZnVuY3Rpb25zLgorICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0X2Fk
ZDsKKyAgICBhcGktPnNjLmRlbCA9IF9ld2tfdmlld19zbWFydF9kZWw7CisgICAgYXBpLT5zYy5t
b3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdmU7CisgICAgYXBpLT5zYy5yZXNpemUgPSBfZXdrX3Zp
ZXdfc21hcnRfcmVzaXplOworICAgIGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93
OworICAgIGFwaS0+c2MuaGlkZSA9IF9ld2tfdmlld19zbWFydF9oaWRlOworICAgIGFwaS0+c2Mu
Y2FsY3VsYXRlID0gX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZTsKKyAgICBhcGktPnNjLmRhdGEg
PSBFV0tfVklFV19UWVBFX1NUUjsgLy8gSXQgaXMgdXNlZCBieSB0eXBlIGNoZWNraW5nLgorCisg
ICAgLy8gU2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIGZ1bmN0aW9ucy4KKyAgICBhcGktPmZvY3Vz
X2luID0gX2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luOworICAgIGFwaS0+Zm9jdXNfb3V0ID0gX2V3
a192aWV3X3NtYXJ0X2ZvY3VzX291dDsKKyAgICBhcGktPm1vdXNlX3doZWVsID0gX2V3a192aWV3
X3NtYXJ0X21vdXNlX3doZWVsOworICAgIGFwaS0+bW91c2VfZG93biA9IF9ld2tfdmlld19zbWFy
dF9tb3VzZV9kb3duOworICAgIGFwaS0+bW91c2VfdXAgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2Vf
dXA7CisgICAgYXBpLT5tb3VzZV9tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7Cisg
ICAgYXBpLT5rZXlfZG93biA9IF9ld2tfdmlld19zbWFydF9rZXlfZG93bjsKKyAgICBhcGktPmtl
eV91cCA9IF9ld2tfdmlld19zbWFydF9rZXlfdXA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQp
Cit7CisgICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFzX1Nt
YXJ0KiBzbWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CisgICAg
ICAgIGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQoJmFwaSk7CisgICAgICAgIHNtYXJ0ID0gZXZh
c19zbWFydF9jbGFzc19uZXcoJmFwaS5zYyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0Owor
fQorCitFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBFdmFzX09i
amVjdCogZXdrVmlldyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChjYW52YXMsIF9ld2tfdmlld19z
bWFydF9jbGFzc19uZXcoKSk7CisgICAgaWYgKCFld2tWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworICAgIGlmICghc21h
cnREYXRhKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChld2tWaWV3KTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsK
KyAgICBpZiAoIXByaXYpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKGV3a1ZpZXcpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVu
dEltcGw6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBz
bWFydERhdGEtPmltYWdlKTsKKworICAgIHJldHVybiBld2tWaWV3OworfQorCitXS1BhZ2VSZWYg
ZXdrX3ZpZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworCisgICAgcmV0dXJuIHRvQVBJ
KHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
MTBlYjU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdmlld19oCisjZGVmaW5lIGV3
a192aWV3X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYg
c3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7Cit0eXBlZGVm
IHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CisKKy8q
KgorICogRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3Nlcy4K
KyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFydF9DbGFzcyB7CisgICAgRXZhc19TbWFydF9DbGFz
cyBzYzsgLyoqPCBhbGwgYnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCisgICAg
dW5zaWduZWQgbG9uZyB2ZXJzaW9uOworCisgICAgLyogZXZlbnQgaGFuZGxpbmc6CisgICAgICAg
LSBpZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50IG1ldGhvZCBpZiBkZXNpcmVkICov
CisgICAgdm9pZCAoKmZvY3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgdm9p
ZCAoKmZvY3VzX291dCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpOworICAgIHZvaWQgKCptb3Vz
ZV93aGVlbCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwgKmV2KTsKKyAgICB2b2lkICgqbW91c2VfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOworICAgIHZvaWQgKCptb3VzZV91
cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAgKmV2
KTsKKyAgICB2b2lkICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSAqZXYpOworICAgIHZvaWQgKCprZXlfZG93bikoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24gKmV2KTsKKyAgICB2
b2lkICgqa2V5X3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9L
ZXlfVXAgKmV2KTsKK307CisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVM
IC8qKiB0aGUgdmVyc2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZCBp
biB0aGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3RydWN0dXJlICovCisKKy8qKgorICogSW5pdGlh
bGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqCisgKiBA
cGFyYW0gc21hcnRfY2xhc3NfaW5pdCBpbml0aWFsaXplciB0byB1c2UgZm9yIHRoZSAiYmFzZSIg
ZmllbGQKKyAqIChFdmFzX1NtYXJ0X0NsYXNzKS4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJ
T04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KKyAqLwor
I2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0X2NsYXNzX2luaXQpIHtzbWFy
dF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJTSU9OLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwfQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmll
d19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZF
UlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMKQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHplcm8g
YSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUgYW5kIHNldAorICogbmFtZSBh
bmQgdmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRf
TlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKKyAqIEV2YXNfU21hcnRfQ2xhc3Mg
KGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNTX1ZFUlNJT04gYW5kIG5hbWUK
KyAqIHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqCisgKiBJdCB3aWxsIGtlZXAgYSByZWZlcmVu
Y2UgdG8gbmFtZSBmaWVsZCBhcyBhICJjb25zdCBjaGFyICoiLCB0aGF0IGlzLAorICogbmFtZSBt
dXN0IGJlIGF2YWlsYWJsZSB3aGlsZSB0aGUgc3RydWN0dXJlIGlzIHVzZWQgKGhpbnQ6IHN0YXRp
YyBvciBnbG9iYWwhKQorICogYW5kIHdpbGwgbm90IGJlIG1vZGlmaWVkLgorICoKKyAqIEBzZWUg
RVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUCisgKi8K
KyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04obmFtZSkgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9O
KG5hbWUpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIEV3a19WaWV3
X1ByaXZhdGVfRGF0YTsKKy8qCisgKiBTdHJ1Y3R1cmUgdG8gY29udGFpbiBpbnRlcm5hbCBWaWV3
IGRhdGEsIGl0IGlzIHRvIGJlIGNvbnNpZGVyZWQKKyAqIHByaXZhdGUgYnkgdXNlcnMsIGJ1dCBt
YXkgYmUgZXh0ZW5kZWQgb3IgY2hhbmdlZCBieSBzdWItY2xhc3NlcworICogKHRoYXQncyB3aHkg
aXQncyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICovCitzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0
X0RhdGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBwZWRfRGF0YSBiYXNlOworICAgIGNv
bnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGk7ICAgIC8qKjwgcmVmZXJlbmNlIHRvIGNhc3Rl
ZCBjbGFzcyBpbnN0YW5jZSAqLworICAgIEV2YXNfT2JqZWN0KiBzZWxmOyAgICAgICAgICAgICAg
ICAgIC8qKjwgcmVmZXJlbmNlIHRvIG93bmVyIG9iamVjdCAqLworICAgIEV2YXNfT2JqZWN0KiBp
bWFnZTsgICAgICAgICAgICAgICAgIC8qKjwgcmVmZXJlbmNlIHRvIGV2YXNfb2JqZWN0X2ltYWdl
IGZvciBkcmF3aW5nIHdlYiBjb250ZW50cyAqLworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdjsgICAgICAgIC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYgKi8K
KyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHdpZHRoLCBoZWlnaHQ7IC8q
KjwgbGFzdCB1c2VkIHZpZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qKjwgd2hhdCBjaGFuZ2VkIHNpbmNlIGxhc3Qgc21hcnRf
Y2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6MTsKKyAgICAgICAgRWluYV9Cb29s
IHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9uOjE7CisgICAgfSBjaGFuZ2VkOwor
fTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJLaXQgVmlldyBvYmplY3QuCisgKgor
ICogQHBhcmFtIGNhbnZhcyBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBv
YmplY3QKKyAqCisgKiBAcmV0dXJuIHZpZXcgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBm
YWlsdXJlCisgKi8KK0VBUEkgRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52YXMs
IFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpOwor
CisvKioKKyAqIEdldHMgdGhlIFdLUGFnZVJlZiBvZiB0aGlzIHZpZXcuCisgKgorICogQHBhcmFt
IGV3a1ZpZXcgdGhlIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgV0tQYWdlUmVmCisgKgorICogQHJl
dHVybiB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldworICovCitFQVBJIFdLUGFnZVJlZiBld2tf
dmlld19wYWdlX2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisjZW5kaWYgLyogZXdrX3ZpZXdfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119807</attachid>
            <date>2011-12-18 21:05:30 -0800</date>
            <delta_ts>2011-12-18 21:10:25 -0800</delta_ts>
            <desc>patch for ewk_view.</desc>
            <filename>ewk_view.patch</filename>
            <type>text/plain</type>
            <size>25896</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyZTc2MzM1Li4zMTI1MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTEtMTItMTggIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3ZpZXcgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5pdGlh
bCB2ZXJzaW9uIG9mIFdlYktpdDIgRUZMIHBvcnQncyBld2tfdmlldy4KKyAgICAgICAgVGhlIGV3
a192aWV3IGlzIEV2YXNfT2JqZWN0IHRvIHNob3cgdGhlIHJlbmRlcmVkIHdlYiBjb250ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDogQWRkZWQuCisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgorICAg
ICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X29uX2tl
eV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
bW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld19hZGQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFnZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6IEFk
ZGVkLgorCiAyMDExLTEyLTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBhdHRlbXB0IHRvIGZpeCB0aGUgd2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xN2YzNjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgor
ICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgY2hh
ciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CisKK3N0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKKyAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7Cit9
OworCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVzdWx0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBl
dmFzX29iamVjdF90eXBlX2dldChld2tWaWV3KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBj
b25zdCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQoZXdr
Vmlldyk7ICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5B
X0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3Qh
IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmll
dywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0
KF90bXBfcyk7ICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3NjKSkg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
RUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2Jq
ZWN0ISIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGV3
a1ZpZXcsIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9T
VFIpKSB7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAoIiVwICglcykgaXMgbm90IG9mIGFuIGV3a192aWV3IChuZWVkICVwLCBnb3QgJXAp
ISIsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGV3a1ZpZXcsIF90bXBfb3R5cGUgPyBf
dG1wX290eXBlIDogIihudWxsKSIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNt
YXJ0RGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJ
RVdfVFlQRV9DSEVDSyhld2tWaWV3LCBfdG1wX3Jlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IDA7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX3RtcF9yZXN1
bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29i
amVjdF9zbWFydF9kYXRhX2dldChld2tWaWV3KTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLi4uKSAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFzbWFydERhdGEpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFSU5BX0xPR19DUklUKCJubyBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmlldywgZXZhc19vYmplY3Rf
dHlwZV9nZXQoZXdrVmlldykpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEs
IHByaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYgPSBzbWFydERhdGEtPnByaXYKKworI2RlZmluZSBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAuLi4pICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQo
InNtYXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcHJpdikgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlO
QV9MT0dfQ1JJVCgibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIHNtYXJ0RGF0YS0+c2VsZiwgZXZhc19vYmpl
Y3RfdHlwZV9nZXQoc21hcnREYXRhLT5zZWxmKSk7ICAgICAgXAorICAgICAgICByZXR1cm4gX19W
QV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2Vk
LmFueSkKKyAgICAgICAgcmV0dXJuOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSB0cnVl
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhLT5zZWxmKTsKK30KKwor
Ly8gRGVmYXVsdCBFdmVudCBIYW5kbGluZy4KK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSkKKworICAgIHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6
Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
b3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSkKKworICAgIHByaXYtPnBhZ2VD
bGllbnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRv
d0lzQWN0aXZlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Q
b2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9Owor
ICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJX
aGVlbEV2ZW50KHdoZWVsRXZlbnQsICZwb3NpdGlvbikpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZl
bnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBz
bWFydERhdGEtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVN
b3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91
c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwKiB1cEV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERh
dGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBh
Z2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsICZwb3Np
dGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBFdmFzX1BvaW50IHBv
c2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisgICAgcHJp
di0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZl
bnQobW92ZUV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQpCit7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAg
ICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudChkb3duRXZlbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBwcml2
LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCh1cEV2ZW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEV2ZW50IEhhbmRs
aW5nLgorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMq
IGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0
YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmZvY3VzX2luKTsKKyAg
ICBzbWFydERhdGEtPmFwaS0+Zm9jdXNfaW4oc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19vdXQpOworICAgIHNtYXJ0RGF0YS0+YXBp
LT5mb2N1c19vdXQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2
ZW50ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50SW5mbzsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX3doZWVsKTsKKyAgICBzbWFy
dERhdGEtPmFwaS0+bW91c2Vfd2hlZWwoc21hcnREYXRhLCB3aGVlbEV2ZW50KTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogY2FudmFz
LCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV2YXNfRXZl
bnRfTW91c2VfRG93biogZG93bkV2ZW50ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRJ
bmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+
YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+bW91
c2VfZG93bik7CisgICAgc21hcnREYXRhLT5hcGktPm1vdXNlX2Rvd24oc21hcnREYXRhLCBkb3du
RXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0
YSwgRXZhcyogY2FudmFzLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQor
eworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQgPSAoRXZhc19FdmVudF9Nb3VzZV9V
cCopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNt
YXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEt
PmFwaS0+bW91c2VfdXApOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV91cChzbWFydERhdGEs
IHVwRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lk
KiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudElu
Zm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQgPSAoRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlKilldmVudEluZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKTsKKyAgICBzbWFydERhdGEtPmFwaS0+bW91c2Vf
bW92ZShzbWFydERhdGEsIG1vdmVFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19v
bl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZG93bkV2ZW50
ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50SW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmtleV9kb3duKTsKKyAgICBzbWFydERhdGEtPmFw
aS0+a2V5X2Rvd24oc21hcnREYXRhLCBkb3duRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9VcCogdXBFdmVu
dCA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+a2V5X3VwKTsKKyAgICBzbWFydERhdGEtPmFwaS0+
a2V5X3VwKHNtYXJ0RGF0YSwgdXBFdmVudCk7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNz
IGdfcGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOworCitzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9
CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIEVJTkFfTE9HX0NS
SVQoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7CisgICAgaWYg
KCFwcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0
cjsKKyAgICBmcmVlKHByaXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0g
ZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOworICAgIGNvbnN0IEV2YXNfU21h
cnRfQ2xhc3MqIHNtYXJ0Q2xhc3MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAg
Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9D
bGFzcyopc21hcnRDbGFzczsKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRh
KTsKKworICAgIGlmICghc21hcnREYXRhKSB7CisgICAgICAgIHNtYXJ0RGF0YSA9IChFd2tfVmll
d19TbWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAg
ICAgICAgaWYgKCFzbWFydERhdGEpIHsKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQoImNvdWxk
IG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrVmlldywg
c21hcnREYXRhKTsKKyAgICB9CisKKyAgICBzbWFydERhdGEtPnNlbGYgPSBld2tWaWV3OworICAg
IHNtYXJ0RGF0YS0+cHJpdiA9IF9ld2tfdmlld19wcml2X25ldyhzbWFydERhdGEpOworICAgIHNt
YXJ0RGF0YS0+YXBpID0gYXBpOworCisgICAgaWYgKCFzbWFydERhdGEtPnByaXYpIHsKKyAgICAg
ICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEiKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrVmlldywgMCk7Cisg
ICAgICAgIGZyZWUoc21hcnREYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdf
cGFyZW50U21hcnRDbGFzcy5hZGQoZXdrVmlldyk7CisKKyAgICAvLyBDcmVhdGUgZXZhc19vYmpl
Y3RfaW1hZ2UgdG8gZHJhdyB3ZWIgY29udGVudHMuCisgICAgc21hcnREYXRhLT5pbWFnZSA9IGV2
YXNfb2JqZWN0X2ltYWdlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgZXZhc19vYmpl
Y3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGZhbHNlKTsKKyAgICBldmFzX29i
amVjdF9pbWFnZV9maWxsZWRfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHRydWUpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc21hcnREYXRhLT5pbWFnZSwgZXdrVmlldyk7CisgICAg
ZXZhc19vYmplY3Rfc2hvdyhzbWFydERhdGEtPmltYWdlKTsKKworI2RlZmluZSBDT05ORUNUKHMs
IGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBzLCBjLCBzbWFydERh
dGEpCisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdrX3ZpZXdfb25fZm9j
dXNfaW4pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQsIF9ld2tfdmlld19v
bl9mb2N1c19vdXQpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9XSEVFTCwgX2V3
a192aWV3X29uX21vdXNlX3doZWVsKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0Vf
RE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFD
S19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FM
TEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOworICAgIENPTk5FQ1Qo
RVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3duKTsKKyAgICBDT05O
RUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3VwKTsKKyN1bmRlZiBD
T05ORUNUCit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Cisg
ICAgaWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpCisgICAgICAgIF9ld2tfdmlld19w
cml2X2RlbChzbWFydERhdGEtPnByaXYpOworCisgICAgZ19wYXJlbnRTbWFydENsYXNzLmRlbChl
d2tWaWV3KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworCisgICAg
ZXZhc19vYmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOworICAg
IGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWln
aHQpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIDAs
IDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSB0cnVl
OworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3Jk
IHgsIEV2YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7CisKKyAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSB0cnVl
OworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEV2YXNfQ29v
cmQgeCwgeSwgd2lkdGgsIGhlaWdodDsKKworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSBm
YWxzZTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChld2tWaWV3LCAmeCwgJnksICZ3
aWR0aCwgJmhlaWdodCk7CisgICAgRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlw
X2dldChzbWFydERhdGEtPmltYWdlKTsKKworICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuc2l6
ZSkgeworICAgICAgICBpZiAocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgp
KQorICAgICAgICAgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5z
ZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CisgICAgICAgIHNtYXJ0
RGF0YS0+dmlldy53ID0gd2lkdGg7CisgICAgICAgIHNtYXJ0RGF0YS0+dmlldy5oID0gaGVpZ2h0
OworICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHNt
YXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbikgeworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNt
YXJ0RGF0YS0+aW1hZ2UsIHgsIHkpOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHgs
IHkpOworICAgICAgICBzbWFydERhdGEtPnZpZXcueCA9IHg7CisgICAgICAgIHNtYXJ0RGF0YS0+
dmlldy55ID0geTsKKyAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gZmFsc2U7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7CisKKyAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc21hcnREYXRhLT5i
YXNlLmNsaXBwZXIpKQorICAgICAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+YmFzZS5j
bGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+aW1hZ2UpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogZXdrVmlldykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisKKyAg
ICBldmFzX29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29i
amVjdF9oaWRlKHNtYXJ0RGF0YS0+aW1hZ2UpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc21h
cnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIGZhbHNlKTsKKworICAgIGlmIChhcGktPnZlcnNp
b24gIT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTikgeworICAgICAgICBFSU5BX0xPR19D
UklUKCJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAlbHUgd2Fz
IGV4cGVjdGVkLiIsCisgICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIWdfcGFyZW50U21hcnRDbGFzcy5hZGQpKQorICAgICAgICBldmFz
X29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmZ19wYXJlbnRTbWFydENsYXNzKTsKKwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZhcGktPnNjKTsKKworICAg
IC8vIFNldCBFdmFzX1NtYXJ0X0NsYXNzIGZ1bmN0aW9ucy4KKyAgICBhcGktPnNjLmFkZCA9IF9l
d2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVs
OworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2Mu
cmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdr
X3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlk
ZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7Cisg
ICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8vIEl0IGlzIHVzZWQgYnkgdHlw
ZSBjaGVja2luZy4KKworICAgIC8vIFNldCBFd2tfVmlld19TbWFydF9DbGFzcyBmdW5jdGlvbnMu
CisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGkt
PmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93
aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24g
PSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192
aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFy
dF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rv
d247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NtYXJ0
X2NsYXNzX25ldyh2b2lkKQoreworICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBhcGkg
PSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRXdrX1ZpZXciKTsKKyAg
ICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOworCisgICAgaWYgKEVJTkFfVU5MSUtFTFko
IXNtYXJ0KSkgeworICAgICAgICBld2tfdmlld19zbWFydF9jbGFzc19pbml0KCZhcGkpOworICAg
ICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZhcGkuc2MpOworICAgIH0KKworICAg
IHJldHVybiBzbWFydDsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52
YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYp
Cit7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFydF9hZGQoY2Fu
dmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghZXdrVmlldykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRh
KTsKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeworICAgICAgICBldmFzX29iamVjdF9kZWwoZXdrVmll
dyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNt
YXJ0RGF0YSwgcHJpdik7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2Rl
bChld2tWaWV3KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdi0+cGFnZUNs
aWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0b0ltcGwo
cGFnZUdyb3VwUmVmKSwgc21hcnREYXRhLT5pbWFnZSk7CisKKyAgICByZXR1cm4gZXdrVmlldzsK
K30KKworV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKwor
ICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzg5NTZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Zp
ZXdfaAorI2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFy
dF9EYXRhOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzOworCisvLy8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBz
dWItY2xhc3Nlcy4KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNfU21h
cnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAq
LworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8vIGV2ZW50IGhhbmRsaW5nOgor
ICAgIC8vICAtIHJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkCisgICAgLy8gIC0gaWYgb3ZlcnJpZGRl
biwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYgZGVzaXJlZAorICAgIEVpbmFfQm9vbCAo
KmZvY3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgRWluYV9Cb29sICgqZm9j
dXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgRWluYV9Cb29sICgqbW91c2Vf
d2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsICpldik7CisgICAgRWluYV9Cb29sICgqbW91c2VfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOworICAgIEVpbmFfQm9vbCAo
Km1vdXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9VcCAqZXYpOworICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAgICBFaW5hX0Jvb2wg
KCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24gKmV2KTsKKyAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworfTsKKworLyoqCisgKiBUaGUgdmVy
c2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAorICogaW4gdGhlIEBh
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OIDFVTAorCisvKioKKyAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBF
d2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtIHNtYXJ0X2NsYXNz
X2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0aGUgImJhc2UiIGZpZWxkCisgKiAoRXZhc19T
bWFydF9DbGFzcykuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwK
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKworLyoq
CisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKiBAc2VlIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfTlVMTCkKKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlIGFuZCBzZXQKKyAqIG5hbWUgYW5kIHZlcnNpb24uCisgKgor
ICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwsIGJ1dCB3aWxsIHNl
dCB2ZXJzaW9uIGZpZWxkIG9mCisgKiBFdmFzX1NtYXJ0X0NsYXNzIChiYXNlIGZpZWxkKSB0byBs
YXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OIGFuZCBuYW1lCisgKiB0byB0aGUgc3BlY2lm
aWMgdmFsdWUuCisgKgorICogSXQgd2lsbCBrZWVwIGEgcmVmZXJlbmNlIHRvIG5hbWUgZmllbGQg
YXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBpcywKKyAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUg
d2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2VkIChoaW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKKyAq
IGFuZCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04K
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7Cisv
KioKKyAqIEBicmllZiBDb250YWlucyBhbiBpbnRlcm5hbCBWaWV3IGRhdGEuCisgKgorICogSXQg
aXMgdG8gYmUgY29uc2lkZXJlZCBwcml2YXRlIGJ5IHVzZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVk
IG9yCisgKiBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzICh0aGF0J3Mgd2h5IGl0J3MgaW4gcHVibGlj
IGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKKyAgICBF
dmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFzZTsKKyAgICBjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpOyAvKio8IHJlZmVyZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2Ug
Ki8KKyAgICBFdmFzX09iamVjdCogc2VsZjsgLyoqPCByZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0
ICovCisgICAgRXZhc19PYmplY3QqIGltYWdlOyAvKio8IHJlZmVyZW5jZSB0byBldmFzX29iamVj
dF9pbWFnZSBmb3IgZHJhd2luZyB3ZWIgY29udGVudHMgKi8KKyAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXY7IC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYgKi8K
KyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7IC8qKjwgbGFzdCB1
c2VkIHZpZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7IC8qKjwgd2hhdCBjaGFu
Z2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6
MTsKKyAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9u
OjE7CisgICAgfSBjaGFuZ2VkOworfTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJL
aXQgVmlldyBvYmplY3QuCisgKgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBj
cmVhdGUgdGhlIHZpZXcgb2JqZWN0CisgKiBAcGFyYW0gY29udGV4dCBXS0NvbnRleHQncyBSZWZl
cmVuY2UgcG9pbnRlcgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgV0tQYWdlR3JvdXAncyBSZWZlcmVu
Y2UgcG9pbnRlcgorICoKKyAqIEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyAw
IG9uIGZhaWx1cmUKKyAqLworRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUs
IFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlX2dyb3VwKTsKKworLyoq
CisgKiBHZXRzIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3LgorICoKKyAqIEBwYXJhbSBvIHRo
ZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIFdLUGFnZVJlZgorICoKKyAqIEByZXR1cm4gdGhlIFdL
UGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqLworRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9n
ZXQoRXZhc19PYmplY3QqIG8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2Vu
ZGlmIC8vIGV3a192aWV3X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119808</attachid>
            <date>2011-12-18 21:10:25 -0800</date>
            <delta_ts>2011-12-18 22:31:13 -0800</delta_ts>
            <desc>patch for ewk_view.</desc>
            <filename>ewk_view.patch</filename>
            <type>text/plain</type>
            <size>25896</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyZTc2MzM1Li4zMTI1MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTEtMTItMTggIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3ZpZXcgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5pdGlh
bCB2ZXJzaW9uIG9mIFdlYktpdDIgRUZMIHBvcnQncyBld2tfdmlldy4KKyAgICAgICAgVGhlIGV3
a192aWV3IGlzIEV2YXNfT2JqZWN0IHRvIHNob3cgdGhlIHJlbmRlcmVkIHdlYiBjb250ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDogQWRkZWQuCisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgorICAg
ICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X29uX2tl
eV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
bW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld19hZGQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFnZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6IEFk
ZGVkLgorCiAyMDExLTEyLTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBhdHRlbXB0IHRvIGZpeCB0aGUgd2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xN2YzNjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDY5IEBACisvKgor
ICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgY2hh
ciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CisKK3N0cnVjdCBfRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhIHsKKyAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7Cit9
OworCisjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVzdWx0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGNoYXIqIF90bXBfb3R5cGUgPSBl
dmFzX29iamVjdF90eXBlX2dldChld2tWaWV3KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBj
b25zdCBFdmFzX1NtYXJ0KiBfdG1wX3MgPSBldmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQoZXdr
Vmlldyk7ICAgICAgIFwKKyAgICAgICAgaWYgKEVJTkFfVU5MSUtFTFkoIV90bXBfcykpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBFSU5B
X0xPR19DUklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICgiJXAgKCVzKSBpcyBub3QgYSBzbWFydCBvYmplY3Qh
IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmll
dywgX3RtcF9vdHlwZSA/IF90bXBfb3R5cGUgOiAiKG51bGwpIik7ICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogX3RtcF9zYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0
KF90bXBfcyk7ICAgICAgICBcCisgICAgICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3NjKSkg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
RUlOQV9MT0dfQ1JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2Jq
ZWN0ISIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGV3
a1ZpZXcsIF90bXBfb3R5cGUgPyBfdG1wX290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChFSU5BX1VOTElLRUxZKF90bXBfc2MtPmRhdGEgIT0gRVdLX1ZJRVdfVFlQRV9T
VFIpKSB7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAoIiVwICglcykgaXMgbm90IG9mIGFuIGV3a192aWV3IChuZWVkICVwLCBnb3QgJXAp
ISIsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGV3a1ZpZXcsIF90bXBfb3R5cGUgPyBf
dG1wX290eXBlIDogIihudWxsKSIsICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICBFV0tfVklFV19UWVBFX1NUUiwgX3RtcF9zYy0+ZGF0YSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNt
YXJ0RGF0YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJ
RVdfVFlQRV9DSEVDSyhld2tWaWV3LCBfdG1wX3Jlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IDA7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoX3RtcF9yZXN1
bHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29i
amVjdF9zbWFydF9kYXRhX2dldChld2tWaWV3KTsKKworI2RlZmluZSBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgLi4uKSAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFzbWFydERhdGEpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFSU5BX0xPR19DUklUKCJubyBzbWFydCBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgZXdrVmlldywgZXZhc19vYmplY3Rf
dHlwZV9nZXQoZXdrVmlldykpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEs
IHByaXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYgPSBzbWFydERhdGEtPnByaXYKKworI2RlZmluZSBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAuLi4pICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQo
InNtYXJ0IGRhdGEgaXMgbnVsbCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghcHJpdikgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlO
QV9MT0dfQ1JJVCgibm8gcHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAgKCVzKSIsICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIHNtYXJ0RGF0YS0+c2VsZiwgZXZhc19vYmpl
Y3RfdHlwZV9nZXQoc21hcnREYXRhLT5zZWxmKSk7ICAgICAgXAorICAgICAgICByZXR1cm4gX19W
QV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2Vk
LmFueSkKKyAgICAgICAgcmV0dXJuOworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSB0cnVl
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhLT5zZWxmKTsKK30KKwor
Ly8gRGVmYXVsdCBFdmVudCBIYW5kbGluZy4KK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X2ZvY3VzX2luKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBFV0tf
VklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSkKKworICAgIHBy
aXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6
Vmlld0lzRm9jdXNlZCB8IFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfZm9jdXNf
b3V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSkKKworICAgIHByaXYtPnBhZ2VD
bGllbnQtPnBhZ2UoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRv
d0lzQWN0aXZlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBj
b25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Q
b2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9Owor
ICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJX
aGVlbEV2ZW50KHdoZWVsRXZlbnQsICZwb3NpdGlvbikpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV9kb3duKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZl
bnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
ZmFsc2UpCisKKyAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBz
bWFydERhdGEtPnZpZXcueX07CisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVN
b3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91
c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1VwKiB1cEV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERh
dGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBh
Z2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsICZwb3Np
dGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmll
d19zbWFydF9tb3VzZV9tb3ZlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBFdmFzX1BvaW50IHBv
c2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisgICAgcHJp
di0+cGFnZUNsaWVudC0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZl
bnQobW92ZUV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQpCit7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAg
ICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudChkb3duRXZlbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIHVwRXZlbnQpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBwcml2
LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCh1cEV2ZW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEV2ZW50IEhhbmRs
aW5nLgorc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMq
IGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0
YTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmZvY3VzX2luKTsKKyAg
ICBzbWFydERhdGEtPmFwaS0+Zm9jdXNfaW4oc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19vdXQpOworICAgIHNtYXJ0RGF0YS0+YXBp
LT5mb2N1c19vdXQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2
ZW50ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50SW5mbzsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX3doZWVsKTsKKyAgICBzbWFy
dERhdGEtPmFwaS0+bW91c2Vfd2hlZWwoc21hcnREYXRhLCB3aGVlbEV2ZW50KTsKK30KKworc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogY2FudmFz
LCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV2YXNfRXZl
bnRfTW91c2VfRG93biogZG93bkV2ZW50ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRJ
bmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+
YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+bW91
c2VfZG93bik7CisgICAgc21hcnREYXRhLT5hcGktPm1vdXNlX2Rvd24oc21hcnREYXRhLCBkb3du
RXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0
YSwgRXZhcyogY2FudmFzLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogZXZlbnRJbmZvKQor
eworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQgPSAoRXZhc19FdmVudF9Nb3VzZV9V
cCopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNt
YXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEt
PmFwaS0+bW91c2VfdXApOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV91cChzbWFydERhdGEs
IHVwRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lk
KiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudElu
Zm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQgPSAoRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlKilldmVudEluZm87CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKTsKKyAgICBzbWFydERhdGEtPmFwaS0+bW91c2Vf
bW92ZShzbWFydERhdGEsIG1vdmVFdmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19v
bl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZG93bkV2ZW50
ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50SW5mbzsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPmtleV9kb3duKTsKKyAgICBzbWFydERhdGEtPmFw
aS0+a2V5X2Rvd24oc21hcnREYXRhLCBkb3duRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9VcCogdXBFdmVu
dCA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRJbmZvOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+a2V5X3VwKTsKKyAgICBzbWFydERhdGEtPmFwaS0+
a2V5X3VwKHNtYXJ0RGF0YSwgdXBFdmVudCk7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNz
IGdfcGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOworCitzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9
CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIEVJTkFfTE9HX0NS
SVQoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19Qcml2YXRlX0RhdGEiKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIHByaXY7Cit9CisKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCit7CisgICAgaWYg
KCFwcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbnVsbHB0
cjsKKyAgICBmcmVlKHByaXYpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0g
ZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOworICAgIGNvbnN0IEV2YXNfU21h
cnRfQ2xhc3MqIHNtYXJ0Q2xhc3MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7CisgICAg
Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9D
bGFzcyopc21hcnRDbGFzczsKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRh
KTsKKworICAgIGlmICghc21hcnREYXRhKSB7CisgICAgICAgIHNtYXJ0RGF0YSA9IChFd2tfVmll
d19TbWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKTsKKyAg
ICAgICAgaWYgKCFzbWFydERhdGEpIHsKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQoImNvdWxk
IG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrVmlldywg
c21hcnREYXRhKTsKKyAgICB9CisKKyAgICBzbWFydERhdGEtPnNlbGYgPSBld2tWaWV3OworICAg
IHNtYXJ0RGF0YS0+cHJpdiA9IF9ld2tfdmlld19wcml2X25ldyhzbWFydERhdGEpOworICAgIHNt
YXJ0RGF0YS0+YXBpID0gYXBpOworCisgICAgaWYgKCFzbWFydERhdGEtPnByaXYpIHsKKyAgICAg
ICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEiKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfZGF0YV9zZXQoZXdrVmlldywgMCk7Cisg
ICAgICAgIGZyZWUoc21hcnREYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdf
cGFyZW50U21hcnRDbGFzcy5hZGQoZXdrVmlldyk7CisKKyAgICAvLyBDcmVhdGUgZXZhc19vYmpl
Y3RfaW1hZ2UgdG8gZHJhdyB3ZWIgY29udGVudHMuCisgICAgc21hcnREYXRhLT5pbWFnZSA9IGV2
YXNfb2JqZWN0X2ltYWdlX2FkZChzbWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgZXZhc19vYmpl
Y3RfaW1hZ2VfYWxwaGFfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIGZhbHNlKTsKKyAgICBldmFzX29i
amVjdF9pbWFnZV9maWxsZWRfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHRydWUpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc21hcnREYXRhLT5pbWFnZSwgZXdrVmlldyk7CisgICAg
ZXZhc19vYmplY3Rfc2hvdyhzbWFydERhdGEtPmltYWdlKTsKKworI2RlZmluZSBDT05ORUNUKHMs
IGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBzLCBjLCBzbWFydERh
dGEpCisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lOLCBfZXdrX3ZpZXdfb25fZm9j
dXNfaW4pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NVU19PVVQsIF9ld2tfdmlld19v
bl9mb2N1c19vdXQpOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9XSEVFTCwgX2V3
a192aWV3X29uX21vdXNlX3doZWVsKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FMTEJBQ0tfTU9VU0Vf
RE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFD
S19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKKyAgICBDT05ORUNUKEVWQVNfQ0FM
TEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOworICAgIENPTk5FQ1Qo
RVZBU19DQUxMQkFDS19LRVlfRE9XTiwgX2V3a192aWV3X29uX2tleV9kb3duKTsKKyAgICBDT05O
RUNUKEVWQVNfQ0FMTEJBQ0tfS0VZX1VQLCBfZXdrX3ZpZXdfb25fa2V5X3VwKTsKKyN1bmRlZiBD
T05ORUNUCit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9kZWwoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7Cisg
ICAgaWYgKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpCisgICAgICAgIF9ld2tfdmlld19w
cml2X2RlbChzbWFydERhdGEtPnByaXYpOworCisgICAgZ19wYXJlbnRTbWFydENsYXNzLmRlbChl
d2tWaWV3KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZShFdmFzX09i
amVjdCogZXdrVmlldywgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworCisgICAg
ZXZhc19vYmplY3RfcmVzaXplKHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOworICAg
IGV2YXNfb2JqZWN0X2ltYWdlX3NpemVfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIHdpZHRoLCBoZWln
aHQpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KHNtYXJ0RGF0YS0+aW1hZ2UsIDAs
IDAsIHdpZHRoLCBoZWlnaHQpOworCisgICAgc21hcnREYXRhLT5jaGFuZ2VkLnNpemUgPSB0cnVl
OworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9tb3ZlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nvb3Jk
IHgsIEV2YXNfQ29vcmQgeSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7CisKKyAgICBzbWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSB0cnVl
OworICAgIF9ld2tfdmlld19zbWFydF9jaGFuZ2VkKHNtYXJ0RGF0YSk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIEV2YXNfQ29v
cmQgeCwgeSwgd2lkdGgsIGhlaWdodDsKKworICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkgPSBm
YWxzZTsKKworICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChld2tWaWV3LCAmeCwgJnksICZ3
aWR0aCwgJmhlaWdodCk7CisgICAgRXZhc19PYmplY3QqIGNsaXAgPSBldmFzX29iamVjdF9jbGlw
X2dldChzbWFydERhdGEtPmltYWdlKTsKKworICAgIGlmIChzbWFydERhdGEtPmNoYW5nZWQuc2l6
ZSkgeworICAgICAgICBpZiAocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgp
KQorICAgICAgICAgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5z
ZXRTaXplKEludFNpemUod2lkdGgsIGhlaWdodCksIEludFNpemUoKSk7CisgICAgICAgIHNtYXJ0
RGF0YS0+dmlldy53ID0gd2lkdGg7CisgICAgICAgIHNtYXJ0RGF0YS0+dmlldy5oID0gaGVpZ2h0
OworICAgICAgICBldmFzX29iamVjdF9yZXNpemUoY2xpcCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHNt
YXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbikgeworICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNt
YXJ0RGF0YS0+aW1hZ2UsIHgsIHkpOworICAgICAgICBldmFzX29iamVjdF9tb3ZlKGNsaXAsIHgs
IHkpOworICAgICAgICBzbWFydERhdGEtPnZpZXcueCA9IHg7CisgICAgICAgIHNtYXJ0RGF0YS0+
dmlldy55ID0geTsKKyAgICAgICAgc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0aW9uID0gZmFsc2U7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfc2hvdyhFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSk7CisKKyAgICBpZiAoZXZhc19vYmplY3RfY2xpcGVlc19nZXQoc21hcnREYXRhLT5i
YXNlLmNsaXBwZXIpKQorICAgICAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+YmFzZS5j
bGlwcGVyKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0RGF0YS0+aW1hZ2UpOworfQorCitz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfaGlkZShFdmFzX09iamVjdCogZXdrVmlldykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisKKyAg
ICBldmFzX29iamVjdF9oaWRlKHNtYXJ0RGF0YS0+YmFzZS5jbGlwcGVyKTsKKyAgICBldmFzX29i
amVjdF9oaWRlKHNtYXJ0RGF0YS0+aW1hZ2UpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc21h
cnRfY2xhc3NfaW5pdChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChhcGksIGZhbHNlKTsKKworICAgIGlmIChhcGktPnZlcnNp
b24gIT0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTikgeworICAgICAgICBFSU5BX0xPR19D
UklUKCJFd2tfVmlld19TbWFydF9DbGFzcyAlcCBpcyB2ZXJzaW9uICVsdSB3aGlsZSAlbHUgd2Fz
IGV4cGVjdGVkLiIsCisgICAgICAgICAgICAgYXBpLCBhcGktPnZlcnNpb24sIEVXS19WSUVXX1NN
QVJUX0NMQVNTX1ZFUlNJT04pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKEVJTkFfVU5MSUtFTFkoIWdfcGFyZW50U21hcnRDbGFzcy5hZGQpKQorICAgICAgICBldmFz
X29iamVjdF9zbWFydF9jbGlwcGVkX3NtYXJ0X3NldCgmZ19wYXJlbnRTbWFydENsYXNzKTsKKwor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRfc21hcnRfc2V0KCZhcGktPnNjKTsKKworICAg
IC8vIFNldCBFdmFzX1NtYXJ0X0NsYXNzIGZ1bmN0aW9ucy4KKyAgICBhcGktPnNjLmFkZCA9IF9l
d2tfdmlld19zbWFydF9hZGQ7CisgICAgYXBpLT5zYy5kZWwgPSBfZXdrX3ZpZXdfc21hcnRfZGVs
OworICAgIGFwaS0+c2MubW92ZSA9IF9ld2tfdmlld19zbWFydF9tb3ZlOworICAgIGFwaS0+c2Mu
cmVzaXplID0gX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZTsKKyAgICBhcGktPnNjLnNob3cgPSBfZXdr
X3ZpZXdfc21hcnRfc2hvdzsKKyAgICBhcGktPnNjLmhpZGUgPSBfZXdrX3ZpZXdfc21hcnRfaGlk
ZTsKKyAgICBhcGktPnNjLmNhbGN1bGF0ZSA9IF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGU7Cisg
ICAgYXBpLT5zYy5kYXRhID0gRVdLX1ZJRVdfVFlQRV9TVFI7IC8vIEl0IGlzIHVzZWQgYnkgdHlw
ZSBjaGVja2luZy4KKworICAgIC8vIFNldCBFd2tfVmlld19TbWFydF9DbGFzcyBmdW5jdGlvbnMu
CisgICAgYXBpLT5mb2N1c19pbiA9IF9ld2tfdmlld19zbWFydF9mb2N1c19pbjsKKyAgICBhcGkt
PmZvY3VzX291dCA9IF9ld2tfdmlld19zbWFydF9mb2N1c19vdXQ7CisgICAgYXBpLT5tb3VzZV93
aGVlbCA9IF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbDsKKyAgICBhcGktPm1vdXNlX2Rvd24g
PSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bjsKKyAgICBhcGktPm1vdXNlX3VwID0gX2V3a192
aWV3X3NtYXJ0X21vdXNlX3VwOworICAgIGFwaS0+bW91c2VfbW92ZSA9IF9ld2tfdmlld19zbWFy
dF9tb3VzZV9tb3ZlOworICAgIGFwaS0+a2V5X2Rvd24gPSBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rv
d247CisgICAgYXBpLT5rZXlfdXAgPSBfZXdrX3ZpZXdfc21hcnRfa2V5X3VwOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXZhc19TbWFydCogX2V3a192aWV3X3NtYXJ0
X2NsYXNzX25ldyh2b2lkKQoreworICAgIHN0YXRpYyBFd2tfVmlld19TbWFydF9DbGFzcyBhcGkg
PSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTigiRXdrX1ZpZXciKTsKKyAg
ICBzdGF0aWMgRXZhc19TbWFydCogc21hcnQgPSAwOworCisgICAgaWYgKEVJTkFfVU5MSUtFTFko
IXNtYXJ0KSkgeworICAgICAgICBld2tfdmlld19zbWFydF9jbGFzc19pbml0KCZhcGkpOworICAg
ICAgICBzbWFydCA9IGV2YXNfc21hcnRfY2xhc3NfbmV3KCZhcGkuc2MpOworICAgIH0KKworICAg
IHJldHVybiBzbWFydDsKK30KKworRXZhc19PYmplY3QqIGV3a192aWV3X2FkZChFdmFzKiBjYW52
YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYp
Cit7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBldmFzX29iamVjdF9zbWFydF9hZGQoY2Fu
dmFzLCBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KCkpOworICAgIGlmICghZXdrVmlldykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRh
KTsKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeworICAgICAgICBldmFzX29iamVjdF9kZWwoZXdrVmll
dyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNt
YXJ0RGF0YSwgcHJpdik7CisgICAgaWYgKCFwcml2KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2Rl
bChld2tWaWV3KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdi0+cGFnZUNs
aWVudCA9IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUodG9JbXBsKGNvbnRleHRSZWYpLCB0b0ltcGwo
cGFnZUdyb3VwUmVmKSwgc21hcnREYXRhLT5pbWFnZSk7CisKKyAgICByZXR1cm4gZXdrVmlldzsK
K30KKworV0tQYWdlUmVmIGV3a192aWV3X3BhZ2VfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKwor
ICAgIHJldHVybiB0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzg5NTZiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX3Zp
ZXdfaAorI2RlZmluZSBld2tfdmlld19oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfRGF0YSBFd2tfVmlld19TbWFy
dF9EYXRhOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzOworCisvLy8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBz
dWItY2xhc3Nlcy4KK3N0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgeworICAgIEV2YXNfU21h
cnRfQ2xhc3Mgc2M7IC8qKjwgYWxsIGJ1dCAnZGF0YScgaXMgZnJlZSB0byBiZSBjaGFuZ2VkLiAq
LworICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKKworICAgIC8vIGV2ZW50IGhhbmRsaW5nOgor
ICAgIC8vICAtIHJldHVybnMgdHJ1ZSBpZiBoYW5kbGVkCisgICAgLy8gIC0gaWYgb3ZlcnJpZGRl
biwgaGF2ZSB0byBjYWxsIHBhcmVudCBtZXRob2QgaWYgZGVzaXJlZAorICAgIEVpbmFfQm9vbCAo
KmZvY3VzX2luKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgRWluYV9Cb29sICgqZm9j
dXNfb3V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7CisgICAgRWluYV9Cb29sICgqbW91c2Vf
d2hlZWwpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsICpldik7CisgICAgRWluYV9Cb29sICgqbW91c2VfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYpOworICAgIEVpbmFfQm9vbCAo
Km1vdXNlX3VwKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9VcCAqZXYpOworICAgIEVpbmFfQm9vbCAoKm1vdXNlX21vdmUpKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUgKmV2KTsKKyAgICBFaW5hX0Jvb2wg
KCprZXlfZG93bikoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24gKmV2KTsKKyAgICBFaW5hX0Jvb2wgKCprZXlfdXApKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBjb25zdCBFdmFzX0V2ZW50X0tleV9VcCAqZXYpOworfTsKKworLyoqCisgKiBUaGUgdmVy
c2lvbiB5b3UgaGF2ZSB0byBwdXQgaW50byB0aGUgdmVyc2lvbiBmaWVsZAorICogaW4gdGhlIEBh
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBFV0tfVklFV19T
TUFSVF9DTEFTU19WRVJTSU9OIDFVTAorCisvKioKKyAqIEluaXRpYWxpemVyIGZvciB3aG9sZSBF
d2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHBhcmFtIHNtYXJ0X2NsYXNz
X2luaXQgaW5pdGlhbGl6ZXIgdG8gdXNlIGZvciB0aGUgImJhc2UiIGZpZWxkCisgKiAoRXZhc19T
bWFydF9DbGFzcykuCisgKgorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwK
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisgKiBAc2VlIEVXS19W
SUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdf
U01BUlRfQ0xBU1NfSU5JVChzbWFydF9jbGFzc19pbml0KSB7c21hcnRfY2xhc3NfaW5pdCwgRVdL
X1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0KKworLyoq
CisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mgc3Ry
dWN0dXJlLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9WRVJTSU9OCisg
KiBAc2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OCisgKiBAc2VlIEVX
S19WSUVXX1NNQVJUX0NMQVNTX0lOSVQKKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfTlVMTCkKKworLyoqCisgKiBJbml0aWFsaXplciB0byB6ZXJvIGEgd2hvbGUgRXdrX1ZpZXdf
U21hcnRfQ2xhc3Mgc3RydWN0dXJlIGFuZCBzZXQKKyAqIG5hbWUgYW5kIHZlcnNpb24uCisgKgor
ICogU2ltaWxhciB0byBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEwsIGJ1dCB3aWxsIHNl
dCB2ZXJzaW9uIGZpZWxkIG9mCisgKiBFdmFzX1NtYXJ0X0NsYXNzIChiYXNlIGZpZWxkKSB0byBs
YXRlc3QgRVZBU19TTUFSVF9DTEFTU19WRVJTSU9OIGFuZCBuYW1lCisgKiB0byB0aGUgc3BlY2lm
aWMgdmFsdWUuCisgKgorICogSXQgd2lsbCBrZWVwIGEgcmVmZXJlbmNlIHRvIG5hbWUgZmllbGQg
YXMgYSAiY29uc3QgY2hhciAqIiwgdGhhdCBpcywKKyAqIG5hbWUgbXVzdCBiZSBhdmFpbGFibGUg
d2hpbGUgdGhlIHN0cnVjdHVyZSBpcyB1c2VkIChoaW50OiBzdGF0aWMgb3IgZ2xvYmFsISkKKyAq
IGFuZCB3aWxsIG5vdCBiZSBtb2RpZmllZC4KKyAqCisgKiBAc2VlIEVXS19WSUVXX1NNQVJUX0NM
QVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04K
KyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVAorICovCisjZGVmaW5lIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpIEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVQoRVZBU19TTUFSVF9DTEFTU19JTklUX05BTUVfVkVSU0lPTihuYW1lKSkKKwordHlwZWRl
ZiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSBFd2tfVmlld19Qcml2YXRlX0RhdGE7Cisv
KioKKyAqIEBicmllZiBDb250YWlucyBhbiBpbnRlcm5hbCBWaWV3IGRhdGEuCisgKgorICogSXQg
aXMgdG8gYmUgY29uc2lkZXJlZCBwcml2YXRlIGJ5IHVzZXJzLCBidXQgbWF5IGJlIGV4dGVuZGVk
IG9yCisgKiBjaGFuZ2VkIGJ5IHN1Yi1jbGFzc2VzICh0aGF0J3Mgd2h5IGl0J3MgaW4gcHVibGlj
IGhlYWRlciBmaWxlKS4KKyAqLworc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKKyAgICBF
dmFzX09iamVjdF9TbWFydF9DbGlwcGVkX0RhdGEgYmFzZTsKKyAgICBjb25zdCBFd2tfVmlld19T
bWFydF9DbGFzcyogYXBpOyAvKio8IHJlZmVyZW5jZSB0byBjYXN0ZWQgY2xhc3MgaW5zdGFuY2Ug
Ki8KKyAgICBFdmFzX09iamVjdCogc2VsZjsgLyoqPCByZWZlcmVuY2UgdG8gb3duZXIgb2JqZWN0
ICovCisgICAgRXZhc19PYmplY3QqIGltYWdlOyAvKio8IHJlZmVyZW5jZSB0byBldmFzX29iamVj
dF9pbWFnZSBmb3IgZHJhd2luZyB3ZWIgY29udGVudHMgKi8KKyAgICBFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXY7IC8qKjwgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLCBjKysgc3R1ZmYgKi8K
KyAgICBzdHJ1Y3QgeworICAgICAgICBFdmFzX0Nvb3JkIHgsIHksIHcsIGg7IC8qKjwgbGFzdCB1
c2VkIHZpZXdwb3J0ICovCisgICAgfSB2aWV3OworICAgIHN0cnVjdCB7IC8qKjwgd2hhdCBjaGFu
Z2VkIHNpbmNlIGxhc3Qgc21hcnRfY2FsY3VsYXRlICovCisgICAgICAgIEVpbmFfQm9vbCBhbnk6
MTsKKyAgICAgICAgRWluYV9Cb29sIHNpemU6MTsKKyAgICAgICAgRWluYV9Cb29sIHBvc2l0aW9u
OjE7CisgICAgfSBjaGFuZ2VkOworfTsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IEVGTCBXZWJL
aXQgVmlldyBvYmplY3QuCisgKgorICogQHBhcmFtIGUgY2FudmFzIG9iamVjdCB3aGVyZSB0byBj
cmVhdGUgdGhlIHZpZXcgb2JqZWN0CisgKiBAcGFyYW0gY29udGV4dCBXS0NvbnRleHQncyBSZWZl
cmVuY2UgcG9pbnRlcgorICogQHBhcmFtIHBhZ2VfZ3JvdXAgV0tQYWdlR3JvdXAncyBSZWZlcmVu
Y2UgcG9pbnRlcgorICoKKyAqIEByZXR1cm4gdmlldyBvYmplY3Qgb24gc3VjY2VzcyBvciBAYyAw
IG9uIGZhaWx1cmUKKyAqLworRUFQSSBFdmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGUs
IFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlX2dyb3VwKTsKKworLyoq
CisgKiBHZXRzIHRoZSBXS1BhZ2VSZWYgb2YgdGhpcyB2aWV3LgorICoKKyAqIEBwYXJhbSBvIHRo
ZSB2aWV3IG9iamVjdCB0byBnZXQgdGhlIFdLUGFnZVJlZgorICoKKyAqIEByZXR1cm4gdGhlIFdL
UGFnZVJlZiBvZiB0aGlzIHZpZXcKKyAqLworRUFQSSBXS1BhZ2VSZWYgZXdrX3ZpZXdfcGFnZV9n
ZXQoRXZhc19PYmplY3QqIG8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2Vu
ZGlmIC8vIGV3a192aWV3X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119816</attachid>
            <date>2011-12-18 22:31:13 -0800</date>
            <delta_ts>2011-12-21 21:12:16 -0800</delta_ts>
            <desc>patch for ewk_view.</desc>
            <filename>ewk_view.patch</filename>
            <type>text/plain</type>
            <size>26102</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyZTc2MzM1Li4zMTI1MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTEtMTItMTggIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIGVmbCBwb3J0J3MgZXdrX3ZpZXcgZmlsZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgaW5pdGlh
bCB2ZXJzaW9uIG9mIFdlYktpdDIgRUZMIHBvcnQncyBld2tfdmlldy4KKyAgICAgICAgVGhlIGV3
a192aWV3IGlzIEV2YXNfT2JqZWN0IHRvIHNob3cgdGhlIHJlbmRlcmVkIHdlYiBjb250ZW50cy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDogQWRkZWQuCisgICAg
ICAgIChfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
Zm9jdXNfaW4pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dCk6CisgICAgICAg
IChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9rZXlfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X3VwKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9mb2N1c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0
KToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfb25fbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgorICAg
ICAgICAoX2V3a192aWV3X29uX21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X29uX2tl
eV9kb3duKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9rZXlfdXApOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9kZWwpOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
bW92ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKyAgICAgICAgKF9l
d2tfdmlld19zbWFydF9zaG93KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9oaWRlKToKKyAg
ICAgICAgKGV3a192aWV3X3NtYXJ0X2NsYXNzX2luaXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X2NsYXNzX25ldyk6CisgICAgICAgIChld2tfdmlld19hZGQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcGFnZV9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6IEFk
ZGVkLgorCiAyMDExLTEyLTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBhdHRlbXB0IHRvIGZpeCB0aGUgd2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNWJjYTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDY4IEBACisvKgor
ICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJb
XSA9ICJFV0syX1ZpZXciOworCitzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CisgICAg
T3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworfTsKKworI2RlZmluZSBFV0tfVklF
V19UWVBFX0NIRUNLKGV3a1ZpZXcsIHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBib29sIHJlc3VsdCA9IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBjb25zdCBjaGFyKiBfdG1wX290eXBlID0gZXZhc19vYmplY3RfdHlwZV9nZXQo
ZXdrVmlldyk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgRXZhc19TbWFydCogX3Rt
cF9zID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KGV3a1ZpZXcpOyAgICAgICBcCisgICAg
ICAgIGlmIChFSU5BX1VOTElLRUxZKCFfdG1wX3MpKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAoIiVwICglcykgaXMgbm90IGEgc21hcnQgb2JqZWN0ISIsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGV3a1ZpZXcsIF90bXBfb3R5cGUgPyBfdG1w
X290eXBlIDogIihudWxsKSIpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmVzdWx0
ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IEV2YXNfU21hcnRf
Q2xhc3MqIF90bXBfc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChfdG1wX3MpOyAgICAgICAgXAor
ICAgICAgICBpZiAoRUlOQV9VTkxJS0VMWSghX3RtcF9zYykpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgKCIlcCAoJXMpIGlzIG5vdCBhIHNtYXJ0IG9iamVjdCEiLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICBld2tWaWV3LCBfdG1wX290eXBlID8g
X3RtcF9vdHlwZSA6ICIobnVsbCkiKTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoRUlOQV9VTkxJ
S0VMWShfdG1wX3NjLT5kYXRhICE9IEVXS19WSUVXX1RZUEVfU1RSKSkgeyAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKCIlcCAoJXMpIGlz
IG5vdCBvZiBhbiBld2tfdmlldyAobmVlZCAlcCwgZ290ICVwKSEiLCAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICBld2tWaWV3LCBfdG1wX290eXBlID8gX3RtcF9vdHlwZSA6ICIobnVsbCki
LCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgRVdLX1ZJRVdfVFlQRV9TVFIs
IF90bXBfc2MtPmRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQor
CisjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmll
dywgX3RtcF9yZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKF90bXBfcmVzdWx0KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzbWFy
dERhdGEgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQo
ZXdrVmlldyk7CisKKyNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIC4uLikgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVdLX1ZJRVdfU0RfR0VU
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGlmICghc21hcnREYXRhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgibm8g
c21hcnQgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgIGV3a1ZpZXcsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KGV3a1ZpZXcpKTsg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisK
KyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
ID0gc21hcnREYXRhLT5wcml2CisKKyNkZWZpbmUgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdiwgLi4uKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFz
bWFydERhdGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBFSU5BX0xPR19DUklUKCJzbWFydCBkYXRhIGlzIG51bGwi
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
VkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVXS19WSUVXX1BSSVZfR0VUKHNt
YXJ0RGF0YSwgcHJpdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoIXByaXYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVJTkFfTE9HX0NSSVQoIm5vIHByaXZh
dGUgZGF0YSBmb3Igb2JqZWN0ICVwICglcykiLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICBzbWFydERhdGEtPnNlbGYsIGV2YXNfb2JqZWN0X3R5cGVfZ2V0KHNtYXJ0RGF0
YS0+c2VsZikpOyAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEpCit7CisgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5hbnkpCisgICAgICAgIHJldHVy
bjsKKyAgICBzbWFydERhdGEtPmNoYW5nZWQuYW55ID0gdHJ1ZTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jaGFuZ2VkKHNtYXJ0RGF0YS0+c2VsZik7Cit9CisKKy8vIERlZmF1bHQgRXZlbnQgSGFu
ZGxpbmcuCitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9mb2N1c19pbihFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdl
KCktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQgfCBXZWJQ
YWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2ZvY3VzX291dChFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEpCit7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdiwgZmFsc2UpCisKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPnZpZXdT
dGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3do
ZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCogd2hlZWxFdmVudCkKK3sKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c21hcnREYXRhLCBwcml2LCBmYWxzZSkKKworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21h
cnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50
LT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCh3aGVlbEV2ZW50
LCAmcG9zaXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEs
IGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZG93bkV2ZW50KQoreworICAgIEVXS19WSUVX
X1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Q
b2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9Owor
ICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJN
b3VzZUV2ZW50KGRvd25FdmVudCwgJnBvc2l0aW9uKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKK3sK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSkK
KworICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0
YS0+dmlldy55fTsKKyAgICBwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfbW91c2VfbW92ZShF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92
ZSogbW92ZUV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKQorCisgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEt
PnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworICAgIHByaXYtPnBhZ2VDbGllbnQtPnBhZ2Uo
KS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KG1vdmVFdmVudCwgJnBvc2l0
aW9uKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biogZG93bkV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+
cGFnZSgpLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZG93bkV2
ZW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X2tleV91cChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNf
RXZlbnRfS2V5X1VwKiB1cEV2ZW50KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzbWFydERhdGEsIHByaXYsIGZhbHNlKQorCisgICAgcHJpdi0+cGFnZUNsaWVudC0+cGFnZSgp
LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodXBFdmVudCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCisvLyBFdmVudCBIYW5kbGluZy4KK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0
KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+Zm9jdXNfaW4pOworICAgIHNtYXJ0
RGF0YS0+YXBpLT5mb2N1c19pbihzbWFydERhdGEpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5mb2N1c19vdXQpOworICAgIHNtYXJ0RGF0
YS0+YXBpLT5mb2N1c19vdXQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3
aGVlbEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9XaGVlbCo+KGV2ZW50SW5m
byk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERh
dGEtPmFwaS0+bW91c2Vfd2hlZWwpOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV93aGVlbChz
bWFydERhdGEsIHdoZWVsRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQg
PSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudEluZm8pOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0
X0RhdGEqPihkYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEt
PmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1v
dXNlX2Rvd24pOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9kb3duKHNtYXJ0RGF0YSwgZG93
bkV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRh
dGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIGV2ZW50SW5mbykK
K3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19F
dmVudF9Nb3VzZV9VcCo+KGV2ZW50SW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaS0+bW91c2VfdXApOworICAgIHNtYXJ0RGF0
YS0+YXBpLT5tb3VzZV91cChzbWFydERhdGEsIHVwRXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBjYW52YXMsIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9N
b3ZlKiBtb3ZlRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX01vdmUqPihldmVu
dEluZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzbWFydERhdGEtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21h
cnREYXRhLT5hcGktPm1vdXNlX21vdmUpOworICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3Zl
KHNtYXJ0RGF0YSwgbW92ZUV2ZW50KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tl
eV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGNhbnZhcywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZv
aWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZlbnQgPSBz
dGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4oZXZlbnRJbmZvKTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkp
OworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5rZXlfZG93
bik7CisgICAgc21hcnREYXRhLT5hcGktPmtleV9kb3duKHNtYXJ0RGF0YSwgZG93bkV2ZW50KTsK
K30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBj
YW52YXMsIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZh
c19FdmVudF9LZXlfVXAqIHVwRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9VcCo+
KGV2ZW50SW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihzbWFydERhdGEtPmFwaS0+a2V5X3VwKTsKKyAgICBzbWFydERhdGEtPmFwaS0+a2V5X3VwKHNt
YXJ0RGF0YSwgdXBFdmVudCk7Cit9CisKK3N0YXRpYyBFdmFzX1NtYXJ0X0NsYXNzIGdfcGFyZW50
U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOworCitzdGF0aWMgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhKQoreworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9CisgICAgICAg
IHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKSkpOworICAgIGlmICghcHJpdikgeworICAgICAgICBFSU5BX0xP
R19DUklUKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBwcml2OworfQorCitzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQoreworICAg
IGlmICghcHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG51
bGxwdHI7CisgICAgZnJlZShwcml2KTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0
X2FkZChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFy
dCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChld2tWaWV3KTsKKyAgICBjb25zdCBFdmFz
X1NtYXJ0X0NsYXNzKiBzbWFydENsYXNzID0gZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOwor
ICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKj4oc21hcnRDbGFzcyk7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisKKyAgICBpZiAoIXNtYXJ0RGF0YSkgeworICAgICAg
ICBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oY2FsbG9jKDEs
IHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSkpOworICAgICAgICBpZiAoIXNtYXJ0RGF0YSkg
eworICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3
X1NtYXJ0X0RhdGEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBl
dmFzX29iamVjdF9zbWFydF9kYXRhX3NldChld2tWaWV3LCBzbWFydERhdGEpOworICAgIH0KKwor
ICAgIHNtYXJ0RGF0YS0+c2VsZiA9IGV3a1ZpZXc7CisgICAgc21hcnREYXRhLT5wcml2ID0gX2V3
a192aWV3X3ByaXZfbmV3KHNtYXJ0RGF0YSk7CisgICAgc21hcnREYXRhLT5hcGkgPSBhcGk7CisK
KyAgICBpZiAoIXNtYXJ0RGF0YS0+cHJpdikgeworICAgICAgICBFSU5BX0xPR19DUklUKCJjb3Vs
ZCBub3QgYWxsb2NhdGUgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSIpOworICAgICAgICBldmFzX29i
amVjdF9zbWFydF9kYXRhX3NldChld2tWaWV3LCAwKTsKKyAgICAgICAgZnJlZShzbWFydERhdGEp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ19wYXJlbnRTbWFydENsYXNzLmFkZChl
d2tWaWV3KTsKKworICAgIC8vIENyZWF0ZSBldmFzX29iamVjdF9pbWFnZSB0byBkcmF3IHdlYiBj
b250ZW50cy4KKyAgICBzbWFydERhdGEtPmltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKHNt
YXJ0RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBldmFzX29iamVjdF9pbWFnZV9hbHBoYV9zZXQoc21h
cnREYXRhLT5pbWFnZSwgZmFsc2UpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxlZF9zZXQo
c21hcnREYXRhLT5pbWFnZSwgdHJ1ZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2Fk
ZChzbWFydERhdGEtPmltYWdlLCBld2tWaWV3KTsKKyAgICBldmFzX29iamVjdF9zaG93KHNtYXJ0
RGF0YS0+aW1hZ2UpOworCisjZGVmaW5lIENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRf
Y2FsbGJhY2tfYWRkKGV3a1ZpZXcsIHMsIGMsIHNtYXJ0RGF0YSkKKyAgICBDT05ORUNUKEVWQVNf
Q0FMTEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19pbik7CisgICAgQ09OTkVDVChF
VkFTX0NBTExCQUNLX0ZPQ1VTX09VVCwgX2V3a192aWV3X29uX2ZvY3VzX291dCk7CisgICAgQ09O
TkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1dIRUVMLCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwp
OworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91
c2VfZG93bik7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdf
b25fbW91c2VfdXApOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdr
X3ZpZXdfb25fbW91c2VfbW92ZSk7CisgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0tFWV9ET1dO
LCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOworICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19LRVlf
VVAsIF9ld2tfdmlld19vbl9rZXlfdXApOworI3VuZGVmIENPTk5FQ1QKK30KKworc3RhdGljIHZv
aWQgX2V3a192aWV3X3NtYXJ0X2RlbChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tf
VklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBpZiAoc21hcnREYXRhICYmIHNt
YXJ0RGF0YS0+cHJpdikKKyAgICAgICAgX2V3a192aWV3X3ByaXZfZGVsKHNtYXJ0RGF0YS0+cHJp
dik7CisKKyAgICBnX3BhcmVudFNtYXJ0Q2xhc3MuZGVsKGV3a1ZpZXcpOworfQorCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX0Nv
b3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisKKyAgICBldmFzX29iamVjdF9yZXNpemUoc21h
cnREYXRhLT5pbWFnZSwgd2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2Vfc2l6
ZV9zZXQoc21hcnREYXRhLT5pbWFnZSwgd2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19vYmplY3Rf
aW1hZ2VfZmlsbF9zZXQoc21hcnREYXRhLT5pbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdodCk7CisK
KyAgICBzbWFydERhdGEtPmNoYW5nZWQuc2l6ZSA9IHRydWU7CisgICAgX2V3a192aWV3X3NtYXJ0
X2NoYW5nZWQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X21v
dmUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQorewor
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKworICAg
IHNtYXJ0RGF0YS0+Y2hhbmdlZC5wb3NpdGlvbiA9IHRydWU7CisgICAgX2V3a192aWV3X3NtYXJ0
X2NoYW5nZWQoc21hcnREYXRhKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2Nh
bGN1bGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgRXZhc19Db29yZCB4LCB5LCB3aWR0aCwgaGVpZ2h0
OworCisgICAgc21hcnREYXRhLT5jaGFuZ2VkLmFueSA9IGZhbHNlOworCisgICAgZXZhc19vYmpl
Y3RfZ2VvbWV0cnlfZ2V0KGV3a1ZpZXcsICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBF
dmFzX09iamVjdCogY2xpcCA9IGV2YXNfb2JqZWN0X2NsaXBfZ2V0KHNtYXJ0RGF0YS0+aW1hZ2Up
OworCisgICAgaWYgKHNtYXJ0RGF0YS0+Y2hhbmdlZC5zaXplKSB7CisgICAgICAgIGlmIChwcml2
LT5wYWdlQ2xpZW50LT5wYWdlKCktPmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBwcml2LT5w
YWdlQ2xpZW50LT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFNpemUoSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KSwgSW50U2l6ZSgpKTsKKyAgICAgICAgc21hcnREYXRhLT52aWV3LncgPSB3aWR0aDsK
KyAgICAgICAgc21hcnREYXRhLT52aWV3LmggPSBoZWlnaHQ7CisgICAgICAgIGV2YXNfb2JqZWN0
X3Jlc2l6ZShjbGlwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgc21hcnREYXRhLT5jaGFuZ2Vk
LnNpemUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc21hcnREYXRhLT5jaGFuZ2VkLnBvc2l0
aW9uKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc21hcnREYXRhLT5pbWFnZSwgeCwgeSk7
CisgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoY2xpcCwgeCwgeSk7CisgICAgICAgIHNtYXJ0RGF0
YS0+dmlldy54ID0geDsKKyAgICAgICAgc21hcnREYXRhLT52aWV3LnkgPSB5OworICAgICAgICBz
bWFydERhdGEtPmNoYW5nZWQucG9zaXRpb24gPSBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19zbWFydF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKworICAgIGlmIChl
dmFzX29iamVjdF9jbGlwZWVzX2dldChzbWFydERhdGEtPmJhc2UuY2xpcHBlcikpCisgICAgICAg
IGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2Jq
ZWN0X3Nob3coc21hcnREYXRhLT5pbWFnZSk7Cit9CisKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9oaWRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKworICAgIGV2YXNfb2JqZWN0X2hpZGUoc21h
cnREYXRhLT5iYXNlLmNsaXBwZXIpOworICAgIGV2YXNfb2JqZWN0X2hpZGUoc21hcnREYXRhLT5p
bWFnZSk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zbWFydF9jbGFzc19pbml0KEV3a19WaWV3
X1NtYXJ0X0NsYXNzKiBhcGkpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGFwaSwgZmFsc2UpOworCisgICAgaWYgKGFwaS0+dmVyc2lvbiAhPSBFV0tfVklFV19TTUFSVF9D
TEFTU19WRVJTSU9OKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoIkV3a19WaWV3X1NtYXJ0X0Ns
YXNzICVwIGlzIHZlcnNpb24gJWx1IHdoaWxlICVsdSB3YXMgZXhwZWN0ZWQuIiwKKyAgICAgICAg
ICAgICBhcGksIGFwaS0+dmVyc2lvbiwgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfVkVSU0lPTik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghZ19w
YXJlbnRTbWFydENsYXNzLmFkZCkpCisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NsaXBwZWRf
c21hcnRfc2V0KCZnX3BhcmVudFNtYXJ0Q2xhc3MpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2xpcHBlZF9zbWFydF9zZXQoJmFwaS0+c2MpOworCisgICAgLy8gU2V0IEV2YXNfU21hcnRfQ2xh
c3MgZnVuY3Rpb25zLgorICAgIGFwaS0+c2MuYWRkID0gX2V3a192aWV3X3NtYXJ0X2FkZDsKKyAg
ICBhcGktPnNjLmRlbCA9IF9ld2tfdmlld19zbWFydF9kZWw7CisgICAgYXBpLT5zYy5tb3ZlID0g
X2V3a192aWV3X3NtYXJ0X21vdmU7CisgICAgYXBpLT5zYy5yZXNpemUgPSBfZXdrX3ZpZXdfc21h
cnRfcmVzaXplOworICAgIGFwaS0+c2Muc2hvdyA9IF9ld2tfdmlld19zbWFydF9zaG93OworICAg
IGFwaS0+c2MuaGlkZSA9IF9ld2tfdmlld19zbWFydF9oaWRlOworICAgIGFwaS0+c2MuY2FsY3Vs
YXRlID0gX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZTsKKyAgICBhcGktPnNjLmRhdGEgPSBFV0tf
VklFV19UWVBFX1NUUjsgLy8gSXQgaXMgdXNlZCBieSB0eXBlIGNoZWNraW5nLgorCisgICAgLy8g
U2V0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIGZ1bmN0aW9ucy4KKyAgICBhcGktPmZvY3VzX2luID0g
X2V3a192aWV3X3NtYXJ0X2ZvY3VzX2luOworICAgIGFwaS0+Zm9jdXNfb3V0ID0gX2V3a192aWV3
X3NtYXJ0X2ZvY3VzX291dDsKKyAgICBhcGktPm1vdXNlX3doZWVsID0gX2V3a192aWV3X3NtYXJ0
X21vdXNlX3doZWVsOworICAgIGFwaS0+bW91c2VfZG93biA9IF9ld2tfdmlld19zbWFydF9tb3Vz
ZV9kb3duOworICAgIGFwaS0+bW91c2VfdXAgPSBfZXdrX3ZpZXdfc21hcnRfbW91c2VfdXA7Cisg
ICAgYXBpLT5tb3VzZV9tb3ZlID0gX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmU7CisgICAgYXBp
LT5rZXlfZG93biA9IF9ld2tfdmlld19zbWFydF9rZXlfZG93bjsKKyAgICBhcGktPmtleV91cCA9
IF9ld2tfdmlld19zbWFydF9rZXlfdXA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGlubGluZSBFdmFzX1NtYXJ0KiBfZXdrX3ZpZXdfc21hcnRfY2xhc3NfbmV3KHZvaWQpCit7Cisg
ICAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIGFwaSA9IEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OKCJFd2tfVmlldyIpOworICAgIHN0YXRpYyBFdmFzX1NtYXJ0KiBz
bWFydCA9IDA7CisKKyAgICBpZiAoRUlOQV9VTkxJS0VMWSghc21hcnQpKSB7CisgICAgICAgIGV3
a192aWV3X3NtYXJ0X2NsYXNzX2luaXQoJmFwaSk7CisgICAgICAgIHNtYXJ0ID0gZXZhc19zbWFy
dF9jbGFzc19uZXcoJmFwaS5zYyk7CisgICAgfQorCisgICAgcmV0dXJuIHNtYXJ0OworfQorCitF
dmFzX09iamVjdCogZXdrX3ZpZXdfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBFdmFzX09iamVjdCog
ZXdrVmlldyA9IGV2YXNfb2JqZWN0X3NtYXJ0X2FkZChjYW52YXMsIF9ld2tfdmlld19zbWFydF9j
bGFzc19uZXcoKSk7CisgICAgaWYgKCFld2tWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAg
IEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworICAgIGlmICghc21hcnREYXRh
KSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChld2tWaWV3KTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKKyAgICBp
ZiAoIXByaXYpIHsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKGV3a1ZpZXcpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBzbWFydERh
dGEtPmltYWdlKTsKKworICAgIHJldHVybiBld2tWaWV3OworfQorCitXS1BhZ2VSZWYgZXdrX3Zp
ZXdfcGFnZV9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworCisgICAgcmV0dXJuIHRvQVBJKHByaXYt
PnBhZ2VDbGllbnQtPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODk1NmJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfdmlld19oCisjZGVmaW5lIGV3a192aWV3
X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0
IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7Cit0eXBlZGVmIHN0cnVj
dCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CisKKy8vLyBFd2sg
dmlldydzIGNsYXNzLCB0byBiZSBvdmVycmlkZGVuIGJ5IHN1Yi1jbGFzc2VzLgorc3RydWN0IF9F
d2tfVmlld19TbWFydF9DbGFzcyB7CisgICAgRXZhc19TbWFydF9DbGFzcyBzYzsgLyoqPCBhbGwg
YnV0ICdkYXRhJyBpcyBmcmVlIHRvIGJlIGNoYW5nZWQuICovCisgICAgdW5zaWduZWQgbG9uZyB2
ZXJzaW9uOworCisgICAgLy8gZXZlbnQgaGFuZGxpbmc6CisgICAgLy8gIC0gcmV0dXJucyB0cnVl
IGlmIGhhbmRsZWQKKyAgICAvLyAgLSBpZiBvdmVycmlkZGVuLCBoYXZlIHRvIGNhbGwgcGFyZW50
IG1ldGhvZCBpZiBkZXNpcmVkCisgICAgRWluYV9Cb29sICgqZm9jdXNfaW4pKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkKTsKKyAgICBFaW5hX0Jvb2wgKCpmb2N1c19vdXQpKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKTsKKyAgICBFaW5hX0Jvb2wgKCptb3VzZV93aGVlbCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgKmV2KTsKKyAgICBFaW5hX0Jv
b2wgKCptb3VzZV9kb3duKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duICpldik7CisgICAgRWluYV9Cb29sICgqbW91c2VfdXApKEV3a19WaWV3X1Nt
YXJ0X0RhdGEgKnNkLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwICpldik7CisgICAgRWluYV9C
b29sICgqbW91c2VfbW92ZSkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfTW92ZSAqZXYpOworICAgIEVpbmFfQm9vbCAoKmtleV9kb3duKShFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgY29uc3QgRXZhc19FdmVudF9LZXlfRG93biAqZXYpOworICAgIEVpbmFf
Qm9vbCAoKmtleV91cCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwICpldik7Cit9OworCisvKioKKyAqIFRoZSB2ZXJzaW9uIHlvdSBoYXZlIHRvIHB1dCBp
bnRvIHRoZSB2ZXJzaW9uIGZpZWxkCisgKiBpbiB0aGUgQGEgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mg
c3RydWN0dXJlLgorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX1ZFUlNJT04gMVVM
CisKKy8qKgorICogSW5pdGlhbGl6ZXIgZm9yIHdob2xlIEV3a19WaWV3X1NtYXJ0X0NsYXNzIHN0
cnVjdHVyZS4KKyAqCisgKiBAcGFyYW0gc21hcnRfY2xhc3NfaW5pdCBpbml0aWFsaXplciB0byB1
c2UgZm9yIHRoZSAiYmFzZSIgZmllbGQKKyAqIChFdmFzX1NtYXJ0X0NsYXNzKS4KKyAqCisgKiBA
c2VlIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTAorICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9O
QU1FX1ZFUlNJT04KKyAqLworI2RlZmluZSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUKHNtYXJ0
X2NsYXNzX2luaXQpIHtzbWFydF9jbGFzc19pbml0LCBFV0tfVklFV19TTUFSVF9DTEFTU19WRVJT
SU9OLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwfQorCisvKioKKyAqIEluaXRpYWxpemVyIHRvIHpl
cm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUuCisgKgorICogQHNlZSBF
V0tfVklFV19TTUFSVF9DTEFTU19JTklUX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRf
Q0xBU1NfSU5JVF9OQU1FX1ZFUlNJT04KKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5J
VAorICovCisjZGVmaW5lIEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTCBFV0tfVklFV19T
TUFSVF9DTEFTU19JTklUKEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMKQorCisvKioKKyAqIElu
aXRpYWxpemVyIHRvIHplcm8gYSB3aG9sZSBFd2tfVmlld19TbWFydF9DbGFzcyBzdHJ1Y3R1cmUg
YW5kIHNldAorICogbmFtZSBhbmQgdmVyc2lvbi4KKyAqCisgKiBTaW1pbGFyIHRvIEVXS19WSUVX
X1NNQVJUX0NMQVNTX0lOSVRfTlVMTCwgYnV0IHdpbGwgc2V0IHZlcnNpb24gZmllbGQgb2YKKyAq
IEV2YXNfU21hcnRfQ2xhc3MgKGJhc2UgZmllbGQpIHRvIGxhdGVzdCBFVkFTX1NNQVJUX0NMQVNT
X1ZFUlNJT04gYW5kIG5hbWUKKyAqIHRvIHRoZSBzcGVjaWZpYyB2YWx1ZS4KKyAqCisgKiBJdCB3
aWxsIGtlZXAgYSByZWZlcmVuY2UgdG8gbmFtZSBmaWVsZCBhcyBhICJjb25zdCBjaGFyICoiLCB0
aGF0IGlzLAorICogbmFtZSBtdXN0IGJlIGF2YWlsYWJsZSB3aGlsZSB0aGUgc3RydWN0dXJlIGlz
IHVzZWQgKGhpbnQ6IHN0YXRpYyBvciBnbG9iYWwhKQorICogYW5kIHdpbGwgbm90IGJlIG1vZGlm
aWVkLgorICoKKyAqIEBzZWUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMCisgKiBAc2Vl
IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfVkVSU0lPTgorICogQHNlZSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUCisgKi8KKyNkZWZpbmUgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OQU1F
X1ZFUlNJT04obmFtZSkgRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVChFVkFTX1NNQVJUX0NMQVNT
X0lOSVRfTkFNRV9WRVJTSU9OKG5hbWUpKQorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhIEV3a19WaWV3X1ByaXZhdGVfRGF0YTsKKy8qKgorICogQGJyaWVmIENvbnRhaW5z
IGFuIGludGVybmFsIFZpZXcgZGF0YS4KKyAqCisgKiBJdCBpcyB0byBiZSBjb25zaWRlcmVkIHBy
aXZhdGUgYnkgdXNlcnMsIGJ1dCBtYXkgYmUgZXh0ZW5kZWQgb3IKKyAqIGNoYW5nZWQgYnkgc3Vi
LWNsYXNzZXMgKHRoYXQncyB3aHkgaXQncyBpbiBwdWJsaWMgaGVhZGVyIGZpbGUpLgorICovCitz
dHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgeworICAgIEV2YXNfT2JqZWN0X1NtYXJ0X0NsaXBw
ZWRfRGF0YSBiYXNlOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGk7IC8qKjwg
cmVmZXJlbmNlIHRvIGNhc3RlZCBjbGFzcyBpbnN0YW5jZSAqLworICAgIEV2YXNfT2JqZWN0KiBz
ZWxmOyAvKio8IHJlZmVyZW5jZSB0byBvd25lciBvYmplY3QgKi8KKyAgICBFdmFzX09iamVjdCog
aW1hZ2U7IC8qKjwgcmVmZXJlbmNlIHRvIGV2YXNfb2JqZWN0X2ltYWdlIGZvciBkcmF3aW5nIHdl
YiBjb250ZW50cyAqLworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdjsgLyoqPCBzaG91
bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGMrKyBzdHVmZiAqLworICAgIHN0cnVjdCB7CisgICAgICAg
IEV2YXNfQ29vcmQgeCwgeSwgdywgaDsgLyoqPCBsYXN0IHVzZWQgdmlld3BvcnQgKi8KKyAgICB9
IHZpZXc7CisgICAgc3RydWN0IHsgLyoqPCB3aGF0IGNoYW5nZWQgc2luY2UgbGFzdCBzbWFydF9j
YWxjdWxhdGUgKi8KKyAgICAgICAgRWluYV9Cb29sIGFueToxOworICAgICAgICBFaW5hX0Jvb2wg
c2l6ZToxOworICAgICAgICBFaW5hX0Jvb2wgcG9zaXRpb246MTsKKyAgICB9IGNoYW5nZWQ7Cit9
OworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgRUZMIFdlYktpdCBWaWV3IG9iamVjdC4KKyAqCisg
KiBAcGFyYW0gZSBjYW52YXMgb2JqZWN0IHdoZXJlIHRvIGNyZWF0ZSB0aGUgdmlldyBvYmplY3QK
KyAqIEBwYXJhbSBjb250ZXh0IFdLQ29udGV4dCdzIFJlZmVyZW5jZSBwb2ludGVyCisgKiBAcGFy
YW0gcGFnZV9ncm91cCBXS1BhZ2VHcm91cCdzIFJlZmVyZW5jZSBwb2ludGVyCisgKgorICogQHJl
dHVybiB2aWV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIEBjIDAgb24gZmFpbHVyZQorICovCitFQVBJ
IEV2YXNfT2JqZWN0KiBld2tfdmlld19hZGQoRXZhcyogZSwgV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VfZ3JvdXApOworCisvKioKKyAqIEdldHMgdGhlIFdLUGFnZVJl
ZiBvZiB0aGlzIHZpZXcuCisgKgorICogQHBhcmFtIG8gdGhlIHZpZXcgb2JqZWN0IHRvIGdldCB0
aGUgV0tQYWdlUmVmCisgKgorICogQHJldHVybiB0aGUgV0tQYWdlUmVmIG9mIHRoaXMgdmlldwor
ICovCitFQVBJIFdLUGFnZVJlZiBld2tfdmlld19wYWdlX2dldChFdmFzX09iamVjdCogbyk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX3ZpZXdfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>