<?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>73544</bug_id>
          
          <creation_ts>2011-12-01 02:48:27 -0800</creation_ts>
          <short_desc>[EFL] Support for Web Notification.</short_desc>
          <delta_ts>2017-03-11 10:40:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90542</dependson>
    
    <dependson>90603</dependson>
    
    <dependson>90650</dependson>
    
    <dependson>95925</dependson>
          <blocked>88291</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kihong Kwon">kihong.kwon</reporter>
          <assigned_to name="Kihong Kwon">kihong.kwon</assigned_to>
          <cc>cdumez</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>s.choi</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512657</commentid>
    <comment_count>0</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-01 02:48:27 -0800</bug_when>
    <thetext>Add efl port implementation for the web notification.
This is already added to QT and Chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512664</commentid>
    <comment_count>1</comment_count>
      <attachid>117390</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-01 03:15:17 -0800</bug_when>
    <thetext>Created attachment 117390
Add patch files for notification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513336</commentid>
    <comment_count>2</comment_count>
      <attachid>117390</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-12-01 17:41:09 -0800</bug_when>
    <thetext>Comment on attachment 117390
Add patch files for notification

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

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:81
&gt; +void NotificationPresenterClientEfl::makePermissionCache(char** domains, int size)

Can we pass Vector&lt;String&gt; instead of domains and size ?

&gt; Source/WebKit/efl/ewk/ewk_private.h:238
&gt; +void ewk_view_notification_request_permission(Evas_Object* ewkView, const char* domain);

permission_request?

&gt; Source/WebKit/efl/ewk/ewk_view.h:2329
&gt; +/**
&gt; + * Make a cacheList for permitted domains
&gt; + * This function is called when initializing a browser application.
&gt; + *
&gt; + * @param ewkView view to receive message from browser
&gt; + * @param Ewk_Notification notification pointer for receive display event
&gt; + *
&gt; + */
&gt; +EAPI void ewk_view_notification_add_permitted_domains(const Evas_Object* ewkView, char** domains, int size);

It doesn&apos;t looks EFL style.
we decide not to change o to ewkView in public header.

And IMO, We&apos;d better to use Eina_List instead of char** and size.

And also, please check doxygen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513404</commentid>
    <comment_count>3</comment_count>
      <attachid>117390</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-01 19:32:52 -0800</bug_when>
    <thetext>Comment on attachment 117390
Add patch files for notification

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

&gt; ChangeLog:6
&gt; +        This is a implementation about web notification for efl

%s/a/an/g.

&gt; ChangeLog:8
&gt; +        * Source/cmake/OptionsEfl.cmake: elable ENABLE_NOTIFICATIONS feture

%s/elable/Enable/g

In addition, I think you need to make a test case for this feature.

&gt; Source/WebKit/efl/ewk/ewk_private.h:234
&gt; +WebCore::NotificationPresenter* ewk_view_notification_presenter_get(const Evas_Object *o);

Do not use abbreviation in internal function.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:139
&gt; +    WebCore::NotificationPresenter *notificationPresenter;

Move &apos;*&apos; to Data type.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3937
&gt; +#if ENABLE(NOTIFICATIONS)

Move ENABLE(NOTIFICATION) macro into function.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3938
&gt; +WebCore::NotificationPresenter* ewk_view_notification_presenter_get(const Evas_Object* o)

Do not use abbreviation in internal function. Change o with ewkView.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3946
&gt; +{

You should use ENABLE(NOTIFICATION) macro for implementation of public APIs.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3984
&gt; +    // START TEMP

What does mean ?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3986
&gt; +    // END TEMP

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3996
&gt; +void ewk_view_notification_clicked(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)

Do not use &apos;_&apos; in parameter variable.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4003
&gt; +void ewk_view_notification_closed(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4010
&gt; +void ewk_view_notification_error(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:341
&gt; +/* #if ENABLE(NOTIFICATIONS) */

Remove this comment.

&gt; Source/WebKit/efl/ewk/ewk_view.h:351
&gt; +/* #endif */

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2310
&gt; +/* #if ENABLE(NOTIFICATIONS) */

Remove this comment.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2319
&gt; +EAPI void ewk_view_notification_permission_callback(const Evas_Object* ewkView, Eina_Bool permitted, const char* domain);

Use abbreviation instead of full name

&gt; Source/WebKit/efl/ewk/ewk_view.h:2338
&gt; +EAPI void ewk_view_notification_displayed(const Evas_Object* ewkView, const Ewk_Notification*);

We should use abbreviation in public header files. 

See also EFL WebKit Coding Style document.
http://trac.webkit.org/wiki/EFLWebKitCodingStyle

&gt; Source/WebKit/efl/ewk/ewk_view.h:2347
&gt; +EAPI void ewk_view_notification_clicked(const Evas_Object* ewkView, const Ewk_Notification*);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2356
&gt; +EAPI void ewk_view_notification_closed(const Evas_Object* ewkView, const Ewk_Notification*);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2366
&gt; +/* #endif */

Remove this comment.

&gt; Tools/ChangeLog:6
&gt; +        This is a implementation about web notification for efl

%s/a/an/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513481</commentid>
    <comment_count>4</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-01 22:11:58 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 117390 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117390&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:81
&gt; &gt; +void NotificationPresenterClientEfl::makePermissionCache(char** domains, int size)
&gt; 
&gt; Can we pass Vector&lt;String&gt; instead of domains and size ?
&gt; 

If I change from char** to Vector&lt;String&gt;, I have to make a Vector&lt;String&gt; for domain lists before call this method and change to HashSet&lt;String&gt; from Vector&lt;String&gt;in this method.

I think this is not good for efficiency.

&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:238
&gt; &gt; +void ewk_view_notification_request_permission(Evas_Object* ewkView, const char* domain);
&gt; 
&gt; permission_request?
&gt;

I don&apos;t think so, because this function is a bridge to WebCore::NotificationPresenter::requestPermission()
So, I think request_permission is better for consistency
 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2329
&gt; &gt; +/**
&gt; &gt; + * Make a cacheList for permitted domains
&gt; &gt; + * This function is called when initializing a browser application.
&gt; &gt; + *
&gt; &gt; + * @param ewkView view to receive message from browser
&gt; &gt; + * @param Ewk_Notification notification pointer for receive display event
&gt; &gt; + *
&gt; &gt; + */
&gt; &gt; +EAPI void ewk_view_notification_add_permitted_domains(const Evas_Object* ewkView, char** domains, int size);
&gt; 
&gt; It doesn&apos;t looks EFL style.
&gt; we decide not to change o to ewkView in public header.

OK.

&gt; 
&gt; And IMO, We&apos;d better to use Eina_List instead of char** and size.
&gt; 

Is there any benefit? or have I to use Eina_List for char**?

&gt; And also, please check doxygen.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518203</commentid>
    <comment_count>5</comment_count>
      <attachid>118556</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-09 03:18:57 -0800</bug_when>
    <thetext>Created attachment 118556
Add fixed patch for comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518204</commentid>
    <comment_count>6</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-09 03:20:21 -0800</bug_when>
    <thetext>Fix all of your comment

(In reply to comment #3)
&gt; (From update of attachment 117390 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117390&amp;action=review
&gt; 
&gt; &gt; ChangeLog:6
&gt; &gt; +        This is a implementation about web notification for efl
&gt; 
&gt; %s/a/an/g.
&gt; 
&gt; &gt; ChangeLog:8
&gt; &gt; +        * Source/cmake/OptionsEfl.cmake: elable ENABLE_NOTIFICATIONS feture
&gt; 
&gt; %s/elable/Enable/g
&gt; 
&gt; In addition, I think you need to make a test case for this feature.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:234
&gt; &gt; +WebCore::NotificationPresenter* ewk_view_notification_presenter_get(const Evas_Object *o);
&gt; 
&gt; Do not use abbreviation in internal function.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:139
&gt; &gt; +    WebCore::NotificationPresenter *notificationPresenter;
&gt; 
&gt; Move &apos;*&apos; to Data type.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3937
&gt; &gt; +#if ENABLE(NOTIFICATIONS)
&gt; 
&gt; Move ENABLE(NOTIFICATION) macro into function.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3938
&gt; &gt; +WebCore::NotificationPresenter* ewk_view_notification_presenter_get(const Evas_Object* o)
&gt; 
&gt; Do not use abbreviation in internal function. Change o with ewkView.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3946
&gt; &gt; +{
&gt; 
&gt; You should use ENABLE(NOTIFICATION) macro for implementation of public APIs.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3984
&gt; &gt; +    // START TEMP
&gt; 
&gt; What does mean ?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3986
&gt; &gt; +    // END TEMP
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:3996
&gt; &gt; +void ewk_view_notification_clicked(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)
&gt; 
&gt; Do not use &apos;_&apos; in parameter variable.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:4003
&gt; &gt; +void ewk_view_notification_closed(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:4010
&gt; &gt; +void ewk_view_notification_error(const Evas_Object* ewkView, const Ewk_Notification* ewk_notification)
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:341
&gt; &gt; +/* #if ENABLE(NOTIFICATIONS) */
&gt; 
&gt; Remove this comment.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:351
&gt; &gt; +/* #endif */
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2310
&gt; &gt; +/* #if ENABLE(NOTIFICATIONS) */
&gt; 
&gt; Remove this comment.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2319
&gt; &gt; +EAPI void ewk_view_notification_permission_callback(const Evas_Object* ewkView, Eina_Bool permitted, const char* domain);
&gt; 
&gt; Use abbreviation instead of full name
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2338
&gt; &gt; +EAPI void ewk_view_notification_displayed(const Evas_Object* ewkView, const Ewk_Notification*);
&gt; 
&gt; We should use abbreviation in public header files. 
&gt; 
&gt; See also EFL WebKit Coding Style document.
&gt; http://trac.webkit.org/wiki/EFLWebKitCodingStyle
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2347
&gt; &gt; +EAPI void ewk_view_notification_clicked(const Evas_Object* ewkView, const Ewk_Notification*);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2356
&gt; &gt; +EAPI void ewk_view_notification_closed(const Evas_Object* ewkView, const Ewk_Notification*);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:2366
&gt; &gt; +/* #endif */
&gt; 
&gt; Remove this comment.
&gt; 
&gt; &gt; Tools/ChangeLog:6
&gt; &gt; +        This is a implementation about web notification for efl
&gt; 
&gt; %s/a/an/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518772</commentid>
    <comment_count>7</comment_count>
      <attachid>118556</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-10 01:34:56 -0800</bug_when>
    <thetext>Comment on attachment 118556
Add fixed patch for comments

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

&gt; Source/WebKit/efl/ChangeLog:8
&gt; +        This is a implementation about web notification for efl

s/a/an/g

&gt; Source/WebKit/efl/ewk/ewk_view.h:2298
&gt; +EAPI void ewk_view_notification_permission_callback(const Evas_Object *o, Eina_Bool permitted, const char* domain);

I don&apos;t like to implement new independent feature to ewk_view. I think it is better to add new files (e.g ewk_notification.cpp | h) for this feature. I think you can move ewk_view_notificaiton_xxx functions to ewk_notification.cpp by using Ewk_Notification struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519027</commentid>
    <comment_count>8</comment_count>
      <attachid>118735</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-11 23:01:40 -0800</bug_when>
    <thetext>Created attachment 118735
Separate functions for the notification from ewk_view to ewk_notification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519029</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-11 23:03:54 -0800</bug_when>
    <thetext>Attachment 118735 did not pass style-queue:

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

Source/WebKit/efl/ewk/ewk_notification.h:23:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/efl/ewk/ewk_notification.h:24:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/efl/ewk/ewk_notification.h:25:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/efl/ewk/ewk_notification.h:26:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/efl/ewk/ewk_notification.h:31:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/efl/ewk/ewk_notification.cpp:26:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 7 in 13 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>519034</commentid>
    <comment_count>10</comment_count>
      <attachid>118738</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-11 23:13:48 -0800</bug_when>
    <thetext>Created attachment 118738
Separate functions for the notification from ewk_view to ewk_notification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519977</commentid>
    <comment_count>11</comment_count>
      <attachid>118738</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-13 02:32:51 -0800</bug_when>
    <thetext>Comment on attachment 118738
Separate functions for the notification from ewk_view to ewk_notification

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

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:81
&gt; +void ewk_notification_show(Evas_Object* ewkView, WebCore::Notification* notification)

If ewk_notificaiton.cpp only uses ewkView object for sending signal, it looks there are no problems. However, if we need to expand new attribute in future, I think we need to make smart data for ewk_notification.cpp. Then, we can bind it with ewkView object as Ewk_Frame_Smart_Data.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:43
&gt; + * Callback call after user approve display a notification.

approve -&gt; approves ?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:64
&gt; + * Make a ondisplay callback call for JavaScript after notification is displayed

%s/a/an/g

&gt; Source/WebKit/efl/ewk/ewk_notification.h:73
&gt; + * Make a onclick callback call for JavaScript after notification is clicked

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:82
&gt; + * Make a onclose callback call for JavaScript after notification is closed

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:99
&gt; +WebCore::NotificationPresenter* ewk_notification_presenter_get(const Evas_Object* ewkView);

This is internal function, right? We should not open internal function to outer.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:100
&gt; +void ewk_notification_show(Evas_Object* ewkView, WebCore::Notification* notification);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:101
&gt; +void ewk_notification_html_show(Evas_Object* ewkView, WebCore::Notification* notification);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:102
&gt; +void ewk_notification_cancel(Evas_Object* ewkView, WebCore::Notification* notification);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:103
&gt; +void ewk_notification_request_permission(Evas_Object* ewkView, const char* domain);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519980</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-13 02:34:00 -0800</bug_when>
    <thetext>CC&apos;ing Kubo, Grzegorz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520719</commentid>
    <comment_count>13</comment_count>
      <attachid>119165</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-13 23:23:15 -0800</bug_when>
    <thetext>Created attachment 119165
It&apos;s fixed about commented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520766</commentid>
    <comment_count>14</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-12-14 00:56:55 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=119165&amp;action=review

&gt; ChangeLog:3
&gt; +        [EFL] Add Web Notification feature for Efl port

I&apos;d rather mention that API is added in this patch and please add dot:
[EFL] Add API for Web Notification feature.

&gt; ChangeLog:6
&gt; +        This is an implementation about web notification for efl

Missing dot.

&gt; Source/WebKit/efl/ChangeLog:3
&gt; +        [EFL] Add Web Notification feature for Efl port

Please change subject as I mentioned above.

&gt; Source/WebKit/efl/ChangeLog:8
&gt; +        This is an implementation about web notification for efl

Missing dot.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:49
&gt; +

In my opinion this an empty line is not necessary.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:87
&gt; +        m_cachedPermissions.add(domain);

What do you say about adding this without assign it to the String variable?
m_cachedPermissions.add(String(domains[i]));
If you agree with this suggestion, please remove unnecessary {} in for.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:94
&gt; +

Unnecessary an empty line.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:95
&gt; +    m_cachedPermissions.add(permittedDomain);

m_cachedPermissions.add(String(domain));

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:53
&gt; +    Evas_Object* m_view;

I would rather change an order here. Please define members of class first then methods.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:101
&gt; +

Unnecessary an empty line.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:108
&gt; +

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:19
&gt; +

Please add doxygen section here:
/**
 * @file ....
 * @brief ...
 *
 * Detailed description.
 */

&gt; Source/WebKit/efl/ewk/ewk_notification.h:32
&gt; +typedef struct _Ewk_Notification Ewk_Notification;

Generally WebKit-Efl documents typedefs too.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:35
&gt; +    void* notification;

Please describe these struct members.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:43
&gt; + * Call a callback fucntion which is resisterd, after receiving a user approval.

Call -&gt; Calls
resisterd -&gt; registered

&gt; Source/WebKit/efl/ewk/ewk_notification.h:45
&gt; + * @param ewkView view to receive message from browser

@param ewkView view to call registered function

&gt; Source/WebKit/efl/ewk/ewk_notification.h:46
&gt; + * @param permitted whether permit a notificaion or not by user

* @param permitted @c EINA_TRUE to allow (what? notificaion or callbakc), @c EINA_FALSE to ...

&gt; Source/WebKit/efl/ewk/ewk_notification.h:53
&gt; + * Make a cacheList for permitted domains

Make -&gt; Makes
Please do not use variable names here.
Missing dot.
Please add en empty line here to signal detailed description.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:54
&gt; + * This function is called when initializing a browser application.

This comment confuses developer. As I understand your intention  this API should be called if application wants to has some benefits of it.
And please do not user &quot;browser&quot; in comments. Many applications use WebKit not only browser.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:56
&gt; + * @param ewkView view to receive message from browser

to receive message from browser -&gt; to add permitted domains

&gt; Source/WebKit/efl/ewk/ewk_notification.h:57
&gt; + * @param domains domain list which is added to permission cache list

* @param domains domain list which is added - please describe what benefits are from adding these (notification?)

&gt; Source/WebKit/efl/ewk/ewk_notification.h:64
&gt; + * Make an ondisplay callback call for JavaScript after notification is displayed

Calls ondisplay callback ... ?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:66
&gt; + * @param ewkView view to receive message from browser

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:72
&gt; +/**

This section should be changed regarding to the previous comments.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:81
&gt; +/**

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:90
&gt; +/**

Ditto.

&gt; Tools/ChangeLog:3
&gt; +        [EFL] Add Web Notification feature for Efl port

Please change a subject.

&gt; Tools/ChangeLog:6
&gt; +        This is an implementation about web notification for efl

Missing dot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520821</commentid>
    <comment_count>15</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-14 03:12:58 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:53
&gt; &gt; +    Evas_Object* m_view;

&gt;I would rather change an order here. Please define members of class first then methods.

Could you show me a example please?
I can&apos;t find private member function from WebCoreSupport but 
I think members are first then methods in the WebCore.
Please see a DOMWindow.h.

How do you think about this?


(In reply to comment #14)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119165&amp;action=review
&gt; 
&gt; &gt; ChangeLog:3
&gt; &gt; +        [EFL] Add Web Notification feature for Efl port
&gt; 
&gt; I&apos;d rather mention that API is added in this patch and please add dot:
&gt; [EFL] Add API for Web Notification feature.
&gt; 
&gt; &gt; ChangeLog:6
&gt; &gt; +        This is an implementation about web notification for efl
&gt; 
&gt; Missing dot.
&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:3
&gt; &gt; +        [EFL] Add Web Notification feature for Efl port
&gt; 
&gt; Please change subject as I mentioned above.
&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:8
&gt; &gt; +        This is an implementation about web notification for efl
&gt; 
&gt; Missing dot.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:49
&gt; &gt; +
&gt; 
&gt; In my opinion this an empty line is not necessary.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:87
&gt; &gt; +        m_cachedPermissions.add(domain);
&gt; 
&gt; What do you say about adding this without assign it to the String variable?
&gt; m_cachedPermissions.add(String(domains[i]));
&gt; If you agree with this suggestion, please remove unnecessary {} in for.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:94
&gt; &gt; +
&gt; 
&gt; Unnecessary an empty line.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:95
&gt; &gt; +    m_cachedPermissions.add(permittedDomain);
&gt; 
&gt; m_cachedPermissions.add(String(domain));
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:53
&gt; &gt; +    Evas_Object* m_view;
&gt; 
&gt; I would rather change an order here. Please define members of class first then methods.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:101
&gt; &gt; +
&gt; 
&gt; Unnecessary an empty line.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:108
&gt; &gt; +
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:19
&gt; &gt; +
&gt; 
&gt; Please add doxygen section here:
&gt; /**
&gt;  * @file ....
&gt;  * @brief ...
&gt;  *
&gt;  * Detailed description.
&gt;  */
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:32
&gt; &gt; +typedef struct _Ewk_Notification Ewk_Notification;
&gt; 
&gt; Generally WebKit-Efl documents typedefs too.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:35
&gt; &gt; +    void* notification;
&gt; 
&gt; Please describe these struct members.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:43
&gt; &gt; + * Call a callback fucntion which is resisterd, after receiving a user approval.
&gt; 
&gt; Call -&gt; Calls
&gt; resisterd -&gt; registered
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:45
&gt; &gt; + * @param ewkView view to receive message from browser
&gt; 
&gt; @param ewkView view to call registered function
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:46
&gt; &gt; + * @param permitted whether permit a notificaion or not by user
&gt; 
&gt; * @param permitted @c EINA_TRUE to allow (what? notificaion or callbakc), @c EINA_FALSE to ...
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:53
&gt; &gt; + * Make a cacheList for permitted domains
&gt; 
&gt; Make -&gt; Makes
&gt; Please do not use variable names here.
&gt; Missing dot.
&gt; Please add en empty line here to signal detailed description.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:54
&gt; &gt; + * This function is called when initializing a browser application.
&gt; 
&gt; This comment confuses developer. As I understand your intention  this API should be called if application wants to has some benefits of it.
&gt; And please do not user &quot;browser&quot; in comments. Many applications use WebKit not only browser.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:56
&gt; &gt; + * @param ewkView view to receive message from browser
&gt; 
&gt; to receive message from browser -&gt; to add permitted domains
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:57
&gt; &gt; + * @param domains domain list which is added to permission cache list
&gt; 
&gt; * @param domains domain list which is added - please describe what benefits are from adding these (notification?)
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:64
&gt; &gt; + * Make an ondisplay callback call for JavaScript after notification is displayed
&gt; 
&gt; Calls ondisplay callback ... ?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:66
&gt; &gt; + * @param ewkView view to receive message from browser
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:72
&gt; &gt; +/**
&gt; 
&gt; This section should be changed regarding to the previous comments.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:81
&gt; &gt; +/**
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:90
&gt; &gt; +/**
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        [EFL] Add Web Notification feature for Efl port
&gt; 
&gt; Please change a subject.
&gt; 
&gt; &gt; Tools/ChangeLog:6
&gt; &gt; +        This is an implementation about web notification for efl
&gt; 
&gt; Missing dot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520826</commentid>
    <comment_count>16</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-12-14 03:30:44 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:53
&gt; &gt; &gt; +    Evas_Object* m_view;
&gt; 
&gt; &gt;I would rather change an order here. Please define members of class first then methods.
&gt; 
&gt; Could you show me a example please?
&gt; I can&apos;t find private member function from WebCoreSupport but 
&gt; I think members are first then methods in the WebCore.
&gt; Please see a DOMWindow.h.
&gt; 
&gt; How do you think about this?
&gt; 

In private section you&apos;ve defined sendEvent(...) method first and then variables.
I&apos;d rather reverse them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520829</commentid>
    <comment_count>17</comment_count>
      <attachid>119191</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-14 03:40:37 -0800</bug_when>
    <thetext>Created attachment 119191
Fixed for comment #14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521733</commentid>
    <comment_count>18</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-12-15 01:09:18 -0800</bug_when>
    <thetext>Thanks for your changes Kihong.
I did a review again and some fixes are still needed especially in doxygen comments. Please see other ewk API documentation and try to adjust your comments.
Please consider changing API name. I suggest you to notify this API by WebKit-EFL list.


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

&gt; ChangeLog:6
&gt; +        This is an implementation about web notification for efl.

I would rather remove this general description from here and add what you really change. For example:
Enables Web Notification feature for WebKit-Efl.

&gt; ChangeLog:8
&gt; +        * Source/cmake/OptionsEfl.cmake: Enable ENABLE_NOTIFICATIONS feture

1) If you agree with my previous comment this an additional description isn&apos;t necessary.
2) I don&apos;t see your modifications in Source/cmake/OptionsEfl.cmake but in Source/WebKit/efl/CMakeListsEfl.txt. Please verify ChangeLog.

&gt; Source/WebKit/efl/ChangeLog:8
&gt; +        This is an implementation about web notification for efl.

This description needs changes, what do you say about this?
Implements Web Notification feature and exposes API for WebKit-EFl.
This an implementation is based on webkitNotificaion property in window.navigator.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:77
&gt; +        return PermissionDenied;

This value is also returned in previous condition. Please consider to merger them into one, for example

if (!m_cachedPermissions.size()
    || m_cachedPermissions.find(context-&gt;securityOrigin()-&gt;toString()) == m_cachedPermissions.end())
    return PermissionDenied;

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:62
&gt; +    if (!permit)

I would rather reverse logic and call callback if permit is true.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:22
&gt; + * @brief APIs for the web notification of WebKit-EFL

Please describe all signals which are emitted by this API, for example notification,contents,show, notification,contents,htmlshow etc.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:39
&gt; + */

/// Creates a type name for @c _Ewk_Notification.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:41
&gt; +

/// Contains Web Notification data.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:43
&gt; +    void* notification;

Should user have access to this member? In my opinion it should be moved to an implementation file.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:44
&gt; +    char* iconURL;

Please describe this variable because it&apos;s accessible from API.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:45
&gt; +    char* title;

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:46
&gt; +    char* body;

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:47
&gt; +    char* url;

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:51
&gt; + * Calls a callback fucntion which is registerd, after receiving a user approval.

It would be nice to describe what the function does for caller.
Please describe what benefits are when this callback is called.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:53
&gt; + * @param ewkView view to call registered function

This comment rather notify caller that he should register function. But it registered by WebCore. Am I right?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:54
&gt; + * @param permitted @c EINA_TRUE to allow to show notificaion, @c EINA_FALSE to not allow to show notificaiton.

1) notificaion -&gt; notification
2) notificaiton -&gt; notification

&gt; Source/WebKit/efl/ewk/ewk_notification.h:56
&gt; + *

Unnecessary an empty line.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:58
&gt; +EAPI void ewk_notification_permission_callback(const Evas_Object *o, Eina_Bool permitted, const char* domain);

This API name should be renamed, please use verb in API name, for example:
wk_notification_permission_callback -&gt; wk_notification_permission_callback_add ?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:61
&gt; + * Makes a Cache for permitted domains

Missing dot.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:63
&gt; + * This function can be called at initializing time if a application have permmited domains.

permmited -&gt; permitted

&gt; Source/WebKit/efl/ewk/ewk_notification.h:71
&gt; +EAPI void ewk_notification_add_permitted_domains(const Evas_Object *o, char** domains, int size);

ewk_notification_add_permitted_domains -&gt; ewk_notification_permitted_domains_add ?

&gt; Tools/ChangeLog:6
&gt; +        This is an implementation about web notification for efl.

I would rather remove this general description from here and add what you really change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522501</commentid>
    <comment_count>19</comment_count>
      <attachid>119559</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-15 21:19:19 -0800</bug_when>
    <thetext>Created attachment 119559
Fixed for comment #18

Thank you for your comment Grzegorz~:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527546</commentid>
    <comment_count>20</comment_count>
      <attachid>119559</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-27 20:40:32 -0800</bug_when>
    <thetext>Comment on attachment 119559
Fixed for comment #18

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

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:67
&gt; +        ewk_notification_request_permission(m_view, context-&gt;securityOrigin()-&gt;toString().utf8().data());

In GTK port, each file for independent feature has private data structure. The private structure has reference of webView.
webview interacts with independent feature via the private structure.

For example,

In ChromeClientGtk.cpp,

643 void ChromeClient::dispatchViewportPropertiesDidChange(const ViewportArguments&amp; arguments) const
644 {
645     // Recompute the viewport attributes making it valid.
646     webkitViewportAttributesRecompute(webkit_web_view_get_viewport_attributes(m_webView));
647 }

In webkitviewportattributes.cpp

519 void webkitViewportAttributesRecompute(WebKitViewportAttributes* viewportAttributes)
520 {
521     WebKitViewportAttributesPrivate* priv = viewportAttributes-&gt;priv;
522     WebKitWebView* webView = priv-&gt;webView;
523 
524     IntRect windowRect(webView-&gt;priv-&gt;corePage-&gt;chrome()-&gt;windowRect());
525     priv-&gt;deviceWidth = windowRect.width();
526     priv-&gt;deviceHeight = windowRect.height();
527     



In webkitviewportattributesprivate.h,

 30 struct _WebKitViewportAttributesPrivate {
 31     WebKitWebView* webView;
 32     int deviceWidth;
 33     int deviceHeight;
 34     int availableWidth;
 35     int availableHeight;
 36     int desktopWidth;
 37     int deviceDPI;
 38     
 39     int width;
 40     int height;
 41     float initialScaleFactor;
 42     float minimumScaleFactor;
 43     float maximumScaleFactor;
 44     float devicePixelRatio;
 45     gboolean userScalable;
 46     gboolean isValid;
 47 };

In webkitviewportattributes.cpp, it uses webView instance via private structure. I think EFL port also needs to have similar structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527616</commentid>
    <comment_count>21</comment_count>
      <attachid>120653</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-28 04:52:59 -0800</bug_when>
    <thetext>Created attachment 120653
Use Ewk_Notification structure for the ewk_notificaiton.h/cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529290</commentid>
    <comment_count>22</comment_count>
      <attachid>121052</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-03 20:50:45 -0800</bug_when>
    <thetext>Created attachment 121052
Add management routines for notification objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530901</commentid>
    <comment_count>23</comment_count>
      <attachid>121392</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-05 20:39:33 -0800</bug_when>
    <thetext>Created attachment 121392
Fix errors for the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530932</commentid>
    <comment_count>24</comment_count>
      <attachid>121398</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-05 22:19:00 -0800</bug_when>
    <thetext>Created attachment 121398
Add destroy notification objects for the ewk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530938</commentid>
    <comment_count>25</comment_count>
      <attachid>121398</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-05 22:43:28 -0800</bug_when>
    <thetext>Comment on attachment 121398
Add destroy notification objects for the ewk.

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

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:124
&gt; +    Ewk_Notification* notification = static_cast&lt;Ewk_Notification*&gt;(malloc(sizeof(Ewk_Notification)));

Please use new instead of malloc.

See : https://bugs.webkit.org/show_bug.cgi?id=73544

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:125
&gt; +    if (!notification)

new never return 0. Remove this.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:138
&gt; +    free(ewkNotification);

Use delete instead of free.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:144
&gt; +    Ewk_Notification_Info* notification_info = static_cast&lt;Ewk_Notification_Info*&gt;(malloc(sizeof(Ewk_Notification_Info)));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:146
&gt; +        return 0;

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:2
&gt; +    Copyright (C) 2011 Samsung Electronics

Change year.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:35
&gt; + *  - &quot;notification,show&quot;, @c Ewk_Notification_Info: requested contents to display the notification.

This signal is emitted by view. So, this comment needs to be moved to ewk_view.h

&gt; Source/WebKit/efl/ewk/ewk_private.h:234
&gt; +#if ENABLE(NOTIFICATIONS)

I think we can move this internal functions to ewk_notificaiton_private.h. Bug 75592 also try to add similar private header file. If the Bug&apos;s patch is landed, this patch also can has similar file.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3916
&gt; +WebCore::NotificationPresenter* ewk_view_notification_presenter_get(const Evas_Object* ewkView)

Can we move this function to ewk_notification?

We can get page object as below,
WebCore::Page* page = EWKPrivate::corePage(priv-&gt;ewkView);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530999</commentid>
    <comment_count>26</comment_count>
      <attachid>121414</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-06 02:20:35 -0800</bug_when>
    <thetext>Created attachment 121414
Fixed for the all of comments(#25)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531900</commentid>
    <comment_count>27</comment_count>
      <attachid>121414</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-01-08 18:00:02 -0800</bug_when>
    <thetext>Comment on attachment 121414
Fixed for the all of comments(#25)

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

This still needs *a lot* of love before getting into trunk.

Starting with the basics: there are more English mistakes than usual, the documentation is not helpful at all for some random API user who comes across this part of ewk for the first time, there are unused #includes in many files, EWebKit.h will break if ewk_notification.h is not installed, there are many typos and useless statements (eg. void foo(MyObject* ptr) { /* do something */ ptr = 0; }). If possible, I highly recommend doing some internal reviews to spot all these mistakes before sending the bug upstream, so at least some back-and-forth is avoided and reviewers can concentrate on the real issues.

Now for the real issues (many parts have been commented inline): this is over-engineered and the architecture is not very good.
 * Let&apos;s start with the distinction between Ewk_Notification and Ewk_Notification_Info:
   - The names chose are really unhelpful. According to the spec (and, to some extent, the API in WebCore), a Notification is a single notificaton shown to the user. Withing ewk, a Notification actually corresponds to an Ewk_Notification_Info, and Ewk_Notification is a poor man&apos;s controller.
   - Ewk_Notification does not really need to exist. Of its 3 attributes, ewk_view is not needed (just store the view in NotificationPresenterEfl&apos;s constructor), ewk_notification_info_list can be stored in the presenter itself (using a WTF data structure) and notification_presenter does not need to exist if you just point to it from an Ewk_Notification_Info. You can then rename Ewk_Notification_Info to Ewk_Notification and get rid of some of the unhelpful abstraction.
 * The queueing of callback calls seems flawed (a single callback is kept at a time).
 * &quot;ewk_notification_{displayed,clicked,closed,error}&quot; are bad names. The last one is not consistent with the rest, and a reader of the API cannot really tell what they do without looking at the code or the documentation (which is also very minimal). &quot;ewk_notification_notify_clicked&quot; etc (or something along those lines) is more helpful (I don&apos;t like ewk code calling code in WebCoreSupport, but it seems we can&apos;t avoid it this time).
 * The granularity of the object called in &quot;notification,show&quot; looks wrong.. A security origin is usually associated with a frame, not a view (a view can have many frames); thus emitting &quot;notification,show&quot; for a view loses some information in the process.
 * ewk_notification_permitted_domains_add looks like an ewk_frame function for the reason I mentioned above (in the worst case, an ewk_frame should be passed to this function).
Some of the analysis may be biased because I was looking at the Qt port&apos;s code while reviewing this patch, so other ways to approach these issues are welcome.

Last but not least: I don&apos;t know how much this patch has been tested in production code, but from the current looks of it, I would _really_ like the notification-related layout tests to pass (which means some small DRT code probably needs to be written) before this is landed. I&apos;m not 100% confident the current code does everything the spec says (for example, I don&apos;t see anything related to replaceId), so at least having the tests passing makes me not need to trust my gut feelings that much.

&gt; Source/WebKit/efl/CMakeListsEfl.txt:98
&gt; +IF (ENABLE_NOTIFICATIONS)
&gt; +    LIST(APPEND WebKit_INCLUDE_DIRECTORIES
&gt; +        &quot;${WEBCORE_DIR}/notifications&quot;
&gt; +    )
&gt; +    LIST(APPEND WebKit_SOURCES
&gt; +        efl/ewk/ewk_notification.cpp
&gt; +    )
&gt; +ENDIF ()

Why has the block been moved?

&gt; Source/WebKit/efl/CMakeListsEfl.txt:259
&gt; +    LIST(APPEND EWebKit_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/efl/ewk/ewk_notification_private.h)

A private header must not be installed.

&gt; Source/WebKit/efl/ChangeLog:57
&gt; +        * ewk/ewk_private.h:
&gt; +        * ewk/ewk_view.cpp:
&gt; +        (_ewk_view_priv_new):
&gt; +        * ewk/ewk_view.h:

At least the files which have been changed could have some description of what has been changed.

&gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:425
&gt;  #if ENABLE(NOTIFICATIONS)
&gt;  NotificationPresenter* ChromeClientEfl::notificationPresenter() const
&gt;  {
&gt; -    notImplemented();
&gt; -    return 0;
&gt; +    return ewk_notification_presenter_get(m_view);
&gt;  }

This has been removed from the parent class in r101307, so this method and ewk_notification_presenter_get can be removed altogether.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:50
&gt; +    if (notification-&gt;isHTML()) {
&gt; +        Ewk_Notification_Info* ewkNotificationInfo = ewk_notification_info_create(m_ewkNotification, notification);
&gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,htmlshow&quot;, ewkNotificationInfo);
&gt; +    } else {
&gt; +        Ewk_Notification_Info* ewkNotificationInfo = ewk_notification_info_create(m_ewkNotification, notification);
&gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,show&quot;, ewkNotificationInfo);
&gt; +    }

Why not have a boolean in the object which tells whether it is an HTML notification or not and then just emit a single type of signal?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:-54
&gt; -    notImplemented();

Why? This is still not implemented.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:74
&gt; +    if (m_cachedPermissions.find(context-&gt;securityOrigin()-&gt;toString()) == m_cachedPermissions.end()) {

I don&apos;t really see why the cached permissions are being searched (mostly because other ports don&apos;t do that).

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:75
&gt; +        m_callback = callback;

This method can be called many times and for multiple security origins. How do you handle that with a single variable?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:76
&gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,requestPermission&quot; \

Unneeded &quot;\&quot; at the end of the line.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:77
&gt; +            , (void*)context-&gt;securityOrigin()-&gt;toString().utf8().data());

The C-style cast is not needed, and we do not use C-style casts.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:27
&gt; +#include &lt;Ecore_Evas.h&gt;

Why?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:43
&gt; +    virtual void cancelRequestsForPermission(ScriptExecutionContext*) { }

Doesn&apos;t this need to be implemented?

&gt; Source/WebKit/efl/ewk/EWebKit.h:40
&gt; +#include &quot;ewk_notification.h&quot;

If ewk_notification.h is not installed, this will break the build for users.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:26
&gt; +#include &quot;ewk_logging.h&quot;

Unused.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:37
&gt; +    WebCore::NotificationPresenterClientEfl* notification_presenter;
&gt; +    Evas_Object* ewk_view;
&gt; +    Eina_List* ewk_notification_info_list;

Wrong naming style.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:41
&gt; +    Ewk_Notification* ewk_notification;

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:42
&gt; +    void* notification;

Why void?

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:47
&gt; +    unsigned __ref;

This is not used anywhere and the naming is weird.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:126
&gt; +Ewk_Notification* ewk_notification_create(WebCore::NotificationPresenter* notificationPresenter, Evas_Object* ewkView)
&gt; +{
&gt; +    Ewk_Notification* notification = new Ewk_Notification;
&gt; +    notification-&gt;notification_presenter = static_cast&lt;WebCore::NotificationPresenterClientEfl*&gt;(notificationPresenter);

Why all this casting if you are already passed a NotificationPresenterClientEfl? Just change the argument type in the function.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:133
&gt; +void ewk_notification_destroy(Ewk_Notification* ewkNotification)

What&apos;s the point of having this function if it just calls destroy_all? This all could be done directly in the presenter&apos;s destructor.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:137
&gt; +    ewkNotification = 0;

This has absolutely no effect.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:150
&gt; +    notification_info-&gt;iconURL = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().icon.string().utf8().data());
&gt; +    notification_info-&gt;title = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().title.utf8().data());
&gt; +    notification_info-&gt;body = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().body.utf8().data());
&gt; +    notification_info-&gt;htmlURL = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;url().string().utf8().data());

Why not use stringshares here?

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:167
&gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; +        free(ewkNotificationInfo-&gt;iconURL);
&gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; +        free(ewkNotificationInfo-&gt;title);
&gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; +        free(ewkNotificationInfo-&gt;body);
&gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; +        free(ewkNotificationInfo-&gt;htmlURL);

The checks here are calling free() only if the variables are already 0. Plus, the checks are not needed at all. free(0) is a NOP.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:172
&gt; +    ewkNotificationInfo = 0;

This line has no effect.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:175
&gt; +void ewk_notificaiton_destroy_all(Ewk_Notification* ewkNotification)

Typo: &quot;notificaiton&quot;

&gt; Source/WebKit/efl/ewk/ewk_notification.h:23
&gt; +#include &lt;Evas.h&gt;

What is the Evas.h include used for? EAPI, for one, is in Eina.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:34
&gt; + * The following signals (see evas_object_smart_callback_add()) are emitted:

If there is no signal being emitted, there is no point in having this line.

Plus, some reference to the HTML5 spec is useful so people know what a web notification is.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:44
&gt; + * Get iconURL for the notification from @c Ewk_Notification_Info.

&quot;iconURL&quot; is very implementation specific for a documentation entry. Please explain what it means and separate &quot;icon&quot; and &quot;URL&quot; (and in the &quot;@return&quot; line you use &quot;Icon URL&quot;, with spaces, different order and different casing.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:48
&gt; + * @return chacter pointer to the Icon URL of notification.

Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:49
&gt; + *

This empty line can be removed.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:58
&gt; + * @return chacter pointer to the title of notification.

Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:59
&gt; + *

This empty line can be removed.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:68
&gt; + * @return chacter pointer to the body contents of notification.

Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:69
&gt; + *

This empty line can be removed.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:74
&gt; + * Get html contents URL for the notification from @c Ewk_Notification_Info.

This is not mentioned in the w3c spec, so please explain what &quot;html contents URL&quot; means.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:78
&gt; + * @return chacter pointer to the html contents url of notification.

Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:79
&gt; + *

This empty line can be removed.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:84
&gt; + * Calls a callback fucntion which is registerd, after receiving a user approval.

Typo: &quot;fucntion&quot; and &quot;registerd&quot;. And it should be &quot;user&apos;s approval&quot;.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:90
&gt; +EAPI void ewk_notification_permission_callback_call(const Ewk_Notification_Info* eni, Eina_Bool permitted, const char* domain);

I don&apos;t see why this should be called by users. The callback must be called automatically when the user has responded to the permission request.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:93
&gt; + * Makes a Cache for permitted domains.

Why is &quot;Cache&quot; capitalized? What should it mean for the reader?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:95
&gt; + * This function can be called at initializing time if a application have permited domains.

Typo: &quot;permited&quot;. &quot;initializing&quot; should be &quot;initialization&quot;.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:96
&gt; + * WebCore checks a permission from the cache only when checkPermission() is called from javascript.

API users are not expected to know what &quot;WebCore&quot; means.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:102
&gt; +EAPI void ewk_notification_permitted_domains_add(const Ewk_Notification_Info* eni, char** domains, int size);

The description above contradicts the code&apos;s use: this is currently the only way to add permission for a given security origin and thus cannot be called &quot;at initializing time&quot;.

&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:43
&gt; +void ewk_notificaiton_destroy_all(Ewk_Notification* ewkNotification);

Typo: &quot;notificaiton&quot;

&gt; Source/WebKit/efl/ewk/ewk_private.h:-230
&gt; -

Unrelated change.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:71
&gt; +#include &quot;NotificationController.h&quot;

Is this include really needed?

&gt; Tools/ChangeLog:9
&gt; +        And add &quot;WebCore/notifications&quot; source path to build DumpRenderTree.

No need to say this here if you repeat it below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533578</commentid>
    <comment_count>28</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-10 19:28:09 -0800</bug_when>
    <thetext>Firstly Thank you for your comment. Kubo.

(In reply to comment #27)
&gt; (From update of attachment 121414 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121414&amp;action=review
&gt; 
&gt; This still needs *a lot* of love before getting into trunk.
&gt; 
&gt; Starting with the basics: there are more English mistakes than usual, the documentation is not helpful at all for some random API user who comes across this part of ewk for the first time, there are unused #includes in many files, EWebKit.h will break if ewk_notification.h is not installed, there are many typos and useless statements (eg. void foo(MyObject* ptr) { /* do something */ ptr = 0; }). If possible, I highly recommend doing some internal reviews to spot all these mistakes before sending the bug upstream, so at least some back-and-forth is avoided and reviewers can concentrate on the real issues.
&gt; 
&gt; Now for the real issues (many parts have been commented inline): this is over-engineered and the architecture is not very good.
&gt;  * Let&apos;s start with the distinction between Ewk_Notification and Ewk_Notification_Info:
&gt;    - The names chose are really unhelpful. According to the spec (and, to some extent, the API in WebCore), a Notification is a single notificaton shown to the user. Withing ewk, a Notification actually corresponds to an Ewk_Notification_Info, and Ewk_Notification is a poor man&apos;s controller.
&gt;    - Ewk_Notification does not really need to exist. Of its 3 attributes, ewk_view is not needed (just store the view in NotificationPresenterEfl&apos;s constructor), ewk_notification_info_list can be stored in the presenter itself (using a WTF data structure) and notification_presenter does not need to exist if you just point to it from an Ewk_Notification_Info. You can then rename Ewk_Notification_Info to Ewk_Notification and get rid of some of the unhelpful abstraction.

I agree, the name of structure is not clear, I&apos;ll merge Ewk_Notification and Ewk_Notification_Info, and I&apos;ll fix my code to your recommendation.

&gt;  * The queueing of callback calls seems flawed (a single callback is kept at a time).

I don&apos;t think queuing is needed for callback.
There is a queue in the EventTarget class.

&gt;  * &quot;ewk_notification_{displayed,clicked,closed,error}&quot; are bad names. The last one is not consistent with the rest, and a reader of the API cannot really tell what they do without looking at the code or the documentation (which is also very minimal). &quot;ewk_notification_notify_clicked&quot; etc (or something along those lines) is more helpful (I don&apos;t like ewk code calling code in WebCoreSupport, but it seems we can&apos;t avoid it this time).

You are right. I will fix like ewk_notification_onclose_event_send, I think these are quite clear.

&gt;  * The granularity of the object called in &quot;notification,show&quot; looks wrong.. A security origin is usually associated with a frame, not a view (a view can have many frames); thus emitting &quot;notification,show&quot; for a view loses some information in the process.

You are right, a security origin is associated with a frame.
But notification have to be showed over the browser or at least over the view, do not display on the frame.
So, I think view object for the smart_callback_call is not a problem.

&gt;  * ewk_notification_permitted_domains_add looks like an ewk_frame function for the reason I mentioned above (in the worst case, an ewk_frame should be passed to this function).
&gt; Some of the analysis may be biased because I was looking at the Qt port&apos;s code while reviewing this patch, so other ways to approach these issues are welcome.

I saw the Qt patch for EFL patch also. But, the permission for the notification is working based on the domain.
For instance, there are two frames in the page with same domain, after first frame get a permission for the domain, I think second frame&apos;s notifications have to be worked also.
That&apos;s why I didn&apos;t include frame info. to the ewk_notification_permitted_domains_add() function.

&gt; 
&gt; Last but not least: I don&apos;t know how much this patch has been tested in production code, but from the current looks of it, I would _really_ like the notification-related layout tests to pass (which means some small DRT code probably needs to be written) before this is landed. I&apos;m not 100% confident the current code does everything the spec says (for example, I don&apos;t see anything related to replaceId), so at least having the tests passing makes me not need to trust my gut feelings that much.

Add replaceId and dir, they were missed.

&gt; 
&gt; &gt; Source/WebKit/efl/CMakeListsEfl.txt:98
&gt; &gt; +IF (ENABLE_NOTIFICATIONS)
&gt; &gt; +    LIST(APPEND WebKit_INCLUDE_DIRECTORIES
&gt; &gt; +        &quot;${WEBCORE_DIR}/notifications&quot;
&gt; &gt; +    )
&gt; &gt; +    LIST(APPEND WebKit_SOURCES
&gt; &gt; +        efl/ewk/ewk_notification.cpp
&gt; &gt; +    )
&gt; &gt; +ENDIF ()
&gt; 
&gt; Why has the block been moved?

I want to add ewk_notification.cpp in the ENABLE_NOTIFICATIONS block.
But, I think It is not good that ewk_notification.cpp is placed before main block of &quot;LIST(APPEND WebKit_SOURCES..&quot;.

&gt; 
&gt; &gt; Source/WebKit/efl/CMakeListsEfl.txt:259
&gt; &gt; +    LIST(APPEND EWebKit_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/efl/ewk/ewk_notification_private.h)
&gt; 
&gt; A private header must not be installed.

You&apos;re right. Will be fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:57
&gt; &gt; +        * ewk/ewk_private.h:
&gt; &gt; +        * ewk/ewk_view.cpp:
&gt; &gt; +        (_ewk_view_priv_new):
&gt; &gt; +        * ewk/ewk_view.h:
&gt; 
&gt; At least the files which have been changed could have some description of what has been changed.

OK.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/ChromeClientEfl.cpp:425
&gt; &gt;  #if ENABLE(NOTIFICATIONS)
&gt; &gt;  NotificationPresenter* ChromeClientEfl::notificationPresenter() const
&gt; &gt;  {
&gt; &gt; -    notImplemented();
&gt; &gt; -    return 0;
&gt; &gt; +    return ewk_notification_presenter_get(m_view);
&gt; &gt;  }
&gt; 
&gt; This has been removed from the parent class in r101307, so this method and ewk_notification_presenter_get can be removed altogether.

I agree.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:50
&gt; &gt; +    if (notification-&gt;isHTML()) {
&gt; &gt; +        Ewk_Notification_Info* ewkNotificationInfo = ewk_notification_info_create(m_ewkNotification, notification);
&gt; &gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,htmlshow&quot;, ewkNotificationInfo);
&gt; &gt; +    } else {
&gt; &gt; +        Ewk_Notification_Info* ewkNotificationInfo = ewk_notification_info_create(m_ewkNotification, notification);
&gt; &gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,show&quot;, ewkNotificationInfo);
&gt; &gt; +    }
&gt; 
&gt; Why not have a boolean in the object which tells whether it is an HTML notification or not and then just emit a single type of signal?

Firstly, if I add a boolean field to the Ewk_Notificaion, Object size are grown.(Absolutely this can&apos;t be a problem, but I don&apos;t like.)
And If separate a signal, a application which is using this API, they doesn&apos;t need to check for confirm that is html or not.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:-54
&gt; &gt; -    notImplemented();
&gt; 
&gt; Why? This is still not implemented.

Wil be fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:74
&gt; &gt; +    if (m_cachedPermissions.find(context-&gt;securityOrigin()-&gt;toString()) == m_cachedPermissions.end()) {
&gt; 
&gt; I don&apos;t really see why the cached permissions are being searched (mostly because other ports don&apos;t do that).

There is find field in the QT port.
323 : QHash&lt;ScriptExecutionContext*, CallbacksInfo &gt;::iterator iter = m_pendingPermissionRequests.find(context);

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:75
&gt; &gt; +        m_callback = callback;
&gt; 
&gt; This method can be called many times and for multiple security origins. How do you handle that with a single variable?
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:76
&gt; &gt; +        evas_object_smart_callback_call(ewk_notification_view_get(m_ewkNotification), &quot;notification,requestPermission&quot; \
&gt; 
&gt; Unneeded &quot;\&quot; at the end of the line.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:77
&gt; &gt; +            , (void*)context-&gt;securityOrigin()-&gt;toString().utf8().data());
&gt; 
&gt; The C-style cast is not needed, and we do not use C-style casts.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:27
&gt; &gt; +#include &lt;Ecore_Evas.h&gt;
&gt; 
&gt; Why?

Will be fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:43
&gt; &gt; +    virtual void cancelRequestsForPermission(ScriptExecutionContext*) { }
&gt; 
&gt; Doesn&apos;t this need to be implemented?

Yes. I think. Notification will be implemented by modal dialog like a chromium, It&apos;s impossible to cancel.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/EWebKit.h:40
&gt; &gt; +#include &quot;ewk_notification.h&quot;
&gt; 
&gt; If ewk_notification.h is not installed, this will break the build for users.

After landing this patch, I think there is no case that ewk_notification.h is not installed.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:26
&gt; &gt; +#include &quot;ewk_logging.h&quot;
&gt; 
&gt; Unused.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:37
&gt; &gt; +    WebCore::NotificationPresenterClientEfl* notification_presenter;
&gt; &gt; +    Evas_Object* ewk_view;
&gt; &gt; +    Eina_List* ewk_notification_info_list;
&gt; 
&gt; Wrong naming style.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:41
&gt; &gt; +    Ewk_Notification* ewk_notification;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:42
&gt; &gt; +    void* notification;
&gt; 
&gt; Why void?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:47
&gt; &gt; +    unsigned __ref;
&gt; 
&gt; This is not used anywhere and the naming is weird.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:126
&gt; &gt; +Ewk_Notification* ewk_notification_create(WebCore::NotificationPresenter* notificationPresenter, Evas_Object* ewkView)
&gt; &gt; +{
&gt; &gt; +    Ewk_Notification* notification = new Ewk_Notification;
&gt; &gt; +    notification-&gt;notification_presenter = static_cast&lt;WebCore::NotificationPresenterClientEfl*&gt;(notificationPresenter);
&gt; 
&gt; Why all this casting if you are already passed a NotificationPresenterClientEfl? Just change the argument type in the function.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:133
&gt; &gt; +void ewk_notification_destroy(Ewk_Notification* ewkNotification)
&gt; 
&gt; What&apos;s the point of having this function if it just calls destroy_all? This all could be done directly in the presenter&apos;s destructor.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:137
&gt; &gt; +    ewkNotification = 0;
&gt; 
&gt; This has absolutely no effect.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:150
&gt; &gt; +    notification_info-&gt;iconURL = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().icon.string().utf8().data());
&gt; &gt; +    notification_info-&gt;title = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().title.utf8().data());
&gt; &gt; +    notification_info-&gt;body = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().body.utf8().data());
&gt; &gt; +    notification_info-&gt;htmlURL = strdup(static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;url().string().utf8().data());
&gt; 
&gt; Why not use stringshares here?

The utf8() method in the String class returns temp String object.
That&apos;s why I copy values for this.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:167
&gt; &gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; &gt; +        free(ewkNotificationInfo-&gt;iconURL);
&gt; &gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; &gt; +        free(ewkNotificationInfo-&gt;title);
&gt; &gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; &gt; +        free(ewkNotificationInfo-&gt;body);
&gt; &gt; +    if (!ewkNotificationInfo-&gt;iconURL)
&gt; &gt; +        free(ewkNotificationInfo-&gt;htmlURL);
&gt; 
&gt; The checks here are calling free() only if the variables are already 0. Plus, the checks are not needed at all. free(0) is a NOP.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:172
&gt; &gt; +    ewkNotificationInfo = 0;
&gt; 
&gt; This line has no effect.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:175
&gt; &gt; +void ewk_notificaiton_destroy_all(Ewk_Notification* ewkNotification)
&gt; 
&gt; Typo: &quot;notificaiton&quot;
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:23
&gt; &gt; +#include &lt;Evas.h&gt;
&gt; 
&gt; What is the Evas.h include used for? EAPI, for one, is in Eina.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:34
&gt; &gt; + * The following signals (see evas_object_smart_callback_add()) are emitted:
&gt; 
&gt; If there is no signal being emitted, there is no point in having this line.
&gt; 
&gt; Plus, some reference to the HTML5 spec is useful so people know what a web notification is.
I agree.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:44
&gt; &gt; + * Get iconURL for the notification from @c Ewk_Notification_Info.
&gt; 
&gt; &quot;iconURL&quot; is very implementation specific for a documentation entry. Please explain what it means and separate &quot;icon&quot; and &quot;URL&quot; (and in the &quot;@return&quot; line you use &quot;Icon URL&quot;, with spaces, different order and different casing.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:48
&gt; &gt; + * @return chacter pointer to the Icon URL of notification.
&gt; 
&gt; Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:49
&gt; &gt; + *
&gt; 
&gt; This empty line can be removed.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:58
&gt; &gt; + * @return chacter pointer to the title of notification.
&gt; 
&gt; Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:59
&gt; &gt; + *
&gt; 
&gt; This empty line can be removed.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:68
&gt; &gt; + * @return chacter pointer to the body contents of notification.
&gt; 
&gt; Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:69
&gt; &gt; + *
&gt; 
&gt; This empty line can be removed.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:74
&gt; &gt; + * Get html contents URL for the notification from @c Ewk_Notification_Info.
&gt; 
&gt; This is not mentioned in the w3c spec, so please explain what &quot;html contents URL&quot; means.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:78
&gt; &gt; + * @return chacter pointer to the html contents url of notification.
&gt; 
&gt; Typo: &quot;chacter&quot;. You also must inform the user whether he must manually free the returned pointer or not.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:79
&gt; &gt; + *
&gt; 
&gt; This empty line can be removed.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:84
&gt; &gt; + * Calls a callback fucntion which is registerd, after receiving a user approval.
&gt; 
&gt; Typo: &quot;fucntion&quot; and &quot;registerd&quot;. And it should be &quot;user&apos;s approval&quot;.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:90
&gt; &gt; +EAPI void ewk_notification_permission_callback_call(const Ewk_Notification_Info* eni, Eina_Bool permitted, const char* domain);
&gt; 
&gt; I don&apos;t see why this should be called by users. The callback must be called automatically when the user has responded to the permission request.

This function get a user input for the permission of notification.
When user click permit or not for the notification, this function have to be called, 
because there is no return value in the request permission by smart_callback_call(&quot;notification,requestPermission&quot;).
Will be modify description.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:93
&gt; &gt; + * Makes a Cache for permitted domains.
&gt; 
&gt; Why is &quot;Cache&quot; capitalized? What should it mean for the reader?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:95
&gt; &gt; + * This function can be called at initializing time if a application have permited domains.
&gt; 
&gt; Typo: &quot;permited&quot;. &quot;initializing&quot; should be &quot;initialization&quot;.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:96
&gt; &gt; + * WebCore checks a permission from the cache only when checkPermission() is called from javascript.
&gt; 
&gt; API users are not expected to know what &quot;WebCore&quot; means.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:102
&gt; &gt; +EAPI void ewk_notification_permitted_domains_add(const Ewk_Notification_Info* eni, char** domains, int size);
&gt; 
&gt; The description above contradicts the code&apos;s use: this is currently the only way to add permission for a given security origin and thus cannot be called &quot;at initializing time&quot;.

This function is for apps that is use WebKit-EFL APIs.
If the apps have permissions for the notification already, they have to call this function when it is initialized.
Will be add a detail description to ewk_notificaiton.h

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification_private.h:43
&gt; &gt; +void ewk_notificaiton_destroy_all(Ewk_Notification* ewkNotification);
&gt; 
&gt; Typo: &quot;notificaiton&quot;
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_private.h:-230
&gt; &gt; -
&gt; 
&gt; Unrelated change.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:71
&gt; &gt; +#include &quot;NotificationController.h&quot;
&gt; 
&gt; Is this include really needed?
&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        And add &quot;WebCore/notifications&quot; source path to build DumpRenderTree.
&gt; 
&gt; No need to say this  if hereyou repeat it below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533579</commentid>
    <comment_count>29</comment_count>
      <attachid>121963</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-10 19:29:30 -0800</bug_when>
    <thetext>Created attachment 121963
Fixed patch for comment #27</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533603</commentid>
    <comment_count>30</comment_count>
      <attachid>121963</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-01-10 20:34:36 -0800</bug_when>
    <thetext>Comment on attachment 121963
Fixed patch for comment #27

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

IMO, Approach looks better than before.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:42
&gt; +    HashSet&lt;Ewk_Notification*&gt;::iterator iter = m_pendingNotifications.begin();
&gt; +    while (iter != m_pendingNotifications.end())
&gt; +        ewk_notification_destroy(*iter);

I&apos;m not sure whether we should keep and control Ewk_Notification.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:63
&gt; +    if (notification-&gt;isHTML()) {
&gt; +        Ewk_Notification* ewkNotification = ewk_notification_create(this, notification);
&gt; +        evas_object_smart_callback_call(m_view, &quot;notification,htmlshow&quot;, ewkNotification);
&gt; +        m_pendingNotifications.add(ewkNotification);
&gt; +    } else {
&gt; +        Ewk_Notification* ewkNotification = ewk_notification_create(this, notification);
&gt; +        evas_object_smart_callback_call(m_view, &quot;notification,show&quot;, ewkNotification);
&gt; +        m_pendingNotifications.add(ewkNotification);
&gt; +    }

Instead of controlling m_pendingNotifications, 
why don&apos;t you call ewk_notification_deref() after calling evas_object_smart_callback_call()?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:71
&gt; +    evas_object_smart_callback_call(m_view, &quot;notification,cancel&quot;, &amp;ewkNotification);

&amp; looks typo, right?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:104
&gt; +        evas_object_smart_callback_call(m_view, &quot;notification,requestPermission&quot;

IMO, &quot;notification,permission,request&quot; is better

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:46
&gt; +    void makePermissionCache(char** domains, int size);
&gt; +    void permittedCallbackCall(const char* domain, const bool permission);

IMO, we&apos;d better to use String and Vector for argument.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:32
&gt; +struct _Ewk_Notification {
&gt; +    WebCore::NotificationPresenterClientEfl* notificationPresenter;
&gt; +    WebCore::Notification* notification;

ENABLE(NOTIFICATIONS) is missing.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:46
&gt; +char* ewk_notification_icon_url_get(Ewk_Notification* ewkNotification)

How do you think about returning const char* ?

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:111
&gt; +void ewk_notification_permitted_domains_add(const Ewk_Notification* ewkNotification, char** domains, int size)
&gt; +{
&gt; +#if ENABLE(NOTIFICATIONS)
&gt; +    ewkNotification-&gt;notificationPresenter-&gt;makePermissionCache(domains, size);
&gt; +#endif
&gt; +}

I&apos;m not sure, but char** looks ambiguous.

Why don&apos;t you use Eina_List ?

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:136
&gt; +    delete ewkNotification-&gt;iconURL;
&gt; +    delete ewkNotification-&gt;title;
&gt; +    delete ewkNotification-&gt;body;
&gt; +    delete ewkNotification-&gt;htmlURL;
&gt; +    delete ewkNotification-&gt;dir;
&gt; +    delete ewkNotification;

You should not delete the memory which assigned by strdup()

&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:31
&gt; +#ifdef __cplusplus
&gt; +extern &quot;C&quot; {
&gt; +#endif

For the internal header, we don&apos;t need `extern &quot;C&quot;`

&gt; Source/WebKit/efl/ewk/ewk_view.h:88
&gt; + *  - &quot;notification,requestPermission&quot;, char*: requested domain for getting user permission from the user.

char* or const char* ? which one is better ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533608</commentid>
    <comment_count>31</comment_count>
      <attachid>121963</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-10 20:55:21 -0800</bug_when>
    <thetext>Comment on attachment 121963
Fixed patch for comment #27

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

&gt; Source/WebKit/efl/ewk/ewk_notification.h:40
&gt; + * Get iconURL for the notification from @c Ewk_Notification.

s/Get/Gets/g

&gt; Source/WebKit/efl/ewk/ewk_notification.h:49
&gt; + * Get title for the notification from @c Ewk_Notification.

s/Get/Gets/g

&gt; Source/WebKit/efl/ewk/ewk_notification.h:55
&gt; +EAPI char* ewk_notification_title_get(Ewk_Notification* eni);

We have added *const* keyword to parameter of _get function. And also, we follow efl coding style in public header file. So, move * to function side.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:64
&gt; +EAPI char* ewk_notification_body_get(Ewk_Notification* eni);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:75
&gt; +EAPI char* ewk_notification_html_url_get(Ewk_Notification* eni);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:84
&gt; +EAPI char* ewk_notification_dir_get(Ewk_Notification* eni);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:114
&gt; +EAPI void ewk_notification_ondisplay_event_send(Ewk_Notification* eni);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:121
&gt; +EAPI void ewk_notification_onclick_event_send(Ewk_Notification* eni);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533652</commentid>
    <comment_count>32</comment_count>
      <attachid>121963</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-10 22:37:42 -0800</bug_when>
    <thetext>Comment on attachment 121963
Fixed patch for comment #27

We are having an internal discussion. I will submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533785</commentid>
    <comment_count>33</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-11 03:27:28 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 121963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121963&amp;action=review
&gt; 
&gt; IMO, Approach looks better than before.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:42
&gt; &gt; +    HashSet&lt;Ewk_Notification*&gt;::iterator iter = m_pendingNotifications.begin();
&gt; &gt; +    while (iter != m_pendingNotifications.end())
&gt; &gt; +        ewk_notification_destroy(*iter);
&gt; 
&gt; I&apos;m not sure whether we should keep and control Ewk_Notification.

I think we have to keep Ewk_Notificaiton for memory management.
If app doesn&apos;t send a (onclose/onerror) event and doesn&apos;t call a deref, there can be memory leak.

&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:63
&gt; &gt; +    if (notification-&gt;isHTML()) {
&gt; &gt; +        Ewk_Notification* ewkNotification = ewk_notification_create(this, notification);
&gt; &gt; +        evas_object_smart_callback_call(m_view, &quot;notification,htmlshow&quot;, ewkNotification);
&gt; &gt; +        m_pendingNotifications.add(ewkNotification);
&gt; &gt; +    } else {
&gt; &gt; +        Ewk_Notification* ewkNotification = ewk_notification_create(this, notification);
&gt; &gt; +        evas_object_smart_callback_call(m_view, &quot;notification,show&quot;, ewkNotification);
&gt; &gt; +        m_pendingNotifications.add(ewkNotification);
&gt; &gt; +    }
&gt; 
&gt; Instead of controlling m_pendingNotifications, 
&gt; why don&apos;t you call ewk_notification_deref() after calling evas_object_smart_callback_call()?
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:71
&gt; &gt; +    evas_object_smart_callback_call(m_view, &quot;notification,cancel&quot;, &amp;ewkNotification);
&gt; 
&gt; &amp; looks typo, right?
Yes.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:104
&gt; &gt; +        evas_object_smart_callback_call(m_view, &quot;notification,requestPermission&quot;
&gt; 
&gt; IMO, &quot;notification,permission,request&quot; is better
I agree.
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:46
&gt; &gt; +    void makePermissionCache(char** domains, int size);
&gt; &gt; +    void permittedCallbackCall(const char* domain, const bool permission);
&gt; 
&gt; IMO, we&apos;d better to use String and Vector for argument.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:32
&gt; &gt; +struct _Ewk_Notification {
&gt; &gt; +    WebCore::NotificationPresenterClientEfl* notificationPresenter;
&gt; &gt; +    WebCore::Notification* notification;
&gt; 
&gt; ENABLE(NOTIFICATIONS) is missing.
OK.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:46
&gt; &gt; +char* ewk_notification_icon_url_get(Ewk_Notification* ewkNotification)
&gt; 
&gt; How do you think about returning const char* ?
I think so.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:111
&gt; &gt; +void ewk_notification_permitted_domains_add(const Ewk_Notification* ewkNotification, char** domains, int size)
&gt; &gt; +{
&gt; &gt; +#if ENABLE(NOTIFICATIONS)
&gt; &gt; +    ewkNotification-&gt;notificationPresenter-&gt;makePermissionCache(domains, size);
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; I&apos;m not sure, but char** looks ambiguous.
&gt; 
&gt; Why don&apos;t you use Eina_List ?
OK.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:136
&gt; &gt; +    delete ewkNotification-&gt;iconURL;
&gt; &gt; +    delete ewkNotification-&gt;title;
&gt; &gt; +    delete ewkNotification-&gt;body;
&gt; &gt; +    delete ewkNotification-&gt;htmlURL;
&gt; &gt; +    delete ewkNotification-&gt;dir;
&gt; &gt; +    delete ewkNotification;
&gt; 
&gt; You should not delete the memory which assigned by strdup()
We can use delete with strdup(), but I will change strdup to eina_stringshare_add().
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification_private.h:31
&gt; &gt; +#ifdef __cplusplus
&gt; &gt; +extern &quot;C&quot; {
&gt; &gt; +#endif
&gt; 
&gt; For the internal header, we don&apos;t need `extern &quot;C&quot;`
OK.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:88
&gt; &gt; + *  - &quot;notification,requestPermission&quot;, char*: requested domain for getting user permission from the user.
&gt; 
&gt; char* or const char* ? which one is better ?
we can not use a const char* in the evas_object_smart_callback_call.
In the evas_object_smart_callback_call receive a void* parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542040</commentid>
    <comment_count>34</comment_count>
      <attachid>123891</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-24 23:40:43 -0800</bug_when>
    <thetext>Created attachment 123891
Add new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542096</commentid>
    <comment_count>35</comment_count>
      <attachid>123901</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-25 02:11:29 -0800</bug_when>
    <thetext>Created attachment 123901
Add new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542118</commentid>
    <comment_count>36</comment_count>
      <attachid>123901</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-01-25 02:36:09 -0800</bug_when>
    <thetext>Comment on attachment 123901
Add new patch.

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

r- on my side.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:103
&gt; +    // Because we are using modal dialogs to request permission, it&apos;s impossible to cancel them.

Should we implement this as modal popup?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:106
&gt; +void NotificationPresenterClientEfl::makePermissionCache(Vector&lt;String&gt; domains)

const Vector&lt;String&gt;&amp; looks enough.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:114
&gt; +    for (size_t i = 0; i &lt; m_callbacks.size(); i++) {

{ looks wrong.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:63
&gt; +    return ewkNotification-&gt;iconURL;

IIRC, iconURL may have trash because you assign values only when icon string is not empty.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:155
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;replaceId().length())
&gt; +        ewkNotification-&gt;iconURL = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;replaceId().utf8().data());
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().icon.string().length())
&gt; +        ewkNotification-&gt;iconURL = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;contents().icon.string().utf8().data());
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().title.length())
&gt; +        ewkNotification-&gt;title = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;contents().title.utf8().data());
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;contents().body.length())
&gt; +        ewkNotification-&gt;body = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;contents().body.utf8().data());
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;url().string().length())
&gt; +        ewkNotification-&gt;url = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;url().string().utf8().data());
&gt; +    if (static_cast&lt;WebCore::Notification*&gt;(notification)-&gt;dir().length())
&gt; +        ewkNotification-&gt;dir = eina_stringshare_add(static_cast&lt;WebCore::Notification*&gt;(notification)
&gt; +            -&gt;dir().utf8().data());

There are many issues.
you don&apos;t need to cast, right?

139 and 140 lines is wrong.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:183
&gt; +        return;
&gt; +#if ENABLE(NOTIFICATIONS)

empty line please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542122</commentid>
    <comment_count>37</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-01-25 02:44:55 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 123901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123901&amp;action=review
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:63
&gt; &gt; +    return ewkNotification-&gt;iconURL;
&gt; 
&gt; IIRC, iconURL may have trash because you assign values only when icon string is not empty.

This comment is wrong, I can&apos;t catch ().

But other comments are still valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542154</commentid>
    <comment_count>38</comment_count>
      <attachid>123901</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-25 03:39:04 -0800</bug_when>
    <thetext>Comment on attachment 123901
Add new patch.

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

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:103
&gt;&gt; +    // Because we are using modal dialogs to request permission, it&apos;s impossible to cancel them.
&gt; 
&gt; Should we implement this as modal popup?

I think so.
The permission request has to obtain a user&apos;s confirmation immediately before the user performs other operations on that page.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:106
&gt;&gt; +void NotificationPresenterClientEfl::makePermissionCache(Vector&lt;String&gt; domains)
&gt; 
&gt; const Vector&lt;String&gt;&amp; looks enough.

You are right.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:114
&gt;&gt; +    for (size_t i = 0; i &lt; m_callbacks.size(); i++) {
&gt; 
&gt; { looks wrong.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:63
&gt;&gt; +    return ewkNotification-&gt;iconURL;
&gt; 
&gt; IIRC, iconURL may have trash because you assign values only when icon string is not empty.

You already mentioned about this.
Not a problem.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:155
&gt;&gt; +            -&gt;dir().utf8().data());
&gt; 
&gt; There are many issues.
&gt; you don&apos;t need to cast, right?
&gt; 
&gt; 139 and 140 lines is wrong.

Yes. There are no needs to cast.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:183
&gt;&gt; +#if ENABLE(NOTIFICATIONS)
&gt; 
&gt; empty line please

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542937</commentid>
    <comment_count>39</comment_count>
      <attachid>124072</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-26 01:00:44 -0800</bug_when>
    <thetext>Created attachment 124072
Fixed patch for the comment #31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547600</commentid>
    <comment_count>40</comment_count>
      <attachid>125068</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-01 20:26:24 -0800</bug_when>
    <thetext>Created attachment 125068
Merge pending notification queue and stored notification queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547613</commentid>
    <comment_count>41</comment_count>
      <attachid>125068</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-01 21:02:21 -0800</bug_when>
    <thetext>Comment on attachment 125068
Merge pending notification queue and stored notification queue.

Attachment 125068 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11394694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547644</commentid>
    <comment_count>42</comment_count>
      <attachid>125077</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-01 22:03:48 -0800</bug_when>
    <thetext>Created attachment 125077
Fix efl build error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641086</commentid>
    <comment_count>43</comment_count>
      <attachid>145673</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-04 18:25:39 -0700</bug_when>
    <thetext>Created attachment 145673
New patch followed by changing WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641093</commentid>
    <comment_count>44</comment_count>
      <attachid>145673</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-04 18:34:43 -0700</bug_when>
    <thetext>Comment on attachment 145673
New patch followed by changing WebCore.

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

I think this patch is a little huge. If possible, can you divide this patch into smaller&apos;s ?

&gt; LayoutTests/platform/efl/TestExpectations:717
&gt; +// Refactor notification tests requiring file:// permission.

Why do you use // in front of *permission* comment? Do not make unneeded comment style.

&gt; LayoutTests/platform/efl/TestExpectations:726
&gt; +// Efl doesn&apos;t support to simulateDesktopNotificationClick.

Efl -&gt; EFL.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Change requestPermission can be processed when argument is null on the JSC.

Change requestPermission -&gt; To change requestPermission ?

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:53
&gt; +                    printf(&quot;REPLACING NOTIFICATION %s\n&quot;, iter-&gt;first-&gt;isHTML() ? iter-&gt;first-&gt;url().string().utf8().data() : iter-&gt;first-&gt;title().utf8().data());

Remove printf(). If you wanna print debug log, use LOG_XXX. Or, if you wanna pass layout test, you should move this printf to DRT side.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:63
&gt; +    evas_object_smart_callback_call(m_view, &quot;notification,show&quot;, static_cast&lt;void*&gt;(ewkNotification));

If you add new signal, you should add signal description to ewk_view.h.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:68
&gt; +            printf(&quot;DESKTOP NOTIFICATION: contents at %s\n&quot;, notification-&gt;url().string().utf8().data());

ditto.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:70
&gt; +            printf(&quot;DESKTOP NOTIFICATION:%s icon %s, title %s, text %s\n&quot;,

ditto.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:90
&gt; +            printf(&quot;DESKTOP NOTIFICATION CLOSED: %s\n&quot;, notification-&gt;url().string().utf8().data());

ditto.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:92
&gt; +            printf(&quot;DESKTOP NOTIFICATION CLOSED: %s\n&quot;, notification-&gt;title().utf8().data());

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641095</commentid>
    <comment_count>45</comment_count>
      <attachid>145673</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-04 18:42:58 -0700</bug_when>
    <thetext>Comment on attachment 145673
New patch followed by changing WebCore.

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

&gt;&gt; LayoutTests/platform/efl/TestExpectations:717
&gt;&gt; +// Refactor notification tests requiring file:// permission.
&gt; 
&gt; Why do you use // in front of *permission* comment? Do not make unneeded comment style.

Oops, &apos;//&apos; is for &apos;file://&apos;. Ignore above comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641117</commentid>
    <comment_count>46</comment_count>
      <attachid>145673</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-04 19:19:26 -0700</bug_when>
    <thetext>Comment on attachment 145673
New patch followed by changing WebCore.

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

&gt;&gt; LayoutTests/platform/efl/TestExpectations:726
&gt;&gt; +// Efl doesn&apos;t support to simulateDesktopNotificationClick.
&gt; 
&gt; Efl -&gt; EFL.

OK.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Change requestPermission can be processed when argument is null on the JSC.
&gt; 
&gt; Change requestPermission -&gt; To change requestPermission ?

I don&apos;t think so, I meant &quot;Fix to run requestPermission even if arguemnt is empty on the JSC&quot;.
I will change this description~;-)

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:53
&gt;&gt; +                    printf(&quot;REPLACING NOTIFICATION %s\n&quot;, iter-&gt;first-&gt;isHTML() ? iter-&gt;first-&gt;url().string().utf8().data() : iter-&gt;first-&gt;title().utf8().data());
&gt; 
&gt; Remove printf(). If you wanna print debug log, use LOG_XXX. Or, if you wanna pass layout test, you should move this printf to DRT side.

QT port is implemented like this.
In the chromium port, there are additional classes only for the layout tests.
But, I think if I make additional classes for the layout tests, It&apos;s not a tests for real implementation. That&apos;s why I use printf in the middle of implementation like QT.
How do you think about this?

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:63
&gt;&gt; +    evas_object_smart_callback_call(m_view, &quot;notification,show&quot;, static_cast&lt;void*&gt;(ewkNotification));
&gt; 
&gt; If you add new signal, you should add signal description to ewk_view.h.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641126</commentid>
    <comment_count>47</comment_count>
      <attachid>145673</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-04 19:35:12 -0700</bug_when>
    <thetext>Comment on attachment 145673
New patch followed by changing WebCore.

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

&gt;&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:53
&gt;&gt;&gt; +                    printf(&quot;REPLACING NOTIFICATION %s\n&quot;, iter-&gt;first-&gt;isHTML() ? iter-&gt;first-&gt;url().string().utf8().data() : iter-&gt;first-&gt;title().utf8().data());
&gt;&gt; 
&gt;&gt; Remove printf(). If you wanna print debug log, use LOG_XXX. Or, if you wanna pass layout test, you should move this printf to DRT side.
&gt; 
&gt; QT port is implemented like this.
&gt; In the chromium port, there are additional classes only for the layout tests.
&gt; But, I think if I make additional classes for the layout tests, It&apos;s not a tests for real implementation. That&apos;s why I use printf in the middle of implementation like QT.
&gt; How do you think about this?

If you follow QT implementation, I don&apos;t mind to do it. However, this patch is huge, I feel difficult to review this detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641133</commentid>
    <comment_count>48</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-04 20:16:09 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (From update of attachment 145673 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145673&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:53
&gt; &gt;&gt;&gt; +                    printf(&quot;REPLACING NOTIFICATION %s\n&quot;, iter-&gt;first-&gt;isHTML() ? iter-&gt;first-&gt;url().string().utf8().data() : iter-&gt;first-&gt;title().utf8().data());
&gt; &gt;&gt; 
&gt; &gt;&gt; Remove printf(). If you wanna print debug log, use LOG_XXX. Or, if you wanna pass layout test, you should move this printf to DRT side.
&gt; &gt; 
&gt; &gt; QT port is implemented like this.
&gt; &gt; In the chromium port, there are additional classes only for the layout tests.
&gt; &gt; But, I think if I make additional classes for the layout tests, It&apos;s not a tests for real implementation. That&apos;s why I use printf in the middle of implementation like QT.
&gt; &gt; How do you think about this?
&gt; 
&gt; If you follow QT implementation, I don&apos;t mind to do it. However, this patch is huge, I feel difficult to review this detail.

OK, I will try to divide this patch~:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641214</commentid>
    <comment_count>49</comment_count>
      <attachid>145701</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-04 23:32:41 -0700</bug_when>
    <thetext>Created attachment 145701
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641236</commentid>
    <comment_count>50</comment_count>
      <attachid>145701</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-05 00:10:10 -0700</bug_when>
    <thetext>Comment on attachment 145701
Patch.

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

Please read WebKit EFL coding style guideline.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:74
&gt; +    // Called from ~Notification(), Remove the entry from the notifications list.

s/Remove/remove/g

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:45
&gt; +    virtual void requestPermission(ScriptExecutionContext*, PassRefPtr&lt;NotificationPermissionCallback&gt;) { }

I couldn&apos;t find implementation for this virtual function. Don&apos;t you need to implement this ?

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:32
&gt; +#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)

Is it better to add comment for these internal functions ?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:38
&gt; +    char* domain;

Move &apos;*&apos; to variable side.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:39
&gt; +    bool isAllowed;

s/isAllowed/allow/g. In addition, use Eina_Bool instead of bool.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:49
&gt; +EAPI void ewk_notification_dispatch_click(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:56
&gt; +EAPI void ewk_notification_dispatch_close(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:63
&gt; +EAPI void ewk_notification_dispatch_error(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:70
&gt; +EAPI void ewk_notification_dispatch_show(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:79
&gt; +EAPI Eina_Stringshare* ewk_notification_title_get(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:82
&gt; + * Get icon url from @c Ewk_Notification.

s/url/URL/g.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:86
&gt; + * @return icon url of the notification which has to be deleted by eina_stringshare_del after using it.

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:88
&gt; +EAPI Eina_Stringshare* ewk_notification_icon_url_get(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:98
&gt; +EAPI Eina_Stringshare* ewk_notification_body_get(Ewk_Notification* en);
&gt; +

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:100
&gt; + * Get tag/replaced id from @c Ewk_Notification.

I don&apos;t understand what does &quot;tag/replaed&quot; mean ?

&gt; Source/WebKit/efl/ewk/ewk_notification.h:106
&gt; +EAPI Eina_Stringshare* ewk_notification_tag_get(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:115
&gt; +EAPI Eina_Stringshare* ewk_notification_dir_get(Ewk_Notification* en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:28
&gt; +WebCore::Notification* ewk_notification_get_notification(Ewk_Notification* ewkNotification);

Naming violation. ewk_notification_notification_get(). If you worry about duplicating naming, I think you can modify name more meaning thing.

&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:33
&gt; +

Unneeded line.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4381
&gt; +void ewk_view_notification_permissions_set(Evas_Object* ewkView, const char* domain, Eina_Bool isAllowed)

s/isAllowed/allow/g.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4386
&gt; +    static_cast&lt;WebCore::NotificationPresenterClientEfl*&gt;(WebCore::NotificationController::clientFrom(priv-&gt;page.get()))-&gt;addPermission(domain, isAllowed);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:76
&gt; + *  - &quot;notification,show&quot;, Ewk_Notification*: request to show notification.

List this signal up by alphabetical order.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2638
&gt; +EAPI void ewk_view_notification_permissions_set(Evas_Object* o, const char* domain, Eina_Bool isAllowed);

Change isAllowed variable with allow. In addition, move &apos;*&apos; operator to variable side.

&gt; Source/WebKit/efl/ewk/ewk_view_private.h:158
&gt; +WebCore::NotificationPresenterClientEfl* ewk_view_notification_client_get(Evas_Object* ewkView);

Add *const* keyword for _get() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641287</commentid>
    <comment_count>51</comment_count>
      <attachid>145701</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-05 01:19:23 -0700</bug_when>
    <thetext>Comment on attachment 145701
Patch.

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

Thank you for your kind comments. Gyuyoung~:-)

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:74
&gt;&gt; +    // Called from ~Notification(), Remove the entry from the notifications list.
&gt; 
&gt; s/Remove/remove/g

OK.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:45
&gt;&gt; +    virtual void requestPermission(ScriptExecutionContext*, PassRefPtr&lt;NotificationPermissionCallback&gt;) { }
&gt; 
&gt; I couldn&apos;t find implementation for this virtual function. Don&apos;t you need to implement this ?

There are no implementation in the chromium and qt also.
This function is for W3C web notification spec, but we are support legacy notification until now like chromium and qt.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:32
&gt;&gt; +#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
&gt; 
&gt; Is it better to add comment for these internal functions ?

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.h:38
&gt;&gt; +    char* domain;
&gt; 
&gt; Move &apos;*&apos; to variable side.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.h:100
&gt;&gt; + * Get tag/replaced id from @c Ewk_Notification.
&gt; 
&gt; I don&apos;t understand what does &quot;tag/replaed&quot; mean ?

I will change this to replaceId.(followed by standard.)

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:28
&gt;&gt; +WebCore::Notification* ewk_notification_get_notification(Ewk_Notification* ewkNotification);
&gt; 
&gt; Naming violation. ewk_notification_notification_get(). If you worry about duplicating naming, I think you can modify name more meaning thing.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4381
&gt;&gt; +void ewk_view_notification_permissions_set(Evas_Object* ewkView, const char* domain, Eina_Bool isAllowed)
&gt; 
&gt; s/isAllowed/allow/g.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_view.h:76
&gt;&gt; + *  - &quot;notification,show&quot;, Ewk_Notification*: request to show notification.
&gt; 
&gt; List this signal up by alphabetical order.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_view_private.h:158
&gt;&gt; +WebCore::NotificationPresenterClientEfl* ewk_view_notification_client_get(Evas_Object* ewkView);
&gt; 
&gt; Add *const* keyword for _get() function.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641295</commentid>
    <comment_count>52</comment_count>
      <attachid>145722</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-05 01:26:42 -0700</bug_when>
    <thetext>Created attachment 145722
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645482</commentid>
    <comment_count>53</comment_count>
      <attachid>145722</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-10 04:47:32 -0700</bug_when>
    <thetext>Comment on attachment 145722
Patch.

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

&gt; Source/WebKit/efl/ChangeLog:9
&gt; +        In this patch, we support following apis and events.

s/apis/APIs/g

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:91
&gt; +Eina_Stringshare* ewk_notification_title_get(Ewk_Notification* ewkNotification)

Add const keyword for _get().

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:100
&gt; +Eina_Stringshare* ewk_notification_icon_url_get(Ewk_Notification* ewkNotification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:109
&gt; +Eina_Stringshare* ewk_notification_body_get(Ewk_Notification* ewkNotification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:118
&gt; +Eina_Stringshare* ewk_notification_replace_id_get(Ewk_Notification* ewkNotification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:127
&gt; +Eina_Stringshare* ewk_notification_dir_get(Ewk_Notification* ewkNotification)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:23
&gt; + */

Please write more detail description.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:88
&gt; +EAPI Eina_Stringshare *ewk_notification_icon_url_get(Ewk_Notification *en);

By the way,  why we have to return string by Eina_Stringshare ? As you know, application have to delete returned string by eina function. EFL port has used const char* for similar case.

&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:32
&gt; +#endif // ewk_settings_private_h

s/ewk_settings_private_h/ewk_notification_private.h/g

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4391
&gt; +const WebCore::NotificationPresenterClientEfl* ewk_view_notification_client_get(Evas_Object* ewkView)

Missing const keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645820</commentid>
    <comment_count>54</comment_count>
      <attachid>145722</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-11 01:14:45 -0700</bug_when>
    <thetext>Comment on attachment 145722
Patch.

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

&gt;&gt; Source/WebKit/efl/ChangeLog:9
&gt;&gt; +        In this patch, we support following apis and events.
&gt; 
&gt; s/apis/APIs/g

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:91
&gt;&gt; +Eina_Stringshare* ewk_notification_title_get(Ewk_Notification* ewkNotification)
&gt; 
&gt; Add const keyword for _get().

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.h:23
&gt;&gt; + */
&gt; 
&gt; Please write more detail description.

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.h:88
&gt;&gt; +EAPI Eina_Stringshare *ewk_notification_icon_url_get(Ewk_Notification *en);
&gt; 
&gt; By the way,  why we have to return string by Eina_Stringshare ? As you know, application have to delete returned string by eina function. EFL port has used const char* for similar case.

OK. I don&apos;t care about that. I will change Eina_Stringshare to cont cnar*.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification_private.h:32
&gt;&gt; +#endif // ewk_settings_private_h
&gt; 
&gt; s/ewk_settings_private_h/ewk_notification_private.h/g

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4391
&gt;&gt; +const WebCore::NotificationPresenterClientEfl* ewk_view_notification_client_get(Evas_Object* ewkView)
&gt; 
&gt; Missing const keyword.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645890</commentid>
    <comment_count>55</comment_count>
      <attachid>146824</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-11 04:10:08 -0700</bug_when>
    <thetext>Created attachment 146824
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648744</commentid>
    <comment_count>56</comment_count>
      <attachid>146824</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-13 20:46:14 -0700</bug_when>
    <thetext>Comment on attachment 146824
Patch.

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

&gt; Source/WebKit/PlatformEfl.cmake:79
&gt;  IF (ENABLE_NOTIFICATIONS)

I think you can add this to source list unconditionally because ewk_notification.cpp is already protected by #ifdef.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:48
&gt; +            if (iter-&gt;first-&gt;tag() == notification-&gt;tag() &amp;&amp; iter-&gt;first-&gt;url().protocol() == notification-&gt;url().protocol() &amp;&amp; iter-&gt;first-&gt;url().host() == notification-&gt;url().host()) {

It looks it is better to use multiple lines for this conditions.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:91
&gt; +    evas_object_smart_callback_call(m_view, &quot;notification,permission,request&quot;, static_cast&lt;void*&gt;(const_cast&lt;char*&gt;(domain.utf8().data())));

I&apos;m not sure whether multicasting is safe like this. EFL port has used (void*) C-type casting instead of C++ casting for this.

I think you can add internal functions to send signal to ewk_notificaiton.cpp

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:113
&gt; +        evas_object_smart_callback_call(m_view, &quot;notification,permission,cancel&quot;, static_cast&lt;void*&gt;(const_cast&lt;char*&gt;(domain.utf8().data())));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:83
&gt; +EAPI const char *ewk_notification_title_get(Ewk_Notification *en);

As mentioned in comment #53, _get() needs to use *const*.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:92
&gt; +EAPI const char *ewk_notification_icon_url_get(Ewk_Notification *en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:101
&gt; +EAPI const char *ewk_notification_body_get(Ewk_Notification *en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:110
&gt; +EAPI const char *ewk_notification_replace_id_get(Ewk_Notification *en);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:119
&gt; +EAPI const char *ewk_notification_dir_get(Ewk_Notification *en);

ditto.

&gt; Tools/ChangeLog:9
&gt; +

Missing changed file in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651196</commentid>
    <comment_count>57</comment_count>
      <attachid>146824</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-17 23:34:04 -0700</bug_when>
    <thetext>Comment on attachment 146824
Patch.

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

&gt;&gt; Source/WebKit/PlatformEfl.cmake:79
&gt;&gt;  IF (ENABLE_NOTIFICATIONS)
&gt; 
&gt; I think you can add this to source list unconditionally because ewk_notification.cpp is already protected by #ifdef.

OK.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:48
&gt;&gt; +            if (iter-&gt;first-&gt;tag() == notification-&gt;tag() &amp;&amp; iter-&gt;first-&gt;url().protocol() == notification-&gt;url().protocol() &amp;&amp; iter-&gt;first-&gt;url().host() == notification-&gt;url().host()) {
&gt; 
&gt; It looks it is better to use multiple lines for this conditions.

OK.

&gt;&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:91
&gt;&gt; +    evas_object_smart_callback_call(m_view, &quot;notification,permission,request&quot;, static_cast&lt;void*&gt;(const_cast&lt;char*&gt;(domain.utf8().data())));
&gt; 
&gt; I&apos;m not sure whether multicasting is safe like this. EFL port has used (void*) C-type casting instead of C++ casting for this.
&gt; 
&gt; I think you can add internal functions to send signal to ewk_notificaiton.cpp

OK.

&gt;&gt; Source/WebKit/efl/ewk/ewk_notification.h:83
&gt;&gt; +EAPI const char *ewk_notification_title_get(Ewk_Notification *en);
&gt; 
&gt; As mentioned in comment #53, _get() needs to use *const*.

OK.

&gt;&gt; Tools/ChangeLog:9
&gt;&gt; +
&gt; 
&gt; Missing changed file in ChangeLog.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651199</commentid>
    <comment_count>58</comment_count>
      <attachid>148060</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-17 23:37:35 -0700</bug_when>
    <thetext>Created attachment 148060
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651327</commentid>
    <comment_count>59</comment_count>
      <attachid>148060</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-18 05:07:47 -0700</bug_when>
    <thetext>Comment on attachment 148060
Patch.

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

Could you let me know what is difference between NOTIFICATION feature and LEGACY_NOTIFICATIONS? It is a little difficult to understand the difference in this patch.

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:-24
&gt; -#include &quot;NotImplemented.h&quot;

When NOTIFICATION is disabled, there is build break as below,

86%] Building CXX object Source/WebKit/CMakeFiles/ewebkit.dir/efl/WebCoreSupport/PageClientEfl.cpp.o
In file included from /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:21:0:
/home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:24:26: fatal error: Notification.h: No such file or directory

&gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:77
&gt; +    // Called from ~Notification(), Remove the entry from the notifications list.

s/Remove/remove/g

&gt; Source/WebKit/efl/ewk/ewk_notification.cpp:131
&gt; +    return strdup(ewkNotification-&gt;notification-&gt;replaceId().utf8().data());

When LEGACY_NOTIFICATION is disabled, there is a build break. We have to support perfect build regardless of feature dependency.

/home/gyuyoung/webkit/WebKit/Source/WebKit/efl/ewk/ewk_notification.cpp: In function ‘const char* ewk_notification_replace_id_get(const Ewk_Notification*)’:
/home/gyuyoung/webkit/WebKit/Source/WebKit/efl/ewk/ewk_notification.cpp:131:50: error: ‘class WebCore::Notification’ has no member named ‘replaceId’
[ 99%] Built target ewebkit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651943</commentid>
    <comment_count>60</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-18 18:10:30 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (From update of attachment 148060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148060&amp;action=review
&gt; 
&gt; Could you let me know what is difference between NOTIFICATION feature and LEGACY_NOTIFICATIONS? It is a little difficult to understand the difference in this patch.

NOTIFICATION support to the Web Notification of w3c otherwise, LEGACY_NOTIFICATION support to the old version of the Web Notification.
NOTIFICATION(http://dvcs.w3.org/hg/notifications/raw-file/tip/Overview.html)
LEGACY_NOTIFICATION(http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification)
&gt; 
&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:-24
&gt; &gt; -#include &quot;NotImplemented.h&quot;
&gt; 
&gt; When NOTIFICATION is disabled, there is build break as below,
&gt; 
&gt; 86%] Building CXX object Source/WebKit/CMakeFiles/ewebkit.dir/efl/WebCoreSupport/PageClientEfl.cpp.o
&gt; In file included from /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:21:0:
&gt; /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:24:26: fatal error: Notification.h: No such file or directory
&gt; 
LEGACY_NOTIFICATION is like a optional feature of NOTIFICATION, therefore there is no chance to enable LEGACY_NOTIFICATION without NOTIFICAION.
(there are some link errors from WebCore by WebCore/CMakeLIsts.txt:1703)
But I will change this.

&gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:77
&gt; &gt; +    // Called from ~Notification(), Remove the entry from the notifications list.
&gt; 
&gt; s/Remove/remove/g

OK.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.cpp:131
&gt; &gt; +    return strdup(ewkNotification-&gt;notification-&gt;replaceId().utf8().data());
&gt; 
&gt; When LEGACY_NOTIFICATION is disabled, there is a build break. We have to support perfect build regardless of feature dependency.
&gt; 
&gt; /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/ewk/ewk_notification.cpp: In function ‘const char* ewk_notification_replace_id_get(const Ewk_Notification*)’:
&gt; /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/ewk/ewk_notification.cpp:131:50: error: ‘class WebCore::Notification’ has no member named ‘replaceId’
&gt; [ 99%] Built target ewebkit2

OK, You are right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652018</commentid>
    <comment_count>61</comment_count>
      <attachid>148240</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-18 21:37:55 -0700</bug_when>
    <thetext>Created attachment 148240
Patch

&gt; &gt; &gt; Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:-24
&gt; &gt; &gt; -#include &quot;NotImplemented.h&quot;
&gt; &gt; 
&gt; &gt; When NOTIFICATION is disabled, there is build break as below,
&gt; &gt; 
&gt; &gt; 86%] Building CXX object Source/WebKit/CMakeFiles/ewebkit.dir/efl/WebCoreSupport/PageClientEfl.cpp.o
&gt; &gt; In file included from /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.cpp:21:0:
&gt; &gt; /home/gyuyoung/webkit/WebKit/Source/WebKit/efl/WebCoreSupport/NotificationPresenterClientEfl.h:24:26: fatal error: Notification.h: No such file or directory
&gt; &gt; 
&gt; LEGACY_NOTIFICATION is like a optional feature of NOTIFICATION, therefore there is no chance to enable LEGACY_NOTIFICATION without NOTIFICAION.
&gt; (there are some link errors from WebCore by WebCore/CMakeLIsts.txt:1703)
&gt; But I will change this.

If I fix this, we need to change position of &quot;${WEBCORE_DIR}/notifications&quot; in the platformEfl.txt

From : 
IF (ENABLE_NOTIFICATIONS)
  LIST(APPEND WebKit_INCLUDE_DIRECTORIES
    &quot;${WEBCORE_DIR}/notifications&quot;
  )
ENDIF ()

To :
  LIST(APPEND WebKit_INCLUDE_DIRECTORIES
    ...
    &quot;${WEBCORE_DIR}/notifications&quot;
    ...
  )

But, there are remaining errors in the WebCore as I said above.
Therefore, I don&apos;t want to change this now.
When ENABLE_NOTIFICATION feature is deleted for enabling by default, we can change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658334</commentid>
    <comment_count>62</comment_count>
      <attachid>148240</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-26 22:14:51 -0700</bug_when>
    <thetext>Comment on attachment 148240
Patch

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

It looks there is no critical problems now.

&gt; Source/WebKit/efl/ewk/ewk_notification.h:29
&gt; +/**

Generally, we have written this file description just below licence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659165</commentid>
    <comment_count>63</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-06-27 21:47:22 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (From update of attachment 148240 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148240&amp;action=review
&gt; 
&gt; It looks there is no critical problems now.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_notification.h:29
&gt; &gt; +/**
&gt; 
&gt; Generally, we have written this file description just below licence.

OK. I will change it.
Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661515</commentid>
    <comment_count>64</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-02 08:42:49 -0700</bug_when>
    <thetext>NotificationPresenterClientEFl was changed with NotificationClientEfl on r121679.
http://trac.webkit.org/changeset/121679

This patch needs to be updated based on latest WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662837</commentid>
    <comment_count>65</comment_count>
      <attachid>148240</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-04 03:53:34 -0700</bug_when>
    <thetext>Comment on attachment 148240
Patch

I will divide this patch with respect to the functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787115</commentid>
    <comment_count>66</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-10 02:09:34 -0800</bug_when>
    <thetext>Is there any work going on for EFL WK2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286440</commentid>
    <comment_count>67</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:40:26 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117390</attachid>
            <date>2011-12-01 03:15:17 -0800</date>
            <delta_ts>2011-12-09 03:18:57 -0800</delta_ts>
            <desc>Add patch files for notification</desc>
            <filename>eflNotification.patch</filename>
            <type>text/plain</type>
            <size>21998</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzZWUyMmFhLi44MGZlZGNj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMDEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAg
ICAgICAgVGhpcyBpcyBhIGltcGxlbWVudGF0aW9uIGFib3V0IHdlYiBub3RpZmljYXRpb24gZm9y
IGVmbAorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6IGVsYWJsZSBF
TkFCTEVfTk9USUZJQ0FUSU9OUyBmZXR1cmUKKwogMjAxMS0xMS0zMCAgQWxlamFuZHJvIEcuIENh
c3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgY29tcGlsYXRpb24gb3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNDcwYWNj
MS4uNDIwOWZmMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTAx
ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
IEFkZCBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgZm9yIEVmbCBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAgIFRoZXJl
IGlzIGEgd2Via2l0Tm90aWZpY2Fpb24gcHJvcGVydHkgaW4gdGhlIHdpbmRvdy5uYXZpZ2F0b3Is
CisgICAgICAgIGJ1dCBlZmwgZG9lc24ndCBzdXBwb3J0IGl0LgorICAgICAgICBUaGlzIGlzIGEg
aW1wbGVtZW50YXRpb24gYWJvdXQgd2ViIG5vdGlmaWNhdGlvbiBmb3IgZWZsCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNr
UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNw
bGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
Ojpub3RpZmljYXRpb25DbGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpj
YW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5o
OgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9u
ZXcpOgorICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfbm90
aWZpY2F0aW9uX2h0bWxfdmlldyk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fY2Fu
Y2VsKToKKyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24p
OgorICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2Rpc3BsYXllZCk6CisgICAgICAgIChl
d2tfdmlld19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmlj
YXRpb25fY2xvc2VkKToKKyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9lcnJvcik6Cisg
ICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAg
ICAgIChld2tfdmlld19ub3RpZmljYXRpb25fYWRkX3Blcm1pdHRlZF9kb21haW5zKToKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMS0xMS0zMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91
bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBidWlsZCBlcnJv
ciB3aGVuIE5PVElGSUNBVElPTlMgZmVhdHVyZSBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggOTMy
OTQ1MC4uYzVlMDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBDaHJvbWVD
bGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNl
bnRlciogQ2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3ByZXNlbnRl
cl9nZXQobV92aWV3KTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggMTUxMzNmNS4uOTE4ZDUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSwxMSArMjEsMTQgQEAKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChF
dmFzX09iamVjdCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQogewogfQogCkBAIC0zNSwzNSAr
MzgsOTAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKCkKIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkpCisg
ICAgICAgIGV3a192aWV3X25vdGlmaWNhdGlvbl9odG1sX3ZpZXcobV92aWV3LCBub3RpZmljYXRp
b24pOworICAgIGVsc2UKKyAgICAgICAgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Nob3cobV92aWV3
LCBub3RpZmljYXRpb24pOworCisgICAgbV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24p
OworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBld2tfdmlld19ub3RpZmljYXRpb25fY2FuY2VsKG1fdmlldywgbm90
aWZpY2F0aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9
CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25PYmpl
Y3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAK
IHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
Y2FsbGJhY2spCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9jYWNoZWRQZXJt
aXNzaW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpID09IG1f
Y2FjaGVkUGVybWlzc2lvbnMuZW5kKCkpIHsKKyAgICAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICBld2tfdmlld19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNzaW9uKG1fdmll
dywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFBlcm1p
c3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBpZiAobV9jYWNoZWRQZXJtaXNzaW9u
cy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpID09IG1fY2FjaGVk
UGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOworCisg
ICAgcmV0dXJuIFBlcm1pc3Npb25BbGxvd2VkOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50IHNp
emUpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3Ry
aW5nIGRvbWFpbihkb21haW5zW2ldKTsKKyAgICAgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQo
ZG9tYWluKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
OjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29uc3QgY2hhciogZG9tYWluKQoreworICAgIFN0cmlu
ZyBwZXJtaXR0ZWREb21haW4oZG9tYWluKTsKKworICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRk
KHBlcm1pdHRlZERvbWFpbik7CisgICAgbV9jYWxsYmFjay5nZXQoKS0+aGFuZGxlRXZlbnQoKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkRp
c3BsYXllZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90
aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50KTsKK30KKwordm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6bm90aWZpY2F0aW9uQ2xvc2VkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAg
IHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAgICBt
X25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcihOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCku
ZXJyb3JFdmVudCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwog
fQogCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNG
b3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50KE5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lLCBmYWxzZSwgdHJ1ZSkpOwogfQogCisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuaAppbmRleCAzNWFhZGM5Li5hNmYyYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDEzIEBACiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90
aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09i
amVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwogCiAg
ICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC0zNyw3ICszNywyNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdmlydHVhbCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KKworICAg
IHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworICAg
IHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbik7CisKKyAgICB2
b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRpb24qKTsKKyAgICB2b2lkIG5vdGlm
aWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmljYXRpb25DbG9z
ZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmljYXRpb25FcnJvcihOb3RpZmljYXRp
b24qKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24qLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisKKyAgICBFdmFzX09iamVjdCogbV92aWV3Owor
CisgICAgSGFzaFNldDxOb3RpZmljYXRpb24qPiBtX25vdGlmaWNhdGlvbnM7CisgICAgSGFzaFNl
dDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNzaW9uczsKKyAgICBSZWZQdHI8Vm9pZENhbGxi
YWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApp
bmRleCBmMTI4MjU1Li5iY2E0MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaApA
QCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgPE5v
dGlmaWNhdGlvblByZXNlbnRlci5oPgorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0
ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTIyNiw2ICsyMzAsMTQgQEAgY29uc3QgY2hhciogZXdrX3Nl
dHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9j
bGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a19mcmFtZV9l
ZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBld2tf
dmlld19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Cit2
b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJD
b3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a192aWV3X25vdGlmaWNh
dGlvbl9odG1sX3ZpZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NhbmNlbChFdmFz
X09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwor
dm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNzaW9uKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4pOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVz
cGx1cwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4MjgwMmMyLi5kZGEy
MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY3LDYgKzY3LDEwIEBACiAj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsLmgiCisjZW5kaWYKKwogI2RlZmluZSBaT09NX01JTiAoMC4wNSkKICNkZWZpbmUgWk9PTV9N
QVggKDQuMCkKIApAQCAtMTMxLDYgKzEzNSw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbkZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5
OworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlciAqbm90aWZpY2F0aW9uUHJlc2VudGVyOworI2VuZGlmCiAgICAgc3RydWN0IHsKICAg
ICAgICAgdm9pZCogY29udGV4dDsKICAgICAgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9D
YiBmdW5jdGlvbjsKQEAgLTYxMSw2ICs2MTgsMTAgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
ICAgICBwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNl
TW90aW9uQ2xpZW50RWZsOwogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50
ID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOwogI2VuZGlmCisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBwcml2LT5ub3RpZmljYXRpb25QcmVzZW50ZXIg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqPihuZXcgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZikpOworI2Vu
ZGlmCiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAg
ICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUg
V2ViS2l0IFBhZ2UiKTsKQEAgLTM5MjMsNiArMzkzNCwxMDQgQEAgRXdrX1BhZ2VfVmlzaWJpbGl0
eV9TdGF0ZSBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a192aWV3X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgMCk7
CisgICAgcmV0dXJuIHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlcjsKK30KKwordm9pZCBld2tf
dmlld19ub3RpZmljYXRpb25fc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgY2hhciogaWNvblVybCA9IHN0cmR1cChu
b3RpZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBjaGFyKiB0aXRsZSA9IHN0cmR1cChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUudXRm
OCgpLmRhdGEoKSk7CisgICAgY2hhciogYm9keSA9IHN0cmR1cChub3RpZmljYXRpb24tPmNvbnRl
bnRzKCkuYm9keS51dGY4KCkuZGF0YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3a19ub3Rp
ZmljYXRpb24gPSB7IHN0YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCBpY29uVXJsLCB0
aXRsZSwgYm9keSwgMCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLHNob3ciLCAodm9pZCopJmV3a19ub3RpZmlj
YXRpb24pOworCisgICAgLy8gU1RBUlQgVEVNUAorICAgIGV3a192aWV3X25vdGlmaWNhdGlvbl9k
aXNwbGF5ZWQoZXdrVmlldywgJmV3a19ub3RpZmljYXRpb24pOworICAgIC8vIEVORCBURU1QCisK
KyAgICBmcmVlKGljb25VcmwpOworICAgIGZyZWUodGl0bGUpOworICAgIGZyZWUoYm9keSk7Cit9
CisKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2h0bWxfdmlldyhFdmFzX09iamVjdCogZXdr
VmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgY2hhciog
dXJsID0gc3RyZHVwKG5vdGlmaWNhdGlvbi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgRXdrX05vdGlmaWNhdGlvbiBld2tfbm90aWZpY2F0aW9uID0geyBzdGF0aWNfY2FzdDx2
b2lkKj4obm90aWZpY2F0aW9uKSwgMCwgMCwgMCwgdXJsIH07CisKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMsaHRtbHNo
b3ciLCAodm9pZCopJmV3a19ub3RpZmljYXRpb24pOworCisgICAgZnJlZSh1cmwpOworfQorCit2
b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEV3a19Ob3RpZmljYXRp
b24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8dm9pZCo+KG5vdGlmaWNhdGlvbiks
IDAsIDAsIDAsIDAgfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxjYW5jZWwiLCAodm9pZCopJmV3a19ub3RpZmlj
YXRpb24pOworfQorCit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9yZXF1ZXN0X3Blcm1pc3Np
b24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVu
dHMscmVxdWVzdFBlcm1pc3Npb24iLCAodm9pZCopZG9tYWluKTsKKworICAgIC8vIFNUQVJUIFRF
TVAKKyAgICBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayhld2tWaWV3
LCB0cnVlLCBkb21haW4pOworICAgIC8vIEVORCBURU1QCit9CisKK3ZvaWQgZXdrX3ZpZXdfbm90
aWZpY2F0aW9uX2Rpc3BsYXllZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdr
X05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
ZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHBy
aXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCo+KHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciktPm5vdGlmaWNhdGlvbkRpc3BsYXll
ZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uLT5u
b3RpZmljYXRpb24pKTsKK30KKwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fY2xpY2tlZChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrX25v
dGlmaWNhdGlvbikKK3sKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5vdGlmaWNh
dGlvblByZXNlbnRlciktPm5vdGlmaWNhdGlvbkNsaWNrZWQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7Cit9CisKK3Zv
aWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2Nsb3NlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbikKK3sKKyAgICBFV0tf
VklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
bWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciktPm5vdGlmaWNh
dGlvbkNsb3NlZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tfbm90aWZp
Y2F0aW9uLT5ub3RpZmljYXRpb24pKTsKK30KKwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25f
ZXJyb3IoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24q
IGV3a19ub3RpZmljYXRpb24pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0
RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKKyAgICBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihwcml2LT5u
b3RpZmljYXRpb25QcmVzZW50ZXIpLT5ub3RpZmljYXRpb25FcnJvcihzdGF0aWNfY2FzdDxXZWJD
b3JlOjpOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKK30K
Kwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayhjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHBlcm1pdHRlZCwgY29uc3QgY2hhciogZG9t
YWluKQoreworICAgIGlmICghcGVybWl0dGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBFV0tf
VklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
bWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciktPnBlcm1pdHRl
ZENhbGxiYWNrQ2FsbChkb21haW4pOworfQorCit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9h
ZGRfcGVybWl0dGVkX2RvbWFpbnMoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNoYXIqKiBk
b21haW5zLCBpbnQgc2l6ZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnRE
YXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOworICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5v
dGlmaWNhdGlvblByZXNlbnRlciktPm1ha2VQZXJtaXNzaW9uQ2FjaGUoZG9tYWlucywgc2l6ZSk7
Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIEVXS1ByaXZhdGUgewogCiBXZWJDb3JlOjpQYWdlICpj
b3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKaW5kZXggZWQzMjhjMC4uY2Y4NDBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTMzOCw2ICszMzgsMTggQEAgZW51bSBfRXdrX0ZvbnRfRmFtaWx5IHsKIC8vLyBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciBAYSBfRXdrX0ZvbnRfRmFtaWx5LgogdHlwZWRlZiBlbnVtIF9Fd2tfRm9u
dF9GYW1pbHkgRXdrX0ZvbnRfRmFtaWx5OwogCisvKiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
ICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOwor
CitzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb24geworICAgIHZvaWQqIG5vdGlmaWNhdGlvbjsKKyAg
ICBjaGFyKiBpY29uVVJMOworICAgIGNoYXIqIHRpdGxlOworICAgIGNoYXIqIGJvZHk7CisgICAg
Y2hhciogdXJsOworfTsKKy8qICNlbmRpZiAqLworCiAvKioKICAqIEBicmllZiBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciBAYSBfRXdrX1RpbGVfVW51c2VkX0NhY2hlLgogICoKQEAgLTIyOTUsNiAr
MjMwNyw2NCBAQCBFQVBJIEVpbmFfQm9vbCBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX3NldChF
dmFzX09iamVjdCogbywgRXdrX1BhZ2VfVmlzaWJpbGl0eQogICovCiBFQVBJIEV3a19QYWdlX1Zp
c2liaWxpdHlfU3RhdGUgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwogCisvKiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICovCisvKioKKyAqIENh
bGxiYWNrIGNhbGwgYWZ0ZXIgdXNlciBhcHByb3ZlIGRpc3BsYXkgYSBub3RpZmljYXRpb24uCisg
KgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBicm93c2Vy
CisgKiBAcGFyYW0gcGVybWl0dGVkIHdoZXRoZXIgcGVybWl0IGEgbm90aWZpY2Fpb24gb3Igbm90
IGJ5IHVzZXIKKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRkIGEgcGVybWl0IGxp
c3QKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9j
YWxsYmFjayhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIHBlcm1pdHRlZCwg
Y29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtlIGEgY2FjaGVMaXN0IGZvciBwZXJt
aXR0ZWQgZG9tYWlucworICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBpbml0aWFsaXpp
bmcgYSBicm93c2VyIGFwcGxpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8g
cmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24g
bm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgZGlzcGxheSBldmVudAorICoKKyAqLwor
RUFQSSB2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9hZGRfcGVybWl0dGVkX2RvbWFpbnMoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8q
KgorICogTWFrZSBhIG9uZGlzcGxheSBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVy
IG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRv
IHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIKKyAqIEBwYXJhbSBFd2tfTm90aWZpY2F0aW9u
IG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNlaXZlIGRpc3BsYXkgZXZlbnQKKyAqCisgKi8K
K0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fZGlzcGxheWVkKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKik7CisKKy8qKgorICogTWFrZSBh
IG9uY2xpY2sgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24g
aXMgY2xpY2tlZAorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdl
IGZyb20gYnJvd3NlcgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBv
aW50ZXIgZm9yIHJlY2VpdmUgY2xpY2sgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmll
d19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX05vdGlmaWNhdGlvbiopOworCisvKioKKyAqIE1ha2UgYSBvbmNsb3NlIGNhbGxiYWNrIGNh
bGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAqIEBw
YXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBh
cmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgY2xv
c2UgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fY2xvc2Vk
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKik7CisK
Ky8qKgorICogTWFrZSBhIG9uZXJyb3IgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBl
cnJvciBpcyBvY2N1cmVkIGR1cmluZyBub3RpZmljYXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBw
YXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBh
cmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgZXJy
b3IgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fZXJyb3Io
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qKTsKKy8q
ICNlbmRpZiAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQppbmRleCAwMWRiMjFkLi45ZWZkMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtODUs
NyArODUsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUFUSE1MICJFbmFibGUgTWF0aE1MIiBE
RUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01FVEVSX1RBRyAiRW5hYmxlIE1ldGVy
IHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NSUNST0RBVEEgIkVuYWJs
ZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShF
TkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5hYmxlIE5ldHNjYXBlIHBsdWdpbiBBUEkiIERF
RkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBu
b3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklD
QVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJF
KEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVuYWJsZSBvcmllbnRhdGlvbiBldmVudHMiIERF
RkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkgIkVu
YWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dyZXNzIHRhZyIgREVGQVVMVCBPTikKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNWRlYmNmLi45
MDVlYzdlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMDEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVy
ZSBmb3IgRWZsIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczNTQ0CisKKyAgICAgICAgVGhpcyBpcyBhIGltcGxlbWVudGF0aW9uIGFib3V0IHdl
YiBub3RpZmljYXRpb24gZm9yIGVmbAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NN
YWtlTGlzdHMudHh0OiBBZGQgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiIHRvIGluY2x1
ZGUgZGVyZWN0b3J5IGZvciBidWlsZGluZyBEdW1wUmVuZGVyVHJlZQorICAgICAgICAqIFNjcmlw
dHMvYnVpbGQtd2Via2l0OiBBZGQgaXNFZmwoKSBmb3IgRU5BQkxFX05PVElGSUNBVElPTlMgZmVh
dHVyZQorCiAyMDExLTExLTMwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjaHJvbWl1bTogSSdkIGxpa2UgdG8gYWRkIGEg
c2NyaXB0IGZvciBydW5uaW5nIHBlcmYgdGVzdHMgZm9yIFdlYkluc3BlY3Rvci4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRleCA4NTcxMjZiLi42Yzc3ODU0IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTUsNiArMTE1LDEyIEBA
IElGIChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVE
RV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJ
RiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVtcFJl
bmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90
aWZpY2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05UU19D
T05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAgICAg
ICAgICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApp
bmRleCBlZWQyOGZmLi44NzM1YzRhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjcxLDcgKzI3MSw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJ
Tl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3Vw
cG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dn
bGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwk
bm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNB
VElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4g
XCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9u
LWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlz
QmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="commit-queue"
          id="116802"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118556</attachid>
            <date>2011-12-09 03:18:57 -0800</date>
            <delta_ts>2011-12-11 23:01:40 -0800</delta_ts>
            <desc>Add fixed patch for comments</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>21723</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjN2ZjZWEyLi5kZDVkOWI3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMDkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAg
ICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIgbm90aWZpY2F0aW9uIGZv
ciBlZmwKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUg
RU5BQkxFX05PVElGSUNBVElPTlMgZmV0dXJlCisKIDIwMTEtMTItMDggIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMDIzMjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZjQzNTEwNS4uOTY3NWIwNyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTA5ICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBXZWIgTm90aWZp
Y2F0aW9uIGZlYXR1cmUgZm9yIEVmbCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAgIFRoZXJlIGlzIGEgd2Via2l0Tm90
aWZpY2Fpb24gcHJvcGVydHkgaW4gdGhlIHdpbmRvdy5uYXZpZ2F0b3IsCisgICAgICAgIGJ1dCBl
ZmwgZG9lc24ndCBzdXBwb3J0IGl0LgorICAgICAgICBUaGlzIGlzIGEgaW1wbGVtZW50YXRpb24g
YWJvdXQgd2ViIG5vdGlmaWNhdGlvbiBmb3IgZWZsCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZs
Ojpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3cp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpu
b3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJt
aXNzaW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNwbGF5ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25D
bGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24pOgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3
ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAo
ZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
bm90aWZpY2F0aW9uX3Nob3cpOgorICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2h0bWxf
c2hvdyk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fY2FuY2VsKToKKyAgICAgICAg
KGV3a192aWV3X25vdGlmaWNhdGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24pOgorICAgICAgICAoZXdr
X3ZpZXdfbm90aWZpY2F0aW9uX2Rpc3BsYXllZCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmlj
YXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fY2xvc2VkKToK
KyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9lcnJvcik6CisgICAgICAgIChld2tfdmll
d19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAgICAgIChld2tfdmlld19u
b3RpZmljYXRpb25fYWRkX3Blcm1pdHRlZF9kb21haW5zKToKKyAgICAgICAgKiBld2svZXdrX3Zp
ZXcuaDoKKwogMjAxMS0xMi0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gSW50cm9kdWNlIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHAKaW5kZXggOWVkZmI0MC4uMWY4YjUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC00MjAsOCArNDIwLDcgQEAg
dm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlm
aWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIo
KSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGV3a192aWV3X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KG1fdmlldyk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggMTUxMzNmNS4u
ZDIxYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSwx
MSArMjEsMTQgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIK
IAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3
KQogewogfQogCkBAIC0zNSwzNSArMzgsOTAgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKIAogYm9vbCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlm
aWNhdGlvbi0+aXNIVE1MKCkpCisgICAgICAgIGV3a192aWV3X25vdGlmaWNhdGlvbl9odG1sX3No
b3cobV92aWV3LCBub3RpZmljYXRpb24pOworICAgIGVsc2UKKyAgICAgICAgZXdrX3ZpZXdfbm90
aWZpY2F0aW9uX3Nob3cobV92aWV3LCBub3RpZmljYXRpb24pOworCisgICAgbV9ub3RpZmljYXRp
b25zLmFkZChub3RpZmljYXRpb24pOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBld2tfdmlld19ub3RpZmljYXRp
b25fY2FuY2VsKG1fdmlldywgbm90aWZpY2F0aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVt
b3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3Zl
KG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkpIHsKKyAgICAgICAg
bV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBld2tfdmlld19ub3RpZmljYXRpb25fcmVx
dWVzdF9wZXJtaXNzaW9uKG1fdmlldywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1p
c3Npb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBp
ZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBQ
ZXJtaXNzaW9uRGVuaWVkOworCisgICAgcmV0dXJuIFBlcm1pc3Npb25BbGxvd2VkOworfQorCit2
b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZShj
aGFyKiogZG9tYWlucywgaW50IHNpemUpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgU3RyaW5nIGRvbWFpbihkb21haW5zW2ldKTsKKyAgICAgICAgbV9j
YWNoZWRQZXJtaXNzaW9ucy5hZGQoZG9tYWluKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29uc3QgY2hhciog
ZG9tYWluKQoreworICAgIFN0cmluZyBwZXJtaXR0ZWREb21haW4oZG9tYWluKTsKKworICAgIG1f
Y2FjaGVkUGVybWlzc2lvbnMuYWRkKHBlcm1pdHRlZERvbWFpbik7CisgICAgbV9jYWxsYmFjay5n
ZXQoKS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
K3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50
KTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkNsaWNrZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5v
dGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMo
KS5jbG9zZUV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25F
cnJvcihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZp
Y2F0aW9uLCBldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJl
bW92ZShub3RpZmljYXRpb24pOwogfQogCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkpOwogfQogCisKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCAzNWFhZGM5Li5hNmYyYmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDEzIEBA
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAg
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7
CkBAIC0zNyw3ICszNywyNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlv
bk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPik7CiAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hl
Y2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSB7IH0KKworICAgIHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9t
YWlucywgaW50IHNpemUpOworICAgIHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNo
YXIqIGRvbWFpbik7CisKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRp
b24qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKik7CisgICAg
dm9pZCBub3RpZmljYXRpb25DbG9zZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmlj
YXRpb25FcnJvcihOb3RpZmljYXRpb24qKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNlbmRFdmVu
dChOb3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisKKyAgICBF
dmFzX09iamVjdCogbV92aWV3OworCisgICAgSGFzaFNldDxOb3RpZmljYXRpb24qPiBtX25vdGlm
aWNhdGlvbnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNzaW9uczsK
KyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCA2ZjUzMzIxLi40YjkzNDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaApAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorI2luY2x1ZGUgPE5vdGlmaWNhdGlvblByZXNlbnRlci5oPgorI2VuZGlmCisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTIyMiw2ICsyMjYsMTQg
QEAgY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKIHZv
aWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCog
byk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNf
T2JqZWN0KiBvKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBld2tfdmlld19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9zaG93
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bik7Cit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9odG1sX3Nob3coRXZhc19PYmplY3QqIGV3
a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX3Zp
ZXdfbm90aWZpY2F0aW9uX2NhbmNlbChFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcmVx
dWVzdF9wZXJtaXNzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4p
OworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCAyOWJlMjE5Li44ZGViNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTY2LDYgKzY2LDEwIEBACiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGll
bnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjZW5kaWYKKwogI2RlZmluZSBaT09N
X01JTiAoMC4wNSkKICNkZWZpbmUgWk9PTV9NQVggKDQuMCkKIApAQCAtMTMwLDYgKzEzNCw5IEBA
IHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFp
bkZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRz
OwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5OworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVy
OworI2VuZGlmCiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUgbWVudTsKICAgICAgICAg
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51Q2xpZW50OwpAQCAtNjA2LDYgKzYxMywxMCBA
QCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNs
aWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRFZmw7CiAgICAgcGFnZUNsaWVu
dHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRFZmw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHBy
aXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlcio+KG5ldyBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmwoc21hcnREYXRhLT5zZWxmKSk7CisjZW5kaWYKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNv
cmU6OlBhZ2UocGFnZUNsaWVudHMpOwogICAgIGlmICghcHJpdi0+cGFnZSkgewogICAgICAgICBD
UklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJLaXQgUGFnZSIpOwpAQCAtMzgyMSw2ICszODMy
LDEwOCBAQCBFd2tfUGFnZV9WaXNpYmlsaXR5X1N0YXRlIGV3a192aWV3X3Zpc2liaWxpdHlfc3Rh
dGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX3ZpZXdf
bm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOworICAg
IHJldHVybiBwcml2LT5ub3RpZmljYXRpb25QcmVzZW50ZXI7Cit9CisKK3ZvaWQgZXdrX3ZpZXdf
bm90aWZpY2F0aW9uX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIGNoYXIqIGljb25VcmwgPSBzdHJkdXAobm90aWZp
Y2F0aW9uLT5jb250ZW50cygpLmljb24uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY2hh
ciogdGl0bGUgPSBzdHJkdXAobm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5k
YXRhKCkpOworICAgIGNoYXIqIGJvZHkgPSBzdHJkdXAobm90aWZpY2F0aW9uLT5jb250ZW50cygp
LmJvZHkudXRmOCgpLmRhdGEoKSk7CisgICAgRXdrX05vdGlmaWNhdGlvbiBld2tfbm90aWZpY2F0
aW9uID0geyBzdGF0aWNfY2FzdDx2b2lkKj4obm90aWZpY2F0aW9uKSwgaWNvblVybCwgdGl0bGUs
IGJvZHksIDAgfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmll
dywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxzaG93IiwgKHZvaWQqKSZld2tfbm90aWZpY2F0aW9u
KTsKKworICAgIGZyZWUoaWNvblVybCk7CisgICAgZnJlZSh0aXRsZSk7CisgICAgZnJlZShib2R5
KTsKK30KKwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25faHRtbF9zaG93KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBj
aGFyKiB1cmwgPSBzdHJkdXAobm90aWZpY2F0aW9uLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3a19ub3RpZmljYXRpb24gPSB7IHN0YXRpY19j
YXN0PHZvaWQqPihub3RpZmljYXRpb24pLCAwLCAwLCAwLCB1cmwgfTsKKworICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxo
dG1sc2hvdyIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7CisKKyAgICBmcmVlKHVybCk7Cit9
CisKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NhbmNlbChFdmFzX09iamVjdCogZXdrVmll
dywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRXdrX05vdGlm
aWNhdGlvbiBld2tfbm90aWZpY2F0aW9uID0geyBzdGF0aWNfY2FzdDx2b2lkKj4obm90aWZpY2F0
aW9uKSwgMCwgMCwgMCwgMCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLGNhbmNlbCIsICh2b2lkKikmZXdrX25v
dGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3JlcXVlc3RfcGVy
bWlzc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluKQoreworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixj
b250ZW50cyxyZXF1ZXN0UGVybWlzc2lvbiIsICh2b2lkKilkb21haW4pOworfQorI2VuZGlmCisK
K3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2Rpc3BsYXllZChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFy
dERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4ocHJpdi0+
bm90aWZpY2F0aW9uUHJlc2VudGVyKS0+bm90aWZpY2F0aW9uRGlzcGxheWVkKHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7
CisjZW5kaWYKK30KKwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0
aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIEVXS19WSUVXX1NEX0dFVChl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJp
dik7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKj4ocHJpdi0+bm90aWZpY2F0aW9uUHJlc2VudGVyKS0+bm90aWZpY2F0aW9uQ2xpY2tlZChz
dGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2Nsb3Nl
ZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdr
Tm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIEVXS19WSUVX
X1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0
RGF0YSwgcHJpdik7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKj4ocHJpdi0+bm90aWZpY2F0aW9uUHJlc2VudGVyKS0+bm90aWZpY2F0aW9u
Q2xvc2VkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlv
bi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30KKwordm9pZCBld2tfdmlld19ub3RpZmljYXRp
b25fZXJyb3IoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRp
b24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBF
V0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzbWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciktPm5vdGlm
aWNhdGlvbkVycm9yKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlm
aWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30KKwordm9pZCBld2tfdmlld19ub3Rp
ZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywg
RWluYV9Cb29sIHBlcm1pdCwgY29uc3QgY2hhciogZG9tYWluKQoreworI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIGlmICghcGVybWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBFV0tf
VklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
bWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCo+KHByaXYtPm5vdGlmaWNhdGlvblByZXNlbnRlciktPnBlcm1pdHRl
ZENhbGxiYWNrQ2FsbChkb21haW4pOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX3ZpZXdfbm90aWZp
Y2F0aW9uX2FkZF9wZXJtaXR0ZWRfZG9tYWlucyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywg
Y2hhcioqIGRvbWFpbnMsIGludCBzaXplKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BS
SVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4ocHJpdi0+bm90aWZpY2F0aW9uUHJlc2VudGVyKS0+
bWFrZVBlcm1pc3Npb25DYWNoZShkb21haW5zLCBzaXplKTsKKyNlbmRpZgorfQorCiBuYW1lc3Bh
Y2UgRVdLUHJpdmF0ZSB7CiAKIFdlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0IEV2YXNfT2Jq
ZWN0ICpld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBhM2FhYTY1Li5iMTQ4
MGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtMzM5LDYgKzMzOSwxNiBAQCBlbnVt
IF9Fd2tfRm9udF9GYW1pbHkgewogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tf
Rm9udF9GYW1pbHkuCiB0eXBlZGVmIGVudW0gX0V3a19Gb250X0ZhbWlseSBFd2tfRm9udF9GYW1p
bHk7CiAKK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19Ob3RpZmljYXRpb247
CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7CisgICAgdm9pZCogbm90aWZpY2F0aW9uOwor
ICAgIGNoYXIqIGljb25VUkw7CisgICAgY2hhciogdGl0bGU7CisgICAgY2hhciogYm9keTsKKyAg
ICBjaGFyKiB1cmw7Cit9OworCiAvKioKICAqIEBicmllZiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZv
ciBAYSBfRXdrX1RpbGVfVW51c2VkX0NhY2hlLgogICoKQEAgLTIyNzcsNiArMjI4Nyw2MyBAQCBF
QVBJIEVpbmFfQm9vbCBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX3NldChFdmFzX09iamVjdCog
bywgRXdrX1BhZ2VfVmlzaWJpbGl0eQogICovCiBFQVBJIEV3a19QYWdlX1Zpc2liaWxpdHlfU3Rh
dGUgZXdrX3ZpZXdfdmlzaWJpbGl0eV9zdGF0ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwog
CisvKioKKyAqIENhbGxiYWNrIGNhbGwgYWZ0ZXIgdXNlciBhcHByb3ZlIGRpc3BsYXkgYSBub3Rp
ZmljYXRpb24uCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byByZWNlaXZlIG1lc3NhZ2Ug
ZnJvbSBicm93c2VyCisgKiBAcGFyYW0gcGVybWl0dGVkIHdoZXRoZXIgcGVybWl0IGEgbm90aWZp
Y2Fpb24gb3Igbm90IGJ5IHVzZXIKKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRk
IGEgcGVybWl0IGxpc3QKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25f
cGVybWlzc2lvbl9jYWxsYmFjayhjb25zdCBFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHBlcm1p
dHRlZCwgY29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtlIGEgY2FjaGVMaXN0IGZv
ciBwZXJtaXR0ZWQgZG9tYWlucworICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBpbml0
aWFsaXppbmcgYSBicm93c2VyIGFwcGxpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZp
ZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIGRvbWFpbnMgZG9t
YWluIGxpc3Qgd2hpY2ggaXMgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZSBsaXN0CisgKiBAcGFy
YW0gc2l6ZSB0b3RhbCBudW1iZXIgb2YgZG9tYWlucworICoKKyAqLworRUFQSSB2b2lkIGV3a192
aWV3X25vdGlmaWNhdGlvbl9hZGRfcGVybWl0dGVkX2RvbWFpbnMoY29uc3QgRXZhc19PYmplY3Qg
Km8sIGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICogTWFrZSBhIG9uZGlzcGxh
eSBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBkaXNw
bGF5ZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9t
IGJyb3dzZXIKKyAqIEBwYXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVy
IGZvciByZWNlaXZlIGRpc3BsYXkgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19u
b3RpZmljYXRpb25fZGlzcGxheWVkKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfTm90
aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogTWFrZSBhIG9uY2xpY2sgY2FsbGJhY2sgY2FsbCBm
b3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24gaXMgY2xpY2tlZAorICoKKyAqIEBwYXJh
bSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFt
IEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgY2xpY2sg
ZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fY2xpY2tlZChj
b25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioK
KyAqIE1ha2UgYSBvbmNsb3NlIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90
aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2
ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgY2xvc2UgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9p
ZCBld2tfdmlld19ub3RpZmljYXRpb25fY2xvc2VkKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25z
dCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogTWFrZSBhIG9uZXJyb3IgY2FsbGJh
Y2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBlcnJvciBpcyBvY2N1cmVkIGR1cmluZyBub3RpZmlj
YXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBt
ZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0
aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgZXJyb3IgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBl
d2tfdmlld19ub3RpZmljYXRpb25fZXJyb3IoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3
a19Ob3RpZmljYXRpb24qIGVuKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2UKaW5kZXggZDJkMjFlMi4uOGUzZjUwYiAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKQEAgLTgxLDcgKzgxLDcgQEAgV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01BVEhNTCAiRW5hYmxl
IE1hdGhNTCIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NRVRFUl9UQUcgIkVu
YWJsZSBNZXRlciB0YWciIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUlDUk9E
QVRBICJFbmFibGUgSFRNTDUgbWljcm9kYXRhIHN1cHBvcnQiIERFRkFVTFQgT0ZGKQogV0VCS0lU
X0ZFQVRVUkUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgIkVuYWJsZSBOZXRzY2FwZSBwbHVn
aW4gQVBJIiBERUZBVUxUIE9GRikKLVdFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05T
ICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBPRkYpCitXRUJLSVRfRkVBVFVSRShFTkFC
TEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT04pCiBXRUJL
SVRfRkVBVFVSRShFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTICJFbmFibGUgb3JpZW50YXRpb24g
ZXZlbnRzIiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9QQUdFX1ZJU0lCSUxJ
VFlfQVBJICJFbmFibGUgUGFnZSBWaXNpYmlsaXR5IEFQSSIgREVGQVVMVCBPTikKIFdFQktJVF9G
RUFUVVJFKEVOQUJMRV9QUk9HUkVTU19UQUcgIkVuYWJsZSBwcm9ncmVzcyB0YWciIERFRkFVTFQg
T04pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YTJiYTIxNS4uODQ4MDEyYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTA5ICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBXZWIgTm90aWZpY2F0
aW9uIGZlYXR1cmUgZm9yIEVmbCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAgIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRp
b24gYWJvdXQgd2ViIG5vdGlmaWNhdGlvbiBmb3IgZWZsCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6
CisKIDIwMTEtMTItMDggIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGNvbnRyaWJ1dG9yIGFkZGl0aW9ucyB0byBjb21taXR0ZXJzLnB5Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0IGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NzEyNmIuLjQwOTUw
NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKQEAgLTExNSw2ICsx
MTUsMTMgQEAgSUYgKFdURl9VU0VfQ1VSTCkKICAgICBMSVNUKEFQUEVORCBEdW1wUmVuZGVyVHJl
ZV9JTkNMVURFX0RJUkVDVE9SSUVTICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvY3Vy
bCkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVO
RCBEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQkNPUkVf
RElSfS9ub3RpZmljYXRpb25zIgorICAgICkKK0VORElGICgpCisKKwogQUREX0RFRklOSVRJT05T
KC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMi
CiAgICAgICAgICAgICAgICAgLUREQVRBX0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uODczNWM0YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3MSw3
ICsyNzEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRT
Q0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2Fw
ZVBsdWdpblN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVz
YyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2
YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSks
IHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJv
cmllbnRhdGlvbi1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVm
YXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBv
cnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118735</attachid>
            <date>2011-12-11 23:01:40 -0800</date>
            <delta_ts>2011-12-11 23:13:48 -0800</delta_ts>
            <desc>Separate functions for the notification from ewk_view to ewk_notification</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>23238</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi45MTM4ZmI5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAg
ICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIgbm90aWZpY2F0aW9uIGZv
ciBlZmwKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUg
RU5BQkxFX05PVElGSUNBVElPTlMgZmV0dXJlCisKIDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXot
UGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0g
cmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBp
cyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NN
YWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5k
ZXggYzVlZjY1Ni4uY2ZhMDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VM
aXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAg
LTYwLDYgKzYwLDkgQEAgSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICBMSVNUKEFQUEVORCBX
ZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRp
b25zIgogICApCisgIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgZWZsL2V3ay9ld2tf
bm90aWZpY2F0aW9uLmNwcAorICApCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY0MzUxMDUuLjRiNjAxNmQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2ViIE5vdGlmaWNhdGlvbiBmZWF0
dXJlIGZvciBFZmwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBUaGVyZSBpcyBhIHdlYmtpdE5vdGlmaWNhaW9uIHBy
b3BlcnR5IGluIHRoZSB3aW5kb3cubmF2aWdhdG9yLAorICAgICAgICBidXQgZWZsIGRvZXNuJ3Qg
c3VwcG9ydCBpdC4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIg
bm90aWZpY2F0aW9uIGZvciBlZmwKKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkRpc3BsYXllZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRF
dmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL2V3a19ub3Rp
ZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2Nsb3NlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Vycm9yKToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2FkZF9wZXJtaXR0ZWRfZG9tYWlucyk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KToKKyAgICAgICAgKGV3a19u
b3RpZmljYXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9w
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
KwogMjAxMS0xMi0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gSW50cm9kdWNlIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5k
ZXggOWVkZmI0MC4uMDJjMDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFj
dGlvbi5oIgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgImV3a19ub3RpZmlj
YXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNl
bmRpZgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVFZmwuaCIKQEAgLTU1LDEwICs1OSw2IEBACiAjaW5j
bHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFi
YXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtNDIwLDggKzQy
MCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9uUHJl
c2VudGVyKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBld2tfbm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQobV92aWV3KTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCAxNTEzM2Y1
Li42ZDM3OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKQEAgLTIx
LDExICsyMSwxNSBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
IgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVj
dCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQogewogfQogCkBAIC0zNSwzNCArMzksODggQEAg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKCkKIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkpCisgICAgICAgIGV3
a19ub3RpZmljYXRpb25faHRtbF9zaG93KG1fdmlldywgbm90aWZpY2F0aW9uKTsKKyAgICBlbHNl
CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fc2hvdyhtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisK
KyAgICBtX25vdGlmaWNhdGlvbnMuYWRkKG5vdGlmaWNhdGlvbik7CisKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbChOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGV3
a19ub3RpZmljYXRpb25fY2FuY2VsKG1fdmlldywgbm90aWZpY2F0aW9uKTsKKyAgICBtX25vdGlm
aWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX25vdGlmaWNh
dGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkp
IHsKKyAgICAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBld2tfbm90aWZpY2F0
aW9uX3JlcXVlc3RfcGVybWlzc2lvbihtX3ZpZXcsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgfQogfQogCiBOb3RpZmljYXRpb25QcmVz
ZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Bl
cm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOworICAgIGlmICghbV9jYWNo
ZWRQZXJtaXNzaW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOwor
CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKworICAgIHJldHVybiBQZXJtaXNzaW9uQWxsb3dlZDsK
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9u
Q2FjaGUoY2hhcioqIGRvbWFpbnMsIGludCBzaXplKQoreworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0cmluZyBkb21haW4oZG9tYWluc1tpXSk7CisgICAg
ICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRkKGRvbWFpbik7CisgICAgfQorfQorCit2b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0
IGNoYXIqIGRvbWFpbikKK3sKKyAgICBTdHJpbmcgcGVybWl0dGVkRG9tYWluKGRvbWFpbik7CisK
KyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChwZXJtaXR0ZWREb21haW4pOworICAgIG1fY2Fs
bGJhY2suZ2V0KCktPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNwbGF5ZWQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmRpc3Bs
YXlFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3Rp
ZmljYXRpb25DbGlja2VkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRF
dmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKK30KKwordm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNsb3NlZChOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVu
dE5hbWVzKCkuY2xvc2VFdmVudCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmlj
YXRpb24pOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uRXJyb3IoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgc2VuZEV2ZW50
KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOworICAgIG1fbm90aWZpY2F0
aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNl
bmRFdmVudChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudE5hbWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRydWUpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCAzNWFhZGM5Li5hNmYyYmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDEzIEBACiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBA
IC0zNyw3ICszNywyNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
Pik7CiAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSB7IH0KKworICAgIHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlu
cywgaW50IHNpemUpOworICAgIHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIq
IGRvbWFpbik7CisKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRpb24q
KTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9p
ZCBub3RpZmljYXRpb25DbG9zZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmljYXRp
b25FcnJvcihOb3RpZmljYXRpb24qKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNlbmRFdmVudChO
b3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisKKyAgICBFdmFz
X09iamVjdCogbV92aWV3OworCisgICAgSGFzaFNldDxOb3RpZmljYXRpb24qPiBtX25vdGlmaWNh
dGlvbnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNzaW9uczsKKyAg
ICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmU4YzkwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbC5oIgorCisjaW5jbHVkZSA8RXZhcy5oPgorCit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fZGlzcGxheWVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tf
Tm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIoKS0+Y2xpZW50KCkpLT5ub3RpZmljYXRpb25EaXNwbGF5ZWQoc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRp
ZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5u
b3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+bm90aWZpY2F0aW9uQ2xpY2tlZChz
dGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbG9zZWQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3Jl
UGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm5vdGlm
aWNhdGlvbkNsb3NlZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9lcnJvcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNh
dGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVX
S1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNs
aWVudCgpKS0+bm90aWZpY2F0aW9uRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2b2lk
IGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayhjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldywgRWluYV9Cb29sIHBlcm1pdCwgY29uc3QgY2hhciogZG9tYWluKQoreworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGlmICghcGVybWl0KQorICAgICAgICByZXR1cm47CisK
KyAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwq
PihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigp
LT5jbGllbnQoKSktPnBlcm1pdHRlZENhbGxiYWNrQ2FsbChkb21haW4pOworI2VuZGlmCit9CisK
K3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9hZGRfcGVybWl0dGVkX2RvbWFpbnMoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSkKK3sKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0
aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm1ha2VQZXJtaXNzaW9uQ2FjaGUoZG9tYWlucywg
c2l6ZSk7CisjZW5kaWYKK30KKworV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBld2tf
bm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250
cm9sbGVyKCktPmNsaWVudCgpKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Nob3coRXZh
c19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQor
eworICAgIGNoYXIqIGljb25VcmwgPSBzdHJkdXAobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmlj
b24uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY2hhciogdGl0bGUgPSBzdHJkdXAobm90
aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIGNoYXIqIGJv
ZHkgPSBzdHJkdXAobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmJvZHkudXRmOCgpLmRhdGEoKSk7
CisgICAgRXdrX05vdGlmaWNhdGlvbiBld2tfbm90aWZpY2F0aW9uID0geyBzdGF0aWNfY2FzdDx2
b2lkKj4obm90aWZpY2F0aW9uKSwgaWNvblVybCwgdGl0bGUsIGJvZHksIDAgfTsKKworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250
ZW50cyxzaG93IiwgKHZvaWQqKSZld2tfbm90aWZpY2F0aW9uKTsKKworICAgIGZyZWUoaWNvblVy
bCk7CisgICAgZnJlZSh0aXRsZSk7CisgICAgZnJlZShib2R5KTsKK30KKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX2h0bWxfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgY2hhciogdXJsID0gc3RyZHVwKG5vdGlmaWNh
dGlvbi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgRXdrX05vdGlmaWNhdGlv
biBld2tfbm90aWZpY2F0aW9uID0geyBzdGF0aWNfY2FzdDx2b2lkKj4obm90aWZpY2F0aW9uKSwg
MCwgMCwgMCwgdXJsIH07CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMsaHRtbHNob3ciLCAodm9pZCopJmV3a19ub3Rp
ZmljYXRpb24pOworCisgICAgZnJlZSh1cmwpOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25f
Y2FuY2VsKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbikKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3a19ub3RpZmljYXRpb24gPSB7IHN0
YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCAwLCAwLCAwLCAwIH07CisKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVu
dHMsY2FuY2VsIiwgKHZvaWQqKSZld2tfbm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX3JlcXVlc3RfcGVybWlzc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogZG9tYWluKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxyZXF1ZXN0UGVybWlzc2lvbiIsICh2b2lkKilk
b21haW4pOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlm
aWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTJjZjI5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApAQCAtMCwwICsxLDEx
NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25faAor
CisvLyNpbmNsdWRlICJld2tfZnJhbWUuaCIKKy8vI2luY2x1ZGUgImV3a19oaXN0b3J5LmgiCisv
LyNpbmNsdWRlICJld2tfanMuaCIKKy8vI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXMuaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50
ZXIuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKy8vI2luY2x1ZGUgPGNhaXJvLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX0V3
a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlvbjsKKworc3RydWN0IF9Fd2tfTm90aWZpY2F0
aW9uIHsKKyAgICB2b2lkKiBub3RpZmljYXRpb247CisgICAgY2hhciogaWNvblVSTDsKKyAgICBj
aGFyKiB0aXRsZTsKKyAgICBjaGFyKiBib2R5OworICAgIGNoYXIqIHVybDsKK307CisKKy8qKgor
ICogQ2FsbGJhY2sgY2FsbCBhZnRlciB1c2VyIGFwcHJvdmUgZGlzcGxheSBhIG5vdGlmaWNhdGlv
bi4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJy
b3dzZXIKKyAqIEBwYXJhbSBwZXJtaXR0ZWQgd2hldGhlciBwZXJtaXQgYSBub3RpZmljYWlvbiBv
ciBub3QgYnkgdXNlcgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQgYSBwZXJt
aXQgbGlzdAorICoKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9j
YWxsYmFjayhjb25zdCBFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHBlcm1pdHRlZCwgY29uc3Qg
Y2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtlIGEgY2FjaGVMaXN0IGZvciBwZXJtaXR0ZWQg
ZG9tYWlucworICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBpbml0aWFsaXppbmcgYSBi
cm93c2VyIGFwcGxpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2
ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIGRvbWFpbnMgZG9tYWluIGxpc3Qgd2hp
Y2ggaXMgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZSBsaXN0CisgKiBAcGFyYW0gc2l6ZSB0b3Rh
bCBudW1iZXIgb2YgZG9tYWlucworICoKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25f
YWRkX3Blcm1pdHRlZF9kb21haW5zKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjaGFyKiogZG9tYWlu
cywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2UgYSBvbmRpc3BsYXkgY2FsbGJhY2sgY2FsbCBm
b3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24gaXMgZGlzcGxheWVkCisgKgorICogQHBh
cmFtIGV3a1ZpZXcgdmlldyB0byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBicm93c2VyCisgKiBAcGFy
YW0gRXdrX05vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBkaXNw
bGF5IGV2ZW50CisgKgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwbGF5ZWQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuKTsKKworLyoq
CisgKiBNYWtlIGEgb25jbGljayBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5v
dGlmaWNhdGlvbiBpcyBjbGlja2VkCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byByZWNl
aXZlIG1lc3NhZ2UgZnJvbSBicm93c2VyCisgKiBAcGFyYW0gRXdrX05vdGlmaWNhdGlvbiBub3Rp
ZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBjbGljayBldmVudAorICoKKyAqLworRUFQSSB2
b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3Qg
RXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIE1ha2UgYSBvbmNsb3NlIGNhbGxiYWNr
IGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAq
IEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICog
QHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUg
Y2xvc2UgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3NlZChj
b25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioK
KyAqIE1ha2UgYSBvbmVycm9yIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgaWYgZXJyb3Ig
aXMgb2NjdXJlZCBkdXJpbmcgbm90aWZpY2F0aW9uIGlzIHByb2NlZWQKKyAqCisgKiBAcGFyYW0g
ZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIKKyAqIEBwYXJhbSBF
d2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNlaXZlIGVycm9yIGV2
ZW50CisgKgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJvcihjb25zdCBFdmFz
X09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCitXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fc2hvdyhFdmFzX09i
amVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Nh
bmNlbChFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pOwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlcXVlc3RfcGVybWlzc2lvbihFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKaW5kZXggMjliZTIxOS4uOTA3NTEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMCBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0
aW9uQ2xpZW50RWZsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2VuZGlmCisKICNkZWZp
bmUgWk9PTV9NSU4gKDAuMDUpCiAjZGVmaW5lIFpPT01fTUFYICg0LjApCiAKQEAgLTYwNiw2ICs2
MTAsMTAgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VN
b3Rpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOwogICAgIHBh
Z2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uQ2xpZW50RWZsOwogI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgcGFnZUNsaWVudHMubm90aWZpY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOworI2VuZGlmCisKICAgICBw
cml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMpOwogICAgIGlmICghcHJp
di0+cGFnZSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJLaXQgUGFn
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCBkMmQyMWUyLi44ZTNmNTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUFUSE1M
ICJFbmFibGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01FVEVS
X1RBRyAiRW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJM
RV9NSUNST0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVGQVVMVCBPRkYp
CiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5hYmxlIE5ldHNj
YXBlIHBsdWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElG
SUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dFQktJVF9GRUFU
VVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBP
TikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVuYWJsZSBvcmll
bnRhdGlvbiBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BBR0Vf
VklTSUJJTElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZBVUxUIE9OKQog
V0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dyZXNzIHRhZyIg
REVGQVVMVCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAxZDE1OWY0Li4wYTkzMmZkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTEgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIFdlYiBO
b3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgVGhpcyBpcyBhbiBpbXBs
ZW1lbnRhdGlvbiBhYm91dCB3ZWIgbm90aWZpY2F0aW9uIGZvciBlZmwKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxk
LXdlYmtpdDoKKwogMjAxMS0xMi0xMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1JlZmFjdG9yaW5nXSBNb3ZlIHRvcC1sZXZlbCBjb2RlIHRvIGdlbmVy
YXRlIGEgbmV3IENoYW5nZUxvZyBpbnRvIGEgbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
Q01ha2VMaXN0cy50eHQKaW5kZXggODU3MTI2Yi4uNmM3Nzg1NCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtMTE1LDYgKzExNSwxMiBAQCBJRiAoV1RGX1VTRV9D
VVJMKQogICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5ESUYgKCkKIAorSUYgKEVO
QUJMRV9OT1RJRklDQVRJT05TKQorICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xV
REVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisg
ICAgKQorRU5ESUYgKCkKKwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9P
TFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAgICAgICAgICAgLUREQVRB
X0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4u
ODczNWM0YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3MSw3ICsyNzEsNyBAQCBteSBAZmVhdHVyZXMg
PSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVs
dCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1cHBvcnQgfSwKIAogICAg
IHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90
aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElP
TlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNT
dXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVs
dCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9u
c1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1ldmVudHMiLCBkZXNj
ID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwg
dmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118738</attachid>
            <date>2011-12-11 23:13:48 -0800</date>
            <delta_ts>2011-12-13 23:23:15 -0800</delta_ts>
            <desc>Separate functions for the notification from ewk_view to ewk_notification</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>22736</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi45MTM4ZmI5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAg
ICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIgbm90aWZpY2F0aW9uIGZv
ciBlZmwKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUg
RU5BQkxFX05PVElGSUNBVElPTlMgZmV0dXJlCisKIDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXot
UGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0g
cmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBp
cyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NN
YWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5k
ZXggYzVlZjY1Ni4uY2ZhMDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VM
aXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAg
LTYwLDYgKzYwLDkgQEAgSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICBMSVNUKEFQUEVORCBX
ZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRp
b25zIgogICApCisgIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgZWZsL2V3ay9ld2tf
bm90aWZpY2F0aW9uLmNwcAorICApCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY0MzUxMDUuLjRiNjAxNmQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2ViIE5vdGlmaWNhdGlvbiBmZWF0
dXJlIGZvciBFZmwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBUaGVyZSBpcyBhIHdlYmtpdE5vdGlmaWNhaW9uIHBy
b3BlcnR5IGluIHRoZSB3aW5kb3cubmF2aWdhdG9yLAorICAgICAgICBidXQgZWZsIGRvZXNuJ3Qg
c3VwcG9ydCBpdC4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIg
bm90aWZpY2F0aW9uIGZvciBlZmwKKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkRpc3BsYXllZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRF
dmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL2V3a19ub3Rp
ZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2Nsb3NlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Vycm9yKToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2FkZF9wZXJtaXR0ZWRfZG9tYWlucyk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KToKKyAgICAgICAgKGV3a19u
b3RpZmljYXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9w
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
KwogMjAxMS0xMi0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gSW50cm9kdWNlIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5k
ZXggOWVkZmI0MC4uZDQwMjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCkBAIC00MjAsOCArNDIxLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRF
Zmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNlbnRlciog
Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGV3a19ub3RpZmljYXRp
b25fcHJlc2VudGVyX2dldChtX3ZpZXcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IDE1MTMzZjUuLjZkMzc5ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsMTEgKzIxLDE1IEBACiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZp
ZXcpCiB7CiB9CiAKQEAgLTM1LDM0ICszOSw4OCBAQCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQogCiBib29sIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobm90
aWZpY2F0aW9uLT5pc0hUTUwoKSkKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9odG1sX3Nob3co
bV92aWV3LCBub3RpZmljYXRpb24pOworICAgIGVsc2UKKyAgICAgICAgZXdrX25vdGlmaWNhdGlv
bl9zaG93KG1fdmlldywgbm90aWZpY2F0aW9uKTsKKworICAgIG1fbm90aWZpY2F0aW9ucy5hZGQo
bm90aWZpY2F0aW9uKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZXdrX25vdGlmaWNhdGlvbl9jYW5jZWwobV92
aWV3LCBub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0
aW9uKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNh
dGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9u
KTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2Nh
Y2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkgeworICAgICAgICBtX2NhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNzaW9uKG1f
dmlldywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFBl
cm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBpZiAobV9jYWNoZWRQZXJtaXNz
aW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpID09IG1fY2Fj
aGVkUGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOwor
CisgICAgcmV0dXJuIFBlcm1pc3Npb25BbGxvd2VkOworfQorCit2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50
IHNpemUpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAg
U3RyaW5nIGRvbWFpbihkb21haW5zW2ldKTsKKyAgICAgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5h
ZGQoZG9tYWluKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29uc3QgY2hhciogZG9tYWluKQoreworICAgIFN0
cmluZyBwZXJtaXR0ZWREb21haW4oZG9tYWluKTsKKworICAgIG1fY2FjaGVkUGVybWlzc2lvbnMu
YWRkKHBlcm1pdHRlZERvbWFpbik7CisgICAgbV9jYWxsYmFjay5nZXQoKS0+aGFuZGxlRXZlbnQo
KTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkRpc3BsYXllZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQo
bm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50KTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorewor
ICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAg
ICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcihOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVz
KCkuZXJyb3JFdmVudCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24p
OwogfQogCi12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVz
dHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50KE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lLCBmYWxzZSwgdHJ1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbC5oCmluZGV4IDM1YWFkYzkuLmE2ZjJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbC5oCkBAIC0yMywxMyArMjMsMTMgQEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRp
b25QcmVzZW50ZXIgewotCiBwdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKCk7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2
aWV3KTsKICAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKTsKQEAgLTM3LDcgKzM3LDI0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlv
biopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0
c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQorCisgICAgdm9pZCBt
YWtlUGVybWlzc2lvbkNhY2hlKGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSk7CisgICAgdm9pZCBw
ZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29uc3QgY2hhciogZG9tYWluKTsKKworICAgIHZvaWQgbm90
aWZpY2F0aW9uRGlzcGxheWVkKE5vdGlmaWNhdGlvbiopOworICAgIHZvaWQgbm90aWZpY2F0aW9u
Q2xpY2tlZChOb3RpZmljYXRpb24qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChOb3Rp
ZmljYXRpb24qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkVycm9yKE5vdGlmaWNhdGlvbiopOwor
Citwcml2YXRlOgorICAgIHZvaWQgc2VuZEV2ZW50KE5vdGlmaWNhdGlvbiosIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisKKyAgICBI
YXNoU2V0PE5vdGlmaWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoU2V0PFdURjo6
U3RyaW5nPiBtX2NhY2hlZFBlcm1pc3Npb25zOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1f
Y2FsbGJhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X25vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NDA4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApA
QCAtMCwwICsxLDExNiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0
aW9uLmgiCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNp
bmNsdWRlIDxFdmFzLmg+CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwbGF5ZWQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFn
ZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm5vdGlmaWNh
dGlvbkRpc3BsYXllZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9jbGlja2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZp
Y2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4o
RVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+
Y2xpZW50KCkpLT5ub3RpZmljYXRpb25DbGlja2VkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30KKwor
dm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3NlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRp
b25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+bm90aWZpY2F0aW9uQ2xvc2VkKHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7
CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9yKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmll
dyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpLT5ub3RpZmljYXRpb25FcnJv
cihzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9uX2NhbGxiYWNrKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgcGVybWl0
LCBjb25zdCBjaGFyKiBkb21haW4pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
aWYgKCFwZXJtaXQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3
a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+cGVybWl0dGVkQ2Fs
bGJhY2tDYWxsKGRvbWFpbik7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Fk
ZF9wZXJtaXR0ZWRfZG9tYWlucyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY2hhcioqIGRv
bWFpbnMsIGludCBzaXplKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZh
dGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgp
KS0+bWFrZVBlcm1pc3Npb25DYWNoZShkb21haW5zLCBzaXplKTsKKyNlbmRpZgorfQorCitXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29y
ZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpOworfQor
Cit2b2lkIGV3a19ub3RpZmljYXRpb25fc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgY2hhciogaWNvblVybCA9IHN0
cmR1cChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBjaGFyKiB0aXRsZSA9IHN0cmR1cChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0
bGUudXRmOCgpLmRhdGEoKSk7CisgICAgY2hhciogYm9keSA9IHN0cmR1cChub3RpZmljYXRpb24t
PmNvbnRlbnRzKCkuYm9keS51dGY4KCkuZGF0YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3
a19ub3RpZmljYXRpb24gPSB7IHN0YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCBpY29u
VXJsLCB0aXRsZSwgYm9keSwgMCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLHNob3ciLCAodm9pZCopJmV3a19u
b3RpZmljYXRpb24pOworCisgICAgZnJlZShpY29uVXJsKTsKKyAgICBmcmVlKHRpdGxlKTsKKyAg
ICBmcmVlKGJvZHkpOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sK
KyAgICBjaGFyKiB1cmwgPSBzdHJkdXAobm90aWZpY2F0aW9uLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3a19ub3RpZmljYXRpb24gPSB7IHN0
YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCAwLCAwLCAwLCB1cmwgfTsKKworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250
ZW50cyxodG1sc2hvdyIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7CisKKyAgICBmcmVlKHVy
bCk7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEV3a19Ob3Rp
ZmljYXRpb24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8dm9pZCo+KG5vdGlmaWNh
dGlvbiksIDAsIDAsIDAsIDAgfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxjYW5jZWwiLCAodm9pZCopJmV3a19u
b3RpZmljYXRpb24pOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNz
aW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4pCit7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRl
bnRzLHJlcXVlc3RQZXJtaXNzaW9uIiwgKHZvaWQqKWRvbWFpbik7Cit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmExMjBiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9u
X2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKworI2luY2x1ZGUgPEV2YXMu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVm
IHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCitzdHJ1Y3QgX0V3
a19Ob3RpZmljYXRpb24geworICAgIHZvaWQqIG5vdGlmaWNhdGlvbjsKKyAgICBjaGFyKiBpY29u
VVJMOworICAgIGNoYXIqIHRpdGxlOworICAgIGNoYXIqIGJvZHk7CisgICAgY2hhciogdXJsOwor
fTsKKworLyoqCisgKiBDYWxsYmFjayBjYWxsIGFmdGVyIHVzZXIgYXBwcm92ZSBkaXNwbGF5IGEg
bm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNz
YWdlIGZyb20gYnJvd3NlcgorICogQHBhcmFtIHBlcm1pdHRlZCB3aGV0aGVyIHBlcm1pdCBhIG5v
dGlmaWNhaW9uIG9yIG5vdCBieSB1c2VyCisgKiBAcGFyYW0gZG9tYWluIGRvbWFpbiBVUkwgZm9y
IGFkZCBhIHBlcm1pdCBsaXN0CisgKgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9uX2NhbGxiYWNrKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgcGVybWl0
dGVkLCBjb25zdCBjaGFyKiBkb21haW4pOworCisvKioKKyAqIE1ha2UgYSBjYWNoZUxpc3QgZm9y
IHBlcm1pdHRlZCBkb21haW5zCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGluaXRp
YWxpemluZyBhIGJyb3dzZXIgYXBwbGljYXRpb24uCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmll
dyB0byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBicm93c2VyCisgKiBAcGFyYW0gZG9tYWlucyBkb21h
aW4gbGlzdCB3aGljaCBpcyBhZGRlZCB0byBwZXJtaXNzaW9uIGNhY2hlIGxpc3QKKyAqIEBwYXJh
bSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKgorICovCitFQVBJIHZvaWQgZXdrX25v
dGlmaWNhdGlvbl9hZGRfcGVybWl0dGVkX2RvbWFpbnMoY29uc3QgRXZhc19PYmplY3QgKm8sIGNo
YXIqKiBkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICogTWFrZSBhIG9uZGlzcGxheSBjYWxs
YmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQK
KyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dz
ZXIKKyAqIEBwYXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciBy
ZWNlaXZlIGRpc3BsYXkgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9u
X2Rpc3BsYXllZChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiog
ZW4pOworCisvKioKKyAqIE1ha2UgYSBvbmNsaWNrIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3Jp
cHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2
aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIKKyAqIEBwYXJhbSBFd2tfTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNlaXZlIGNsaWNrIGV2ZW50CisgKgor
ICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKGNvbnN0IEV2YXNfT2JqZWN0
ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogTWFrZSBhIG9uY2xv
c2UgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24gaXMgY2xv
c2VkCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBi
cm93c2VyCisgKiBAcGFyYW0gRXdrX05vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gcG9pbnRlciBm
b3IgcmVjZWl2ZSBjbG9zZSBldmVudAorICoKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRp
b25fY2xvc2VkKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBl
bik7CisKKy8qKgorICogTWFrZSBhIG9uZXJyb3IgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlw
dCBpZiBlcnJvciBpcyBvY2N1cmVkIGR1cmluZyBub3RpZmljYXRpb24gaXMgcHJvY2VlZAorICoK
KyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3Nlcgor
ICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2Vp
dmUgZXJyb3IgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9y
KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKK1dl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX25vdGlmaWNhdGlvbl9wcmVzZW50ZXJf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9z
aG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fY2FuY2VsKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNz
aW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4pOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25faAorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAyOWJlMjE5Li45MDc1MTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY2LDYgKzY2LDEwIEBACiAjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjZW5k
aWYKKwogI2RlZmluZSBaT09NX01JTiAoMC4wNSkKICNkZWZpbmUgWk9PTV9NQVggKDQuMCkKIApA
QCAtNjA2LDYgKzYxMCwxMCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3Zp
ZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHBhZ2VDbGll
bnRzLmRldmljZU1vdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRF
Zmw7CiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBuZXcgV2ViQ29y
ZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyAgICBwYWdlQ2xpZW50cy5ub3RpZmljYXRpb25DbGllbnQgPSBuZXcgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CisjZW5k
aWYKKwogICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xpZW50cyk7CiAg
ICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRl
IFdlYktpdCBQYWdlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGQyZDIxZTIuLjhlM2Y1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC04MSw3ICs4MSw3IEBAIFdFQktJVF9GRUFUVVJFKEVO
QUJMRV9NQVRITUwgIkVuYWJsZSBNYXRoTUwiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShF
TkFCTEVfTUVURVJfVEFHICJFbmFibGUgTWV0ZXIgdGFnIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZF
QVRVUkUoRU5BQkxFX01JQ1JPREFUQSAiRW5hYmxlIEhUTUw1IG1pY3JvZGF0YSBzdXBwb3J0IiBE
RUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJICJF
bmFibGUgTmV0c2NhcGUgcGx1Z2luIEFQSSIgREVGQVVMVCBPRkYpCi1XRUJLSVRfRkVBVFVSRShF
TkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT0ZGKQor
V0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25z
IiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyAi
RW5hYmxlIG9yaWVudGF0aW9uIGV2ZW50cyIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShF
TkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSAiRW5hYmxlIFBhZ2UgVmlzaWJpbGl0eSBBUEkiIERF
RkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUFJPR1JFU1NfVEFHICJFbmFibGUgcHJv
Z3Jlc3MgdGFnIiBERUZBVUxUIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDFkMTU5ZjQuLjBhOTMyZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMi0x
MSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZM
XSBBZGQgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlIGZvciBFZmwgcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBUaGlz
IGlzIGFuIGltcGxlbWVudGF0aW9uIGFib3V0IHdlYiBub3RpZmljYXRpb24gZm9yIGVmbAorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNj
cmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDExLTEyLTExICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgdG9wLWxldmVsIGNv
ZGUgdG8gZ2VuZXJhdGUgYSBuZXcgQ2hhbmdlTG9nIGludG8gYSBtZXRob2QKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRleCA4NTcxMjZiLi42Yzc3ODU0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTUsNiArMTE1LDEyIEBAIElG
IChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9E
SVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJRiAo
KQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVtcFJlbmRl
clRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZp
Y2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05UU19DT05G
X0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAgICAgICAg
ICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRl
eCBlZWQyOGZmLi44NzM1YzRhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjcxLDcgKzI3MSw3IEBAIG15
IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9B
UEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUg
RGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
Tk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90
aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElP
TlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRu
b3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2
ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxh
Y2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119165</attachid>
            <date>2011-12-13 23:23:15 -0800</date>
            <delta_ts>2011-12-14 03:40:37 -0800</delta_ts>
            <desc>It&apos;s fixed about commented</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>23251</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi45MTM4ZmI5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgRWZsIHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAg
ICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIgbm90aWZpY2F0aW9uIGZv
ciBlZmwKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUg
RU5BQkxFX05PVElGSUNBVElPTlMgZmV0dXJlCisKIDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXot
UGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0g
cmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBp
cyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NN
YWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5k
ZXggYzVlZjY1Ni4uY2ZhMDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VM
aXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAg
LTYwLDYgKzYwLDkgQEAgSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICBMSVNUKEFQUEVORCBX
ZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRp
b25zIgogICApCisgIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgZWZsL2V3ay9ld2tf
bm90aWZpY2F0aW9uLmNwcAorICApCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY0MzUxMDUuLjRiNjAxNmQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgV2ViIE5vdGlmaWNhdGlvbiBmZWF0
dXJlIGZvciBFZmwgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBUaGVyZSBpcyBhIHdlYmtpdE5vdGlmaWNhaW9uIHBy
b3BlcnR5IGluIHRoZSB3aW5kb3cubmF2aWdhdG9yLAorICAgICAgICBidXQgZWZsIGRvZXNuJ3Qg
c3VwcG9ydCBpdC4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBhYm91dCB3ZWIg
bm90aWZpY2F0aW9uIGZvciBlZmwKKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkRpc3BsYXllZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRF
dmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL2V3a19ub3Rp
ZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2Nsb3NlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Vycm9yKToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2FkZF9wZXJtaXR0ZWRfZG9tYWlucyk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KToKKyAgICAgICAgKGV3a19u
b3RpZmljYXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9w
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToK
KwogMjAxMS0xMi0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gSW50cm9kdWNlIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5k
ZXggOWVkZmI0MC4uZDQwMjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCkBAIC00MjAsOCArNDIxLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRF
Zmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNlbnRlciog
Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGV3a19ub3RpZmljYXRp
b25fcHJlc2VudGVyX2dldChtX3ZpZXcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IDE1MTMzZjUuLjAyNTRhMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsMTEgKzIxLDE2IEBACiAjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmpl
Y3QqIHZpZXcpCisgICAgOiBtX3ZpZXcodmlldykKIHsKIH0KIApAQCAtMzUsMzQgKzQwLDg4IEBA
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCgpCiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKQorICAgICAgICBl
d2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdyhtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgZWxz
ZQorICAgICAgICBld2tfbm90aWZpY2F0aW9uX3Nob3cobV92aWV3LCBub3RpZmljYXRpb24pOwor
CisgICAgbV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24pOworCisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwoTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBl
d2tfbm90aWZpY2F0aW9uX2NhbmNlbChtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgbV9ub3Rp
ZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ub3RpZmlj
YXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgp
KSB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgZXdrX25vdGlmaWNh
dGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24obV92aWV3LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KIH0KIAogTm90aWZpY2F0aW9uUHJl
c2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKyAgICBpZiAoIW1fY2Fj
aGVkUGVybWlzc2lvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsK
KworICAgIGlmIChtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lv
bkNhY2hlKGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICBTdHJpbmcgZG9tYWluKGRvbWFpbnNbaV0pOworICAg
ICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChkb21haW4pOworICAgIH0KK30KKwordm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25z
dCBjaGFyKiBkb21haW4pCit7CisgICAgU3RyaW5nIHBlcm1pdHRlZERvbWFpbihkb21haW4pOwor
CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQocGVybWl0dGVkRG9tYWluKTsKKyAgICBtX2Nh
bGxiYWNrLmdldCgpLT5oYW5kbGVFdmVudCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRGlzcGxheWVkKE5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQoreworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5kaXNw
bGF5RXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90
aWZpY2F0aW9uQ2xpY2tlZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5k
RXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7Cit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZl
bnROYW1lcygpLmNsb3NlRXZlbnQpOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZp
Y2F0aW9uKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlm
aWNhdGlvbkVycm9yKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVu
dChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX25vdGlmaWNh
dGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpz
ZW5kRXZlbnQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG5vdGlmaWNhdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBub3RpZmljYXRpb24tPmRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKaW5kZXggMzVhYWRjOS4uYTZmMmJhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxMyBAQAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsIDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRlciB7Ci0KIHB1YmxpYzoKLSAgICBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKKyAgICBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwogICAgIH5Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOwpA
QCAtMzcsNyArMzcsMjQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25P
YmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4pOwogICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNr
UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgeyB9CisKKyAgICB2b2lkIG1ha2VQZXJtaXNzaW9uQ2FjaGUoY2hhcioqIGRvbWFp
bnMsIGludCBzaXplKTsKKyAgICB2b2lkIHBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25zdCBjaGFy
KiBkb21haW4pOworCisgICAgdm9pZCBub3RpZmljYXRpb25EaXNwbGF5ZWQoTm90aWZpY2F0aW9u
Kik7CisgICAgdm9pZCBub3RpZmljYXRpb25DbGlja2VkKE5vdGlmaWNhdGlvbiopOworICAgIHZv
aWQgbm90aWZpY2F0aW9uQ2xvc2VkKE5vdGlmaWNhdGlvbiopOworICAgIHZvaWQgbm90aWZpY2F0
aW9uRXJyb3IoTm90aWZpY2F0aW9uKik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzZW5kRXZlbnQo
Tm90aWZpY2F0aW9uKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOworCisgICAgRXZh
c19PYmplY3QqIG1fdmlldzsKKworICAgIEhhc2hTZXQ8Tm90aWZpY2F0aW9uKj4gbV9ub3RpZmlj
YXRpb25zOworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fY2FjaGVkUGVybWlzc2lvbnM7Cisg
ICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mYTg0MDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aCIKKyNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3ZpZXcuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4KKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX2Rpc3BsYXllZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdr
X05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9s
bGVyKCktPmNsaWVudCgpKS0+bm90aWZpY2F0aW9uRGlzcGxheWVkKHN0YXRpY19jYXN0PFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5k
aWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2NsaWNrZWQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+
bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm5vdGlmaWNhdGlvbkNsaWNrZWQo
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fY2xvc2VkKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3Rp
ZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29y
ZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpLT5ub3Rp
ZmljYXRpb25DbG9zZWQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmlj
YXRpb25fZXJyb3IoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihF
V0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5j
bGllbnQoKSktPm5vdGlmaWNhdGlvbkVycm9yKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2soY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEVpbmFfQm9vbCBwZXJtaXQsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBpZiAoIXBlcm1pdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
Kj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIo
KS0+Y2xpZW50KCkpLT5wZXJtaXR0ZWRDYWxsYmFja0NhbGwoZG9tYWluKTsKKyNlbmRpZgorfQor
Cit2b2lkIGV3a19ub3RpZmljYXRpb25fYWRkX3Blcm1pdHRlZF9kb21haW5zKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpCit7CisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNh
dGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpLT5tYWtlUGVybWlzc2lvbkNhY2hlKGRvbWFpbnMs
IHNpemUpOworI2VuZGlmCit9CisKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdr
X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29u
dHJvbGxlcigpLT5jbGllbnQoKSk7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9zaG93KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
K3sKKyAgICBjaGFyKiBpY29uVXJsID0gc3RyZHVwKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5p
Y29uLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNoYXIqIHRpdGxlID0gc3RyZHVwKG5v
dGlmaWNhdGlvbi0+Y29udGVudHMoKS50aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICBjaGFyKiBi
b2R5ID0gc3RyZHVwKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkp
OworICAgIEV3a19Ob3RpZmljYXRpb24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8
dm9pZCo+KG5vdGlmaWNhdGlvbiksIGljb25VcmwsIHRpdGxlLCBib2R5LCAwIH07CisKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29u
dGVudHMsc2hvdyIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7CisKKyAgICBmcmVlKGljb25V
cmwpOworICAgIGZyZWUodGl0bGUpOworICAgIGZyZWUoYm9keSk7Cit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9odG1sX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIGNoYXIqIHVybCA9IHN0cmR1cChub3RpZmlj
YXRpb24tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEV3a19Ob3RpZmljYXRp
b24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8dm9pZCo+KG5vdGlmaWNhdGlvbiks
IDAsIDAsIDAsIHVybCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLGh0bWxzaG93IiwgKHZvaWQqKSZld2tfbm90
aWZpY2F0aW9uKTsKKworICAgIGZyZWUodXJsKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9u
X2NhbmNlbChFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24pCit7CisgICAgRXdrX05vdGlmaWNhdGlvbiBld2tfbm90aWZpY2F0aW9uID0geyBz
dGF0aWNfY2FzdDx2b2lkKj4obm90aWZpY2F0aW9uKSwgMCwgMCwgMCwgMCB9OworCisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRl
bnRzLGNhbmNlbCIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0
IGNoYXIqIGRvbWFpbikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMscmVxdWVzdFBlcm1pc3Npb24iLCAodm9pZCop
ZG9tYWluKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3Rp
ZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY4ZmRkZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwx
MDMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25faAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX2gK
KworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlci5oIgorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19O
b3RpZmljYXRpb247CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7CisgICAgdm9pZCogbm90
aWZpY2F0aW9uOworICAgIGNoYXIqIGljb25VUkw7CisgICAgY2hhciogdGl0bGU7CisgICAgY2hh
ciogYm9keTsKKyAgICBjaGFyKiB1cmw7Cit9OworCisvKioKKyAqIENhbGwgYSBjYWxsYmFjayBm
dWNudGlvbiB3aGljaCBpcyByZXNpc3RlcmQsIGFmdGVyIHJlY2VpdmluZyBhIHVzZXIgYXBwcm92
YWwuCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBi
cm93c2VyCisgKiBAcGFyYW0gcGVybWl0dGVkIHdoZXRoZXIgcGVybWl0IGEgbm90aWZpY2Fpb24g
b3Igbm90IGJ5IHVzZXIKKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRkIGEgcGVy
bWl0IGxpc3QKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25f
Y2FsbGJhY2soY29uc3QgRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBwZXJtaXR0ZWQsIGNvbnN0
IGNoYXIqIGRvbWFpbik7CisKKy8qKgorICogTWFrZSBhIGNhY2hlTGlzdCBmb3IgcGVybWl0dGVk
IGRvbWFpbnMKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gaW5pdGlhbGl6aW5nIGEg
YnJvd3NlciBhcHBsaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2Vp
dmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIKKyAqIEBwYXJhbSBkb21haW5zIGRvbWFpbiBsaXN0IHdo
aWNoIGlzIGFkZGVkIHRvIHBlcm1pc3Npb24gY2FjaGUgbGlzdAorICogQHBhcmFtIHNpemUgdG90
YWwgbnVtYmVyIG9mIGRvbWFpbnMKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9u
X2FkZF9wZXJtaXR0ZWRfZG9tYWlucyhjb25zdCBFdmFzX09iamVjdCAqbywgY2hhcioqIGRvbWFp
bnMsIGludCBzaXplKTsKKworLyoqCisgKiBNYWtlIGFuIG9uZGlzcGxheSBjYWxsYmFjayBjYWxs
IGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQKKyAqCisgKiBA
cGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIKKyAqIEBw
YXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNlaXZlIGRp
c3BsYXkgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BsYXll
ZChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisv
KioKKyAqIE1ha2UgYW4gb25jbGljayBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVy
IG5vdGlmaWNhdGlvbiBpcyBjbGlja2VkCisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byBy
ZWNlaXZlIG1lc3NhZ2UgZnJvbSBicm93c2VyCisgKiBAcGFyYW0gRXdrX05vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBjbGljayBldmVudAorICoKKyAqLworRUFQ
SSB2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVjdCAqbywgY29u
c3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIE1ha2UgYW4gb25jbG9zZSBjYWxs
YmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBjbG9zZWQKKyAq
CisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGJyb3dzZXIK
KyAqIEBwYXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNl
aXZlIGNsb3NlIGV2ZW50CisgKgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbG9z
ZWQoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuKTsKKwor
LyoqCisgKiBNYWtlIGFuIG9uZXJyb3IgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBl
cnJvciBpcyBvY2N1cmVkIGR1cmluZyBub3RpZmljYXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBw
YXJhbSBld2tWaWV3IHZpZXcgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gYnJvd3NlcgorICogQHBh
cmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgZXJy
b3IgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9yKGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9oCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggNmY1MzMyMS4uODA2N2EyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTIyMiw2ICsyMjIsMTQgQEAgY29uc3QgY2hh
ciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNlcl9hZ2VudF9nZXQoKTsKIHZvaWQgZXdrX2ZyYW1l
X2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hhbmdlZChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3
a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsK
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBld2tfbm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcs
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9odG1sX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jYW5jZWwoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24oRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqIGRvbWFpbik7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDI5YmUyMTkuLjkwNzUxMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNjYsNiArNjYsMTAgQEAKICNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNl
bmRpZgorCiAjZGVmaW5lIFpPT01fTUlOICgwLjA1KQogI2RlZmluZSBaT09NX01BWCAoNC4wKQog
CkBAIC02MDYsNiArNjEwLDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tf
dmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNs
aWVudHMuZGV2aWNlTW90aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVu
dEVmbDsKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5ldyBXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKKyNl
bmRpZgorCiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsK
ICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVh
dGUgV2ViS2l0IFBhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggZDJkMjFlMi4uOGUzZjUw
YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTgxLDcgKzgxLDcgQEAgV0VCS0lUX0ZFQVRVUkUo
RU5BQkxFX01BVEhNTCAiRW5hYmxlIE1hdGhNTCIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJF
KEVOQUJMRV9NRVRFUl9UQUcgIkVuYWJsZSBNZXRlciB0YWciIERFRkFVTFQgT04pCiBXRUJLSVRf
RkVBVFVSRShFTkFCTEVfTUlDUk9EQVRBICJFbmFibGUgSFRNTDUgbWljcm9kYXRhIHN1cHBvcnQi
IERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkg
IkVuYWJsZSBOZXRzY2FwZSBwbHVnaW4gQVBJIiBERUZBVUxUIE9GRikKLVdFQktJVF9GRUFUVVJF
KEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBPRkYp
CitXRUJLSVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlv
bnMiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRT
ICJFbmFibGUgb3JpZW50YXRpb24gZXZlbnRzIiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJF
KEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJICJFbmFibGUgUGFnZSBWaXNpYmlsaXR5IEFQSSIg
REVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9QUk9HUkVTU19UQUcgIkVuYWJsZSBw
cm9ncmVzcyB0YWciIERFRkFVTFQgT04pCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMWQxNTlmNC4uMGE5MzJmZCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEy
LTExICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIEFkZCBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgZm9yIEVmbCBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAgIFRo
aXMgaXMgYW4gaW1wbGVtZW50YXRpb24gYWJvdXQgd2ViIG5vdGlmaWNhdGlvbiBmb3IgZWZsCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
U2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMTItMTEgIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gTW92ZSB0b3AtbGV2ZWwg
Y29kZSB0byBnZW5lcmF0ZSBhIG5ldyBDaGFuZ2VMb2cgaW50byBhIG1ldGhvZApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NzEyNmIuLjZjNzc4NTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKQEAgLTExNSw2ICsxMTUsMTIgQEAg
SUYgKFdURl9VU0VfQ1VSTCkKICAgICBMSVNUKEFQUEVORCBEdW1wUmVuZGVyVHJlZV9JTkNMVURF
X0RJUkVDVE9SSUVTICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvY3VybCkKIEVORElG
ICgpCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBEdW1wUmVu
ZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQkNPUkVfRElSfS9ub3Rp
ZmljYXRpb25zIgorICAgICkKK0VORElGICgpCisKIEFERF9ERUZJTklUSU9OUygtREZPTlRTX0NP
TkZfRElSPSIke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUvZ3RrL2ZvbnRzIgogICAgICAgICAg
ICAgICAgIC1EREFUQV9ESVI9IiR7VEhFTUVfQklOQVJZX0RJUn0iKQogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cmlu
ZGV4IGVlZDI4ZmYuLjg3MzVjNGEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC0yNzEsNyArMjcxLDcgQEAg
bXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lO
X0FQSSIsIGRlZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5TdXBw
b3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2ds
ZSBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgU3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRu
b3RpZmljYXRpb25zU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FU
SU9OUyIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBc
JG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAib3JpZW50YXRpb24t
ZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiwKICAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNC
bGFja0JlcnJ5KCksIHZhbHVlID0+IFwkb3JpZW50YXRpb25FdmVudHNTdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119191</attachid>
            <date>2011-12-14 03:40:37 -0800</date>
            <delta_ts>2011-12-15 21:19:19 -0800</delta_ts>
            <desc>Fixed for comment #14</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>23483</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi5hNWE1ZTgz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGFib3V0IHdlYiBub3RpZmljYXRpb24gZm9yIGVm
bC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBFbmFibGUgRU5B
QkxFX05PVElGSUNBVElPTlMgZmV0dXJlCisKIDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXotUGFs
ZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gcmVx
dWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2ViVmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBpcyBu
b3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtl
TGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXgg
YzVlZjY1Ni4uY2ZhMDRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0
c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTYw
LDYgKzYwLDkgQEAgSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQogICBMSVNUKEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25z
IgogICApCisgIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCisgICAgZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcAorICApCiBFTkRJRiAoKQogCiBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNF
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY0MzUxMDUuLmFhMmM3ZjYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NyBAQAorMjAxMS0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBz
YW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgQVBJIGZvciBXZWIgTm90aWZpY2F0aW9u
IGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzU0NAorCisgICAgICAgIFRoZXJlIGlzIGEgd2Via2l0Tm90aWZpY2Fpb24gcHJvcGVydHkg
aW4gdGhlIHdpbmRvdy5uYXZpZ2F0b3IsCisgICAgICAgIGJ1dCBlZmwgZG9lc24ndCBzdXBwb3J0
IGl0LgorICAgICAgICBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGFib3V0IHdlYiBub3RpZmlj
YXRpb24gZm9yIGVmbC4KKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkRpc3Bs
YXllZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRFdmVudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNh
bmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVkKToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0
aW9uX2Nsb3NlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Vycm9yKToKKyAgICAgICAg
KGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFjayk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2FkZF9wZXJtaXR0ZWRfZG9tYWlucyk6CisgICAgICAgIChld2tfbm90aWZpY2F0
aW9uX3ByZXNlbnRlcl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93KToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNz
aW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAx
MS0xMi0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF0gSW50cm9kdWNlIEFzc2VydE1hdGNoaW5nRW51bXMuY3BwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggOWVk
ZmI0MC4uZDQwMjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCkBAIC00MjAsOCArNDIxLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4
Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21l
Q2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGV3a19ub3RpZmljYXRpb25fcHJl
c2VudGVyX2dldChtX3ZpZXcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwuY3BwCmluZGV4IDE1MTMzZjUuLjU5NThmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsMTEgKzIxLDE2IEBACiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZp
ZXcpCisgICAgOiBtX3ZpZXcodmlldykKIHsKIH0KIApAQCAtMzUsMzQgKzQwLDgzIEBAIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCgpCiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKQorICAgICAgICBld2tfbm90
aWZpY2F0aW9uX2h0bWxfc2hvdyhtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBld2tfbm90aWZpY2F0aW9uX3Nob3cobV92aWV3LCBub3RpZmljYXRpb24pOworCisgICAg
bV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24pOworICAgIHJldHVybiB0cnVlOwogfQog
CiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZXdrX25vdGlm
aWNhdGlvbl9jYW5jZWwobV92aWV3LCBub3RpZmljYXRpb24pOworICAgIG1fbm90aWZpY2F0aW9u
cy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fbm90aWZpY2F0aW9ucy5y
ZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmIChtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkgeworICAg
ICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fcmVx
dWVzdF9wZXJtaXNzaW9uKG1fdmlldywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1p
c3Npb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICBp
ZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBQ
ZXJtaXNzaW9uRGVuaWVkOworCisgICAgcmV0dXJuIFBlcm1pc3Npb25BbGxvd2VkOworfQorCit2
b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZShj
aGFyKiogZG9tYWlucywgaW50IHNpemUpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRkKFN0cmluZyhkb21haW5zW2ld
KSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpwZXJtaXR0ZWRD
YWxsYmFja0NhbGwoY29uc3QgY2hhciogZG9tYWluKQoreworICAgIG1fY2FjaGVkUGVybWlzc2lv
bnMuYWRkKFN0cmluZyhkb21haW4pKTsKKyAgICBtX2NhbGxiYWNrLmdldCgpLT5oYW5kbGVFdmVu
dCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0
aW9uRGlzcGxheWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVu
dChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQpOworfQorCit2b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tlZChOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7
CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsb3NlRXZlbnQpOwor
ICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkVycm9yKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlv
bik7CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1
ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQoTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQorICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmgKaW5kZXggMzVhYWRjOS4uODVlMTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxMyBAQAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlmaWNh
dGlvblByZXNlbnRlciB7Ci0KIHB1YmxpYzoKLSAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwoKTsKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3Qq
IHZpZXcpOwogICAgIH5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOwpAQCAtMzcsNyArMzcsMjMgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0
aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOwogICAgIHZpcnR1YWwgTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVl
c3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CisKKyAgICB2b2lk
IG1ha2VQZXJtaXNzaW9uQ2FjaGUoY2hhcioqIGRvbWFpbnMsIGludCBzaXplKTsKKyAgICB2b2lk
IHBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25zdCBjaGFyKiBkb21haW4pOworCisgICAgdm9pZCBu
b3RpZmljYXRpb25EaXNwbGF5ZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmljYXRp
b25DbGlja2VkKE5vdGlmaWNhdGlvbiopOworICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKE5v
dGlmaWNhdGlvbiopOworICAgIHZvaWQgbm90aWZpY2F0aW9uRXJyb3IoTm90aWZpY2F0aW9uKik7
CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKKyAgICBIYXNoU2V0PE5vdGlm
aWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX2Nh
Y2hlZFBlcm1pc3Npb25zOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisK
KyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X25vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiZGU2NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApA
QCAtMCwwICsxLDExNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0
aW9uLmgiCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcu
aCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3LmgiCisKKyNp
bmNsdWRlIDxFdmFzLmg+CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwbGF5ZWQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFn
ZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm5vdGlmaWNh
dGlvbkRpc3BsYXllZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9jbGlja2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZp
Y2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4o
RVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+
Y2xpZW50KCkpLT5ub3RpZmljYXRpb25DbGlja2VkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30KKwor
dm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3NlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywg
Y29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRp
b25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+bm90aWZpY2F0aW9uQ2xvc2VkKHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7
CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9yKGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmll
dyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpLT5ub3RpZmljYXRpb25FcnJv
cihzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNz
aW9uX2NhbGxiYWNrKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgcGVybWl0
LCBjb25zdCBjaGFyKiBkb21haW4pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
aWYgKCFwZXJtaXQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3
a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+cGVybWl0dGVkQ2Fs
bGJhY2tDYWxsKGRvbWFpbik7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Fk
ZF9wZXJtaXR0ZWRfZG9tYWlucyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY2hhcioqIGRv
bWFpbnMsIGludCBzaXplKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRp
Y19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZh
dGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgp
KS0+bWFrZVBlcm1pc3Npb25DYWNoZShkb21haW5zLCBzaXplKTsKKyNlbmRpZgorfQorCitXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29y
ZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50KCkpOworfQor
Cit2b2lkIGV3a19ub3RpZmljYXRpb25fc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgY2hhciogaWNvblVybCA9IHN0
cmR1cChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBjaGFyKiB0aXRsZSA9IHN0cmR1cChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0
bGUudXRmOCgpLmRhdGEoKSk7CisgICAgY2hhciogYm9keSA9IHN0cmR1cChub3RpZmljYXRpb24t
PmNvbnRlbnRzKCkuYm9keS51dGY4KCkuZGF0YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3
a19ub3RpZmljYXRpb24gPSB7IHN0YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCBpY29u
VXJsLCB0aXRsZSwgYm9keSwgMCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
Y2FsbChld2tWaWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLHNob3ciLCAodm9pZCopJmV3a19u
b3RpZmljYXRpb24pOworCisgICAgZnJlZShpY29uVXJsKTsKKyAgICBmcmVlKHRpdGxlKTsKKyAg
ICBmcmVlKGJvZHkpOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25faHRtbF9zaG93KEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sK
KyAgICBjaGFyKiB1cmwgPSBzdHJkdXAobm90aWZpY2F0aW9uLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uIGV3a19ub3RpZmljYXRpb24gPSB7IHN0
YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRpb24pLCAwLCAwLCAwLCB1cmwgfTsKKworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250
ZW50cyxodG1sc2hvdyIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7CisgICAgZnJlZSh1cmwp
OworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fY2FuY2VsKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFd2tfTm90aWZp
Y2F0aW9uIGV3a19ub3RpZmljYXRpb24gPSB7IHN0YXRpY19jYXN0PHZvaWQqPihub3RpZmljYXRp
b24pLCAwLCAwLCAwLCAwIH07CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMsY2FuY2VsIiwgKHZvaWQqKSZld2tfbm90
aWZpY2F0aW9uKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlcXVlc3RfcGVybWlzc2lv
bihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluKQoreworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50
cyxyZXF1ZXN0UGVybWlzc2lvbiIsICh2b2lkKilkb21haW4pOworfQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNTlmOTJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19ub3RpZmljYXRpb24uaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgZXdrX25vdGlmaWNh
dGlvbi5oCisgKiBAYnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24gb2YgV2ViS2l0
LUVGTAorICovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3Rp
ZmljYXRpb25faAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUHJlc2VudGVyLmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBFd2tfTm90aWZpY2F0aW9uIGhh
cyBhIGRldGFpbCBpbmZvciBhYm91dCBub3RpZmljYXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0
IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19Ob3RpZmljYXRpb247CisKK3N0cnVjdCBfRXdrX05vdGlm
aWNhdGlvbiB7CisgICAgdm9pZCogbm90aWZpY2F0aW9uOworICAgIGNoYXIqIGljb25VUkw7Cisg
ICAgY2hhciogdGl0bGU7CisgICAgY2hhciogYm9keTsKKyAgICBjaGFyKiB1cmw7Cit9OworCisv
KioKKyAqIENhbGxzIGEgY2FsbGJhY2sgZnVjbnRpb24gd2hpY2ggaXMgcmVnaXN0ZXJkLCBhZnRl
ciByZWNlaXZpbmcgYSB1c2VyIGFwcHJvdmFsLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcg
dG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gcGVybWl0dGVkIEBjIEVJTkFf
VFJVRSB0byBhbGxvdyB0byBzaG93IG5vdGlmaWNhaW9uLCBAYyBFSU5BX0ZBTFNFIHRvIG5vdCBh
bGxvdyB0byBzaG93IG5vdGlmaWNhaXRvbi4KKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBm
b3IgYWRkIGEgcGVybWl0IGxpc3QKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9u
X3Blcm1pc3Npb25fY2FsbGJhY2soY29uc3QgRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBwZXJt
aXR0ZWQsIGNvbnN0IGNoYXIqIGRvbWFpbik7CisKKy8qKgorICogTWFrZXMgYSBDYWNoZSBmb3Ig
cGVybWl0dGVkIGRvbWFpbnMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQg
aW5pdGlhbGl6aW5nIHRpbWUgaWYgYSBhcHBsaWNhdGlvbiBoYXZlIHBlcm1taXRlZCBkb21haW5z
LgorICogV2ViQ29yZSBjaGVja3MgYSBwZXJtaXNzaW9uIGZyb20gdGhlIGNhY2hlIG9ubHkgd2hl
biBjaGVja1Blcm1pc3Npb24oKSBpcyBjYWxsZWQgZnJvbSBqYXZhc2NyaXB0LgorICoKKyAqIEBw
YXJhbSBld2tWaWV3IHZpZXcgdG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0g
ZG9tYWlucyBkb21haW4gbGlzdCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHBlcm1pc3Npb24gY2Fj
aGUuCisgKiBAcGFyYW0gc2l6ZSB0b3RhbCBudW1iZXIgb2YgZG9tYWlucworICoKKyAqLworRUFQ
SSB2b2lkIGV3a19ub3RpZmljYXRpb25fYWRkX3Blcm1pdHRlZF9kb21haW5zKGNvbnN0IEV2YXNf
T2JqZWN0ICpvLCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2UgYW4g
b25kaXNwbGF5IGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9u
IGlzIGRpc3BsYXllZAorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gY2FsbCByZWdpc3Rl
cmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gRXdrX05vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gcG9p
bnRlciBmb3IgcmVjZWl2ZSBkaXNwbGF5IGV2ZW50CisgKgorICovCitFQVBJIHZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwbGF5ZWQoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19Ob3Rp
ZmljYXRpb24qIGVuKTsKKworLyoqCisgKiBNYWtlIGFuIG9uY2xpY2sgY2FsbGJhY2sgY2FsbCBm
b3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24gaXMgY2xpY2tlZAorICoKKyAqIEBwYXJh
bSBld2tWaWV3IHZpZXcgdG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gRXdr
X05vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBjbGljayBldmVu
dAorICoKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFz
X09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIE1ha2Ug
YW4gb25jbG9zZSBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlv
biBpcyBjbG9zZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIGNhbGwgcmVnaXN0ZXJl
ZCBmdW5jdGlvbgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50
ZXIgZm9yIHJlY2VpdmUgY2xvc2UgZXZlbnQKKyAqCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZp
Y2F0aW9uX2Nsb3NlZChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlv
biogZW4pOworCisvKioKKyAqIE1ha2UgYW4gb25lcnJvciBjYWxsYmFjayBjYWxsIGZvciBKYXZh
U2NyaXB0IGlmIGVycm9yIGlzIG9jY3VyZWQgZHVyaW5nIG5vdGlmaWNhdGlvbiBpcyBwcm9jZWVk
CisgKgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byBjYWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb24K
KyAqIEBwYXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNl
aXZlIGVycm9yIGV2ZW50CisgKgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJv
cihjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25f
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IDZmNTMzMjEuLjgwNjdhMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC0yMjIsNiArMjIyLDE0IEBAIGNv
bnN0IGNoYXIqIGV3a19zZXR0aW5nc19kZWZhdWx0X3VzZXJfYWdlbnRfZ2V0KCk7CiB2b2lkIGV3
a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwog
dm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVj
dCogbyk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlciogZXdrX25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9zaG93KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19u
b3RpZmljYXRpb25faHRtbF9zaG93KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fY2FuY2VsKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7
Cit2b2lkIGV3a19ub3RpZmljYXRpb25fcmVxdWVzdF9wZXJtaXNzaW9uKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4pOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1
cwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAyOWJlMjE5Li45MDc1MTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY2LDYgKzY2LDEwIEBACiAjaW5j
bHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmgiCisjZW5kaWYKKwogI2RlZmluZSBaT09NX01JTiAoMC4wNSkKICNkZWZpbmUgWk9PTV9NQVgg
KDQuMCkKIApAQCAtNjA2LDYgKzYxMCwxMCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAg
IHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rp
b25DbGllbnRFZmw7CiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBu
ZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBwYWdlQ2xpZW50cy5ub3RpZmljYXRpb25DbGllbnQgPSBu
ZXcgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2Vs
Zik7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xp
ZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBu
b3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGQyZDIxZTIu
LjhlM2Y1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC04MSw3ICs4MSw3IEBAIFdFQktJVF9G
RUFUVVJFKEVOQUJMRV9NQVRITUwgIkVuYWJsZSBNYXRoTUwiIERFRkFVTFQgT04pCiBXRUJLSVRf
RkVBVFVSRShFTkFCTEVfTUVURVJfVEFHICJFbmFibGUgTWV0ZXIgdGFnIiBERUZBVUxUIE9OKQog
V0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01JQ1JPREFUQSAiRW5hYmxlIEhUTUw1IG1pY3JvZGF0YSBz
dXBwb3J0IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJICJFbmFibGUgTmV0c2NhcGUgcGx1Z2luIEFQSSIgREVGQVVMVCBPRkYpCi1XRUJLSVRf
RkVBVFVSRShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFV
TFQgT0ZGKQorV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3Rp
ZmljYXRpb25zIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX09SSUVOVEFUSU9O
X0VWRU5UUyAiRW5hYmxlIG9yaWVudGF0aW9uIGV2ZW50cyIgREVGQVVMVCBPRkYpCiBXRUJLSVRf
RkVBVFVSRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSAiRW5hYmxlIFBhZ2UgVmlzaWJpbGl0
eSBBUEkiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUFJPR1JFU1NfVEFHICJF
bmFibGUgcHJvZ3Jlc3MgdGFnIiBERUZBVUxUIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFkMTU5ZjQuLjE0MTZjM2IgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBBZGQgQVBJIGZvciBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAg
IFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gYWJvdXQgd2ViIG5vdGlmaWNhdGlvbiBmb3IgZWZs
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDExLTEyLTExICBLZW50YXJvIEhhcmEgIDxo
YXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIE1vdmUgdG9wLWxl
dmVsIGNvZGUgdG8gZ2VuZXJhdGUgYSBuZXcgQ2hhbmdlTG9nIGludG8gYSBtZXRob2QKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRleCA4NTcxMjZiLi42Yzc3ODU0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTUsNiArMTE1LDEy
IEBAIElGIChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5D
TFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBF
TkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVt
cFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0v
bm90aWZpY2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05U
U19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAg
ICAgICAgICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAppbmRleCBlZWQyOGZmLi44NzM1YzRhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjcxLDcgKzI3MSw3
IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BM
VUdJTl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2lu
U3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJU
b2dnbGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+
IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElG
SUNBVElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUg
PT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0
aW9uLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIs
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+
IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119559</attachid>
            <date>2011-12-15 21:19:19 -0800</date>
            <delta_ts>2011-12-28 04:52:59 -0800</delta_ts>
            <desc>Fixed for comment #18</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>24489</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi4wNWU0NzVk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBFbmFibGUgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsCisKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToKKwogMjAxMS0xMi0wOSAgSmVzdXMg
U2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgW1F0XSByZXF1ZXN0IHBhcmFtZXRlciBvZiBRUXVpY2tXZWJWaWV3OjpuYXZpZ2F0aW9uUmVx
dWVzdGVkIGlzIG5vdCBhIHJlZ2lzdGVyZWQgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZs
LnR4dAppbmRleCBjNWVmNjU2Li5jZmEwNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DTWFrZUxpc3RzRWZsLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZs
LnR4dApAQCAtNjAsNiArNjAsOSBAQCBJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCiAgIExJU1Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L25v
dGlmaWNhdGlvbnMiCiAgICkKKyAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICBlZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCisgICkKIEVORElGICgpCiAKIExJU1QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZjQzNTEwNS4uMmI3NDQ0MCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTExICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIFdlYiBO
b3RpZmljYXRpb24gZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgSW1wbGVtZW50cyBXZWIgTm90aWZpY2F0aW9u
IGZlYXR1cmUgYW5kIGV4cG9zZXMgQVBJIGZvciBXZWJLaXQtRUZsLgorICAgICAgICBUaGlzIGFu
IGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHdlYmtpdE5vdGlmaWNhaW9ucyBwcm9wZXJ0eSBp
biB3aW5kb3cubmF2aWdhdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpj
aGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjptYWtlUGVybWlzc2lvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9u
RGlzcGxheWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2
ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlm
aWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNwbGF5ZWQp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fY2xvc2VkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZXJyb3IpOgorICAg
ICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrKToKKyAgICAgICAgKGV3
a19ub3RpZmljYXRpb25fYWRkX3Blcm1pdHRlZF9kb21haW5zKToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fcHJlc2VudGVyX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Nob3cp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9odG1sX3Nob3cpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9jYW5jZWwpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9yZXF1ZXN0X3Bl
cm1pc3Npb24pOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgor
CiAyMDExLTEyLTA3ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBJbnRyb2R1Y2UgQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRl
eCA5ZWRmYjQwLi5kNDAyNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbC5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKQEAgLTQyMCw4ICs0MjEsNyBAQCB2b2lkIENocm9tZUNsaWVudEVm
bDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uUHJlc2VudGVyKiBD
aHJvbWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0CiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZXdrX25vdGlmaWNhdGlv
bl9wcmVzZW50ZXJfZ2V0KG1fdmlldyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbC5jcHAKaW5kZXggMTUxMzNmNS4uOGJlNDEwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSwxMSArMjEsMTYgQEAKICNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVj
dCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQogewogfQogCkBAIC0zNSwzNCArNDAsODEgQEAg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKCkKIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkpCisgICAgICAgIGV3
a19ub3RpZmljYXRpb25faHRtbF9zaG93KG1fdmlldywgbm90aWZpY2F0aW9uKTsKKyAgICBlbHNl
CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fc2hvdyhtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisK
KyAgICBtX25vdGlmaWNhdGlvbnMuYWRkKG5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBld2tf
bm90aWZpY2F0aW9uX2NhbmNlbChtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgbV9ub3RpZmlj
YXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ub3RpZmljYXRp
b25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKSB7
CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlv
bl9yZXF1ZXN0X3Blcm1pc3Npb24obV92aWV3LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KIH0KIAogTm90aWZpY2F0aW9uUHJlc2Vu
dGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKyAgICBpZiAoIW1fY2FjaGVk
UGVybWlzc2lvbnMuc2l6ZSgpCisgICAgICAgIHx8IG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChj
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Np
b25zLmVuZCgpKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKworICAgIHJldHVy
biBQZXJtaXNzaW9uQWxsb3dlZDsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoY2hhcioqIGRvbWFpbnMsIGludCBzaXplKQorewor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NhY2hlZFBlcm1p
c3Npb25zLmFkZChTdHJpbmcoZG9tYWluc1tpXSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFp
bikKK3sKKyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmcoZG9tYWluKSk7CisgICAg
bV9jYWxsYmFjay5nZXQoKS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCku
ZGlzcGxheUV2ZW50KTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
Om5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAg
c2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpOworfQorCit2
b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24s
IGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5v
dGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpu
b3RpZmljYXRpb25FcnJvcihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5k
RXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuZXJyb3JFdmVudCk7CisgICAgbV9ub3Rp
ZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCi12b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6c2VuZEV2ZW50KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChub3RpZmlj
YXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgbm90aWZpY2F0aW9uLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCmluZGV4IDM1YWFkYzkuLjg1ZTEx
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCkBAIC0yMywxMyArMjMsMTMg
QEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
ICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25QcmVzZW50ZXIgewotCiBwdWJsaWM6Ci0g
ICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CisgICAgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKICAgICB+Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24q
KTsKQEAgLTM3LDcgKzM3LDIzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0
aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+KTsKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBj
aGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIHsgfQorCisgICAgdm9pZCBtYWtlUGVybWlzc2lvbkNhY2hlKGNoYXIqKiBk
b21haW5zLCBpbnQgc2l6ZSk7CisgICAgdm9pZCBwZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29uc3Qg
Y2hhciogZG9tYWluKTsKKworICAgIHZvaWQgbm90aWZpY2F0aW9uRGlzcGxheWVkKE5vdGlmaWNh
dGlvbiopOworICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xpY2tlZChOb3RpZmljYXRpb24qKTsKKyAg
ICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChOb3RpZmljYXRpb24qKTsKKyAgICB2b2lkIG5vdGlm
aWNhdGlvbkVycm9yKE5vdGlmaWNhdGlvbiopOworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0
KiBtX3ZpZXc7CisgICAgSGFzaFNldDxOb3RpZmljYXRpb24qPiBtX25vdGlmaWNhdGlvbnM7Cisg
ICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNzaW9uczsKKyAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiBtX2NhbGxiYWNrOworCisgICAgdm9pZCBzZW5kRXZlbnQoTm90aWZpY2F0
aW9uKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmYwNjgzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIK
KyNpbmNsdWRlICJld2tfdmlldy5oIgorCisjaW5jbHVkZSA8RXZhcy5oPgorCit2b2lkIGV3a19u
b3RpZmljYXRpb25fZGlzcGxheWVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIoKS0+Y2xpZW50KCkpLT5ub3RpZmljYXRpb25EaXNwbGF5ZWQoc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNl
bmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcp
LT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgpKS0+bm90aWZpY2F0aW9uQ2xpY2tl
ZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbG9zZWQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpj
b3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSktPm5v
dGlmaWNhdGlvbkNsb3NlZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihld2tO
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbikpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlm
aWNhdGlvbl9lcnJvcihjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX05vdGlm
aWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+
KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a1ZpZXcpLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCkt
PmNsaWVudCgpKS0+bm90aWZpY2F0aW9uRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZp
Y2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2
b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxsKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgcGVybWl0LCBjb25zdCBjaGFyKiBkb21haW4pCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgaWYgKHBlcm1pdCkKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdLUHJp
dmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50
KCkpLT5wZXJtaXR0ZWRDYWxsYmFja0NhbGwoZG9tYWluKTsKKyNlbmRpZgorfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpCit7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKj4oRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRy
b2xsZXIoKS0+Y2xpZW50KCkpLT5tYWtlUGVybWlzc2lvbkNhY2hlKGRvbWFpbnMsIHNpemUpOwor
I2VuZGlmCit9CisKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX25vdGlmaWNh
dGlvbl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwq
PihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tWaWV3KS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigp
LT5jbGllbnQoKSk7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9zaG93KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBj
aGFyKiBpY29uVXJsID0gc3RyZHVwKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5pY29uLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNoYXIqIHRpdGxlID0gc3RyZHVwKG5vdGlmaWNhdGlv
bi0+Y29udGVudHMoKS50aXRsZS51dGY4KCkuZGF0YSgpKTsKKyAgICBjaGFyKiBib2R5ID0gc3Ry
ZHVwKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkpOworICAgIEV3
a19Ob3RpZmljYXRpb24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8dm9pZCo+KG5v
dGlmaWNhdGlvbiksIGljb25VcmwsIHRpdGxlLCBib2R5LCAwIH07CisKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMsc2hv
dyIsICh2b2lkKikmZXdrX25vdGlmaWNhdGlvbik7CisKKyAgICBmcmVlKGljb25VcmwpOworICAg
IGZyZWUodGl0bGUpOworICAgIGZyZWUoYm9keSk7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlv
bl9odG1sX3Nob3coRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQoreworICAgIGNoYXIqIHVybCA9IHN0cmR1cChub3RpZmljYXRpb24tPnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIEV3a19Ob3RpZmljYXRpb24gZXdrX25v
dGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8dm9pZCo+KG5vdGlmaWNhdGlvbiksIDAsIDAsIDAs
IHVybCB9OworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAi
bm90aWZpY2F0aW9uLGNvbnRlbnRzLGh0bWxzaG93IiwgKHZvaWQqKSZld2tfbm90aWZpY2F0aW9u
KTsKKyAgICBmcmVlKHVybCk7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jYW5jZWwoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQor
eworICAgIEV3a19Ob3RpZmljYXRpb24gZXdrX25vdGlmaWNhdGlvbiA9IHsgc3RhdGljX2Nhc3Q8
dm9pZCo+KG5vdGlmaWNhdGlvbiksIDAsIDAsIDAsIDAgfTsKKworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixjb250ZW50cyxjYW5jZWwi
LCAodm9pZCopJmV3a19ub3RpZmljYXRpb24pOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25f
cmVxdWVzdF9wZXJtaXNzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21h
aW4pCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibm90
aWZpY2F0aW9uLGNvbnRlbnRzLHJlcXVlc3RQZXJtaXNzaW9uIiwgKHZvaWQqKWRvbWFpbik7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYjI4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTIxIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBA
ZmlsZSBld2tfbm90aWZpY2F0aW9uLmgKKyAqIEBicmllZiBBUElzIGZvciB0aGUgd2ViIG5vdGlm
aWNhdGlvbiBvZiBXZWJLaXQtRUZMCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9uX2gK
KyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKworI2luY2x1ZGUgPEV2YXMuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEBm
aWxlIGV3a19ub3RpZmljYXRpb24uaAorICogQGJyaWVmIEFQSXMgZm9yIHRoZSB3ZWIgbm90aWZp
Y2F0aW9uIG9mIFdlYktpdC1FRkwKKyAqCisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGFwcGxp
Y2F0aW9uIGNhbiB1c2UgYSB3ZWIgbm90aWZpY2F0aW9uIGZvciBXZWJLaXQtRUZMLWNvbXBvbmVu
dC4KKyAqCisgKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6CisgKiAgLSAibm90aWZpY2F0aW9uLGNvbnRlbnRz
LHNob3ciLCBFd2tfTm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgY29udGVudHMgdG8gZGlzcGxheSB0
aGUgbm90aWZpY2F0aW9uLgorICogIC0gIm5vdGlmaWNhdGlvbixjb250ZW50cyxodG1sc2hvdyIs
IEV3a19Ob3RpZmljYXRpb246IHJlcXVlc3RlZCB1cmwgdG8gZGlzcGxheSBIVE1MIG5vdGlmaWNh
dGlvbi4KKyAqICAtICJub3RpZmljYXRpb24sY29udGVudHMsY2FuY2VsIiwgRXdrX25vdGlmaWNh
dGlvbjogcmVxdWVzdGVkIG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisgKiAgLSAibm90
aWZpY2F0aW9uLGNvbnRlbnRzLHJlcXVlc3RQZXJtaXNzaW9uIiwgY2hhcio6IHJlcXVlc3RlZCBk
b21haW4gZm9yIGdldHRpbmcgdXNlciBwZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIuCisgKi8KKwor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfVmlld19TbWFydF9EYXRhLgordHlw
ZWRlZiBzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlvbjsKKworLyoqCisg
KiBAYnJpZWYgQ29udGFpbnMgYW4gZGV0YWlscyBmb3Igbm90aWZpY2F0aW9uCisgKi8KK3N0cnVj
dCBfRXdrX05vdGlmaWNhdGlvbiB7CisgICAgdm9pZCogbm90aWZpY2F0aW9uOyAvKio8IEluZGV4
IG9mIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBhZGRyZXNzIG9mIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biBvYmplY3QuICovCisgICAgY2hhciogaWNvblVSTDsgLyoqPCBSZWZlcmVuY2UgdG8gaWNvbiB1
cmwgZm9yIG5vdGlmaWNhdGlvbi4gKi8KKyAgICBjaGFyKiB0aXRsZTsgLyoqPCBSZWZlcmVuY2Ug
dG8gdGl0bGUgY29udGVudCBmb3Igbm90aWZpY2F0aW9uLiAqLworICAgIGNoYXIqIGJvZHk7IC8q
KjwgUmVmZXJlbmNlIHRvIGJvZHkgY29udGVudCBmb3Igbm90aWZpY2F0aW9uLiAqLworICAgIGNo
YXIqIHVybDsgLyoqPCBSZWZlcmVuY2UgdG8gd2ViLXBhZ2UgZm9yIG5vdGlmaWNhdGlvbiB3aGVu
IG5vdGlmaWN0aW9uIGlzIGEgSFRNTCBjb250ZW50LiAqLworfTsKKworLyoqCisgKiBDYWxscyBh
IGNhbGxiYWNrIGZ1Y250aW9uIHdoaWNoIGlzIHJlZ2lzdGVyZCwgYWZ0ZXIgcmVjZWl2aW5nIGEg
dXNlciBhcHByb3ZhbC4KKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIGNhbGwgcmVnaXN0
ZXJlZCBmdW5jdGlvbgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBFSU5BX1RSVUUgdG8gYWxsb3cg
dG8gc2hvdyBub3RpZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8gbm90IGFsbG93IHRvIHNob3cg
bm90aWZpY2F0aW9uLgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQgYSBwZXJt
aXQgbGlzdAorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxi
YWNrX2NhbGwoY29uc3QgRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBwZXJtaXR0ZWQsIGNvbnN0
IGNoYXIqIGRvbWFpbik7CisKKy8qKgorICogTWFrZXMgYSBDYWNoZSBmb3IgcGVybWl0dGVkIGRv
bWFpbnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGF0IGluaXRpYWxpemlu
ZyB0aW1lIGlmIGEgYXBwbGljYXRpb24gaGF2ZSBwZXJtaXRlZCBkb21haW5zLgorICogV2ViQ29y
ZSBjaGVja3MgYSBwZXJtaXNzaW9uIGZyb20gdGhlIGNhY2hlIG9ubHkgd2hlbiBjaGVja1Blcm1p
c3Npb24oKSBpcyBjYWxsZWQgZnJvbSBqYXZhc2NyaXB0LgorICoKKyAqIEBwYXJhbSBld2tWaWV3
IHZpZXcgdG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gZG9tYWlucyBkb21h
aW4gbGlzdCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHBlcm1pc3Npb24gY2FjaGUuCisgKiBAcGFy
YW0gc2l6ZSB0b3RhbCBudW1iZXIgb2YgZG9tYWlucworICovCitFQVBJIHZvaWQgZXdrX25vdGlm
aWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWluc19hZGQoY29uc3QgRXZhc19PYmplY3QgKm8sIGNoYXIq
KiBkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICogTWFrZSBhbiBvbmRpc3BsYXkgY2FsbGJh
Y2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBhZnRlciBub3RpZmljYXRpb24gaXMgZGlzcGxheWVkCisg
KgorICogQHBhcmFtIGV3a1ZpZXcgdmlldyB0byBjYWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb24KKyAq
IEBwYXJhbSBFd2tfTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiBwb2ludGVyIGZvciByZWNlaXZl
IGRpc3BsYXkgZXZlbnQKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8q
KgorICogTWFrZSBhbiBvbmNsaWNrIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIg
bm90aWZpY2F0aW9uIGlzIGNsaWNrZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIGNh
bGwgcmVnaXN0ZXJlZCBmdW5jdGlvbgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgY2xpY2sgZXZlbnQKKyAqLworRUFQSSB2b2lkIGV3
a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFdmFzX09iamVjdCAqbywgY29uc3QgRXdrX05v
dGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIE1ha2UgYW4gb25jbG9zZSBjYWxsYmFjayBjYWxs
IGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBjbG9zZWQKKyAqCisgKiBAcGFy
YW0gZXdrVmlldyB2aWV3IHRvIGNhbGwgcmVnaXN0ZXJlZCBmdW5jdGlvbgorICogQHBhcmFtIEV3
a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgY2xvc2UgZXZl
bnQKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fY2xvc2VkKGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogTWFrZSBhbiBv
bmVycm9yIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgaWYgZXJyb3IgaXMgb2NjdXJlZCBk
dXJpbmcgbm90aWZpY2F0aW9uIGlzIHByb2NlZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3
IHRvIGNhbGwgcmVnaXN0ZXJlZCBmdW5jdGlvbgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24g
bm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJlY2VpdmUgZXJyb3IgZXZlbnQKKyAqLworRUFQSSB2
b2lkIGV3a19ub3RpZmljYXRpb25fZXJyb3IoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3
a19Ob3RpZmljYXRpb24qIGVuKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNl
bmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUu
aAppbmRleCA2ZjUzMzIxLi44MDY3YTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUu
aApAQCAtMjIyLDYgKzIyMiwxNCBAQCBjb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfZGVmYXVsdF91
c2VyX2FnZW50X2dldCgpOwogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCitXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJl
c2VudGVyX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a19ub3RpZmlj
YXRpb25fc2hvdyhFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24pOwordm9pZCBld2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdyhFdmFzX09iamVj
dCogZXdrVmlldywgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwordm9pZCBl
d2tfbm90aWZpY2F0aW9uX2NhbmNlbChFdmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pOwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlcXVlc3Rf
cGVybWlzc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluKTsKKyNl
bmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKaW5kZXggMjliZTIxOS4uOTA3NTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CkBAIC02Niw2ICs2NiwxMCBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZs
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2VuZGlmCisKICNkZWZpbmUgWk9PTV9NSU4g
KDAuMDUpCiAjZGVmaW5lIFpPT01fTUFYICg0LjApCiAKQEAgLTYwNiw2ICs2MTAsMTAgQEAgc3Rh
dGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQg
PSBuZXcgV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOwogICAgIHBhZ2VDbGllbnRzLmRl
dmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsOwogI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgcGFnZUNsaWVu
dHMubm90aWZpY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOworI2VuZGlmCisKICAgICBwcml2LT5wYWdlID0g
bmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMpOwogICAgIGlmICghcHJpdi0+cGFnZSkgewog
ICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJLaXQgUGFnZSIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQppbmRleCBkMmQyMWUyLi44ZTNmNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpA
QCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUFUSE1MICJFbmFibGUgTWF0
aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01FVEVSX1RBRyAiRW5hYmxl
IE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NSUNST0RBVEEg
IkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVB
VFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5hYmxlIE5ldHNjYXBlIHBsdWdpbiBB
UEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVu
YWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dFQktJVF9GRUFUVVJFKEVOQUJMRV9O
T1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBPTikKIFdFQktJVF9G
RUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVuYWJsZSBvcmllbnRhdGlvbiBldmVu
dHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRV
UkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dyZXNzIHRhZyIgREVGQVVMVCBPTikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDE1
OWY0Li44ZWRjMjFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25n
Lmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBFbmFibGVzIFdlYiBOb3RpZmljYXRpb24gZmVhdHVy
ZSBmb3IgV2ViS2l0LUVmbC4KKyAgICAgICAgQW5kIGFkZCAiV2ViQ29yZS9ub3RpZmljYXRpb25z
IiBzb3VyY2UgcGF0aCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdl
YmtpdDoKKwogMjAxMS0xMi0xMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW1JlZmFjdG9yaW5nXSBNb3ZlIHRvcC1sZXZlbCBjb2RlIHRvIGdlbmVyYXRl
IGEgbmV3IENoYW5nZUxvZyBpbnRvIGEgbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01h
a2VMaXN0cy50eHQKaW5kZXggODU3MTI2Yi4uNmM3Nzg1NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtMTE1LDYgKzExNSwxMiBAQCBJRiAoV1RGX1VTRV9DVVJM
KQogICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMgJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5ESUYgKCkKIAorSUYgKEVOQUJM
RV9OT1RJRklDQVRJT05TKQorICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVf
RElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisgICAg
KQorRU5ESUYgKCkKKwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNf
RElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAgICAgICAgICAgLUREQVRBX0RJ
Uj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uODcz
NWM0YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3MSw3ICsyNzEsNyBAQCBteSBAZmVhdHVyZXMgPSAo
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9
PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1cHBvcnQgfSwKIAogICAgIHsg
b3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90aWZp
Y2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMi
LCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBw
b3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9
PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1
cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1ldmVudHMiLCBkZXNjID0+
ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFs
dWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120653</attachid>
            <date>2011-12-28 04:52:59 -0800</date>
            <delta_ts>2012-01-03 20:50:45 -0800</delta_ts>
            <desc>Use Ewk_Notification structure for the ewk_notificaiton.h/cpp</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>26380</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi5jMDEwMGYx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTItMjggIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZTogRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUuCisK
IDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gcmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2Vi
Vmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBpcyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1Ni4uZDM3YjJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BB
TkdPKQogICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25v
dGlmaWNhdGlvbnMiCi0gICkKLUVORElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJ
U1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lG
IChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9E
SVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICAp
CisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJS
QVJJRVMKICAgICAke0NhaXJvX0xJQlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpA
QCAtMjUxLDYgKzI1NCwxMCBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVX
ZWJLaXRfSEVBREVSUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmgpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElT
VChBUFBFTkQgRVdlYktpdF9IRUFERVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uaCkKK0VORElGICgpCisKIElOU1RBTEwoRklMRVMgJHtFV2Vi
S2l0X0hFQURFUlN9CiAgICAgICAgIERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfTElCUkFS
WV9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBm
NDM1MTA1Li41OTZkNTFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEt
MTItMjggIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmlj
YXRpb24gZmVhdHVyZSBhbmQgZXhwb3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRo
aXMgYW4gaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2Fpb25zIHByb3Bl
cnR5IGluIHdpbmRvdy5uYXZpZ2F0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVy
bWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpwZXJtaXR0ZWRDYWxsYmFja0NhbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmlj
YXRpb25EaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpub3RpZmljYXRpb25DbGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpz
ZW5kRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAgICAgICAqIGV3ay9FV2Vi
S2l0Lmg6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fY2xpY2tlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Nsb3NlZCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2Vycm9yKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVy
bWlzc2lvbl9jYWxsYmFja19jYWxsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWl0
dGVkX2RvbWFpbnNfYWRkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fc2hvdyk6CisgICAg
ICAgIChld2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdyk6CisgICAgICAgIChld2tfbm90aWZpY2F0
aW9uX2NhbmNlbCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3JlcXVlc3RfcGVybWlzc2lv
bik6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICog
ZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcHJl
c2VudGVyX2dldCk6CisKIDIwMTEtMTItMDcgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludHJvZHVjZSBBc3NlcnRNYXRjaGluZ0VudW1zLmNw
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwCmluZGV4IDllZGZiNDAuLjFmOGI1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNDIwLDggKzQy
MCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9uUHJl
c2VudGVyKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBld2tfdmlld19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChtX3ZpZXcpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IDE1
MTMzZjUuLjE2MzE3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApA
QCAtMjEsMTIgKzIxLDE3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiZXdrX25vdGlm
aWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCiB7CisgICAgbV9ld2tOb3Rp
ZmljYXRpb24udmlldyA9IHZpZXc7CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCkBAIC0zNSwzNCArNDAsOTIgQEAg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKCkKIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgbV9ld2tOb3RpZmljYXRpb24ubm90aWZpY2F0aW9uID0gbm90aWZp
Y2F0aW9uOworICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKSB7CisgICAgICAgIG1fZXdr
Tm90aWZpY2F0aW9uLnVybCA9IHN0cmR1cChub3RpZmljYXRpb24tPnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdygmbV9ld2tO
b3RpZmljYXRpb24pOworICAgICAgICBmcmVlKG1fZXdrTm90aWZpY2F0aW9uLnVybCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9ld2tOb3RpZmljYXRpb24uaWNvblVSTCA9IHN0cmR1cChub3Rp
ZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgbV9ld2tOb3RpZmljYXRpb24udGl0bGUgPSBzdHJkdXAobm90aWZpY2F0aW9uLT5jb250ZW50
cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2V3a05vdGlmaWNhdGlvbi5ib2R5
ID0gc3RyZHVwKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBld2tfbm90aWZpY2F0aW9uX3Nob3coJm1fZXdrTm90aWZpY2F0aW9uKTsKKyAgICAg
ICAgZnJlZShtX2V3a05vdGlmaWNhdGlvbi5pY29uVVJMKTsKKyAgICAgICAgZnJlZShtX2V3a05v
dGlmaWNhdGlvbi50aXRsZSk7CisgICAgICAgIGZyZWUobV9ld2tOb3RpZmljYXRpb24uYm9keSk7
CisgICAgfQorCisgICAgbV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24pOworICAgIHJl
dHVybiB0cnVlOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2Fu
Y2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgbV9ld2tOb3RpZmljYXRpb24ubm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uOworICAg
IGV3a19ub3RpZmljYXRpb25fY2FuY2VsKCZtX2V3a05vdGlmaWNhdGlvbik7CisgICAgbV9ub3Rp
ZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ub3RpZmlj
YXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgp
KSB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgZXdrX25vdGlmaWNh
dGlvbl9yZXF1ZXN0X3Blcm1pc3Npb24oJm1fZXdrTm90aWZpY2F0aW9uLCBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KIH0KIAogTm90
aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKyAg
ICBpZiAoIW1fY2FjaGVkUGVybWlzc2lvbnMuc2l6ZSgpCisgICAgICAgIHx8IG1fY2FjaGVkUGVy
bWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBt
X2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmll
ZDsKKworICAgIHJldHVybiBQZXJtaXNzaW9uQWxsb3dlZDsKK30KKwordm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoY2hhcioqIGRvbWFpbnMs
IGludCBzaXplKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmcoZG9tYWluc1tpXSkpOworfQorCit2b2lk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNv
bnN0IGNoYXIqIGRvbWFpbikKK3sKKyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmco
ZG9tYWluKSk7CisgICAgbV9jYWxsYmFjay5nZXQoKS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkRpc3BsYXllZChO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9u
LCBldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50KTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCit7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ2xvc2VkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHNlbmRFdmVu
dChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAgICBtX25vdGlmaWNh
dGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKK3sKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuZXJyb3JFdmVu
dCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQogCi12b2lk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAg
bm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxz
ZSwgdHJ1ZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCmluZGV4
IDM1YWFkYzkuLjI2YTg5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCkBA
IC0yMywxMyArMjMsMTQgQEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJO
b3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNs
dWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwg
OiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC0zNyw3
ICszOCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERl
c3Ryb3llZChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAg
ICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSB7IH0KKworICAgIHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50
IHNpemUpOworICAgIHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFp
bik7CisKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChOb3RpZmljYXRpb24qKTsKKyAg
ICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3Rp
ZmljYXRpb25DbG9zZWQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBub3RpZmljYXRpb25FcnJv
cihOb3RpZmljYXRpb24qKTsKKworcHJpdmF0ZToKKyAgICBFd2tfTm90aWZpY2F0aW9uIG1fZXdr
Tm90aWZpY2F0aW9uOworICAgIEhhc2hTZXQ8Tm90aWZpY2F0aW9uKj4gbV9ub3RpZmljYXRpb25z
OworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fY2FjaGVkUGVybWlzc2lvbnM7CisgICAgUmVm
UHRyPFZvaWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKKworICAgIHZvaWQgc2VuZEV2ZW50KE5vdGlm
aWNhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svRVdlYktpdC5oCmluZGV4IDNmNzk0ZmIuLjc4NGMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VX
ZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV3a19qcy5oIgogI2luY2x1ZGUg
ImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25ldHdvcmsuaCIKKyNpbmNsdWRlICJld2tfbm90
aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3Zp
ZXcuaCIKICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjVkOGZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfbm90aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250
cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisj
aW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a192aWV3LmgiCisKKyNpbmNsdWRlIDxFdmFzLmg+CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9kaXNwbGF5ZWQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3a05vdGlmaWNh
dGlvbi0+dmlldykgXAorICAgICAgICAtPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xpZW50
KCkpIFwKKyAgICAgICAgLT5ub3RpZmljYXRpb25EaXNwbGF5ZWQoc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRp
ZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChjb25zdCBFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oRVdL
UHJpdmF0ZTo6Y29yZVBhZ2UoZXdrTm90aWZpY2F0aW9uLT52aWV3KSBcCisgICAgICAgIC0+bm90
aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKSkgXAorICAgICAgICAtPm5vdGlmaWNhdGlv
bkNsaWNrZWQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0
aW9uLT5ub3RpZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25f
Y2xvc2VkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFnZShld2tOb3RpZmljYXRp
b24tPnZpZXcpIFwKKyAgICAgICAgLT5ub3RpZmljYXRpb25Db250cm9sbGVyKCktPmNsaWVudCgp
KSBcCisgICAgICAgIC0+bm90aWZpY2F0aW9uQ2xvc2VkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbio+KGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uKSk7CisjZW5kaWYKK30K
Kwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9yKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3
a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRl
Ojpjb3JlUGFnZShld2tOb3RpZmljYXRpb24tPnZpZXcpIFwKKyAgICAgICAgLT5ub3RpZmljYXRp
b25Db250cm9sbGVyKCktPmNsaWVudCgpKSBcCisgICAgICAgIC0+bm90aWZpY2F0aW9uRXJyb3Io
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4oZXdrTm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb24pKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9jYWxsYmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiwg
RWluYV9Cb29sIHBlcm1pdCwgY29uc3QgY2hhciogZG9tYWluKQoreworI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIGlmIChwZXJtaXQpCisgICAgICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KEVXS1ByaXZhdGU6OmNvcmVQYWdlKGV3
a05vdGlmaWNhdGlvbi0+dmlldykgXAorICAgICAgICAgICAgLT5ub3RpZmljYXRpb25Db250cm9s
bGVyKCktPmNsaWVudCgpKS0+cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGRvbWFpbik7CisjZW5kaWYK
K30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIGNoYXIqKiBkb21haW5zLCBpbnQgc2l6
ZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihFV0tQcml2YXRlOjpjb3JlUGFnZShl
d2tOb3RpZmljYXRpb24tPnZpZXcpIFwKKyAgICAgICAgLT5ub3RpZmljYXRpb25Db250cm9sbGVy
KCktPmNsaWVudCgpKS0+bWFrZVBlcm1pc3Npb25DYWNoZShkb21haW5zLCBzaXplKTsKKyNlbmRp
ZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fc2hvdyhFd2tfTm90aWZpY2F0aW9uKiBld2tO
b3RpZmljYXRpb24pCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tO
b3RpZmljYXRpb24tPnZpZXcsICJub3RpZmljYXRpb24sY29udGVudHMsc2hvdyIsICh2b2lkKikm
ZXdrTm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2h0bWxfc2hvdyhF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tOb3RpZmljYXRpb24tPnZpZXcsICJub3RpZmljYXRpb24sY29u
dGVudHMsaHRtbHNob3ciLCAodm9pZCopJmV3a05vdGlmaWNhdGlvbik7Cit9CisKK3ZvaWQgZXdr
X25vdGlmaWNhdGlvbl9jYW5jZWwoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrTm90aWZpY2F0aW9uLT52
aWV3LCAibm90aWZpY2F0aW9uLGNvbnRlbnRzLGNhbmNlbCIsICh2b2lkKikmZXdrTm90aWZpY2F0
aW9uKTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlcXVlc3RfcGVybWlzc2lvbihFd2tf
Tm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a05vdGlmaWNhdGlvbi0+dmlldywg
Im5vdGlmaWNhdGlvbixjb250ZW50cyxyZXF1ZXN0UGVybWlzc2lvbiIsICh2b2lkKilkb21haW4p
OworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2M4ZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApAQCAtMCwwICsxLDExMyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25faAorCisjaW5j
bHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlm
CisKKy8qKgorICogQGJyaWVmIEFQSXMgZm9yIHRoZSB3ZWIgbm90aWZpY2F0aW9uIG9mIFdlYktp
dC1FRkwKKyAqCisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2Ug
YSB3ZWIgbm90aWZpY2F0aW9uIGZvciBXZWJLaXQtRUZMLWNvbXBvbmVudC4KKyAqCisgKiBUaGUg
Zm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoKSkg
YXJlIGVtaXR0ZWQ6CisgKiAgLSAibm90aWZpY2F0aW9uLGNvbnRlbnRzLHNob3ciLCBFd2tfTm90
aWZpY2F0aW9uOiByZXF1ZXN0ZWQgY29udGVudHMgdG8gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9u
LgorICogIC0gIm5vdGlmaWNhdGlvbixjb250ZW50cyxodG1sc2hvdyIsIEV3a19Ob3RpZmljYXRp
b246IHJlcXVlc3RlZCB1cmwgdG8gZGlzcGxheSBIVE1MIG5vdGlmaWNhdGlvbi4KKyAqICAtICJu
b3RpZmljYXRpb24sY29udGVudHMsY2FuY2VsIiwgRXdrX25vdGlmaWNhdGlvbjogcmVxdWVzdGVk
IG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisgKiAgLSAibm90aWZpY2F0aW9uLGNvbnRl
bnRzLHJlcXVlc3RQZXJtaXNzaW9uIiwgY2hhcio6IHJlcXVlc3RlZCBkb21haW4gZm9yIGdldHRp
bmcgdXNlciBwZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIuCisgKi8KKworLy8vIENyZWF0ZXMgYSB0
eXBlIG5hbWUgZm9yIEBhIEV3a19Ob3RpZmljYXRpb24uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05v
dGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCisvKioKKyAqIEBicmllZiBDb250YWlucyBh
biBkZXRhaWxzIGZvciBub3RpZmljYXRpb24KKyAqLworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9u
IHsKKyAgICBFdmFzX09iamVjdCogdmlldzsKKyAgICB2b2lkKiBub3RpZmljYXRpb247IC8qKjwg
SW5kZXggb2Ygbm90aWZpY2F0aW9uIHdoaWNoIGlzIGFkZHJlc3Mgb2YgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uIG9iamVjdC4gKi8KKyAgICBjaGFyKiBpY29uVVJMOyAvKio8IFJlZmVyZW5jZSB0byBp
Y29uIHVybCBmb3Igbm90aWZpY2F0aW9uLiAqLworICAgIGNoYXIqIHRpdGxlOyAvKio8IFJlZmVy
ZW5jZSB0byB0aXRsZSBjb250ZW50IGZvciBub3RpZmljYXRpb24uICovCisgICAgY2hhciogYm9k
eTsgLyoqPCBSZWZlcmVuY2UgdG8gYm9keSBjb250ZW50IGZvciBub3RpZmljYXRpb24uICovCisg
ICAgY2hhciogdXJsOyAvKio8IFJlZmVyZW5jZSB0byB3ZWItcGFnZSBmb3Igbm90aWZpY2F0aW9u
IHdoZW4gbm90aWZpY3Rpb24gaXMgYSBIVE1MIGNvbnRlbnQuICovCit9OworCisvKioKKyAqIENh
bGxzIGEgY2FsbGJhY2sgZnVjbnRpb24gd2hpY2ggaXMgcmVnaXN0ZXJkLCBhZnRlciByZWNlaXZp
bmcgYSB1c2VyIGFwcHJvdmFsLgorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gY2FsbCBy
ZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gcGVybWl0dGVkIEBjIEVJTkFfVFJVRSB0byBh
bGxvdyB0byBzaG93IG5vdGlmaWNhdGlvbiwgQGMgRUlOQV9GQUxTRSB0byBub3QgYWxsb3cgdG8g
c2hvdyBub3RpZmljYXRpb24uCisgKiBAcGFyYW0gZG9tYWluIGRvbWFpbiBVUkwgZm9yIGFkZCBh
IHBlcm1pdCBsaXN0CisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25f
Y2FsbGJhY2tfY2FsbChjb25zdCBFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHBlcm1pdHRlZCwg
Y29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtlcyBhIENhY2hlIGZvciBwZXJtaXR0
ZWQgZG9tYWlucy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQgaW5pdGlh
bGl6aW5nIHRpbWUgaWYgYSBhcHBsaWNhdGlvbiBoYXZlIHBlcm1pdGVkIGRvbWFpbnMuCisgKiBX
ZWJDb3JlIGNoZWNrcyBhIHBlcm1pc3Npb24gZnJvbSB0aGUgY2FjaGUgb25seSB3aGVuIGNoZWNr
UGVybWlzc2lvbigpIGlzIGNhbGxlZCBmcm9tIGphdmFzY3JpcHQuCisgKgorICogQHBhcmFtIGV3
a1ZpZXcgdmlldyB0byBjYWxsIHJlZ2lzdGVyZWQgZnVuY3Rpb24KKyAqIEBwYXJhbSBkb21haW5z
IGRvbWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZS4KKyAq
IEBwYXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKi8KK0VBUEkgdm9pZCBld2tf
bm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFdmFzX09iamVjdCAqbywg
Y2hhcioqIGRvbWFpbnMsIGludCBzaXplKTsKKworLyoqCisgKiBNYWtlIGFuIG9uZGlzcGxheSBj
YWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5
ZWQKKyAqCisgKiBAcGFyYW0gZXdrVmlldyB2aWV3IHRvIGNhbGwgcmVnaXN0ZXJlZCBmdW5jdGlv
bgorICogQHBhcmFtIEV3a19Ob3RpZmljYXRpb24gbm90aWZpY2F0aW9uIHBvaW50ZXIgZm9yIHJl
Y2VpdmUgZGlzcGxheSBldmVudAorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNw
bGF5ZWQoY29uc3QgRXZhc19PYmplY3QgKm8sIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuKTsK
KworLyoqCisgKiBNYWtlIGFuIG9uY2xpY2sgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBh
ZnRlciBub3RpZmljYXRpb24gaXMgY2xpY2tlZAorICoKKyAqIEBwYXJhbSBld2tWaWV3IHZpZXcg
dG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gRXdrX05vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBjbGljayBldmVudAorICovCitFQVBJIHZv
aWQgZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBjb25zdCBF
d2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogTWFrZSBhbiBvbmNsb3NlIGNhbGxiYWNr
IGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAq
IEBwYXJhbSBld2tWaWV3IHZpZXcgdG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFy
YW0gRXdrX05vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBjbG9z
ZSBldmVudAorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbG9zZWQoY29uc3QgRXZh
c19PYmplY3QgKm8sIGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuKTsKKworLyoqCisgKiBNYWtl
IGFuIG9uZXJyb3IgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBlcnJvciBpcyBvY2N1
cmVkIGR1cmluZyBub3RpZmljYXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBwYXJhbSBld2tWaWV3
IHZpZXcgdG8gY2FsbCByZWdpc3RlcmVkIGZ1bmN0aW9uCisgKiBAcGFyYW0gRXdrX05vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24gcG9pbnRlciBmb3IgcmVjZWl2ZSBlcnJvciBldmVudAorICovCitF
QVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJvcihjb25zdCBFdmFzX09iamVjdCAqbywgY29u
c3QgRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCmluZGV4IDZmNTMzMjEuLmIzMGY1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCkBAIC0zOSw2ICszOSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlv
bi5oIgorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYK
QEAgLTIyMiw2ICsyMjcsMTQgQEAgY29uc3QgY2hhciogZXdrX3NldHRpbmdzX2RlZmF1bHRfdXNl
cl9hZ2VudF9nZXQoKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfY29udGVudHNfY2hh
bmdlZChFdmFzX09iamVjdCogbyk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQordm9pZCBld2tfbm90aWZpY2F0aW9uX3Nob3coRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZp
Y2F0aW9uKTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9odG1sX3Nob3coRXdrX05vdGlmaWNhdGlv
biogZXdrTm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9jYW5jZWwoRXdrX05v
dGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9yZXF1
ZXN0X3Blcm1pc3Npb24oRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uLCBjb25zdCBj
aGFyKiBkb21haW4pOworV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBld2tfdmlld19u
b3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Cisj
ZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IDI5YmUyMTkuLjI2YWNkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVm
bC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmgiCisjZW5kaWYKKwogI2RlZmluZSBaT09NX01JTiAoMC4wNSkKICNkZWZpbmUgWk9P
TV9NQVggKDQuMCkKIApAQCAtNjA2LDYgKzYxMSwxMCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogICAgIHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZp
Y2VNb3Rpb25DbGllbnRFZmw7CiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGll
bnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBwYWdlQ2xpZW50cy5ub3RpZmljYXRpb25DbGll
bnQgPSBuZXcgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0
YS0+c2VsZik7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShw
YWdlQ2xpZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJD
b3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CkBAIC0zODIxLDYgKzM4MzAsMTUgQEAgRXdr
X1BhZ2VfVmlzaWJpbGl0eV9TdGF0ZSBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmkKICNlbmRpZgogfQogCitXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIGV3a192aWV3X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICByZXR1cm4gcHJp
di0+cGFnZS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKTsKKyNlbmRpZgorfQor
CiBuYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CiAKIFdlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0
IEV2YXNfT2JqZWN0ICpld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCBkMmQyMWUyLi44
ZTNmNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVB
VFVSRShFTkFCTEVfTUFUSE1MICJFbmFibGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZF
QVRVUkUoRU5BQkxFX01FVEVSX1RBRyAiRW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdF
QktJVF9GRUFUVVJFKEVOQUJMRV9NSUNST0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3Vw
cG9ydCIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lO
X0FQSSAiRW5hYmxlIE5ldHNjYXBlIHBsdWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZF
QVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxU
IE9GRikKK1dFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZp
Y2F0aW9ucyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9F
VkVOVFMgIkVuYWJsZSBvcmllbnRhdGlvbiBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZF
QVRVUkUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkg
QVBJIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5h
YmxlIHByb2dyZXNzIHRhZyIgREVGQVVMVCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDE1OWY0Li4zYWEzODczIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTEtMTItMjggIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGVzIFdlYiBOb3RpZmlj
YXRpb24gZmVhdHVyZSBmb3IgV2ViS2l0LUVmbC4KKyAgICAgICAgQW5kIGFkZCAiV2ViQ29yZS9u
b3RpZmljYXRpb25zIiBzb3VyY2UgcGF0aCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDogQWRkIG5vdGlmaWNhdGlv
bnMgZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBEdW1wUmVuZGVyVHJlZS4KKyAgICAgICAgKiBTY3Jp
cHRzL2J1aWxkLXdlYmtpdDogRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUgZm9y
IHRoZSBXZWJLaXQtRWZsCisKIDIwMTEtMTItMTEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gTW92ZSB0b3AtbGV2ZWwgY29kZSB0
byBnZW5lcmF0ZSBhIG5ldyBDaGFuZ2VMb2cgaW50byBhIG1ldGhvZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NzEyNmIuLjZjNzc4NTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKQEAgLTExNSw2ICsxMTUsMTIgQEAgSUYgKFdU
Rl9VU0VfQ1VSTCkKICAgICBMSVNUKEFQUEVORCBEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVD
VE9SSUVTICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvY3VybCkKIEVORElGICgpCiAK
K0lGIChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBEdW1wUmVuZGVyVHJl
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRp
b25zIgorICAgICkKK0VORElGICgpCisKIEFERF9ERUZJTklUSU9OUygtREZPTlRTX0NPTkZfRElS
PSIke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUvZ3RrL2ZvbnRzIgogICAgICAgICAgICAgICAg
IC1EREFUQV9ESVI9IiR7VEhFTUVfQklOQVJZX0RJUn0iKQogCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IGVl
ZDI4ZmYuLjg3MzVjNGEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC0yNzEsNyArMjcxLDcgQEAgbXkgQGZl
YXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSIs
IGRlZmF1bHQgPT4gIWlzRWZsKCksIHZhbHVlID0+IFwkbmV0c2NhcGVQbHVnaW5TdXBwb3J0IH0s
CiAKICAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBEZXNr
dG9wIE5vdGlmaWNhdGlvbnMgU3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJ
RklDQVRJT05TIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRub3RpZmlj
YXRpb25zU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIs
IGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJG5vdGlm
aWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAib3JpZW50YXRpb24tZXZlbnRz
IiwgZGVzYyA9PiAiVG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiwKICAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNCbGFja0Jl
cnJ5KCksIHZhbHVlID0+IFwkb3JpZW50YXRpb25FdmVudHNTdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>121052</attachid>
            <date>2012-01-03 20:50:45 -0800</date>
            <delta_ts>2012-01-05 20:49:58 -0800</delta_ts>
            <desc>Add management routines for notification objects</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>30396</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi41NGZiMDY2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMDMgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZTogRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUuCisK
IDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gcmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2Vi
Vmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBpcyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1Ni4uZDM3YjJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BB
TkdPKQogICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25v
dGlmaWNhdGlvbnMiCi0gICkKLUVORElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJ
U1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lG
IChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9E
SVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICAp
CisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJS
QVJJRVMKICAgICAke0NhaXJvX0xJQlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpA
QCAtMjUxLDYgKzI1NCwxMCBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVX
ZWJLaXRfSEVBREVSUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmgpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElT
VChBUFBFTkQgRVdlYktpdF9IRUFERVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uaCkKK0VORElGICgpCisKIElOU1RBTEwoRklMRVMgJHtFV2Vi
S2l0X0hFQURFUlN9CiAgICAgICAgIERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfTElCUkFS
WV9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBm
NDM1MTA1Li41YzNhZmYxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTIt
MDEtMDMgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmlj
YXRpb24gZmVhdHVyZSBhbmQgZXhwb3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRo
aXMgYW4gaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2Fpb25zIHByb3Bl
cnR5IGluIHdpbmRvdy5uYXZpZ2F0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lv
bkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRGlzcGxheWVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5v
dGlmaWNhdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKToKKyAgICAgICAgKiBld2svRVdlYktpdC5oOgorICAgICAgICAqIGV3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3ZpZXdfZ2V0
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25faWNvbl91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9odG1sX3VybF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNw
bGF5ZWQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKToKKyAgICAgICAgKGV3
a19ub3RpZmljYXRpb25fY2xvc2VkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZXJyb3Ip
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrX2NhbGwpOgor
ICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWluc19hZGQpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9k
ZXN0cm95KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faW5mb19jcmVhdGUpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3kpOgorICAgICAgICAoZXdrX25vdGlmaWNh
aXRvbl9kZXN0cm95X2FsbCk6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld19u
b3RpZmljYXRpb25fcHJlc2VudGVyX2dldCk6CisKIDIwMTEtMTItMDcgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludHJvZHVjZSBBc3NlcnRN
YXRjaGluZ0VudW1zLmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDllZGZiNDAuLjFmOGI1MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cApAQCAtNDIwLDggKzQyMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFi
YXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEVmbDo6
bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBld2tfdmlld19ub3RpZmljYXRpb25fcHJlc2VudGVy
X2dldChtX3ZpZXcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwuY3BwCmluZGV4IDE1MTMzZjUuLjczODVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmNwcApAQCAtMjEsNDggKzIxLDExMiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oIgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQog
eworICAgIG1fZXdrTm90aWZpY2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUodGhpcywg
dmlldyk7CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbCgpCiB7CisgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KG1f
ZXdrTm90aWZpY2F0aW9uKTsKIH0KIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkp
IHsKKyAgICAgICAgRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvID0g
ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZShtX2V3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0
aW9uKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZp
Y2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixodG1sc2hv
dyIsIGV3a05vdGlmaWNhdGlvbkluZm8pOworICAgIH0gZWxzZSB7CisgICAgICAgIEV3a19Ob3Rp
ZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyA9IGV3a19ub3RpZmljYXRpb25faW5m
b19jcmVhdGUobV9ld2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbik7CisgICAgICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrX25vdGlmaWNhdGlvbl92aWV3X2dldChtX2V3
a05vdGlmaWNhdGlvbiksICJub3RpZmljYXRpb24sc2hvdyIsIGV3a05vdGlmaWNhdGlvbkluZm8p
OworICAgIH0KKworICAgIG1fbm90aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNh
bmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyA9IGV3a19u
b3RpZmljYXRpb25faW5mb19jcmVhdGUobV9ld2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZpY2F0aW9uX3Zp
ZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCAmZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24p
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9u
T2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwog
fQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGNhbGxiYWNrKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVk
UGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9
PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKSB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZp
Y2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixyZXF1ZXN0
UGVybWlzc2lvbiIgXAorICAgICAgICAgICAgLCAodm9pZCopY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlv
blByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNo
ZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFt
X2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25z
LmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQ
ZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAg
ICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lvbkNhY2hlKGNoYXIqKiBkb21haW5zLCBpbnQgc2l6
ZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9jYWNo
ZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbnNbaV0pKTsKK30KKwordm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25zdCBjaGFy
KiBkb21haW4pCit7CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbikp
OworICAgIG1fY2FsbGJhY2suZ2V0KCktPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNwbGF5ZWQoRXdrX05vdGlm
aWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlv
bl9nZXQoZXdrTm90aWZpY2F0aW9uSW5mbykpOworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24s
IGV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tlZChFd2tfTm90aWZpY2F0aW9uX0luZm8q
IGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24g
PSBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3Rp
ZmljYXRpb25JbmZvKSk7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uQ2xvc2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9u
SW5mbykKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PE5v
dGlmaWNhdGlvbio+KGV3a19ub3RpZmljYXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbkluZm8pKTsK
KyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Cisg
ICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmlj
YXRpb25faW5mb19kZXN0cm95KGV3a05vdGlmaWNhdGlvbkluZm8pOworfQorCit2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRXJyb3IoRXdrX05vdGlmaWNh
dGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlvbl9n
ZXQoZXdrTm90aWZpY2F0aW9uSW5mbykpOworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlm
aWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koZXdrTm90aWZpY2F0
aW9uSW5mbyk7CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQoTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQorICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgKaW5kZXggMzVhYWRjOS4uMDk4MzQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxNSBAQAogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlci5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90
aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09i
amVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwogCiAg
ICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC0zNyw3ICszOSwyMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdmlydHVhbCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KKworICAg
IHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworICAg
IHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbik7CisKKyAgICB2
b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChFd2tfTm90aWZpY2F0aW9uX0luZm8qKTsKKyAgICB2
b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKik7CisgICAgdm9p
ZCBub3RpZmljYXRpb25DbG9zZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKik7CisgICAgdm9pZCBu
b3RpZmljYXRpb25FcnJvcihFd2tfTm90aWZpY2F0aW9uX0luZm8qKTsKKworcHJpdmF0ZToKKyAg
ICBFd2tfTm90aWZpY2F0aW9uKiBtX2V3a05vdGlmaWNhdGlvbjsKKyAgICBIYXNoU2V0PE5vdGlm
aWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX2Nh
Y2hlZFBlcm1pc3Npb25zOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisK
KyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdl
YktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRleCAzZjc5NGZiLi43
ODRjMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJld2tfanMuaCIKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uZXR3
b3JrLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0
dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyOWQ2OTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwx
ODYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlldy5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7Cisg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25f
cHJlc2VudGVyOworICAgIEV2YXNfT2JqZWN0KiBld2tfdmlldzsKKyAgICBFaW5hX0xpc3QqIGV3
a19ub3RpZmljYXRpb25faW5mb19saXN0OworfTsKKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9u
X0luZm8geworICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmljYXRpb247CisgICAgdm9p
ZCogbm90aWZpY2F0aW9uOworICAgIGNoYXIqIGljb25VUkw7CisgICAgY2hhciogdGl0bGU7Cisg
ICAgY2hhciogYm9keTsKKyAgICBjaGFyKiBodG1sVVJMOworICAgIHVuc2lnbmVkIF9fcmVmOwor
fTsKKworRXZhc19PYmplY3QqIGV3a19ub3RpZmljYXRpb25fdmlld19nZXQoRXdrX05vdGlmaWNh
dGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPmV3
a192aWV3OworfQorCit2b2lkKiBld2tfbm90aWZpY2F0aW9uX2dldChFd2tfTm90aWZpY2F0aW9u
X0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlv
bkluZm8tPm5vdGlmaWNhdGlvbjsKK30KKworY2hhciogZXdrX25vdGlmaWNhdGlvbl9pY29uX3Vy
bF9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAg
IHJldHVybiBld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMOworfQorCitjaGFyKiBld2tfbm90
aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlv
bkluZm8pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbkluZm8tPnRpdGxlOworfQorCitj
aGFyKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdr
Tm90aWZpY2F0aW9uSW5mbykKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uSW5mby0+Ym9k
eTsKK30KKworY2hhciogZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQoRXdrX05vdGlmaWNh
dGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIHJldHVybiBld2tOb3RpZmlj
YXRpb25JbmZvLT5odG1sVVJMOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb25JbmZvLT5ld2tfbm90aWZpY2F0
aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5ub3RpZmljYXRpb25EaXNwbGF5ZWQoZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2NsaWNr
ZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmlj
YXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm5vdGlmaWNhdGlvbkNsaWNrZWQoZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3Nl
ZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uQ2xvc2VkKGV3a05vdGlm
aWNhdGlvbkluZm8pOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJvcihF
d2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlmaWNhdGlv
bi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uRXJyb3IoZXdrTm90aWZpY2F0
aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25f
Y2FsbGJhY2tfY2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlv
bkluZm8sIEVpbmFfQm9vbCBwZXJtaXQsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBpZiAocGVybWl0KQorICAgICAgICBld2tOb3RpZmljYXRp
b25JbmZvLT5ld2tfbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5wZXJtaXR0
ZWRDYWxsYmFja0NhbGwoZG9tYWluKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRp
b25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdr
Tm90aWZpY2F0aW9uSW5mbywgY2hhcioqIGRvbWFpbnMsIGludCBzaXplKQoreworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRp
b24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm1ha2VQZXJtaXNzaW9uQ2FjaGUoZG9tYWlucywg
c2l6ZSk7CisjZW5kaWYKK30KKworRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9j
cmVhdGUoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50
ZXIsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEV3a19Ob3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IHN0YXRpY19jYXN0PEV3a19Ob3RpZmljYXRpb24qPihtYWxsb2Moc2l6ZW9mKEV3
a19Ob3RpZmljYXRpb24pKSk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgICAgIHJldHVy
biAwOworCisgICAgbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4obm90aWZpY2F0
aW9uUHJlc2VudGVyKTsKKyAgICBub3RpZmljYXRpb24tPmV3a192aWV3ID0gZXdrVmlldzsKKyAg
ICBub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25faW5mb19saXN0ID0gMDsKKworICAgIHJl
dHVybiBub3RpZmljYXRpb247Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICBmcmVlKGV3a05vdGlmaWNh
dGlvbik7CisgICAgZXdrTm90aWZpY2F0aW9uID0gMDsKK30KKworRXdrX05vdGlmaWNhdGlvbl9J
bmZvKiBld2tfbm90aWZpY2F0aW9uX2luZm9fY3JlYXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbiwgdm9pZCogbm90aWZpY2F0aW9uKQoreworICAgIEV3a19Ob3RpZmljYXRpb25f
SW5mbyogbm90aWZpY2F0aW9uX2luZm8gPSBzdGF0aWNfY2FzdDxFd2tfTm90aWZpY2F0aW9uX0lu
Zm8qPihtYWxsb2Moc2l6ZW9mKEV3a19Ob3RpZmljYXRpb25fSW5mbykpKTsKKyAgICBpZiAoIW5v
dGlmaWNhdGlvbl9pbmZvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG5vdGlmaWNhdGlvbl9p
bmZvLT5fX3JlZiA9IDE7CisgICAgbm90aWZpY2F0aW9uX2luZm8tPmV3a19ub3RpZmljYXRpb24g
PSBld2tOb3RpZmljYXRpb247CisgICAgbm90aWZpY2F0aW9uX2luZm8tPm5vdGlmaWNhdGlvbiA9
IG5vdGlmaWNhdGlvbjsKKyAgICBub3RpZmljYXRpb25faW5mby0+aWNvblVSTCA9IHN0cmR1cChz
dGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT5jb250ZW50
cygpLmljb24uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbm90aWZpY2F0aW9uX2luZm8t
PnRpdGxlID0gc3RyZHVwKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlm
aWNhdGlvbiktPmNvbnRlbnRzKCkudGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgbm90aWZpY2F0
aW9uX2luZm8tPmJvZHkgPSBzdHJkdXAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9u
Kj4obm90aWZpY2F0aW9uKS0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkpOworICAgIG5v
dGlmaWNhdGlvbl9pbmZvLT5odG1sVVJMID0gc3RyZHVwKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbiktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgZXdrTm90aWZpY2F0aW9uLT5ld2tfbm90aWZpY2F0aW9uX2luZm9fbGlzdCA9IGVp
bmFfbGlzdF9hcHBlbmQoZXdrTm90aWZpY2F0aW9uLT5ld2tfbm90aWZpY2F0aW9uX2luZm9fbGlz
dCwgbm90aWZpY2F0aW9uX2luZm8pOworICAgIHJldHVybiBub3RpZmljYXRpb25faW5mbzsKK30K
Kwordm9pZCBld2tfbm90aWZpY2F0aW9uX2luZm9fZGVzdHJveShFd2tfTm90aWZpY2F0aW9uX0lu
Zm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oZXdrTm90aWZpY2F0aW9uSW5mbyk7CisKKyAgICBpZiAoIWV3a05vdGlmaWNhdGlvbkluZm8t
Pmljb25VUkwpCisgICAgICAgIGZyZWUoZXdrTm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCk7Cisg
ICAgaWYgKCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQorICAgICAgICBmcmVlKGV3a05v
dGlmaWNhdGlvbkluZm8tPnRpdGxlKTsKKyAgICBpZiAoIWV3a05vdGlmaWNhdGlvbkluZm8tPmlj
b25VUkwpCisgICAgICAgIGZyZWUoZXdrTm90aWZpY2F0aW9uSW5mby0+Ym9keSk7CisgICAgaWYg
KCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQorICAgICAgICBmcmVlKGV3a05vdGlmaWNh
dGlvbkluZm8tPmh0bWxVUkwpOworCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlm
aWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QgPSBcCisgICAgICAgIGVpbmFfbGlz
dF9yZW1vdmUoZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlmaWNhdGlvbi0+ZXdrX25vdGlm
aWNhdGlvbl9pbmZvX2xpc3QsIGV3a05vdGlmaWNhdGlvbkluZm8pOworICAgIGZyZWUoZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisgICAgZXdrTm90aWZpY2F0aW9uSW5mbyA9IDA7Cit9CisKK3ZvaWQg
ZXdrX25vdGlmaWNhaXRvbl9kZXN0cm95X2FsbChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24pCit7CisgICAgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3IgPSAwOworICAgIHZvaWQqIGRh
dGEgPSAwOworCisgICAgRUlOQV9MSVNUX0ZPUkVBQ0goZXdrTm90aWZpY2F0aW9uLT5ld2tfbm90
aWZpY2F0aW9uX2luZm9fbGlzdCwgbGlzdEl0ZXJhdG9yLCBkYXRhKQorICAgICAgICBld2tfbm90
aWZpY2F0aW9uX2luZm9fZGVzdHJveShzdGF0aWNfY2FzdDxFd2tfTm90aWZpY2F0aW9uX0luZm8q
PihkYXRhKSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYTk2OGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEs
MTQwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9o
CisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLyoqCisgKiBAYnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24g
b2YgV2ViS2l0LUVGTAorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93cyB0aGUgYXBwbGljYXRpb24g
Y2FuIHVzZSBhIHdlYiBub3RpZmljYXRpb24gZm9yIFdlYktpdC1FRkwtY29tcG9uZW50LgorICoK
KyAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCgpKSBhcmUgZW1pdHRlZDoKKyAqICAtICJub3RpZmljYXRpb24sc2hvdyIsIEBjIEV3a19O
b3RpZmljYXRpb25fSW5mbzogcmVxdWVzdGVkIGNvbnRlbnRzIHRvIGRpc3BsYXkgdGhlIG5vdGlm
aWNhdGlvbi4KKyAqICAtICJub3RpZmljYXRpb24saHRtbHNob3ciLCBAYyBFd2tfTm90aWZpY2F0
aW9uX0luZm86IHJlcXVlc3RlZCB1cmwgdG8gZGlzcGxheSBIVE1MIG5vdGlmaWNhdGlvbi4KKyAq
ICAtICJub3RpZmljYXRpb24sY2FuY2VsIiwgQGMgRXdrX25vdGlmaWNhdGlvbl9JbmZvOiByZXF1
ZXN0ZWQgbm90aWZpY2F0aW9uIGluZGV4IHRvIGNhbmNlbC4KKyAqICAtICJub3RpZmljYXRpb24s
cmVxdWVzdFBlcm1pc3Npb24iLCBjaGFyKjogcmVxdWVzdGVkIGRvbWFpbiBmb3IgZ2V0dGluZyB1
c2VyIHBlcm1pc3Npb24gZnJvbSB0aGUgdXNlci4KKyAqLworCisvLy8gQ3JlYXRlcyBhIHR5cGUg
bmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlvbi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZp
Y2F0aW9uIEV3a19Ob3RpZmljYXRpb247CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBA
YyBFd2tfTm90aWZpY2F0aW9uX0luZm8uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlv
bl9JbmZvIEV3a19Ob3RpZmljYXRpb25fSW5mbzsKKworLyoqCisgKiBHZXQgaWNvblVSTCBmb3Ig
dGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb25fSW5mby4KKyAqCisgKiBA
cGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4g
Y2hhY3RlciBwb2ludGVyIHRvIHRoZSBJY29uIFVSTCBvZiBub3RpZmljYXRpb24uCisgKgorICov
CitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRp
b25fSW5mbyogZW5pKTsKKworLyoqCisgKiBHZXQgdGl0bGUgZm9yIHRoZSBub3RpZmljYXRpb24g
ZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uX0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmlj
YXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0
byB0aGUgdGl0bGUgb2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBjaGFyKiBld2tfbm90
aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgor
ICogR2V0IGJvZHkgY29udGVudHMgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90
aWZpY2F0aW9uX0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0
cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0byB0aGUgYm9keSBjb250
ZW50cyBvZiBub3RpZmljYXRpb24uCisgKgorICovCitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRp
b25fYm9keV9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBlbmkpOworCisvKioKKyAqIEdldCBo
dG1sIGNvbnRlbnRzIFVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmlj
YXRpb25fSW5mby4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0
dXJlLgorICoKKyAqIEByZXR1cm4gY2hhY3RlciBwb2ludGVyIHRvIHRoZSBodG1sIGNvbnRlbnRz
IHVybCBvZiBub3RpZmljYXRpb24uCisgKgorICovCitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRp
b25faHRtbF91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisgKiBD
YWxscyBhIGNhbGxiYWNrIGZ1Y250aW9uIHdoaWNoIGlzIHJlZ2lzdGVyZCwgYWZ0ZXIgcmVjZWl2
aW5nIGEgdXNlciBhcHByb3ZhbC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3Vy
Y2Ugc3RydWN0dXJlLgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBFSU5BX1RSVUUgdG8gYWxsb3cg
dG8gc2hvdyBub3RpZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8gbm90IGFsbG93IHRvIHNob3cg
bm90aWZpY2F0aW9uLgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQgYSBwZXJt
aXQgbGlzdC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxs
YmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pLCBFaW5hX0Jvb2wgcGVy
bWl0dGVkLCBjb25zdCBjaGFyKiBkb21haW4pOworCisvKioKKyAqIE1ha2VzIGEgQ2FjaGUgZm9y
IHBlcm1pdHRlZCBkb21haW5zLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBh
dCBpbml0aWFsaXppbmcgdGltZSBpZiBhIGFwcGxpY2F0aW9uIGhhdmUgcGVybWl0ZWQgZG9tYWlu
cy4KKyAqIFdlYkNvcmUgY2hlY2tzIGEgcGVybWlzc2lvbiBmcm9tIHRoZSBjYWNoZSBvbmx5IHdo
ZW4gY2hlY2tQZXJtaXNzaW9uKCkgaXMgY2FsbGVkIGZyb20gamF2YXNjcmlwdC4KKyAqCisgKiBA
cGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIGRvbWFp
bnMgZG9tYWluIGxpc3Qgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBwZXJtaXNzaW9uIGNhY2hlLgor
ICogQHBhcmFtIHNpemUgdG90YWwgbnVtYmVyIG9mIGRvbWFpbnMKKyAqLworRUFQSSB2b2lkIGV3
a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRp
b25fSW5mbyogZW5pLCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2Ug
YW4gb25kaXNwbGF5IGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0
aW9uIGlzIGRpc3BsYXllZAorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBz
dHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BsYXllZChFd2tf
Tm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogTWFrZSBhbiBvbmNsaWNrIGNhbGxi
YWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQKKyAq
CisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJ
IHZvaWQgZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5p
KTsKKworLyoqCisgKiBNYWtlIGFuIG9uY2xvc2UgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlw
dCBhZnRlciBub3RpZmljYXRpb24gaXMgY2xvc2VkCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmlj
YXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25f
Y2xvc2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisgKiBNYWtlIGFuIG9u
ZXJyb3IgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBlcnJvciBpcyBvY2N1cmVkIGR1
cmluZyBub3RpZmljYXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0
aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Vy
cm9yKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaAppbmRleCA2ZjUzMzIxLi42YzNiOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ByaXZhdGUuaApAQCAtMzksNiArMzksMTEgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgImV3a19ub3Rp
ZmljYXRpb24uaCIKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewog
I2VuZGlmCkBAIC0yMjIsNiArMjI3LDE5IEBAIGNvbnN0IGNoYXIqIGV3a19zZXR0aW5nc19kZWZh
dWx0X3VzZXJfYWdlbnRfZ2V0KCk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRl
bnRzX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVu
dF9zZWxlY3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCogbyk7CiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX3ZpZXdfbm90aWZp
Y2F0aW9uX3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOworCitFd2tf
Tm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXIqLCBFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a19ub3RpZmljYXRp
b25fZGVzdHJveShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOworCitFd2tfTm90
aWZpY2F0aW9uX0luZm8qIGV3a19ub3RpZmljYXRpb25faW5mb19jcmVhdGUoRXdrX05vdGlmaWNh
dGlvbiogZXdrTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25JbmRleCk7Cit2b2lkIGV3
a19ub3RpZmljYXRpb25faW5mb19kZXN0cm95KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisKK0V2YXNfT2JqZWN0KiBld2tfbm90aWZpY2F0aW9uX3ZpZXdfZ2V0
KEV3a19Ob3RpZmljYXRpb24qIGVuKTsKK3ZvaWQqIGV3a19ub3RpZmljYXRpb25fZ2V0KEV3a19O
b3RpZmljYXRpb25fSW5mbyogZW5pKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjliZTIxOS4uMjZhY2RiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAogI2luY2x1ZGUg
IkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFpP
T01fTUlOICgwLjA1KQogI2RlZmluZSBaT09NX01BWCAoNC4wKQogCkBAIC02MDYsNiArNjExLDEw
IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlTW90aW9u
Q2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDsKICAgICBwYWdlQ2xp
ZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHBh
Z2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKKyNlbmRpZgorCiAgICAgcHJpdi0+
cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBpZiAoIXByaXYtPnBh
Z2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsK
QEAgLTM4MjEsNiArMzgzMCwxNSBAQCBFd2tfUGFnZV9WaXNpYmlsaXR5X1N0YXRlIGV3a192aWV3
X3Zpc2liaWxpdHlfc3RhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQogI2VuZGlmCiB9
CiAKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX3ZpZXdfbm90aWZpY2F0aW9u
X3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIDApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5ub3RpZmljYXRpb25Db250cm9sbGVy
KCktPmNsaWVudCgpOworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBFV0tQcml2YXRlIHsKIAogV2Vi
Q29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCmluZGV4IGQyZDIxZTIuLjhlM2Y1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBA
IC04MSw3ICs4MSw3IEBAIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NQVRITUwgIkVuYWJsZSBNYXRo
TUwiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUVURVJfVEFHICJFbmFibGUg
TWV0ZXIgdGFnIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01JQ1JPREFUQSAi
RW5hYmxlIEhUTUw1IG1pY3JvZGF0YSBzdXBwb3J0IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFU
VVJFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJICJFbmFibGUgTmV0c2NhcGUgcGx1Z2luIEFQ
SSIgREVGQVVMVCBPRkYpCi1XRUJLSVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5h
YmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT0ZGKQorV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05P
VElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZF
QVRVUkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyAiRW5hYmxlIG9yaWVudGF0aW9uIGV2ZW50
cyIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQ
SSAiRW5hYmxlIFBhZ2UgVmlzaWJpbGl0eSBBUEkiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVS
RShFTkFCTEVfUFJPR1JFU1NfVEFHICJFbmFibGUgcHJvZ3Jlc3MgdGFnIiBERUZBVUxUIE9OKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFkMTU5
ZjQuLjY5ZTY1YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0wMyAgS2lob25nIEt3b24gIDxraWhvbmcu
a3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgQVBJIGZvciBXZWIgTm90aWZp
Y2F0aW9uIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuYWJsZXMgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgor
ICAgICAgICBBbmQgYWRkICJXZWJDb3JlL25vdGlmaWNhdGlvbnMiIHNvdXJjZSBwYXRoIHRvIGJ1
aWxkIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0OiBBZGQgbm90aWZpY2F0aW9ucyBkaXJlY3RvcnkgcGF0aCBmb3IgdGhlIER1bXBS
ZW5kZXJUcmVlLgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBFbmFibGUgRU5BQkxF
X05PVElGSUNBVElPTlMgZmVhdHVyZSBmb3IgdGhlIFdlYktpdC1FZmwKKwogMjAxMS0xMi0xMSAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1JlZmFjdG9y
aW5nXSBNb3ZlIHRvcC1sZXZlbCBjb2RlIHRvIGdlbmVyYXRlIGEgbmV3IENoYW5nZUxvZyBpbnRv
IGEgbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggODU3
MTI2Yi4uNmM3Nzg1NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApA
QCAtMTE1LDYgKzExNSwxMiBAQCBJRiAoV1RGX1VTRV9DVVJMKQogICAgIExJU1QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
bmV0d29yay9jdXJsKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQorICAg
IExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAg
IiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisgICAgKQorRU5ESUYgKCkKKwogQUREX0RF
RklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9n
dGsvZm9udHMiCiAgICAgICAgICAgICAgICAgLUREQVRBX0RJUj0iJHtUSEVNRV9CSU5BUllfRElS
fSIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uODczNWM0YSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
QEAgLTI3MSw3ICsyNzEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4g
XCRuZXRzY2FwZVBsdWdpblN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRp
b25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tC
ZXJyeSgpLCB2YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwg
aXNFZmwoKSksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0
aW9uID0+ICJvcmllbnRhdGlvbi1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24g
RXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZF
TlRTIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2
ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>121392</attachid>
            <date>2012-01-05 20:39:33 -0800</date>
            <delta_ts>2012-01-05 22:19:00 -0800</delta_ts>
            <desc>Fix errors for the build.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>30519</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyMzM4YjZiLi5jN2Q3N2Rk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZTogRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUuCisK
IDIwMTEtMTItMDkgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gcmVxdWVzdCBwYXJhbWV0ZXIgb2YgUVF1aWNrV2Vi
Vmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBpcyBub3QgYSByZWdpc3RlcmVkIHR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1Ni4uZDM3YjJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BB
TkdPKQogICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25v
dGlmaWNhdGlvbnMiCi0gICkKLUVORElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJ
U1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lG
IChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9E
SVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICAp
CisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJS
QVJJRVMKICAgICAke0NhaXJvX0xJQlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpA
QCAtMjUxLDYgKzI1NCwxMCBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVX
ZWJLaXRfSEVBREVSUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmgpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElT
VChBUFBFTkQgRVdlYktpdF9IRUFERVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uaCkKK0VORElGICgpCisKIElOU1RBTEwoRklMRVMgJHtFV2Vi
S2l0X0hFQURFUlN9CiAgICAgICAgIERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfTElCUkFS
WV9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBm
NDM1MTA1Li40MjBjYzQ0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTIt
MDEtMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmlj
YXRpb24gZmVhdHVyZSBhbmQgZXhwb3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRo
aXMgYW4gaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2Fpb25zIHByb3Bl
cnR5IGluIHdpbmRvdy5uYXZpZ2F0b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lv
bkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRGlzcGxheWVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5v
dGlmaWNhdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2VuZEV2ZW50KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKToKKyAgICAgICAgKiBld2svRVdlYktpdC5oOgorICAgICAgICAqIGV3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3ZpZXdfZ2V0
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25faWNvbl91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9odG1sX3VybF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNw
bGF5ZWQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jbGlja2VkKToKKyAgICAgICAgKGV3
a19ub3RpZmljYXRpb25fY2xvc2VkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZXJyb3Ip
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrX2NhbGwpOgor
ICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWluc19hZGQpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9k
ZXN0cm95KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faW5mb19jcmVhdGUpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3kpOgorICAgICAgICAoZXdrX25vdGlmaWNh
aXRvbl9kZXN0cm95X2FsbCk6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld19u
b3RpZmljYXRpb25fcHJlc2VudGVyX2dldCk6CisKIDIwMTEtMTItMDcgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludHJvZHVjZSBBc3NlcnRN
YXRjaGluZ0VudW1zLmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDllZGZiNDAuLjFmOGI1MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cApAQCAtNDIwLDggKzQyMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFi
YXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEVmbDo6
bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBld2tfdmlld19ub3RpZmljYXRpb25fcHJlc2VudGVy
X2dldChtX3ZpZXcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwuY3BwCmluZGV4IDE1MTMzZjUuLjczODVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmNwcApAQCAtMjEsNDggKzIxLDExMiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oIgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQog
eworICAgIG1fZXdrTm90aWZpY2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUodGhpcywg
dmlldyk7CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbCgpCiB7CisgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KG1f
ZXdrTm90aWZpY2F0aW9uKTsKIH0KIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkp
IHsKKyAgICAgICAgRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvID0g
ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZShtX2V3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0
aW9uKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZp
Y2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixodG1sc2hv
dyIsIGV3a05vdGlmaWNhdGlvbkluZm8pOworICAgIH0gZWxzZSB7CisgICAgICAgIEV3a19Ob3Rp
ZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyA9IGV3a19ub3RpZmljYXRpb25faW5m
b19jcmVhdGUobV9ld2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbik7CisgICAgICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrX25vdGlmaWNhdGlvbl92aWV3X2dldChtX2V3
a05vdGlmaWNhdGlvbiksICJub3RpZmljYXRpb24sc2hvdyIsIGV3a05vdGlmaWNhdGlvbkluZm8p
OworICAgIH0KKworICAgIG1fbm90aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNh
bmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyA9IGV3a19u
b3RpZmljYXRpb25faW5mb19jcmVhdGUobV9ld2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZpY2F0aW9uX3Zp
ZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCAmZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24p
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9u
T2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwog
fQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGNhbGxiYWNrKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVk
UGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9
PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKSB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZp
Y2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixyZXF1ZXN0
UGVybWlzc2lvbiIgXAorICAgICAgICAgICAgLCAodm9pZCopY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlv
blByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNo
ZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFt
X2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25z
LmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQ
ZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAg
ICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lvbkNhY2hlKGNoYXIqKiBkb21haW5zLCBpbnQgc2l6
ZSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9jYWNo
ZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbnNbaV0pKTsKK30KKwordm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25zdCBjaGFy
KiBkb21haW4pCit7CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbikp
OworICAgIG1fY2FsbGJhY2suZ2V0KCktPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNwbGF5ZWQoRXdrX05vdGlm
aWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlv
bl9nZXQoZXdrTm90aWZpY2F0aW9uSW5mbykpOworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24s
IGV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xpY2tlZChFd2tfTm90aWZpY2F0aW9uX0luZm8q
IGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24g
PSBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3Rp
ZmljYXRpb25JbmZvKSk7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uQ2xvc2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9u
SW5mbykKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PE5v
dGlmaWNhdGlvbio+KGV3a19ub3RpZmljYXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbkluZm8pKTsK
KyAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Cisg
ICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmlj
YXRpb25faW5mb19kZXN0cm95KGV3a05vdGlmaWNhdGlvbkluZm8pOworfQorCit2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uRXJyb3IoRXdrX05vdGlmaWNh
dGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlvbl9n
ZXQoZXdrTm90aWZpY2F0aW9uSW5mbykpOworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlm
aWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koZXdrTm90aWZpY2F0
aW9uSW5mbyk7CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQoTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQorICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0cnVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgKaW5kZXggMzVhYWRjOS4uMDk4MzQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxNSBAQAogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlci5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90
aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09i
amVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwogCiAg
ICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC0zNyw3ICszOSwyMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdmlydHVhbCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KKworICAg
IHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworICAg
IHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbik7CisKKyAgICB2
b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChFd2tfTm90aWZpY2F0aW9uX0luZm8qKTsKKyAgICB2
b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKik7CisgICAgdm9p
ZCBub3RpZmljYXRpb25DbG9zZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKik7CisgICAgdm9pZCBu
b3RpZmljYXRpb25FcnJvcihFd2tfTm90aWZpY2F0aW9uX0luZm8qKTsKKworcHJpdmF0ZToKKyAg
ICBFd2tfTm90aWZpY2F0aW9uKiBtX2V3a05vdGlmaWNhdGlvbjsKKyAgICBIYXNoU2V0PE5vdGlm
aWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX2Nh
Y2hlZFBlcm1pc3Npb25zOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisK
KyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdl
YktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRleCAzZjc5NGZiLi43
ODRjMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJld2tfanMuaCIKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uZXR3
b3JrLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0
dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZTQyMGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwx
ODcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2luY2x1
ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlldy5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7Cisg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25f
cHJlc2VudGVyOworICAgIEV2YXNfT2JqZWN0KiBld2tfdmlldzsKKyAgICBFaW5hX0xpc3QqIGV3
a19ub3RpZmljYXRpb25faW5mb19saXN0OworfTsKKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9u
X0luZm8geworICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmljYXRpb247CisgICAgdm9p
ZCogbm90aWZpY2F0aW9uOworICAgIGNoYXIqIGljb25VUkw7CisgICAgY2hhciogdGl0bGU7Cisg
ICAgY2hhciogYm9keTsKKyAgICBjaGFyKiBodG1sVVJMOworICAgIHVuc2lnbmVkIF9fcmVmOwor
fTsKKworRXZhc19PYmplY3QqIGV3a19ub3RpZmljYXRpb25fdmlld19nZXQoRXdrX05vdGlmaWNh
dGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPmV3
a192aWV3OworfQorCit2b2lkKiBld2tfbm90aWZpY2F0aW9uX2dldChFd2tfTm90aWZpY2F0aW9u
X0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlv
bkluZm8tPm5vdGlmaWNhdGlvbjsKK30KKworY2hhciogZXdrX25vdGlmaWNhdGlvbl9pY29uX3Vy
bF9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAg
IHJldHVybiBld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMOworfQorCitjaGFyKiBld2tfbm90
aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlv
bkluZm8pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbkluZm8tPnRpdGxlOworfQorCitj
aGFyKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdr
Tm90aWZpY2F0aW9uSW5mbykKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uSW5mby0+Ym9k
eTsKK30KKworY2hhciogZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQoRXdrX05vdGlmaWNh
dGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIHJldHVybiBld2tOb3RpZmlj
YXRpb25JbmZvLT5odG1sVVJMOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGxheWVk
KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb25JbmZvLT5ld2tfbm90aWZpY2F0
aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5ub3RpZmljYXRpb25EaXNwbGF5ZWQoZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2NsaWNr
ZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmlj
YXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm5vdGlmaWNhdGlvbkNsaWNrZWQoZXdrTm90
aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3Nl
ZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uQ2xvc2VkKGV3a05vdGlm
aWNhdGlvbkluZm8pOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJvcihF
d2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25vdGlmaWNhdGlv
bi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uRXJyb3IoZXdrTm90aWZpY2F0
aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25f
Y2FsbGJhY2tfY2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlv
bkluZm8sIEVpbmFfQm9vbCBwZXJtaXQsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBpZiAocGVybWl0KQorICAgICAgICBld2tOb3RpZmljYXRp
b25JbmZvLT5ld2tfbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5wZXJtaXR0
ZWRDYWxsYmFja0NhbGwoZG9tYWluKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRp
b25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdr
Tm90aWZpY2F0aW9uSW5mbywgY2hhcioqIGRvbWFpbnMsIGludCBzaXplKQoreworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRp
b24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm1ha2VQZXJtaXNzaW9uQ2FjaGUoZG9tYWlucywg
c2l6ZSk7CisjZW5kaWYKK30KKworRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9j
cmVhdGUoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50
ZXIsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEV3a19Ob3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IHN0YXRpY19jYXN0PEV3a19Ob3RpZmljYXRpb24qPihtYWxsb2Moc2l6ZW9mKEV3
a19Ob3RpZmljYXRpb24pKSk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgICAgIHJldHVy
biAwOworCisgICAgbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4obm90aWZpY2F0
aW9uUHJlc2VudGVyKTsKKyAgICBub3RpZmljYXRpb24tPmV3a192aWV3ID0gZXdrVmlldzsKKyAg
ICBub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25faW5mb19saXN0ID0gMDsKKworICAgIHJl
dHVybiBub3RpZmljYXRpb247Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICBld2tfbm90aWZpY2FpdG9u
X2Rlc3Ryb3lfYWxsKGV3a05vdGlmaWNhdGlvbik7CisgICAgZnJlZShld2tOb3RpZmljYXRpb24p
OworICAgIGV3a05vdGlmaWNhdGlvbiA9IDA7Cit9CisKK0V3a19Ob3RpZmljYXRpb25fSW5mbyog
ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uX0luZm8q
IG5vdGlmaWNhdGlvbl9pbmZvID0gc3RhdGljX2Nhc3Q8RXdrX05vdGlmaWNhdGlvbl9JbmZvKj4o
bWFsbG9jKHNpemVvZihFd2tfTm90aWZpY2F0aW9uX0luZm8pKSk7CisgICAgaWYgKCFub3RpZmlj
YXRpb25faW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBub3RpZmljYXRpb25faW5mby0+
X19yZWYgPSAxOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5ld2tfbm90aWZpY2F0aW9uID0gZXdr
Tm90aWZpY2F0aW9uOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5ub3RpZmljYXRpb24gPSBub3Rp
ZmljYXRpb247CisgICAgbm90aWZpY2F0aW9uX2luZm8tPmljb25VUkwgPSBzdHJkdXAoc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKS0+Y29udGVudHMoKS5p
Y29uLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT50aXRs
ZSA9IHN0cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRp
b24pLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIG5vdGlmaWNhdGlvbl9p
bmZvLT5ib2R5ID0gc3RyZHVwKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5v
dGlmaWNhdGlvbiktPmNvbnRlbnRzKCkuYm9keS51dGY4KCkuZGF0YSgpKTsKKyAgICBub3RpZmlj
YXRpb25faW5mby0+aHRtbFVSTCA9IHN0cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmlj
YXRpb24qPihub3RpZmljYXRpb24pLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QgPSBlaW5hX2xp
c3RfYXBwZW5kKGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QsIG5v
dGlmaWNhdGlvbl9pbmZvKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uX2luZm87Cit9CisKK3Zv
aWQgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBl
d2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3
a05vdGlmaWNhdGlvbkluZm8pOworCisgICAgaWYgKCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29u
VVJMKQorICAgICAgICBmcmVlKGV3a05vdGlmaWNhdGlvbkluZm8tPmljb25VUkwpOworICAgIGlm
ICghZXdrTm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCkKKyAgICAgICAgZnJlZShld2tOb3RpZmlj
YXRpb25JbmZvLT50aXRsZSk7CisgICAgaWYgKCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJM
KQorICAgICAgICBmcmVlKGV3a05vdGlmaWNhdGlvbkluZm8tPmJvZHkpOworICAgIGlmICghZXdr
Tm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCkKKyAgICAgICAgZnJlZShld2tOb3RpZmljYXRpb25J
bmZvLT5odG1sVVJMKTsKKworICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRp
b24tPmV3a19ub3RpZmljYXRpb25faW5mb19saXN0ID0gXAorICAgICAgICBlaW5hX2xpc3RfcmVt
b3ZlKGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRp
b25faW5mb19saXN0LCBld2tOb3RpZmljYXRpb25JbmZvKTsKKyAgICBmcmVlKGV3a05vdGlmaWNh
dGlvbkluZm8pOworICAgIGV3a05vdGlmaWNhdGlvbkluZm8gPSAwOworfQorCit2b2lkIGV3a19u
b3RpZmljYWl0b25fZGVzdHJveV9hbGwoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9u
KQoreworICAgIEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yID0gMDsKKyAgICB2b2lkKiBkYXRhID0g
MDsKKworICAgIEVJTkFfTElTVF9GT1JFQUNIKGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNh
dGlvbl9pbmZvX2xpc3QsIGxpc3RJdGVyYXRvciwgZGF0YSkKKyAgICAgICAgZXdrX25vdGlmaWNh
dGlvbl9pbmZvX2Rlc3Ryb3koc3RhdGljX2Nhc3Q8RXdrX05vdGlmaWNhdGlvbl9JbmZvKj4oZGF0
YSkpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNh
dGlvbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE5NjhiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaApAQCAtMCwwICsxLDE0MCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25faAorCisj
aW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKKy8qKgorICogQGJyaWVmIEFQSXMgZm9yIHRoZSB3ZWIgbm90aWZpY2F0aW9uIG9mIFdl
YktpdC1FRkwKKyAqCisgKiBUaGlzIG9iamVjdCBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIGNhbiB1
c2UgYSB3ZWIgbm90aWZpY2F0aW9uIGZvciBXZWJLaXQtRUZMLWNvbXBvbmVudC4KKyAqCisgKiBU
aGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
KSkgYXJlIGVtaXR0ZWQ6CisgKiAgLSAibm90aWZpY2F0aW9uLHNob3ciLCBAYyBFd2tfTm90aWZp
Y2F0aW9uX0luZm86IHJlcXVlc3RlZCBjb250ZW50cyB0byBkaXNwbGF5IHRoZSBub3RpZmljYXRp
b24uCisgKiAgLSAibm90aWZpY2F0aW9uLGh0bWxzaG93IiwgQGMgRXdrX05vdGlmaWNhdGlvbl9J
bmZvOiByZXF1ZXN0ZWQgdXJsIHRvIGRpc3BsYXkgSFRNTCBub3RpZmljYXRpb24uCisgKiAgLSAi
bm90aWZpY2F0aW9uLGNhbmNlbCIsIEBjIEV3a19ub3RpZmljYXRpb25fSW5mbzogcmVxdWVzdGVk
IG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisgKiAgLSAibm90aWZpY2F0aW9uLHJlcXVl
c3RQZXJtaXNzaW9uIiwgY2hhcio6IHJlcXVlc3RlZCBkb21haW4gZm9yIGdldHRpbmcgdXNlciBw
ZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIuCisgKi8KKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIEBjIEV3a19Ob3RpZmljYXRpb24uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlv
biBFd2tfTm90aWZpY2F0aW9uOworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGMgRXdr
X05vdGlmaWNhdGlvbl9JbmZvLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb25fSW5m
byBFd2tfTm90aWZpY2F0aW9uX0luZm87CisKKy8qKgorICogR2V0IGljb25VUkwgZm9yIHRoZSBu
b3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uX0luZm8uCisgKgorICogQHBhcmFt
IGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0
ZXIgcG9pbnRlciB0byB0aGUgSWNvbiBVUkwgb2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQ
SSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChFd2tfTm90aWZpY2F0aW9uX0lu
Zm8qIGVuaSk7CisKKy8qKgorICogR2V0IHRpdGxlIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20g
QGMgRXdrX05vdGlmaWNhdGlvbl9JbmZvLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9u
IHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBjaGFjdGVyIHBvaW50ZXIgdG8gdGhl
IHRpdGxlIG9mIG5vdGlmaWNhdGlvbi4KKyAqCisgKi8KK0VBUEkgY2hhciogZXdrX25vdGlmaWNh
dGlvbl90aXRsZV9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBlbmkpOworCisvKioKKyAqIEdl
dCBib2R5IGNvbnRlbnRzIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNh
dGlvbl9JbmZvLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1
cmUuCisgKgorICogQHJldHVybiBjaGFjdGVyIHBvaW50ZXIgdG8gdGhlIGJvZHkgY29udGVudHMg
b2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2Jv
ZHlfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisgKiBHZXQgaHRtbCBj
b250ZW50cyBVUkwgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9u
X0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4K
KyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0byB0aGUgaHRtbCBjb250ZW50cyB1cmwg
b2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2h0
bWxfdXJsX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogQ2FsbHMg
YSBjYWxsYmFjayBmdWNudGlvbiB3aGljaCBpcyByZWdpc3RlcmQsIGFmdGVyIHJlY2VpdmluZyBh
IHVzZXIgYXBwcm92YWwuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0
cnVjdHVyZS4KKyAqIEBwYXJhbSBwZXJtaXR0ZWQgQGMgRUlOQV9UUlVFIHRvIGFsbG93IHRvIHNo
b3cgbm90aWZpY2F0aW9uLCBAYyBFSU5BX0ZBTFNFIHRvIG5vdCBhbGxvdyB0byBzaG93IG5vdGlm
aWNhdGlvbi4KKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRkIGEgcGVybWl0IGxp
c3QuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tf
Y2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSwgRWluYV9Cb29sIHBlcm1pdHRl
ZCwgY29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtlcyBhIENhY2hlIGZvciBwZXJt
aXR0ZWQgZG9tYWlucy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQgaW5p
dGlhbGl6aW5nIHRpbWUgaWYgYSBhcHBsaWNhdGlvbiBoYXZlIHBlcm1pdGVkIGRvbWFpbnMuCisg
KiBXZWJDb3JlIGNoZWNrcyBhIHBlcm1pc3Npb24gZnJvbSB0aGUgY2FjaGUgb25seSB3aGVuIGNo
ZWNrUGVybWlzc2lvbigpIGlzIGNhbGxlZCBmcm9tIGphdmFzY3JpcHQuCisgKgorICogQHBhcmFt
IGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBkb21haW5zIGRv
bWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZS4KKyAqIEBw
YXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKi8KK0VBUEkgdm9pZCBld2tfbm90
aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tfTm90aWZpY2F0aW9uX0lu
Zm8qIGVuaSwgY2hhcioqIGRvbWFpbnMsIGludCBzaXplKTsKKworLyoqCisgKiBNYWtlIGFuIG9u
ZGlzcGxheSBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBp
cyBkaXNwbGF5ZWQKKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0
dXJlLgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwbGF5ZWQoRXdrX05vdGlm
aWNhdGlvbl9JbmZvKiBlbmkpOworCisvKioKKyAqIE1ha2UgYW4gb25jbGljayBjYWxsYmFjayBj
YWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBjbGlja2VkCisgKgorICog
QHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lk
IGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisK
Ky8qKgorICogTWFrZSBhbiBvbmNsb3NlIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0
ZXIgbm90aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9u
IHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Nsb3Nl
ZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogTWFrZSBhbiBvbmVycm9y
IGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgaWYgZXJyb3IgaXMgb2NjdXJlZCBkdXJpbmcg
bm90aWZpY2F0aW9uIGlzIHByb2NlZWQKKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBz
b3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9lcnJvcihF
d2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKaW5kZXggNmY1MzMyMS4uZDNiYTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKQEAgLTM5LDYgKzM5LDExIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNp
bmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0
aW9uLmgiCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRp
ZgpAQCAtMjIyLDYgKzIyNywyMCBAQCBjb25zdCBjaGFyKiBld2tfc2V0dGluZ3NfZGVmYXVsdF91
c2VyX2FnZW50X2dldCgpOwogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBvKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIG8pOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCitXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a192aWV3X25vdGlmaWNhdGlv
bl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworRXdrX05vdGlm
aWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyKiwgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Rl
c3Ryb3koRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKKworRXdrX05vdGlmaWNh
dGlvbl9JbmZvKiBld2tfbm90aWZpY2F0aW9uX2luZm9fY3JlYXRlKEV3a19Ob3RpZmljYXRpb24q
IGV3a05vdGlmaWNhdGlvbiwgdm9pZCogbm90aWZpY2F0aW9uSW5kZXgpOwordm9pZCBld2tfbm90
aWZpY2F0aW9uX2luZm9fZGVzdHJveShFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNh
dGlvbkluZm8pOworCitFdmFzX09iamVjdCogZXdrX25vdGlmaWNhdGlvbl92aWV3X2dldChFd2tf
Tm90aWZpY2F0aW9uKiBlbik7Cit2b2lkKiBld2tfbm90aWZpY2F0aW9uX2dldChFd2tfTm90aWZp
Y2F0aW9uX0luZm8qIGVuaSk7Cit2b2lkIGV3a19ub3RpZmljYWl0b25fZGVzdHJveV9hbGwoRXdr
X05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1
c3BsdXMKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMjliZTIxOS4uMjZh
Y2RiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2NiwxMSBAQAog
I2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCiAj
ZGVmaW5lIFpPT01fTUlOICgwLjA1KQogI2RlZmluZSBaT09NX01BWCAoNC4wKQogCkBAIC02MDYs
NiArNjExLDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2
X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNsaWVudHMuZGV2
aWNlTW90aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDsKICAg
ICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKKyNlbmRpZgorCiAg
ICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBpZiAo
IXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgV2ViS2l0
IFBhZ2UiKTsKQEAgLTM4MjEsNiArMzgzMCwxNSBAQCBFd2tfUGFnZV9WaXNpYmlsaXR5X1N0YXRl
IGV3a192aWV3X3Zpc2liaWxpdHlfc3RhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQog
I2VuZGlmCiB9CiAKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogZXdrX3ZpZXdfbm90
aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEsIDApOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYsIDApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5ub3RpZmljYXRpb25D
b250cm9sbGVyKCktPmNsaWVudCgpOworI2VuZGlmCit9CisKIG5hbWVzcGFjZSBFV0tQcml2YXRl
IHsKIAogV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IGQyZDIxZTIuLjhlM2Y1MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZs
LmNtYWtlCkBAIC04MSw3ICs4MSw3IEBAIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NQVRITUwgIkVu
YWJsZSBNYXRoTUwiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUVURVJfVEFH
ICJFbmFibGUgTWV0ZXIgdGFnIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01J
Q1JPREFUQSAiRW5hYmxlIEhUTUw1IG1pY3JvZGF0YSBzdXBwb3J0IiBERUZBVUxUIE9GRikKIFdF
QktJVF9GRUFUVVJFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJICJFbmFibGUgTmV0c2NhcGUg
cGx1Z2luIEFQSSIgREVGQVVMVCBPRkYpCi1XRUJLSVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FU
SU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT0ZGKQorV0VCS0lUX0ZFQVRVUkUo
RU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9OKQog
V0VCS0lUX0ZFQVRVUkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyAiRW5hYmxlIG9yaWVudGF0
aW9uIGV2ZW50cyIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSAiRW5hYmxlIFBhZ2UgVmlzaWJpbGl0eSBBUEkiIERFRkFVTFQgT04pCiBXRUJL
SVRfRkVBVFVSRShFTkFCTEVfUFJPR1JFU1NfVEFHICJFbmFibGUgcHJvZ3Jlc3MgdGFnIiBERUZB
VUxUIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDFkMTU5ZjQuLjUyZDJmZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0wNSAgS2lob25nIEt3b24g
IDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgQVBJIGZvciBX
ZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZXMgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlIGZvciBXZWJL
aXQtRWZsLgorICAgICAgICBBbmQgYWRkICJXZWJDb3JlL25vdGlmaWNhdGlvbnMiIHNvdXJjZSBw
YXRoIHRvIGJ1aWxkIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
ZWZsL0NNYWtlTGlzdHMudHh0OiBBZGQgbm90aWZpY2F0aW9ucyBkaXJlY3RvcnkgcGF0aCBmb3Ig
dGhlIER1bXBSZW5kZXJUcmVlLgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBFbmFi
bGUgRU5BQkxFX05PVElGSUNBVElPTlMgZmVhdHVyZSBmb3IgdGhlIFdlYktpdC1FZmwKKwogMjAx
MS0xMi0xMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W1JlZmFjdG9yaW5nXSBNb3ZlIHRvcC1sZXZlbCBjb2RlIHRvIGdlbmVyYXRlIGEgbmV3IENoYW5n
ZUxvZyBpbnRvIGEgbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQK
aW5kZXggODU3MTI2Yi4uNmM3Nzg1NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxp
c3RzLnR4dApAQCAtMTE1LDYgKzExNSwxMiBAQCBJRiAoV1RGX1VTRV9DVVJMKQogICAgIExJU1Qo
QVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMgJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9OT1RJRklDQVRJ
T05TKQorICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMK
KyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisgICAgKQorRU5ESUYgKCkK
KwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVu
ZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAgICAgICAgICAgLUREQVRBX0RJUj0iJHtUSEVNRV9C
SU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uODczNWM0YSAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKQEAgLTI3MSw3ICsyNzEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwg
dmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJu
b3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0b3AgTm90aWZpY2F0aW9ucyBTdXBw
b3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+
IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiAoaXNCbGFja0Jl
cnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAog
ICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgT3Jp
ZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5U
QVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRvcmll
bnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121398</attachid>
            <date>2012-01-05 22:19:00 -0800</date>
            <delta_ts>2012-01-06 02:20:35 -0800</delta_ts>
            <desc>Add destroy notification objects for the ewk.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>30761</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmY2U5ZDJjLi4zYjNjYjBk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlLgor
CiAyMDEyLTAxLTA1ICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFt2OF0gTnVsbCBwb2ludGVyIGV4Y2VwdGlvbiBpZiBhIHR5cGVkIGFycmF5IGNvbnN0cnVj
dG9yIHNldCB0byBhIHByaW1pdGl2ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKaW5kZXggYzVlZjY1Ni4uZDM3YjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQog
Ci1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURF
X0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVO
RElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBw
b3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VS
Q0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9O
UykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAi
JHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCisgICAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkK
K0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJ
QlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpAQCAtMjUxLDYgKzI1NCwxMCBAQCBJ
RiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVXZWJLaXRfSEVBREVSUyAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgpCiBFTkRJRiAoKQog
CitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRVdlYktpdF9IRUFE
RVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
aCkKK0VORElGICgpCisKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0X0hFQURFUlN9CiAgICAgICAg
IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfTElCUkFSWV9OQU1FfS0ke1BST0pFQ1RfVkVS
U0lPTl9NQUpPUn0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2ODQ5NTM3Li4xOWE2ODQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTItMDEtMDUgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2Vi
IE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBhbmQgZXhw
b3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRoaXMgYW4gaW1wbGVtZW50YXRpb24g
aXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2Fpb25zIHByb3BlcnR5IGluIHdpbmRvdy5uYXZpZ2F0
b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90
aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bWFrZVBl
cm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkRpc3BsYXllZCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlv
bkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25FcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRFdmVudCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmg6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3Rz
Rm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2sv
ZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl92
aWV3X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2dldCk6CisgICAgICAgIChld2tf
bm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Rp
dGxlX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAg
KGV3a19ub3RpZmljYXRpb25faHRtbF91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fZGlzcGxheWVkKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY2xpY2tlZCk6CisgICAg
ICAgIChld2tfbm90aWZpY2F0aW9uX2Nsb3NlZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9u
X2Vycm9yKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19j
YWxsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY3JlYXRlKToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fZGVzdHJveSk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2luZm9fY3JlYXRlKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faW5mb19kZXN0cm95KToKKyAgICAgICAgKGV3a19u
b3RpZmljYWl0b25fZGVzdHJveV9hbGwpOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoZXdr
X3ZpZXdfbm90aWZpY2F0aW9uX3ByZXNlbnRlcl9nZXQpOgorCiAyMDEyLTAxLTA1ICBLd2FuZ0h5
dWsgS2ltICA8aHl1a2kua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludmFsaWRh
dGlvbiByZXF1ZXN0IGZvciBld2tfdmlldyBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgcmVuZGVy
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKaW5kZXggYTI1ZjlkMC4uMzUxNjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC00MjAsOCAr
NDIwLDcgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25Q
cmVzZW50ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGV3a192aWV3X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KG1fdmlldyk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXgg
YmE0NjZmNS4uNmQwZDcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3Bw
CkBAIC0yMSw1MyArMjEsMTE2IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiZXdrX25v
dGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpCiB7CisgICAgbV9ld2tO
b3RpZmljYXRpb24gPSBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZSh0aGlzLCB2aWV3KTsKIH0KIAog
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKCkKIHsKKyAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9ld2tOb3RpZmljYXRp
b24pOwogfQogCiBib29sIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6c2hvdyhOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobm90aWZpY2F0aW9uLT5pc0hUTUwoKSkgeworICAgICAgICBF
d2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8gPSBld2tfbm90aWZpY2F0
aW9uX2luZm9fY3JlYXRlKG1fZXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24pOworICAgICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a19ub3RpZmljYXRpb25fdmlld19n
ZXQobV9ld2tOb3RpZmljYXRpb24pLCAibm90aWZpY2F0aW9uLGh0bWxzaG93IiwgZXdrTm90aWZp
Y2F0aW9uSW5mbyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRXdrX05vdGlmaWNhdGlvbl9JbmZv
KiBld2tOb3RpZmljYXRpb25JbmZvID0gZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZShtX2V3
a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChld2tfbm90aWZpY2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90aWZpY2F0aW9u
KSwgIm5vdGlmaWNhdGlvbixzaG93IiwgZXdrTm90aWZpY2F0aW9uSW5mbyk7CisgICAgfQorCisg
ICAgbV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24pOworICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrX05v
dGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvID0gZXdrX25vdGlmaWNhdGlvbl9p
bmZvX2NyZWF0ZShtX2V3a05vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a19ub3RpZmljYXRpb25fdmlld19nZXQobV9ld2tO
b3RpZmljYXRpb24pLCAibm90aWZpY2F0aW9uLGNhbmNlbCIsICZld2tOb3RpZmljYXRpb25JbmZv
KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQg
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJv
eWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVu
ZCgpKSB7CisgICAgICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tfbm90aWZpY2F0aW9uX3ZpZXdfZ2V0KG1fZXdrTm90
aWZpY2F0aW9uKSwgIm5vdGlmaWNhdGlvbixyZXF1ZXN0UGVybWlzc2lvbiIgXAorICAgICAgICAg
ICAgLCAodm9pZCopY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25zLnNpemUo
KQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93
ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlz
c2lvbkNhY2hlKGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5n
KGRvbWFpbnNbaV0pKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
OnBlcm1pdHRlZENhbGxiYWNrQ2FsbChjb25zdCBjaGFyKiBkb21haW4pCit7CisgICAgbV9jYWNo
ZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbikpOworICAgIG1fY2FsbGJhY2suZ2V0KCkt
PmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
Ojpub3RpZmljYXRpb25EaXNwbGF5ZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmlj
YXRpb25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gc3RhdGljX2Nh
c3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlvbl9nZXQoZXdrTm90aWZpY2F0aW9uSW5m
bykpOworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5kaXNwbGF5RXZl
bnQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0
aW9uQ2xpY2tlZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7
CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBzdGF0aWNfY2FzdDxOb3RpZmljYXRp
b24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb25JbmZvKSk7CisgICAgc2Vu
ZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpOworfQorCit2b2lk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ2xvc2VkKEV3a19O
b3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyAgICBOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PE5vdGlmaWNhdGlvbio+KGV3a19ub3RpZmlj
YXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbkluZm8pKTsKKyAgICBzZW5kRXZlbnQobm90aWZpY2F0
aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92
ZShub3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmljYXRpb25faW5mb19kZXN0cm95KGV3a05v
dGlmaWNhdGlvbkluZm8pOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6bm90aWZpY2F0aW9uRXJyb3IoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRp
b25JbmZvKQoreworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8
Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlmaWNhdGlvbl9nZXQoZXdrTm90aWZpY2F0aW9uSW5mbykp
OworICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KTsK
KyAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKG5vdGlmaWNhdGlvbik7CisgICAgZXdrX25vdGlm
aWNhdGlvbl9pbmZvX2Rlc3Ryb3koZXdrTm90aWZpY2F0aW9uSW5mbyk7CiB9CiAKLXZvaWQgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
aWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBub3Rp
ZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCB0
cnVlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKaW5kZXggMjYw
YzQ0Mi4uYjY0OGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKQEAgLTIz
LDEzICsyMywxNSBAQAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUg
ImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQog
cHVibGljOgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90
aWZpY2F0aW9uKik7CkBAIC0zOCw3ICs0MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPik7CiAgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24g
Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSB7IH0KKworICAgIHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiog
ZG9tYWlucywgaW50IHNpemUpOworICAgIHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0
IGNoYXIqIGRvbWFpbik7CisKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkRpc3BsYXllZChFd2tfTm90
aWZpY2F0aW9uX0luZm8qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoRXdrX05vdGlm
aWNhdGlvbl9JbmZvKik7CisgICAgdm9pZCBub3RpZmljYXRpb25DbG9zZWQoRXdrX05vdGlmaWNh
dGlvbl9JbmZvKik7CisgICAgdm9pZCBub3RpZmljYXRpb25FcnJvcihFd2tfTm90aWZpY2F0aW9u
X0luZm8qKTsKKworcHJpdmF0ZToKKyAgICBFd2tfTm90aWZpY2F0aW9uKiBtX2V3a05vdGlmaWNh
dGlvbjsKKyAgICBIYXNoU2V0PE5vdGlmaWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBI
YXNoU2V0PFdURjo6U3RyaW5nPiBtX2NhY2hlZFBlcm1pc3Npb25zOworICAgIFJlZlB0cjxWb2lk
Q2FsbGJhY2s+IG1fY2FsbGJhY2s7CisKKyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24q
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VX
ZWJLaXQuaAppbmRleCAzZjc5NGZiLi43ODRjMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svRVdlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJld2tfanMuaCIKICNpbmNsdWRlICJld2tfbWFp
bi5oIgogI2luY2x1ZGUgImV3a19uZXR3b3JrLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlv
bi5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAj
aW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0dXJlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19ub3RpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2
ZTQyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlm
aWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
ZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCisjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNp
bmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisKK3N0cnVj
dCBfRXdrX05vdGlmaWNhdGlvbiB7CisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsKiBub3RpZmljYXRpb25fcHJlc2VudGVyOworICAgIEV2YXNfT2JqZWN0KiBld2tf
dmlldzsKKyAgICBFaW5hX0xpc3QqIGV3a19ub3RpZmljYXRpb25faW5mb19saXN0OworfTsKKwor
c3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uX0luZm8geworICAgIEV3a19Ob3RpZmljYXRpb24qIGV3
a19ub3RpZmljYXRpb247CisgICAgdm9pZCogbm90aWZpY2F0aW9uOworICAgIGNoYXIqIGljb25V
Ukw7CisgICAgY2hhciogdGl0bGU7CisgICAgY2hhciogYm9keTsKKyAgICBjaGFyKiBodG1sVVJM
OworICAgIHVuc2lnbmVkIF9fcmVmOworfTsKKworRXZhc19PYmplY3QqIGV3a19ub3RpZmljYXRp
b25fdmlld19nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJl
dHVybiBld2tOb3RpZmljYXRpb24tPmV3a192aWV3OworfQorCit2b2lkKiBld2tfbm90aWZpY2F0
aW9uX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7Cisg
ICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbkluZm8tPm5vdGlmaWNhdGlvbjsKK30KKworY2hhciog
ZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tO
b3RpZmljYXRpb25JbmZvKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb25JbmZvLT5pY29u
VVJMOworfQorCitjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0
aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNh
dGlvbkluZm8tPnRpdGxlOworfQorCitjaGFyKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3
a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyAgICByZXR1cm4g
ZXdrTm90aWZpY2F0aW9uSW5mby0+Ym9keTsKK30KKworY2hhciogZXdrX25vdGlmaWNhdGlvbl9o
dG1sX3VybF9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQor
eworICAgIHJldHVybiBld2tOb3RpZmljYXRpb25JbmZvLT5odG1sVVJMOworfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fZGlzcGxheWVkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZp
Y2F0aW9uSW5mbykKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmlj
YXRpb25JbmZvLT5ld2tfbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5ub3Rp
ZmljYXRpb25EaXNwbGF5ZWQoZXdrTm90aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX2NsaWNrZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3Rp
ZmljYXRpb25JbmZvKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlm
aWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm5v
dGlmaWNhdGlvbkNsaWNrZWQoZXdrTm90aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX2Nsb3NlZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlm
aWNhdGlvbkluZm8pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZp
Y2F0aW9uSW5mby0+ZXdrX25vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90
aWZpY2F0aW9uQ2xvc2VkKGV3a05vdGlmaWNhdGlvbkluZm8pOworI2VuZGlmCit9CisKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9lcnJvcihFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNh
dGlvbkluZm8pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0
aW9uSW5mby0+ZXdrX25vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZp
Y2F0aW9uRXJyb3IoZXdrTm90aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tf
bm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tfY2FsbChjb25zdCBFd2tfTm90aWZpY2F0
aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8sIEVpbmFfQm9vbCBwZXJtaXQsIGNvbnN0IGNo
YXIqIGRvbWFpbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBpZiAocGVybWl0
KQorICAgICAgICBld2tOb3RpZmljYXRpb25JbmZvLT5ld2tfbm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb25fcHJlc2VudGVyLT5wZXJtaXR0ZWRDYWxsYmFja0NhbGwoZG9tYWluKTsKKyNlbmRpZgor
fQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3
a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbywgY2hhcioqIGRvbWFpbnMs
IGludCBzaXplKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNh
dGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm1ha2VQ
ZXJtaXNzaW9uQ2FjaGUoZG9tYWlucywgc2l6ZSk7CisjZW5kaWYKK30KKworRXdrX05vdGlmaWNh
dGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAg
IEV3a19Ob3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PEV3a19Ob3RpZmlj
YXRpb24qPihtYWxsb2Moc2l6ZW9mKEV3a19Ob3RpZmljYXRpb24pKSk7CisgICAgaWYgKCFub3Rp
ZmljYXRpb24pCisgICAgICAgIHJldHVybiAwOworCisgICAgbm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb25fcHJlc2VudGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKj4obm90aWZpY2F0aW9uUHJlc2VudGVyKTsKKyAgICBub3RpZmljYXRpb24t
PmV3a192aWV3ID0gZXdrVmlldzsKKyAgICBub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25f
aW5mb19saXN0ID0gMDsKKworICAgIHJldHVybiBub3RpZmljYXRpb247Cit9CisKK3ZvaWQgZXdr
X25vdGlmaWNhdGlvbl9kZXN0cm95KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikK
K3sKKyAgICBld2tfbm90aWZpY2FpdG9uX2Rlc3Ryb3lfYWxsKGV3a05vdGlmaWNhdGlvbik7Cisg
ICAgZnJlZShld2tOb3RpZmljYXRpb24pOworICAgIGV3a05vdGlmaWNhdGlvbiA9IDA7Cit9CisK
K0V3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZShFd2tf
Tm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbikKK3sKKyAg
ICBFd2tfTm90aWZpY2F0aW9uX0luZm8qIG5vdGlmaWNhdGlvbl9pbmZvID0gc3RhdGljX2Nhc3Q8
RXdrX05vdGlmaWNhdGlvbl9JbmZvKj4obWFsbG9jKHNpemVvZihFd2tfTm90aWZpY2F0aW9uX0lu
Zm8pKSk7CisgICAgaWYgKCFub3RpZmljYXRpb25faW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBub3RpZmljYXRpb25faW5mby0+X19yZWYgPSAxOworICAgIG5vdGlmaWNhdGlvbl9pbmZv
LT5ld2tfbm90aWZpY2F0aW9uID0gZXdrTm90aWZpY2F0aW9uOworICAgIG5vdGlmaWNhdGlvbl9p
bmZvLT5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgbm90aWZpY2F0aW9uX2luZm8t
Pmljb25VUkwgPSBzdHJkdXAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90
aWZpY2F0aW9uKS0+Y29udGVudHMoKS5pY29uLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IG5vdGlmaWNhdGlvbl9pbmZvLT50aXRsZSA9IHN0cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpO
b3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRh
KCkpOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5ib2R5ID0gc3RyZHVwKHN0YXRpY19jYXN0PFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbiktPmNvbnRlbnRzKCkuYm9keS51dGY4
KCkuZGF0YSgpKTsKKyAgICBub3RpZmljYXRpb25faW5mby0+aHRtbFVSTCA9IHN0cmR1cChzdGF0
aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNh
dGlvbl9pbmZvX2xpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKGV3a05vdGlmaWNhdGlvbi0+ZXdrX25v
dGlmaWNhdGlvbl9pbmZvX2xpc3QsIG5vdGlmaWNhdGlvbl9pbmZvKTsKKyAgICByZXR1cm4gbm90
aWZpY2F0aW9uX2luZm87Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3ko
RXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGV3a05vdGlmaWNhdGlvbkluZm8pOworCisgICAgaWYgKCFl
d2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQorICAgICAgICBmcmVlKGV3a05vdGlmaWNhdGlv
bkluZm8tPmljb25VUkwpOworICAgIGlmICghZXdrTm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCkK
KyAgICAgICAgZnJlZShld2tOb3RpZmljYXRpb25JbmZvLT50aXRsZSk7CisgICAgaWYgKCFld2tO
b3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQorICAgICAgICBmcmVlKGV3a05vdGlmaWNhdGlvbklu
Zm8tPmJvZHkpOworICAgIGlmICghZXdrTm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCkKKyAgICAg
ICAgZnJlZShld2tOb3RpZmljYXRpb25JbmZvLT5odG1sVVJMKTsKKworICAgIGV3a05vdGlmaWNh
dGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25faW5mb19saXN0ID0g
XAorICAgICAgICBlaW5hX2xpc3RfcmVtb3ZlKGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3Rp
ZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25faW5mb19saXN0LCBld2tOb3RpZmljYXRpb25JbmZv
KTsKKyAgICBmcmVlKGV3a05vdGlmaWNhdGlvbkluZm8pOworICAgIGV3a05vdGlmaWNhdGlvbklu
Zm8gPSAwOworfQorCit2b2lkIGV3a19ub3RpZmljYWl0b25fZGVzdHJveV9hbGwoRXdrX05vdGlm
aWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9y
ID0gMDsKKyAgICB2b2lkKiBkYXRhID0gMDsKKworICAgIEVJTkFfTElTVF9GT1JFQUNIKGV3a05v
dGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QsIGxpc3RJdGVyYXRvciwgZGF0
YSkKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koc3RhdGljX2Nhc3Q8RXdr
X05vdGlmaWNhdGlvbl9JbmZvKj4oZGF0YSkpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19ub3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE5
NjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmlj
YXRpb24uaApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5l
IGV3a19ub3RpZmljYXRpb25faAorCisjaW5jbHVkZSA8RXZhcy5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogQGJyaWVmIEFQSXMgZm9yIHRo
ZSB3ZWIgbm90aWZpY2F0aW9uIG9mIFdlYktpdC1FRkwKKyAqCisgKiBUaGlzIG9iamVjdCBhbGxv
d3MgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgYSB3ZWIgbm90aWZpY2F0aW9uIGZvciBXZWJLaXQt
RUZMLWNvbXBvbmVudC4KKyAqCisgKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgKHNlZSBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQoKSkgYXJlIGVtaXR0ZWQ6CisgKiAgLSAibm90aWZpY2F0
aW9uLHNob3ciLCBAYyBFd2tfTm90aWZpY2F0aW9uX0luZm86IHJlcXVlc3RlZCBjb250ZW50cyB0
byBkaXNwbGF5IHRoZSBub3RpZmljYXRpb24uCisgKiAgLSAibm90aWZpY2F0aW9uLGh0bWxzaG93
IiwgQGMgRXdrX05vdGlmaWNhdGlvbl9JbmZvOiByZXF1ZXN0ZWQgdXJsIHRvIGRpc3BsYXkgSFRN
TCBub3RpZmljYXRpb24uCisgKiAgLSAibm90aWZpY2F0aW9uLGNhbmNlbCIsIEBjIEV3a19ub3Rp
ZmljYXRpb25fSW5mbzogcmVxdWVzdGVkIG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisg
KiAgLSAibm90aWZpY2F0aW9uLHJlcXVlc3RQZXJtaXNzaW9uIiwgY2hhcio6IHJlcXVlc3RlZCBk
b21haW4gZm9yIGdldHRpbmcgdXNlciBwZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIuCisgKi8KKwor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBjIEV3a19Ob3RpZmljYXRpb24uCit0eXBlZGVm
IHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCisvLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlvbl9JbmZvLgordHlwZWRlZiBzdHJ1
Y3QgX0V3a19Ob3RpZmljYXRpb25fSW5mbyBFd2tfTm90aWZpY2F0aW9uX0luZm87CisKKy8qKgor
ICogR2V0IGljb25VUkwgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0
aW9uX0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVy
ZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0byB0aGUgSWNvbiBVUkwgb2Ygbm90
aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJs
X2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogR2V0IHRpdGxlIGZv
ciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbl9JbmZvLgorICoKKyAq
IEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVy
biBjaGFjdGVyIHBvaW50ZXIgdG8gdGhlIHRpdGxlIG9mIG5vdGlmaWNhdGlvbi4KKyAqCisgKi8K
K0VBUEkgY2hhciogZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoRXdrX05vdGlmaWNhdGlvbl9J
bmZvKiBlbmkpOworCisvKioKKyAqIEdldCBib2R5IGNvbnRlbnRzIGZvciB0aGUgbm90aWZpY2F0
aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbl9JbmZvLgorICoKKyAqIEBwYXJhbSBlbmkgTm90
aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBjaGFjdGVyIHBvaW50
ZXIgdG8gdGhlIGJvZHkgY29udGVudHMgb2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBj
aGFyKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5p
KTsKKworLyoqCisgKiBHZXQgaHRtbCBjb250ZW50cyBVUkwgZm9yIHRoZSBub3RpZmljYXRpb24g
ZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uX0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmlj
YXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0
byB0aGUgaHRtbCBjb250ZW50cyB1cmwgb2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBj
aGFyKiBld2tfbm90aWZpY2F0aW9uX2h0bWxfdXJsX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8q
IGVuaSk7CisKKy8qKgorICogQ2FsbHMgYSBjYWxsYmFjayBmdWNudGlvbiB3aGljaCBpcyByZWdp
c3RlcmQsIGFmdGVyIHJlY2VpdmluZyBhIHVzZXIgYXBwcm92YWwuCisgKgorICogQHBhcmFtIGVu
aSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBwZXJtaXR0ZWQgQGMg
RUlOQV9UUlVFIHRvIGFsbG93IHRvIHNob3cgbm90aWZpY2F0aW9uLCBAYyBFSU5BX0ZBTFNFIHRv
IG5vdCBhbGxvdyB0byBzaG93IG5vdGlmaWNhdGlvbi4KKyAqIEBwYXJhbSBkb21haW4gZG9tYWlu
IFVSTCBmb3IgYWRkIGEgcGVybWl0IGxpc3QuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0
aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tfY2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uX0luZm8q
IGVuaSwgRWluYV9Cb29sIHBlcm1pdHRlZCwgY29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisg
KiBNYWtlcyBhIENhY2hlIGZvciBwZXJtaXR0ZWQgZG9tYWlucy4KKyAqCisgKiBUaGlzIGZ1bmN0
aW9uIGNhbiBiZSBjYWxsZWQgYXQgaW5pdGlhbGl6aW5nIHRpbWUgaWYgYSBhcHBsaWNhdGlvbiBo
YXZlIHBlcm1pdGVkIGRvbWFpbnMuCisgKiBXZWJDb3JlIGNoZWNrcyBhIHBlcm1pc3Npb24gZnJv
bSB0aGUgY2FjaGUgb25seSB3aGVuIGNoZWNrUGVybWlzc2lvbigpIGlzIGNhbGxlZCBmcm9tIGph
dmFzY3JpcHQuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVy
ZS4KKyAqIEBwYXJhbSBkb21haW5zIGRvbWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8g
cGVybWlzc2lvbiBjYWNoZS4KKyAqIEBwYXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5z
CisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChj
b25zdCBFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSwgY2hhcioqIGRvbWFpbnMsIGludCBzaXpl
KTsKKworLyoqCisgKiBNYWtlIGFuIG9uZGlzcGxheSBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2Ny
aXB0IGFmdGVyIG5vdGlmaWNhdGlvbiBpcyBkaXNwbGF5ZWQKKyAqCisgKiBAcGFyYW0gZW5pIE5v
dGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNh
dGlvbl9kaXNwbGF5ZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBlbmkpOworCisvKioKKyAqIE1h
a2UgYW4gb25jbGljayBjYWxsYmFjayBjYWxsIGZvciBKYXZhU2NyaXB0IGFmdGVyIG5vdGlmaWNh
dGlvbiBpcyBjbGlja2VkCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0
cnVjdHVyZS4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fY2xpY2tlZChFd2tfTm90
aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogTWFrZSBhbiBvbmNsb3NlIGNhbGxiYWNr
IGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsb3NlZAorICoKKyAq
IEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9p
ZCBld2tfbm90aWZpY2F0aW9uX2Nsb3NlZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisK
Ky8qKgorICogTWFrZSBhbiBvbmVycm9yIGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgaWYg
ZXJyb3IgaXMgb2NjdXJlZCBkdXJpbmcgbm90aWZpY2F0aW9uIGlzIHByb2NlZWQKKyAqCisgKiBA
cGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9lcnJvcihFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggOWFiMTIxMS4uODVjNmUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTM5LDYgKzM5LDExIEBACiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIK
KyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMjI2LDYgKzIzMSwyMCBAQCB2b2lkIGV3a19m
cmFtZV9taXhlZF9jb250ZW50X3J1bl9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBib29sIGhh
c1J1bik7CiB2b2lkIGV3a192aWV3X21peGVkX2NvbnRlbnRfZGlzcGxheWVkX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgYm9vbCBoYXNEaXNwbGF5ZWQpOwogdm9pZCBld2tfdmlld19taXhlZF9j
b250ZW50X3J1bl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzUnVuKTsKIAorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBl
d2tfdmlld19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
Vmlldyk7CisKK0V3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmljYXRpb25fY3JlYXRlKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciosIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bik7CisKK0V3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0
ZShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbklu
ZGV4KTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlv
bl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKTsKKworRXZhc19PYmplY3QqIGV3a19ub3RpZmlj
YXRpb25fdmlld19nZXQoRXdrX05vdGlmaWNhdGlvbiogZW4pOwordm9pZCogZXdrX25vdGlmaWNh
dGlvbl9nZXQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBlbmkpOwordm9pZCBld2tfbm90aWZpY2Fp
dG9uX2Rlc3Ryb3lfYWxsKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbik7CisjZW5k
aWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CmluZGV4IGRkMGQ4OWIuLmVhNWExYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApA
QCAtNjcsNiArNjcsMTEgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmlj
YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsLmgiCisjZW5kaWYKKwogI2RlZmluZSBaT09NX01JTiAoMC4wNSkKICNkZWZpbmUgWk9PTV9N
QVggKDQuMCkKIApAQCAtNjEzLDYgKzYxOCwxMCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQog
ICAgIHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VN
b3Rpb25DbGllbnRFZmw7CiAgICAgcGFnZUNsaWVudHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQg
PSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmw7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBwYWdlQ2xpZW50cy5ub3RpZmljYXRpb25DbGllbnQg
PSBuZXcgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+
c2VsZik7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShwYWdl
Q2xpZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CkBAIC0zOTA0LDYgKzM5MTMsMTUgQEAgRXdrX1Bh
Z2VfVmlzaWJpbGl0eV9TdGF0ZSBld2tfdmlld192aXNpYmlsaXR5X3N0YXRlX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrVmkKICNlbmRpZgogfQogCitXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXIqIGV3a192aWV3X25vdGlmaWNhdGlvbl9wcmVzZW50ZXJfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICByZXR1cm4gcHJpdi0+
cGFnZS0+bm90aWZpY2F0aW9uQ29udHJvbGxlcigpLT5jbGllbnQoKTsKKyNlbmRpZgorfQorCiBu
YW1lc3BhY2UgRVdLUHJpdmF0ZSB7CiAKIFdlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0IEV2
YXNfT2JqZWN0ICpld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA5N2RhNjExLi4zNTI1
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVS
RShFTkFCTEVfTUFUSE1MICJFbmFibGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRV
UkUoRU5BQkxFX01FVEVSX1RBRyAiRW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJ
VF9GRUFUVVJFKEVOQUJMRV9NSUNST0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9y
dCIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQ
SSAiRW5hYmxlIE5ldHNjYXBlIHBsdWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRV
UkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9G
RikKK1dFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0
aW9ucyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVO
VFMgIkVuYWJsZSBvcmllbnRhdGlvbiBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRV
UkUoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJ
IiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxl
IHByb2dyZXNzIHRhZyIgREVGQVVMVCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMTJkOWExLi4zYjI0MDJiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTIt
MDEtMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGVzIFdlYiBOb3RpZmljYXRp
b24gZmVhdHVyZSBmb3IgV2ViS2l0LUVmbC4KKyAgICAgICAgQW5kIGFkZCAiV2ViQ29yZS9ub3Rp
ZmljYXRpb25zIiBzb3VyY2UgcGF0aCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDogQWRkIG5vdGlmaWNhdGlvbnMg
ZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBEdW1wUmVuZGVyVHJlZS4KKyAgICAgICAgKiBTY3JpcHRz
L2J1aWxkLXdlYmtpdDogRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUgZm9yIHRo
ZSBXZWJLaXQtRWZsLgorCiAyMDEyLTAxLTA1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIERvbid0IGhhcmRjb2RlIGV4cGVjdGVkIGZpbGUgVVJJcyBp
biBhcyB0aGV5IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9D
TWFrZUxpc3RzLnR4dAppbmRleCBjOTI5MTkxLi5jNDU3OGQ5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYsNiArMTE2LDEyIEBAIElGIChXVEZfVVNFX0NV
UkwpCiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUyAk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJRiAoKQogCitJRiAoRU5B
QkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVE
RV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAg
ICApCitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05UU19DT05GX0RJUj0iJHtUT09M
U19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAgICAgICAgICAgICAtRERBVEFf
RElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiMWQ3Nzg1Li5m
ZmVjOTU1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjc1LDcgKzI3NSw3IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0
ID0+ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3VwcG9ydCB9LAogCiAgICAg
eyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3Rp
ZmljYXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9O
UyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1
cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0
ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25z
U3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2Mg
PT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2
YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="commit-queue"
          id="121885"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121414</attachid>
            <date>2012-01-06 02:20:35 -0800</date>
            <delta_ts>2012-01-10 19:29:30 -0800</delta_ts>
            <desc>Fixed for the all of comments(#25)</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>32222</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmY2U5ZDJjLi40YTNhODZk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMDYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlLgor
CiAyMDEyLTAxLTA1ICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFt2OF0gTnVsbCBwb2ludGVyIGV4Y2VwdGlvbiBpZiBhIHR5cGVkIGFycmF5IGNvbnN0cnVj
dG9yIHNldCB0byBhIHByaW1pdGl2ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKaW5kZXggYzVlZjY1Ni4uNWE2ZTI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQog
Ci1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURF
X0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVO
RElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBw
b3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VS
Q0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9O
UykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAi
JHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCisgICAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkK
K0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJ
QlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpAQCAtMjUxLDYgKzI1NCwxMSBAQCBJ
RiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVXZWJLaXRfSEVBREVSUyAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgpCiBFTkRJRiAoKQog
CitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRVdlYktpdF9IRUFE
RVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
aCkKKyAgICBMSVNUKEFQUEVORCBFV2ViS2l0X0hFQURFUlMgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgpCitFTkRJRiAoKQorCiBJ
TlNUQUxMKEZJTEVTICR7RVdlYktpdF9IRUFERVJTfQogICAgICAgICBERVNUSU5BVElPTiBpbmNs
dWRlLyR7V2ViS2l0X0xJQlJBUllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKaW5kZXggNjg0OTUzNy4uMDRiMDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYxIEBACisyMDEyLTAxLTA2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIFdlYiBOb3RpZmljYXRpb24gZmVh
dHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50cyBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgYW5kIGV4cG9zZXMgQVBJIGZvciBXZWJL
aXQtRUZsLgorICAgICAgICBUaGlzIGFuIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHdlYmtp
dE5vdGlmaWNhaW9ucyBwcm9wZXJ0eSBpbiB3aW5kb3cubmF2aWdhdG9yLgorCisgICAgICAgICog
Q01ha2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6bm90aWZpY2F0aW9u
UHJlc2VudGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpwZXJtaXR0
ZWRDYWxsYmFja0NhbGwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpub3RpZmljYXRpb25EaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbGlja2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9u
Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6bm90aWZpY2F0aW9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpzZW5kRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgor
ICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6CisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fdmlld19nZXQpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9pY29u
X3VybF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9u
X2h0bWxfdXJsX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpc3BsYXllZCk6Cisg
ICAgICAgIChld2tfbm90aWZpY2F0aW9uX2NsaWNrZWQpOgorICAgICAgICAoZXdrX25vdGlmaWNh
dGlvbl9jbG9zZWQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9lcnJvcik6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tfY2FsbCk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZCk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2NyZWF0ZSk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kpOgor
ICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9pbmZvX2NyZWF0ZSk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX2luZm9fZGVzdHJveSk6CisgICAgICAgIChld2tfbm90aWZpY2FpdG9uX2Rlc3Ry
b3lfYWxsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldCk6CisgICAg
ICAgICogZXdrL2V3a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19u
b3RpZmljYXRpb25fcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUu
aDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKwogMjAxMi0wMS0wNSAgS3dhbmdIeXVr
IEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBJbnZhbGlkYXRp
b24gcmVxdWVzdCBmb3IgZXdrX3ZpZXcgY2FuIGJlIGRpc2NhcmRlZCB3aXRob3V0IHJlbmRlcmlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwCmluZGV4IGEyNWY5ZDAuLmIxZDA0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNTcsNiArNTcs
NyBAQAogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRl
LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC00MjAsOCArNDIxLDcg
QEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5v
dGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50RWZsOjpub3RpZmljYXRpb25QcmVzZW50
ZXIoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChtX3ZpZXcpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IGJhNDY2ZjUuLjBl
NTAyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsNTMg
KzIxLDExNiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgog
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKIHsKKyAgICBtX2V3
a05vdGlmaWNhdGlvbiA9IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIHZpZXcpOwogfQog
CiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwoKQogeworICAgIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShtX2V3a05vdGlmaWNh
dGlvbik7CiB9CiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKSB7CisgICAgICAg
IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyA9IGV3a19ub3RpZmlj
YXRpb25faW5mb19jcmVhdGUobV9ld2tOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbik7CisgICAg
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrX25vdGlmaWNhdGlvbl92aWV3
X2dldChtX2V3a05vdGlmaWNhdGlvbiksICJub3RpZmljYXRpb24saHRtbHNob3ciLCBld2tOb3Rp
ZmljYXRpb25JbmZvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBFd2tfTm90aWZpY2F0aW9uX0lu
Zm8qIGV3a05vdGlmaWNhdGlvbkluZm8gPSBld2tfbm90aWZpY2F0aW9uX2luZm9fY3JlYXRlKG1f
ZXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24pOworICAgICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a19ub3RpZmljYXRpb25fdmlld19nZXQobV9ld2tOb3RpZmljYXRp
b24pLCAibm90aWZpY2F0aW9uLHNob3ciLCBld2tOb3RpZmljYXRpb25JbmZvKTsKKyAgICB9CisK
KyAgICBtX25vdGlmaWNhdGlvbnMuYWRkKG5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBFd2tf
Tm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8gPSBld2tfbm90aWZpY2F0aW9u
X2luZm9fY3JlYXRlKG1fZXdrTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24pOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrX25vdGlmaWNhdGlvbl92aWV3X2dldChtX2V3
a05vdGlmaWNhdGlvbiksICJub3RpZmljYXRpb24sY2FuY2VsIiwgJmV3a05vdGlmaWNhdGlvbklu
Zm8pOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAogdm9p
ZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ry
b3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAogdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0
cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMu
ZW5kKCkpIHsKKyAgICAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a19ub3RpZmljYXRpb25fdmlld19nZXQobV9ld2tO
b3RpZmljYXRpb24pLCAibm90aWZpY2F0aW9uLHJlcXVlc3RQZXJtaXNzaW9uIiBcCisgICAgICAg
ICAgICAsICh2b2lkKiljb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIH0KIH0KIAogTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9u
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKyAgICBpZiAoIW1fY2FjaGVkUGVybWlzc2lvbnMuc2l6
ZSgpCisgICAgICAgIHx8IG1fY2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKQorICAg
ICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKKworICAgIHJldHVybiBQZXJtaXNzaW9uQWxs
b3dlZDsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJt
aXNzaW9uQ2FjaGUoY2hhcioqIGRvbWFpbnMsIGludCBzaXplKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJp
bmcoZG9tYWluc1tpXSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyAgICBtX2Nh
Y2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmcoZG9tYWluKSk7CisgICAgbV9jYWxsYmFjay5nZXQo
KS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6Om5vdGlmaWNhdGlvbkRpc3BsYXllZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlm
aWNhdGlvbkluZm8pCit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBzdGF0aWNf
Y2FzdDxOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb25J
bmZvKSk7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmRpc3BsYXlF
dmVudCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmlj
YXRpb25DbGlja2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykK
K3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PE5vdGlmaWNh
dGlvbio+KGV3a19ub3RpZmljYXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbkluZm8pKTsKKyAgICBz
ZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25DbG9zZWQoRXdr
X05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8Tm90aWZpY2F0aW9uKj4oZXdrX25vdGlm
aWNhdGlvbl9nZXQoZXdrTm90aWZpY2F0aW9uSW5mbykpOworICAgIHNlbmRFdmVudChub3RpZmlj
YXRpb24sIGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAgICBtX25vdGlmaWNhdGlvbnMucmVt
b3ZlKG5vdGlmaWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koZXdr
Tm90aWZpY2F0aW9uSW5mbyk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjpub3RpZmljYXRpb25FcnJvcihFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNh
dGlvbkluZm8pCit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBzdGF0aWNfY2Fz
dDxOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb25JbmZv
KSk7CisgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmVycm9yRXZlbnQp
OworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKKyAgICBld2tfbm90
aWZpY2F0aW9uX2luZm9fZGVzdHJveShld2tOb3RpZmljYXRpb25JbmZvKTsKIH0KIAotdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OnNlbmRFdmVudChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIG5v
dGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2Us
IHRydWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCAy
NjBjNDQyLi5iNjQ4ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAt
MjMsMTMgKzIzLDE1IEBACiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVk
ZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25QcmVzZW50ZXIgewot
CiBwdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CisgICAgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKICAgICB+Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhO
b3RpZmljYXRpb24qKTsKQEAgLTM4LDcgKzQwLDIzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lv
biBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopIHsgfQorCisgICAgdm9pZCBtYWtlUGVybWlzc2lvbkNhY2hlKGNoYXIq
KiBkb21haW5zLCBpbnQgc2l6ZSk7CisgICAgdm9pZCBwZXJtaXR0ZWRDYWxsYmFja0NhbGwoY29u
c3QgY2hhciogZG9tYWluKTsKKworICAgIHZvaWQgbm90aWZpY2F0aW9uRGlzcGxheWVkKEV3a19O
b3RpZmljYXRpb25fSW5mbyopOworICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xpY2tlZChFd2tfTm90
aWZpY2F0aW9uX0luZm8qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChFd2tfTm90aWZp
Y2F0aW9uX0luZm8qKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkVycm9yKEV3a19Ob3RpZmljYXRp
b25fSW5mbyopOworCitwcml2YXRlOgorICAgIEV3a19Ob3RpZmljYXRpb24qIG1fZXdrTm90aWZp
Y2F0aW9uOworICAgIEhhc2hTZXQ8Tm90aWZpY2F0aW9uKj4gbV9ub3RpZmljYXRpb25zOworICAg
IEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fY2FjaGVkUGVybWlzc2lvbnM7CisgICAgUmVmUHRyPFZv
aWRDYWxsYmFjaz4gbV9jYWxsYmFjazsKKworICAgIHZvaWQgc2VuZEV2ZW50KE5vdGlmaWNhdGlv
biosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
RVdlYktpdC5oCmluZGV4IDNmNzk0ZmIuLjc4NGMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9FV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQu
aApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV3a19qcy5oIgogI2luY2x1ZGUgImV3a19t
YWluLmgiCiAjaW5jbHVkZSAiZXdrX25ldHdvcmsuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0
aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIK
ICNpbmNsdWRlICJld2tfd2luZG93X2ZlYXR1cmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MWVlMGNiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJl
d2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgImV3a192aWV3LmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4K
KyNpbmNsdWRlIDxlaW5hX3NhZmV0eV9jaGVja3MuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0
aW9uIHsKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIG5vdGlm
aWNhdGlvbl9wcmVzZW50ZXI7CisgICAgRXZhc19PYmplY3QqIGV3a192aWV3OworICAgIEVpbmFf
TGlzdCogZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3Q7Cit9OworCitzdHJ1Y3QgX0V3a19Ob3Rp
ZmljYXRpb25fSW5mbyB7CisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbjsK
KyAgICB2b2lkKiBub3RpZmljYXRpb247CisgICAgY2hhciogaWNvblVSTDsKKyAgICBjaGFyKiB0
aXRsZTsKKyAgICBjaGFyKiBib2R5OworICAgIGNoYXIqIGh0bWxVUkw7CisgICAgdW5zaWduZWQg
X19yZWY7Cit9OworCitFdmFzX09iamVjdCogZXdrX25vdGlmaWNhdGlvbl92aWV3X2dldChFd2tf
Tm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNh
dGlvbi0+ZXdrX3ZpZXc7Cit9CisKK3ZvaWQqIGV3a19ub3RpZmljYXRpb25fZ2V0KEV3a19Ob3Rp
ZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyAgICByZXR1cm4gZXdrTm90
aWZpY2F0aW9uSW5mby0+bm90aWZpY2F0aW9uOworfQorCitjaGFyKiBld2tfbm90aWZpY2F0aW9u
X2ljb25fdXJsX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8p
Cit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbkluZm8tPmljb25VUkw7Cit9CisKK2NoYXIq
IGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90
aWZpY2F0aW9uSW5mbykKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uSW5mby0+dGl0bGU7
Cit9CisKK2NoYXIqIGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoRXdrX05vdGlmaWNhdGlvbl9J
bmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb25J
bmZvLT5ib2R5OworfQorCitjaGFyKiBld2tfbm90aWZpY2F0aW9uX2h0bWxfdXJsX2dldChFd2tf
Tm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7CisgICAgcmV0dXJuIGV3
a05vdGlmaWNhdGlvbkluZm8tPmh0bWxVUkw7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9k
aXNwbGF5ZWQoRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19u
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXItPm5vdGlmaWNhdGlvbkRpc3BsYXll
ZChld2tOb3RpZmljYXRpb25JbmZvKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRp
b25fY2xpY2tlZChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a05vdGlmaWNhdGlvbkluZm8pCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdr
X25vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uQ2xpY2tl
ZChld2tOb3RpZmljYXRpb25JbmZvKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRp
b25fY2xvc2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb25JbmZvLT5ld2tf
bm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5ub3RpZmljYXRpb25DbG9zZWQo
ZXdrTm90aWZpY2F0aW9uSW5mbyk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9u
X2Vycm9yKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbykKK3sKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb25JbmZvLT5ld2tfbm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb25fcHJlc2VudGVyLT5ub3RpZmljYXRpb25FcnJvcihld2tO
b3RpZmljYXRpb25JbmZvKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcGVy
bWlzc2lvbl9jYWxsYmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrTm90
aWZpY2F0aW9uSW5mbywgRWluYV9Cb29sIHBlcm1pdCwgY29uc3QgY2hhciogZG9tYWluKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGlmIChwZXJtaXQpCisgICAgICAgIGV3a05v
dGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbl9wcmVzZW50ZXIt
PnBlcm1pdHRlZENhbGxiYWNrQ2FsbChkb21haW4pOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWluc19hZGQoY29uc3QgRXdrX05vdGlmaWNhdGlvbl9J
bmZvKiBld2tOb3RpZmljYXRpb25JbmZvLCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uSW5mby0+ZXdrX25v
dGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX3ByZXNlbnRlci0+bWFrZVBlcm1pc3Npb25DYWNoZShk
b21haW5zLCBzaXplKTsKKyNlbmRpZgorfQorCitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZp
Y2F0aW9uX2NyZWF0ZShXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlv
blByZXNlbnRlciwgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRXdrX05vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uID0gbmV3IEV3a19Ob3RpZmljYXRpb247CisgICAgbm90aWZpY2F0aW9u
LT5ub3RpZmljYXRpb25fcHJlc2VudGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4obm90aWZpY2F0aW9uUHJlc2VudGVyKTsKKyAgICBub3Rp
ZmljYXRpb24tPmV3a192aWV3ID0gZXdrVmlldzsKKyAgICBub3RpZmljYXRpb24tPmV3a19ub3Rp
ZmljYXRpb25faW5mb19saXN0ID0gMDsKKworICAgIHJldHVybiBub3RpZmljYXRpb247Cit9CisK
K3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyAgICBld2tfbm90aWZpY2FpdG9uX2Rlc3Ryb3lfYWxsKGV3a05vdGlmaWNh
dGlvbik7CisgICAgZGVsZXRlIGV3a05vdGlmaWNhdGlvbjsKKyAgICBld2tOb3RpZmljYXRpb24g
PSAwOworfQorCitFd2tfTm90aWZpY2F0aW9uX0luZm8qIGV3a19ub3RpZmljYXRpb25faW5mb19j
cmVhdGUoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRp
b24pCit7CisgICAgRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBub3RpZmljYXRpb25faW5mbyA9IG5l
dyBFd2tfTm90aWZpY2F0aW9uX0luZm87CisKKyAgICBub3RpZmljYXRpb25faW5mby0+X19yZWYg
PSAxOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5ld2tfbm90aWZpY2F0aW9uID0gZXdrTm90aWZp
Y2F0aW9uOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5ub3RpZmljYXRpb24gPSBub3RpZmljYXRp
b247CisgICAgbm90aWZpY2F0aW9uX2luZm8tPmljb25VUkwgPSBzdHJkdXAoc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKS0+Y29udGVudHMoKS5pY29uLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT50aXRsZSA9IHN0
cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT5j
b250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIG5vdGlmaWNhdGlvbl9pbmZvLT5i
b2R5ID0gc3RyZHVwKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNh
dGlvbiktPmNvbnRlbnRzKCkuYm9keS51dGY4KCkuZGF0YSgpKTsKKyAgICBub3RpZmljYXRpb25f
aW5mby0+aHRtbFVSTCA9IHN0cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24q
Pihub3RpZmljYXRpb24pLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGV3
a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QgPSBlaW5hX2xpc3RfYXBw
ZW5kKGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9pbmZvX2xpc3QsIG5vdGlmaWNh
dGlvbl9pbmZvKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uX2luZm87Cit9CisKK3ZvaWQgZXdr
X25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3Rp
ZmljYXRpb25JbmZvKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a05vdGlm
aWNhdGlvbkluZm8pOworCisgICAgaWYgKCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQor
ICAgICAgICBmcmVlKGV3a05vdGlmaWNhdGlvbkluZm8tPmljb25VUkwpOworICAgIGlmICghZXdr
Tm90aWZpY2F0aW9uSW5mby0+aWNvblVSTCkKKyAgICAgICAgZnJlZShld2tOb3RpZmljYXRpb25J
bmZvLT50aXRsZSk7CisgICAgaWYgKCFld2tOb3RpZmljYXRpb25JbmZvLT5pY29uVVJMKQorICAg
ICAgICBmcmVlKGV3a05vdGlmaWNhdGlvbkluZm8tPmJvZHkpOworICAgIGlmICghZXdrTm90aWZp
Y2F0aW9uSW5mby0+aWNvblVSTCkKKyAgICAgICAgZnJlZShld2tOb3RpZmljYXRpb25JbmZvLT5o
dG1sVVJMKTsKKworICAgIGV3a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPmV3
a19ub3RpZmljYXRpb25faW5mb19saXN0ID0gXAorICAgICAgICBlaW5hX2xpc3RfcmVtb3ZlKGV3
a05vdGlmaWNhdGlvbkluZm8tPmV3a19ub3RpZmljYXRpb24tPmV3a19ub3RpZmljYXRpb25faW5m
b19saXN0LCBld2tOb3RpZmljYXRpb25JbmZvKTsKKyAgICBmcmVlKGV3a05vdGlmaWNhdGlvbklu
Zm8pOworICAgIGV3a05vdGlmaWNhdGlvbkluZm8gPSAwOworfQorCit2b2lkIGV3a19ub3RpZmlj
YWl0b25fZGVzdHJveV9hbGwoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
ICAgIEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yID0gMDsKKyAgICB2b2lkKiBkYXRhID0gMDsKKwor
ICAgIEVJTkFfTElTVF9GT1JFQUNIKGV3a05vdGlmaWNhdGlvbi0+ZXdrX25vdGlmaWNhdGlvbl9p
bmZvX2xpc3QsIGxpc3RJdGVyYXRvciwgZGF0YSkKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9p
bmZvX2Rlc3Ryb3koc3RhdGljX2Nhc3Q8RXdrX05vdGlmaWNhdGlvbl9JbmZvKj4oZGF0YSkpOwor
fQorCitXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJl
c2VudGVyX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICByZXR1cm4gRVdL
UHJpdmF0ZTo6Y29yZVBhZ2UoZXdrVmlldyktPm5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKS0+Y2xp
ZW50KCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZp
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YjE5YjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTM2
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBld2tfbm90aWZpY2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisK
KyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqCisgKiBAYnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24gb2Yg
V2ViS2l0LUVGTAorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93cyB0aGUgYXBwbGljYXRpb24gY2Fu
IHVzZSBhIHdlYiBub3RpZmljYXRpb24gZm9yIFdlYktpdC1FRkwtY29tcG9uZW50LgorICoKKyAq
IFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCgpKSBhcmUgZW1pdHRlZDoKKyAqLworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGMg
RXdrX05vdGlmaWNhdGlvbi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19O
b3RpZmljYXRpb247CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYyBFd2tfTm90aWZp
Y2F0aW9uX0luZm8uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbl9JbmZvIEV3a19O
b3RpZmljYXRpb25fSW5mbzsKKworLyoqCisgKiBHZXQgaWNvblVSTCBmb3IgdGhlIG5vdGlmaWNh
dGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb25fSW5mby4KKyAqCisgKiBAcGFyYW0gZW5pIE5v
dGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhY3RlciBwb2lu
dGVyIHRvIHRoZSBJY29uIFVSTCBvZiBub3RpZmljYXRpb24uCisgKgorICovCitFQVBJIGNoYXIq
IGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5p
KTsKKworLyoqCisgKiBHZXQgdGl0bGUgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tf
Tm90aWZpY2F0aW9uX0luZm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNl
IHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0byB0aGUgdGl0bGUg
b2Ygbm90aWZpY2F0aW9uLgorICoKKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3Rp
dGxlX2dldChFd2tfTm90aWZpY2F0aW9uX0luZm8qIGVuaSk7CisKKy8qKgorICogR2V0IGJvZHkg
Y29udGVudHMgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uX0lu
Zm8uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAq
CisgKiBAcmV0dXJuIGNoYWN0ZXIgcG9pbnRlciB0byB0aGUgYm9keSBjb250ZW50cyBvZiBub3Rp
ZmljYXRpb24uCisgKgorICovCitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQo
RXdrX05vdGlmaWNhdGlvbl9JbmZvKiBlbmkpOworCisvKioKKyAqIEdldCBodG1sIGNvbnRlbnRz
IFVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb25fSW5mby4K
KyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAq
IEByZXR1cm4gY2hhY3RlciBwb2ludGVyIHRvIHRoZSBodG1sIGNvbnRlbnRzIHVybCBvZiBub3Rp
ZmljYXRpb24uCisgKgorICovCitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRpb25faHRtbF91cmxf
Z2V0KEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisgKiBDYWxscyBhIGNhbGxi
YWNrIGZ1Y250aW9uIHdoaWNoIGlzIHJlZ2lzdGVyZCwgYWZ0ZXIgcmVjZWl2aW5nIGEgdXNlciBh
cHByb3ZhbC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJl
LgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBFSU5BX1RSVUUgdG8gYWxsb3cgdG8gc2hvdyBub3Rp
ZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8gbm90IGFsbG93IHRvIHNob3cgbm90aWZpY2F0aW9u
LgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQgYSBwZXJtaXQgbGlzdC4KKyAq
LworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxsKGNv
bnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pLCBFaW5hX0Jvb2wgcGVybWl0dGVkLCBjb25z
dCBjaGFyKiBkb21haW4pOworCisvKioKKyAqIE1ha2VzIGEgQ2FjaGUgZm9yIHBlcm1pdHRlZCBk
b21haW5zLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBhdCBpbml0aWFsaXpp
bmcgdGltZSBpZiBhIGFwcGxpY2F0aW9uIGhhdmUgcGVybWl0ZWQgZG9tYWlucy4KKyAqIFdlYkNv
cmUgY2hlY2tzIGEgcGVybWlzc2lvbiBmcm9tIHRoZSBjYWNoZSBvbmx5IHdoZW4gY2hlY2tQZXJt
aXNzaW9uKCkgaXMgY2FsbGVkIGZyb20gamF2YXNjcmlwdC4KKyAqCisgKiBAcGFyYW0gZW5pIE5v
dGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIGRvbWFpbnMgZG9tYWluIGxp
c3Qgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBwZXJtaXNzaW9uIGNhY2hlLgorICogQHBhcmFtIHNp
emUgdG90YWwgbnVtYmVyIG9mIGRvbWFpbnMKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRp
b25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5p
LCBjaGFyKiogZG9tYWlucywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2UgYW4gb25kaXNwbGF5
IGNhbGxiYWNrIGNhbGwgZm9yIEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGRpc3Bs
YXllZAorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisg
Ki8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BsYXllZChFd2tfTm90aWZpY2F0aW9u
X0luZm8qIGVuaSk7CisKKy8qKgorICogTWFrZSBhbiBvbmNsaWNrIGNhbGxiYWNrIGNhbGwgZm9y
IEphdmFTY3JpcHQgYWZ0ZXIgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQKKyAqCisgKiBAcGFyYW0g
ZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZvaWQgZXdrX25v
dGlmaWNhdGlvbl9jbGlja2VkKEV3a19Ob3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisg
KiBNYWtlIGFuIG9uY2xvc2UgY2FsbGJhY2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBhZnRlciBub3Rp
ZmljYXRpb24gaXMgY2xvc2VkCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNl
IHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fY2xvc2VkKEV3a19O
b3RpZmljYXRpb25fSW5mbyogZW5pKTsKKworLyoqCisgKiBNYWtlIGFuIG9uZXJyb3IgY2FsbGJh
Y2sgY2FsbCBmb3IgSmF2YVNjcmlwdCBpZiBlcnJvciBpcyBvY2N1cmVkIGR1cmluZyBub3RpZmlj
YXRpb24gaXMgcHJvY2VlZAorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBz
dHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Vycm9yKEV3a19Ob3Rp
ZmljYXRpb25fSW5mbyogZW5pKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNl
bmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZkOTRmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKwor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgPEV2YXMuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXIqIGV3a19ub3RpZmljYXRpb25fcHJlc2VudGVyX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldyk7CisKK0V3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmlj
YXRpb25fY3JlYXRlKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciosIEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3a19Ob3RpZmljYXRp
b24qIGV3a05vdGlmaWNhdGlvbik7CisKK0V3a19Ob3RpZmljYXRpb25fSW5mbyogZXdrX25vdGlm
aWNhdGlvbl9pbmZvX2NyZWF0ZShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIHZv
aWQqIG5vdGlmaWNhdGlvbkluZGV4KTsKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9pbmZvX2Rlc3Ry
b3koRXdrX05vdGlmaWNhdGlvbl9JbmZvKiBld2tOb3RpZmljYXRpb25JbmZvKTsKKworRXZhc19P
YmplY3QqIGV3a19ub3RpZmljYXRpb25fdmlld19nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uKTsKK3ZvaWQqIGV3a19ub3RpZmljYXRpb25fZ2V0KEV3a19Ob3RpZmljYXRpb25f
SW5mbyogZXdrTm90aWZpY2F0aW9uSW5mbyk7Cit2b2lkIGV3a19ub3RpZmljYWl0b25fZGVzdHJv
eV9hbGwoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNlbmRp
ZiAvLyBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCmluZGV4IDlhYjEyMTEuLjVlNDgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJp
dmF0ZS5oCkBAIC0yMjcsNyArMjI3LDYgQEAgdm9pZCBld2tfdmlld19taXhlZF9jb250ZW50X2Rp
c3BsYXllZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgaGFzRGlzcGxheWUKIHZvaWQg
ZXdrX3ZpZXdfbWl4ZWRfY29udGVudF9ydW5fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29s
IGhhc1J1bik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwotCiB9CiAjZW5kaWYKICNlbmRpZiAvLyBl
d2tfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBkZDBkODliLi5l
ZWJhZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY3LDYgKzY3LDExIEBA
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2VuZGlmCisK
ICNkZWZpbmUgWk9PTV9NSU4gKDAuMDUpCiAjZGVmaW5lIFpPT01fTUFYICg0LjApCiAKQEAgLTYx
Myw2ICs2MTgsMTAgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3By
aXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwYWdlQ2xpZW50cy5k
ZXZpY2VNb3Rpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOwog
ICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOwogI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgcGFnZUNsaWVudHMubm90aWZpY2F0aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOworI2VuZGlmCisK
ICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMpOwogICAgIGlm
ICghcHJpdi0+cGFnZSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJL
aXQgUGFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBkMWM2NWViLi5jYzFiMDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtODIsNiArODIsMTAgQEAKICAqICAtICJ2
aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQuCiAgKiAg
LSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3YXMgY2hh
bmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBhbmltYXRl
ZCB6b29tIGlzIGZpbmlzaGVkLgorICogIC0gIm5vdGlmaWNhdGlvbixzaG93IiwgQGMgRXdrX05v
dGlmaWNhdGlvbl9JbmZvOiByZXF1ZXN0ZWQgY29udGVudHMgdG8gZGlzcGxheSB0aGUgbm90aWZp
Y2F0aW9uLgorICogIC0gIm5vdGlmaWNhdGlvbixodG1sc2hvdyIsIEBjIEV3a19Ob3RpZmljYXRp
b25fSW5mbzogcmVxdWVzdGVkIHVybCB0byBkaXNwbGF5IEhUTUwgbm90aWZpY2F0aW9uLgorICog
IC0gIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBAYyBFd2tfbm90aWZpY2F0aW9uX0luZm86IHJlcXVl
c3RlZCBub3RpZmljYXRpb24gaW5kZXggdG8gY2FuY2VsLgorICogIC0gIm5vdGlmaWNhdGlvbixy
ZXF1ZXN0UGVybWlzc2lvbiIsIGNoYXIqOiByZXF1ZXN0ZWQgZG9tYWluIGZvciBnZXR0aW5nIHVz
ZXIgcGVybWlzc2lvbiBmcm9tIHRoZSB1c2VyLgogICovCiAKICNpZm5kZWYgZXdrX3ZpZXdfaApk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQppbmRleCA5N2RhNjExLi4zNTI1MjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUFUSE1MICJFbmFi
bGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01FVEVSX1RBRyAi
RW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NSUNS
T0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVGQVVMVCBPRkYpCiBXRUJL
SVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5hYmxlIE5ldHNjYXBlIHBs
dWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElP
TlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dFQktJVF9GRUFUVVJFKEVO
QUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVMVCBPTikKIFdF
QktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVuYWJsZSBvcmllbnRhdGlv
biBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BBR0VfVklTSUJJ
TElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZBVUxUIE9OKQogV0VCS0lU
X0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dyZXNzIHRhZyIgREVGQVVM
VCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBmMTJkOWExLi5jM2M2NjIxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMDYgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2Vi
IE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFbmFibGVzIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBmb3IgV2ViS2l0
LUVmbC4KKyAgICAgICAgQW5kIGFkZCAiV2ViQ29yZS9ub3RpZmljYXRpb25zIiBzb3VyY2UgcGF0
aCB0byBidWlsZCBEdW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Vm
bC9DTWFrZUxpc3RzLnR4dDogQWRkIG5vdGlmaWNhdGlvbnMgZGlyZWN0b3J5IHBhdGggZm9yIHRo
ZSBEdW1wUmVuZGVyVHJlZS4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDogRW5hYmxl
IEVOQUJMRV9OT1RJRklDQVRJT05TIGZlYXR1cmUgZm9yIHRoZSBXZWJLaXQtRWZsLgorCiAyMDEy
LTAxLTA1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IERvbid0IGhhcmRjb2RlIGV4cGVjdGVkIGZpbGUgVVJJcyBpbiBhcyB0aGV5IGRlcGVuZCBvbiB0
aGUgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxp
c3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRleCBj
OTI5MTkxLi5jNDU3OGQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
CkBAIC0xMTYsNiArMTE2LDEyIEBAIElGIChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBFTkQg
RHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisg
ICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAg
ICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBBRERf
REVGSU5JVElPTlMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVl
L2d0ay9mb250cyIKICAgICAgICAgICAgICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9E
SVJ9IikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiMWQ3Nzg1Li5mZmVjOTU1IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dApAQCAtMjc1LDcgKzI3NSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1ZSA9
PiBcJG5ldHNjYXBlUGx1Z2luU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNh
dGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFj
a0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8
fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBv
cHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlv
biBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9F
VkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9u
RXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="review"
          id="121902"
          type_id="1"
          status="-"
          setter="rakuco"
    />
    <flag name="commit-queue"
          id="121903"
          type_id="3"
          status="-"
          setter="rakuco"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121963</attachid>
            <date>2012-01-10 19:29:30 -0800</date>
            <delta_ts>2012-01-10 22:37:41 -0800</delta_ts>
            <desc>Fixed patch for comment #27</desc>
            <filename>notificationEfl.txt</filename>
            <type>text/plain</type>
            <size>32012</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmY2U5ZDJjLi41YTZlMmNi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMTAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlLgor
CiAyMDEyLTAxLTA1ICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFt2OF0gTnVsbCBwb2ludGVyIGV4Y2VwdGlvbiBpZiBhIHR5cGVkIGFycmF5IGNvbnN0cnVj
dG9yIHNldCB0byBhIHByaW1pdGl2ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKaW5kZXggYzVlZjY1Ni4uZDM3YjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQog
Ci1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURF
X0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVO
RElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBw
b3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VS
Q0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9O
UykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAi
JHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCisgICAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkK
K0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJ
QlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpAQCAtMjUxLDYgKzI1NCwxMCBAQCBJ
RiAoV1RGX1VTRV9TT1VQKQogICAgIExJU1QoQVBQRU5EIEVXZWJLaXRfSEVBREVSUyAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgpCiBFTkRJRiAoKQog
CitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRVdlYktpdF9IRUFE
RVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
aCkKK0VORElGICgpCisKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0X0hFQURFUlN9CiAgICAgICAg
IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXRfTElCUkFSWV9OQU1FfS0ke1BST0pFQ1RfVkVS
U0lPTl9NQUpPUn0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2ODQ5NTM3Li4xNmRjOGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTItMDEtMTAgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2Vi
IE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBhbmQgZXhw
b3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRoaXMgYW4gaW1wbGVtZW50YXRpb24g
aXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2F0aW9ucyBwcm9wZXJ0eSBpbiB3aW5kb3cubmF2aWdh
dG9yLgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IEFkZCAiZXdrX25vdGlmaWNhdGlv
bi5jcHAiIGFuZCAiZXdrX25vdGlmaWNhdGlvbi5oIi4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuY3BwOiBSZW1vdmUgbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgd2hp
Y2ggaXMgZG9lc24ndCBuZWVkZWQgYnkgcGF0Y2ggNzMyNTMuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6Y2FuY2VsUmVxdWVz
dHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnBlcm1pdHRlZENhbGxiYWNrQ2FsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNlbmRFdmVudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNh
bmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6CisgICAgICAgICogZXdrL0VXZWJLaXQuaDogQWRk
ICIjaW5jbHVkZSBld2tfbm90aWZpY2F0aW9uLmgiCisgICAgICAgICogZXdrL2V3a19ub3RpZmlj
YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAg
ICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQpOgor
ICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9kaXJfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fb25kaXNwbGF5
X2V2ZW50X3NlbmQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9vbmNsaWNrX2V2ZW50X3Nl
bmQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9vbmNsb3NlX2V2ZW50X3NlbmQpOgorICAg
ICAgICAoZXdrX25vdGlmaWNhdGlvbl9vbmVycm9yX2V2ZW50X3NlbmQpOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrX2NhbGwpOgorICAgICAgICAoZXdrX25v
dGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWluc19hZGQpOgorICAgICAgICAoZXdrX25vdGlmaWNh
dGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KToKKyAgICAg
ICAgKGV3a19ub3RpZmljYXRpb25fcmVmKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGVy
ZWYpOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9lZmwvZXdrL0VXZWJLaXQuaC4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoX2V3a192aWV3X3ByaXZfbmV3KTogQWRkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCBvYmplY3QgdG8gdGhlIHBhZ2VDbGllbnQubm90aWZpY2F0aW9uQ2xpZW50LgorICAgICAgICAq
IGV3ay9ld2tfdmlldy5oOiBBZGQgZGVzY3JpcHRpb24gYWJvdXQgdGhlIHNtYXJ0X2NhbGxfYmFj
ayBtZXNzYWdlcyBvZiB0aGUgbm90aWZpY2F0aW9uLgogMjAxMi0wMS0wNSAgS3dhbmdIeXVrIEtp
bSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBJbnZhbGlkYXRpb24g
cmVxdWVzdCBmb3IgZXdrX3ZpZXcgY2FuIGJlIGRpc2NhcmRlZCB3aXRob3V0IHJlbmRlcmluZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCmluZGV4IGEyNWY5ZDAuLjliNGZkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNTUsMTAgKzU1LDYg
QEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00
MTcsMTQgKzQxMyw2IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVv
dGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJvbWVDbGll
bnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCiB2b2lkIENocm9tZUNsaWVudEVmbDo6
cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmls
ZUNob29zZXIpCiB7CiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9vc2VyID0gcHJwRmlsZUNo
b29zZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oCmluZGV4IDRiNDdjNzMuLjBiMWNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yOCwxMCArMjgsNiBA
QAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgotI2Vu
ZGlmCi0KIHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTE0LDEwICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7Ci0jZW5kaWYK
LQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VO
ZWVkZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggYmE0NjZmNS4uM2MzMTNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSw1MyArMjEsMTM1IEBA
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1
ZGUgImV3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAg
ICA6IG1fdmlldyh2aWV3KQogewogfQogCiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQogeworICAgIEhhc2hTZXQ8RXdrX05v
dGlmaWNhdGlvbio+OjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nTm90aWZpY2F0aW9ucy5iZWdp
bigpOworICAgIHdoaWxlIChpdGVyICE9IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuZW5kKCkpCisg
ICAgICAgIGV3a19ub3RpZmljYXRpb25fZGVzdHJveSgqaXRlcik7CiB9CiAKIGJvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIEhhc2hT
ZXQ8Tm90aWZpY2F0aW9uKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4o
KTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkuaXNFbXB0eSgpKQorICAgICAg
ICB3aGlsZSAoaXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpCisgICAgICAgICAgICBpZiAo
KCppdGVyKS0+cmVwbGFjZUlkKCkgPT0gbm90aWZpY2F0aW9uLT5yZXBsYWNlSWQoKSkgeworICAg
ICAgICAgICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgICAgICAgICAg
ICAgKytpdGVyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgIGlm
IChub3RpZmljYXRpb24tPmlzSFRNTCgpKSB7CisgICAgICAgIEV3a19Ob3RpZmljYXRpb24qIGV3
a05vdGlmaWNhdGlvbiA9IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlv
bik7CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90
aWZpY2F0aW9uLGh0bWxzaG93IiwgZXdrTm90aWZpY2F0aW9uKTsKKyAgICAgICAgbV9wZW5kaW5n
Tm90aWZpY2F0aW9ucy5hZGQoZXdrTm90aWZpY2F0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBld2tfbm90aWZpY2F0aW9uX2Ny
ZWF0ZSh0aGlzLCBub3RpZmljYXRpb24pOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixzaG93IiwgZXdrTm90aWZpY2F0aW9uKTsK
KyAgICAgICAgbV9wZW5kaW5nTm90aWZpY2F0aW9ucy5hZGQoZXdrTm90aWZpY2F0aW9uKTsKKyAg
ICB9CisgICAgbV9ub3RpZmljYXRpb25zLmFkZChub3RpZmljYXRpb24pOworICAgIHJldHVybiB0
cnVlOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
RXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVh
dGUodGhpcywgbm90aWZpY2F0aW9uKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCAmZXdrTm90aWZpY2F0aW9uKTsKKyAg
ICBIYXNoU2V0PEV3a19Ob3RpZmljYXRpb24qPjo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ05v
dGlmaWNhdGlvbnMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXRlciAhPSBtX3BlbmRpbmdOb3RpZmlj
YXRpb25zLmVuZCgpKQorICAgICAgICBpZiAoZXdrX25vdGlmaWNhdGlvbl9nZXQoKml0ZXIpID09
IG5vdGlmaWNhdGlvbikgeworICAgICAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KCpp
dGVyKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOwor
ICAgICAgICB9CisgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShub3RpZmljYXRpb24pOwogfQog
CiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgSGFzaFNldDxFd2tfTm90aWZpY2F0aW9uKj46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3BlbmRpbmdOb3RpZmljYXRpb25zLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ZXIgIT0gbV9wZW5k
aW5nTm90aWZpY2F0aW9ucy5lbmQoKSkKKyAgICAgICAgaWYgKGV3a19ub3RpZmljYXRpb25fZ2V0
KCppdGVyKSA9PSBub3RpZmljYXRpb24pIHsKKyAgICAgICAgICAgIGV3a19ub3RpZmljYXRpb25f
ZGVzdHJveSgqaXRlcik7CisgICAgICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zLnJlbW92
ZShpdGVyKTsKKyAgICAgICAgfQorICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0
aW9uKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNh
dGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpy
ZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAobV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkpID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkpIHsKKyAgICAgICAgQ2Fs
bGJhY2tJbmZvKiBjYWxsYmFja0luZm8gPSBuZXcgQ2FsbGJhY2tJbmZvOworICAgICAgICBjYWxs
YmFja0luZm8tPmRvbWFpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7
CisgICAgICAgIGNhbGxiYWNrSW5mby0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbV9j
YWxsYmFja3MuYWRkKGNhbGxiYWNrSW5mbyk7CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLHJlcXVlc3RQZXJtaXNzaW9uIgorICAg
ICAgICAgICAgLCBjb25zdF9jYXN0PGNoYXIqPihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNl
bnRlcjo6UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVy
bWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hl
ZFBlcm1pc3Npb25zLnNpemUoKQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQo
Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNz
aW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1
cm4gUGVybWlzc2lvbkFsbG93ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpj
YW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CiB9
CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlzc2lvbkNhY2hlKGNoYXIqKiBkb21h
aW5zLCBpbnQgc2l6ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJp
bmcoZG9tYWluc1tpXSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6cGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbiwgY29uc3QgYm9vbCBw
ZXJtaXNzaW9uKQoreworICAgIFN0cmluZyBwZXJtaXR0ZWREb21haW4oZG9tYWluKTsKKyAgICBI
YXNoU2V0PENhbGxiYWNrSW5mbyo+OjppdGVyYXRvciBpdGVyID0gbV9jYWxsYmFja3MuYmVnaW4o
KTsKKyAgICB3aGlsZSAoaXRlciAhPSBtX2NhbGxiYWNrcy5lbmQoKSkgeworICAgICAgICBpZiAo
KCppdGVyKS0+ZG9tYWluID09IHBlcm1pdHRlZERvbWFpbikgeworICAgICAgICAgICAgaWYgKHBl
cm1pc3Npb24pIHsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJp
bmcoZG9tYWluKSk7CisgICAgICAgICAgICAgICAgKCgqaXRlciktPmNhbGxiYWNrKS5nZXQoKS0+
aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLnJl
bW92ZShpdGVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSAoKml0ZXIpOworICAgICAgICAgICAgKytp
dGVyOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6c2VuZEV2ZW50KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiwgQXRv
bWljU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24g
PSBzdGF0aWNfY2FzdDxOb3RpZmljYXRpb24qPihld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3Rp
ZmljYXRpb24pKTsKKyAgICBpZiAobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCisgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZSwgZmFsc2UsIHRydWUpKTsKKworICAgIGlmIChldmVudE5hbWUgPT0gZXZlbnROYW1l
cygpLmNsb3NlRXZlbnQgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQor
ICAgICAgICBld2tfbm90aWZpY2F0aW9uX2RlcmVmKGV3a05vdGlmaWNhdGlvbik7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKaW5kZXggMjYwYzQ0Mi4uMmYwNDdkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxNSBAQAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b24uaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwg
OiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC0zOCw3
ICs0MCwyMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXJEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdmlydHVh
bCBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KKwor
ICAgIHZvaWQgbWFrZVBlcm1pc3Npb25DYWNoZShjaGFyKiogZG9tYWlucywgaW50IHNpemUpOwor
ICAgIHZvaWQgcGVybWl0dGVkQ2FsbGJhY2tDYWxsKGNvbnN0IGNoYXIqIGRvbWFpbiwgY29uc3Qg
Ym9vbCBwZXJtaXNzaW9uKTsKKyAgICB2b2lkIHNlbmRFdmVudChFd2tfTm90aWZpY2F0aW9uKiwg
QXRvbWljU3RyaW5nJiBFdmVudFR5cGUpOworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0KiBt
X3ZpZXc7CisgICAgSGFzaFNldDxFd2tfTm90aWZpY2F0aW9uKj4gbV9wZW5kaW5nTm90aWZpY2F0
aW9uczsKKyAgICBIYXNoU2V0PE5vdGlmaWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBI
YXNoU2V0PFdURjo6U3RyaW5nPiBtX2NhY2hlZFBlcm1pc3Npb25zOworCisgICAgc3RydWN0IENh
bGxiYWNrSW5mbyB7CisgICAgICAgIFN0cmluZyBkb21haW47CisgICAgICAgIFJlZlB0cjxWb2lk
Q2FsbGJhY2s+IGNhbGxiYWNrOworICAgIH07CisgICAgSGFzaFNldDxDYWxsYmFja0luZm8qPiBt
X2NhbGxiYWNrczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9F
V2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCmluZGV4IDNmNzk0ZmIu
Ljc4NGMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgImV3a19qcy5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25l
dHdvcmsuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlICJld2tfd2luZG93X2Zl
YXR1cmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRhNzQzNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApAQCAtMCwwICsx
LDE1MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlldy5oIgorI2luY2x1ZGUgPEV2
YXMuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIHsKKyAgICBXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIG5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyAgICBXZWJD
b3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbjsKKyAgICBjaGFyKiBpY29uVVJMOworICAg
IGNoYXIqIHRpdGxlOworICAgIGNoYXIqIGJvZHk7CisgICAgY2hhciogaHRtbFVSTDsKKyAgICBj
aGFyKiBkaXI7CisgICAgdW5zaWduZWQgcmVmOworfTsKKworV2ViQ29yZTo6Tm90aWZpY2F0aW9u
KiBld2tfbm90aWZpY2F0aW9uX2dldChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
Cit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uOworfQorCitjaGFy
KiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3Rp
ZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+aWNvblVSTDsKK30KKwor
Y2hhciogZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPnRpdGxlOworfQorCitj
aGFyKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5ib2R5OworfQorCitjaGFy
KiBld2tfbm90aWZpY2F0aW9uX2h0bWxfdXJsX2dldChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3Rp
ZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+aHRtbFVSTDsKK30KKwor
Y2hhciogZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5kaXI7Cit9CisKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9vbmRpc3BsYXlfZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb25QcmVzZW50ZXItPnNlbmRFdmVudChld2tOb3RpZmljYXRp
b24sIFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQpOworI2VuZGlmCit9CisKK3Zv
aWQgZXdrX25vdGlmaWNhdGlvbl9vbmNsaWNrX2V2ZW50X3NlbmQoRXdrX05vdGlmaWNhdGlvbiog
ZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05v
dGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uUHJlc2VudGVyLT5zZW5kRXZlbnQoZXdrTm90aWZpY2F0
aW9uLCBXZWJDb3JlOjpldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX29uY2xvc2VfZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb25QcmVzZW50ZXItPnNlbmRFdmVudChld2tOb3RpZmljYXRp
b24sIFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyNlbmRpZgorfQorCit2b2lk
IGV3a19ub3RpZmljYXRpb25fb25lcnJvcl9ldmVudF9zZW5kKEV3a19Ob3RpZmljYXRpb24qIGV3
a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvblByZXNlbnRlci0+c2VuZEV2ZW50KGV3a05vdGlmaWNhdGlv
biwgV2ViQ29yZTo6ZXZlbnROYW1lcygpLmVycm9yRXZlbnQpOworI2VuZGlmCit9CisKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrX2NhbGwoY29uc3QgRXdrX05vdGlm
aWNhdGlvbiogZXdrTm90aWZpY2F0aW9uLCBFaW5hX0Jvb2wgcGVybWl0LCBjb25zdCBjaGFyKiBk
b21haW4pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9u
LT5ub3RpZmljYXRpb25QcmVzZW50ZXItPnBlcm1pdHRlZENhbGxiYWNrQ2FsbChkb21haW4sIHBl
cm1pdCk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21h
aW5zX2FkZChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIGNoYXIqKiBk
b21haW5zLCBpbnQgc2l6ZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tO
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvblByZXNlbnRlci0+bWFrZVBlcm1pc3Npb25DYWNoZShk
b21haW5zLCBzaXplKTsKKyNlbmRpZgorfQorCitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZp
Y2F0aW9uX2NyZWF0ZShXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIG5v
dGlmaWNhdGlvblByZXNlbnRlciwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24p
Cit7CisgICAgRXdrX05vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uSXRlbSA9IG5ldyBFd2tfTm90
aWZpY2F0aW9uOworCisgICAgbm90aWZpY2F0aW9uSXRlbS0+bm90aWZpY2F0aW9uUHJlc2VudGVy
ID0gbm90aWZpY2F0aW9uUHJlc2VudGVyOworICAgIG5vdGlmaWNhdGlvbkl0ZW0tPm5vdGlmaWNh
dGlvbiA9IG5vdGlmaWNhdGlvbjsKKyAgICBub3RpZmljYXRpb25JdGVtLT5pY29uVVJMID0gc3Ry
ZHVwKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbiktPmNv
bnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBub3RpZmljYXRpb25J
dGVtLT50aXRsZSA9IHN0cmR1cChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihu
b3RpZmljYXRpb24pLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIG5vdGlm
aWNhdGlvbkl0ZW0tPmJvZHkgPSBzdHJkdXAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uKj4obm90aWZpY2F0aW9uKS0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkpOworICAg
IG5vdGlmaWNhdGlvbkl0ZW0tPmh0bWxVUkwgPSBzdHJkdXAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgbm90aWZpY2F0aW9uSXRlbS0+ZGlyID0gc3RyZHVwKHN0YXRpY19jYXN0PFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbiktPmRpcigpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIG5vdGlmaWNhdGlvbkl0ZW0tPnJlZiA9IDE7CisKKyAgICByZXR1cm4gbm90aWZpY2F0aW9u
SXRlbTsKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlv
biogZXdrTm90aWZpY2F0aW9uKQoreworICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb24tPmljb25V
Ukw7CisgICAgZGVsZXRlIGV3a05vdGlmaWNhdGlvbi0+dGl0bGU7CisgICAgZGVsZXRlIGV3a05v
dGlmaWNhdGlvbi0+Ym9keTsKKyAgICBkZWxldGUgZXdrTm90aWZpY2F0aW9uLT5odG1sVVJMOwor
ICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb24tPmRpcjsKKyAgICBkZWxldGUgZXdrTm90aWZpY2F0
aW9uOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcmVmKEV3a19Ob3RpZmljYXRpb24qIGV3
a05vdGlmaWNhdGlvbikKK3sKKyAgICBld2tOb3RpZmljYXRpb24tPnJlZisrOworfQorCit2b2lk
IGV3a19ub3RpZmljYXRpb25fZGVyZWYoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9u
KQoreworICAgIGlmICgtLWV3a05vdGlmaWNhdGlvbi0+cmVmKQorICAgICAgICByZXR1cm47Cisg
ICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KGV3a05vdGlmaWNhdGlvbik7Cit9CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRhNDllMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlIDxFdmFzLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBA
YnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24gb2YgV2ViS2l0LUVGTAorICoKKyAq
IFRoaXMgb2JqZWN0IGFsbG93cyB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSBhIHdlYiBub3RpZmlj
YXRpb24gZm9yIFdlYktpdC1FRkwtY29tcG9uZW50LgorICogUmVmZXIgdG8gdGhlIFczQyBXZWIg
Tm90aWZpY2F0aW9uKGh0dHA6Ly93d3cudzMub3JnL1RSL25vdGlmaWNhdGlvbnMpCisgKi8KKwor
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBjIEV3a19Ob3RpZmljYXRpb24uCit0eXBlZGVm
IHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCisvKioKKyAqIEdl
dCBpY29uVVJMIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4K
KyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAq
IEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8gdGhlIGljb25VUkwgb2Ygbm90aWZpY2F0aW9u
LgorICovCitFQVBJIGNoYXIqIGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3Rp
ZmljYXRpb24qIGVuaSk7CisKKy8qKgorICogR2V0IHRpdGxlIGZvciB0aGUgbm90aWZpY2F0aW9u
IGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlv
biBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8g
dGhlIHRpdGxlIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMgdG8gZnJlZSB0aGlz
IHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dl
dChFd2tfTm90aWZpY2F0aW9uKiBlbmkpOworCisvKioKKyAqIEdldCBib2R5IGNvbnRlbnRzIGZv
ciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFy
YW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hh
cmFjdGVyIHBvaW50ZXIgdG8gdGhlIGJvZHkgY29udGVudHMgb2Ygbm90aWZpY2F0aW9uLiBUaGVy
ZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMgcmV0dXJuIHZhbHVlLgorICovCitFQVBJIGNoYXIq
IGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoRXdrX05vdGlmaWNhdGlvbiogZW5pKTsKKworLyoq
CisgKiBHZXQgaHRtbCBjb250ZW50cyBVUkwgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBF
d2tfTm90aWZpY2F0aW9uLgorICogVGhlIGh0bWwgY29udGVudHMgVVJMIGlzIGEgVVJMIGZvciBu
b3RpZmljYXRpb24gd2hpY2ggaXMgY29uc2lzdCBvZiBodG1sIGRvY3VtZW50LgorICogSWYgYSBh
cHBsaWNhdGlvbiB3YW50IHRvIHVzZSB0aGlzLCBpdCBpcyBkaXNwbGF5ZWQgcG9wdXAgdGhhdCBp
bmNsdWRlIGEgd2VicGFnZSBieSB0aGlzIFVSTC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNh
dGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIg
dG8gdGhlIGh0bWwgY29udGVudHMgdXJsIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVl
ZHMgdG8gZnJlZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjaGFyKiBld2tfbm90aWZp
Y2F0aW9uX2h0bWxfdXJsX2dldChFd2tfTm90aWZpY2F0aW9uKiBlbmkpOworCisvKioKKyAqIEdl
dCBkaXJlY3Rpb24gb2Ygbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAq
CisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEBy
ZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8gZGlyZWN0aW9uIG9mIG5vdGlmaWNhdGlvbi4gVGhl
cmUgaXMgbm8gbmVlZHMgdG8gZnJlZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjaGFy
KiBld2tfbm90aWZpY2F0aW9uX2Rpcl9nZXQoRXdrX05vdGlmaWNhdGlvbiogZW5pKTsKKworLyoq
CisgKiBBcHBsaWNhdGlvbiBoYXZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGl0IGdldHMo
b3IgZGVuaWVzKSBhIHBlcm1pc3Npb24gZnJvbSB0aGUgdXNlci4KKyAqCisgKiBAcGFyYW0gZW5p
IE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBF
SU5BX1RSVUUgdG8gYWxsb3cgdG8gc2hvdyBub3RpZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8g
bm90IGFsbG93IHRvIHNob3cgbm90aWZpY2F0aW9uLgorICogQHBhcmFtIGRvbWFpbiBkb21haW4g
VVJMIGZvciBhZGQgYSBwZXJtaXQgbGlzdC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRp
b25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuaSwg
RWluYV9Cb29sIHBlcm1pdHRlZCwgY29uc3QgY2hhciogZG9tYWluKTsKKworLyoqCisgKiBNYWtl
cyBhIGNhY2hlIGZvciBwZXJtaXR0ZWQgZG9tYWlucy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGhh
dmUgdG8gYmUgY2FsbGVkIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgZnJvbSBhIGFwcGxpY2F0aW9u
IHRoYXQgdXNlIHRoaXMgQVBJcywKKyAqIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXZlIHBlcm1pdHRl
ZCBkb21haW5zIGZvciB0aGUgbm90aWZpY2F0aW9uIGFscmVhZHkuCisgKiBCZWNhdXNlIGNoZWNr
aW5nIHBlcm1pc3Npb24gcm91dGluZSB3aGVuIGNoZWNrUGVybWlzc2lvbigpIGlzIGNhbGxlZCBm
cm9tIGphdmFzY3JpcHQsCisgKiBjaGVja3MgZG9tYWlucyBhcmUgaW4gdGhlIGNhY2hlIG9ubHku
CisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqIEBw
YXJhbSBkb21haW5zIGRvbWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gcGVybWlzc2lv
biBjYWNoZS4KKyAqIEBwYXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKi8KK0VB
UEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uKiBlbmksIGNoYXIqKiBkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICog
TWFrZSBhbiBvbmRpc3BsYXkgZXZlbnQgZm9yIEphdmFTY3JpcHQgd2hlbiBub3RpZmljYXRpb24g
aXMgZGlzcGxheWVkLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1
Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX29uZGlzcGxheV9ldmVudF9z
ZW5kKEV3a19Ob3RpZmljYXRpb24qIGVuaSk7CisKKy8qKgorICogTWFrZSBhbiBvbmNsaWNrIGV2
ZW50IGZvciBKYXZhU2NyaXB0IHdoZW4gbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQuCisgKgorICog
QHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lk
IGV3a19ub3RpZmljYXRpb25fb25jbGlja19ldmVudF9zZW5kKEV3a19Ob3RpZmljYXRpb24qIGVu
aSk7CisKKy8qKgorICogTWFrZSBhbiBvbmNsb3NlIGV2ZW50IGZvciBKYXZhU2NyaXB0IHdoZW4g
bm90aWZpY2F0aW9uIGlzIGNsb3NlZC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBz
b3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9vbmNsb3Nl
X2V2ZW50X3NlbmQoRXdrX05vdGlmaWNhdGlvbiogZW5pKTsKKworLyoqCisgKiBNYWtlIGFuIG9u
ZXJyb3IgZXZlbnQgZm9yIEphdmFTY3JpcHQgd2hlbiBlcnJvciBpcyBvY2N1cnJlZC4KKyAqCisg
KiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICovCitFQVBJIHZv
aWQgZXdrX25vdGlmaWNhdGlvbl9vbmVycm9yX2V2ZW50X3NlbmQoRXdrX05vdGlmaWNhdGlvbiog
ZW5pKTsKKworLyoqCisgKiBJbmNyZWFzZSByZWZlcmVuY2UgY291bnQgdG8gQGMgRXdrX05vdGlm
aWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJl
LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9yZWYoRXdrX05vdGlmaWNhdGlvbiog
ZW5pKTsKKworLyoqCisgKiBEZWNyZWFzZSByZWZlcmVuY2UgY291bnQgdG8gQGMgRXdrX05vdGlm
aWNhdGlvbi4KKyAqIEV3a19Ob3RpZmljYXRpb24gb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHdo
ZW4gcmVmZXJlbmNlIGNvdW50IGlzIHNldCB0byAwLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZp
Y2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9u
X2RlcmVmKEV3a19Ob3RpZmljYXRpb24qIGVuaSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNDk4YmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25fcHJp
dmF0ZV9oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2lu
Y2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0
ZShXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqLCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOworV2ViQ29yZTo6Tm90aWZpY2F0aW9u
KiBld2tfbm90aWZpY2F0aW9uX2dldChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGRkMGQ4OWIuLmJmMDg4ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNjcsNiArNjcsMTAgQEAKICNpbmNsdWRlICJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEVmbC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgor
CiAjZGVmaW5lIFpPT01fTUlOICgwLjA1KQogI2RlZmluZSBaT09NX01BWCAoNC4wKQogCkBAIC02
MTMsNiArNjE3LDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19w
cml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNsaWVudHMu
ZGV2aWNlTW90aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDsK
ICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorICAgIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKKyNlbmRpZgor
CiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsKICAgICBp
ZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
S2l0IFBhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggZDFjNjVlYi4uN2FhMDdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTgyLDYgKzgyLDEwIEBACiAgKiAgLSAi
dmlldyxyZXNpemVkIiwgdm9pZDogdmlldyBvYmplY3QncyBzaXplIHdhcyBjaGFuZ2VkLgogICog
IC0gInZpZXdwb3J0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdmlld3BvcnQgd2FzIGNo
YW5nZWQuCiAgKiAgLSAiem9vbSxhbmltYXRlZCxlbmQiLCB2b2lkOiByZXF1ZXN0ZWQgYW5pbWF0
ZWQgem9vbSBpcyBmaW5pc2hlZC4KKyAqICAtICJub3RpZmljYXRpb24sc2hvdyIsIEBjIEV3a19O
b3RpZmljYXRpb246IHJlcXVlc3RlZCBjb250ZW50cyB0byBkaXNwbGF5IHRoZSBub3RpZmljYXRp
b24uCisgKiAgLSAibm90aWZpY2F0aW9uLGh0bWxzaG93IiwgQGMgRXdrX05vdGlmaWNhdGlvbjog
cmVxdWVzdGVkIHVybCB0byBkaXNwbGF5IEhUTUwgbm90aWZpY2F0aW9uLgorICogIC0gIm5vdGlm
aWNhdGlvbixjYW5jZWwiLCBAYyBFd2tfTm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgbm90aWZpY2F0
aW9uIGluZGV4IHRvIGNhbmNlbC4KKyAqICAtICJub3RpZmljYXRpb24scmVxdWVzdFBlcm1pc3Np
b24iLCBjaGFyKjogcmVxdWVzdGVkIGRvbWFpbiBmb3IgZ2V0dGluZyB1c2VyIHBlcm1pc3Npb24g
ZnJvbSB0aGUgdXNlci4KICAqLwogCiAjaWZuZGVmIGV3a192aWV3X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKaW5kZXggOTdkYTYxMS4uMzUyNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTgxLDcg
KzgxLDcgQEAgV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01BVEhNTCAiRW5hYmxlIE1hdGhNTCIgREVG
QVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NRVRFUl9UQUcgIkVuYWJsZSBNZXRlciB0
YWciIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUlDUk9EQVRBICJFbmFibGUg
SFRNTDUgbWljcm9kYXRhIHN1cHBvcnQiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgIkVuYWJsZSBOZXRzY2FwZSBwbHVnaW4gQVBJIiBERUZB
VUxUIE9GRikKLVdFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90
aWZpY2F0aW9ucyIgREVGQVVMVCBPRkYpCitXRUJLSVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FU
SU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShF
TkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTICJFbmFibGUgb3JpZW50YXRpb24gZXZlbnRzIiBERUZB
VUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJICJFbmFi
bGUgUGFnZSBWaXNpYmlsaXR5IEFQSSIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJM
RV9QUk9HUkVTU19UQUcgIkVuYWJsZSBwcm9ncmVzcyB0YWciIERFRkFVTFQgT04pCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjEyZDlhMS4uZTA3
NmIyZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTEwICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIFdlYiBOb3RpZmljYXRpb24g
ZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5hYmxlcyBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgZm9yIFdlYktpdC1FZmwuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQ6IEFkZCBub3RpZmljYXRpb25z
IGRpcmVjdG9yeSBwYXRoIGZvciB0aGUgRHVtcFJlbmRlclRyZWUuCisgICAgICAgICogU2NyaXB0
cy9idWlsZC13ZWJraXQ6IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlIGZvciBX
ZWJLaXQtRWZsLgorCiAyMDEyLTAxLTA1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIERvbid0IGhhcmRjb2RlIGV4cGVjdGVkIGZpbGUgVVJJcyBpbiBh
cyB0aGV5IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dAppbmRleCBjOTI5MTkxLi5jNDU3OGQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTYsNiArMTE2LDEyIEBAIElGIChXVEZfVVNFX0NVUkwp
CiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxF
X05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9E
SVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICAp
CitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19E
SVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAgICAgICAgICAgICAtRERBVEFfRElS
PSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiMWQ3Nzg1Li5mZmVj
OTU1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjc1LDcgKzI3NSw3IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0ID0+
ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3VwcG9ydCB9LAogCiAgICAgeyBv
cHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3RpZmlj
YXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIs
IGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBv
cnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+
IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3Vw
cG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2MgPT4g
IlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1
ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123891</attachid>
            <date>2012-01-24 23:40:43 -0800</date>
            <delta_ts>2012-01-25 02:11:29 -0800</delta_ts>
            <desc>Add new patch.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>33308</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmY2U5ZDJjLi4zNjUwMjg1
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMTYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlLgor
CiAyMDEyLTAxLTA1ICBVbGFuIERlZ2VuYmFldiAgPHVsYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFt2OF0gTnVsbCBwb2ludGVyIGV4Y2VwdGlvbiBpZiBhIHR5cGVkIGFycmF5IGNvbnN0cnVj
dG9yIHNldCB0byBhIHByaW1pdGl2ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKaW5kZXggYzVlZjY1Ni4uNDYzMGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZfVVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQog
Ci1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0gIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURF
X0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVO
RElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBw
b3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAKQEAgLTk0LDYgKzg4LDE1IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VS
Q0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiApCiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9O
UykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAi
JHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCisgICAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkK
K0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJ
QlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQpAQCAtMjQyLDYgKzI0NSw3IEBAIFNF
VChFV2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3
ay9ld2tfbG9nZ2luZy5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2sv
ZXdrX21haW4uaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19u
ZXR3b3JrLmgKKyAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tf
c2V0dGluZ3MuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a192
aWV3LmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfd2luZG93
X2ZlYXR1cmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2ODQ5NTM3Li5jOTExZmU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTItMDEtMTYgIEtpaG9uZyBLd29uICA8a2lo
b25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5v
dGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZSBhbmQgZXhwb3Nl
cyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFz
ZWQgb24gd2Via2l0Tm90aWZpY2F0aW9ucyBwcm9wZXJ0eSBpbiB3aW5kb3cubmF2aWdhdG9yLgor
CisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6IEFkZCAiZXdrX25vdGlmaWNhdGlvbi5jcHAi
IGFuZCAiZXdrX25vdGlmaWNhdGlvbi5oIi4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwOiBSZW1vdmUgbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgd2hpY2ggaXMg
bm8gbG9uZ2VyIHJlcXVpcmVkIGJ5IHIxMDEzMDcuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmg6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0aW9uRm9yRG9tYWlu
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVt
b3ZlUGVuZGluZ05vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmg6CisgICAgICAgICogZXdrL0VXZWJLaXQuaDogQWRk
ICIjaW5jbHVkZSBld2tfbm90aWZpY2F0aW9uLmgiCisgICAgICAgICogZXdrL2V3a19ub3RpZmlj
YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAg
ICAgKGV3a19ub3RpZmljYXRpb25fcmVwbGFjZW1lbnRfZ2V0KToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fcmVwbGFjZUlEX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25f
dXJsX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25f
aHRtbF91cmxfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlyX2dldCk6CisgICAg
ICAgIChld2tfbm90aWZpY2F0aW9uX2V2ZW50X3NlbmQpOgorICAgICAgICAoZXdrX25vdGlmaWNh
dGlvbl9wZXJtaXNzaW9uX2NhbGxiYWNrX2NhbGwpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlv
bl9wZXJtaXR0ZWRfZG9tYWluc19hZGQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jcmVh
dGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KToKKyAgICAgICAgKGV3a19u
b3RpZmljYXRpb25fcmVmKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGVyZWYpOgorICAg
ICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tf
bm90aWZpY2F0aW9uX3ByaXZhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdr
L0VXZWJLaXQuaC4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KTogQWRkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCBvYmplY3Qg
dG8gdGhlIHBhZ2VDbGllbnQubm90aWZpY2F0aW9uQ2xpZW50LgorICAgICAgICAqIGV3ay9ld2tf
dmlldy5oOiBBZGQgZGVzY3JpcHRpb24gYWJvdXQgdGhlIHNtYXJ0X2NhbGxfYmFjayBtZXNzYWdl
cyBvZiB0aGUgbm90aWZpY2F0aW9uLgorCiAyMDEyLTAxLTA1ICBLd2FuZ0h5dWsgS2ltICA8aHl1
a2kua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEludmFsaWRhdGlvbiByZXF1ZXN0
IGZvciBld2tfdmlldyBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgcmVuZGVyaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAK
aW5kZXggYTI1ZjlkMC4uOWI0ZmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01NSwxMCArNTUsNiBAQAogI2lu
Y2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQxNywxNCAr
NDEzLDYgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEVmbDo6
bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpydW5PcGVu
UGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3Nl
cikKIHsKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmgKaW5kZXggNGI0N2M3My4uMGIxY2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTI4LDEwICsyOCw2IEBACiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCi0jZW5kaWYKLQog
dHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMTQsMTAgKzExMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKLSNlbmRpZgotCiAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCBiYTQ2NmY1Li43NTA1YmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKQEAgLTIxLDUzICsyMSwxMTUgQEAKICNpbmNs
dWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcHJpdmF0
ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcp
CisgICAgOiBtX3ZpZXcodmlldykKIHsKIH0KIAogTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKIHsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAg
IGV3a19ub3RpZmljYXRpb25fZGVzdHJveShtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKTsKIH0K
IAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgYm9vbCByZXBsYWNlbWVudCA9IGZhbHNlOworICAgIGlmICghbm90aWZpY2F0aW9u
LT5yZXBsYWNlSWQoKS5pc0VtcHR5KCkpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wZW5kaW5nTm90aWZpY2F0aW9ucy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGlmIChld2tf
bm90aWZpY2F0aW9uX2dldChtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKS0+cmVwbGFjZUlkKCkg
PT0gbm90aWZpY2F0aW9uLT5yZXBsYWNlSWQoKSkgeworICAgICAgICAgICAgICAgIGV3a19ub3Rp
ZmljYXRpb25fZGVzdHJveShtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKTsKKyAgICAgICAgICAg
ICAgICByZXBsYWNlbWVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uID0gZXdrX25vdGlm
aWNhdGlvbl9jcmVhdGUodGhpcywgbm90aWZpY2F0aW9uLCByZXBsYWNlbWVudCk7CisgICAgbV9w
ZW5kaW5nTm90aWZpY2F0aW9ucy5hcHBlbmQoZXdrTm90aWZpY2F0aW9uKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixzaG93IiwgZXdr
Tm90aWZpY2F0aW9uKTsKKyAgICBld2tfbm90aWZpY2F0aW9uX2RlcmVmKGV3a05vdGlmaWNhdGlv
bik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBld2tf
bm90aWZpY2F0aW9uX2NyZWF0ZSh0aGlzLCBub3RpZmljYXRpb24sIGZhbHNlKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixjYW5jZWwi
LCBld2tOb3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmljYXRpb25fZGVyZWYoZXdrTm90aWZp
Y2F0aW9uKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlm
aWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5n
Tm90aWZpY2F0aW9ucy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKGV3a19ub3RpZmljYXRpb25f
Z2V0KG1fcGVuZGluZ05vdGlmaWNhdGlvbnNbaV0pID09IG5vdGlmaWNhdGlvbikKKyAgICAgICAg
ICAgIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKTsK
KyAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zLmNsZWFyKCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGRlbGV0ZSB0aGlzOwogfQogCiB2b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNr
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fY2FjaGVkUGVybWlzc2lvbnMu
ZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSA9PSBtX2NhY2hlZFBl
cm1pc3Npb25zLmVuZCgpKSB7CisgICAgICAgIENhbGxiYWNrSW5mbyogY2FsbGJhY2tJbmZvID0g
bmV3IENhbGxiYWNrSW5mbygpOworICAgICAgICBjYWxsYmFja0luZm8tPmRvbWFpbiA9IGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisgICAgICAgIGNhbGxiYWNrSW5mby0+
Y2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNr
SW5mbyk7CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
bm90aWZpY2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNvbnN0X2Nhc3Q8Y2hhcio+KGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIH0K
IH0KIAogTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gUGVybWlzc2lvbkRl
bmllZDsKKyAgICBpZiAoIW1fY2FjaGVkUGVybWlzc2lvbnMuc2l6ZSgpCisgICAgICAgIHx8IG1f
Y2FjaGVkUGVybWlzc2lvbnMuZmluZChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpKSA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gUGVybWlz
c2lvbkRlbmllZDsKKworICAgIHJldHVybiBQZXJtaXNzaW9uQWxsb3dlZDsKK30KKwordm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3sKKyAgICAvLyBCZWNhdXNlIHdlIGFyZSB1c2lu
ZyBtb2RhbCBkaWFsb2dzIHRvIHJlcXVlc3QgcGVybWlzc2lvbiwgaXQncyBpbXBvc3NpYmxlIHRv
IGNhbmNlbCB0aGVtLgorfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bWFrZVBlcm1pc3Npb25DYWNoZShWZWN0b3I8U3RyaW5nPiBkb21haW5zKQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZG9tYWlucy5zaXplKCk7IGkrKykKKyAgICAgICAgbV9jYWNoZWRQ
ZXJtaXNzaW9ucy5hZGQoZG9tYWluc1tpXSk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjphbGxvd05vdGlmaWNhdGlvbkZvckRvbWFpbihjb25zdCBTdHJpbmcgZG9t
YWluLCBjb25zdCBib29sIHBlcm1pc3Npb24pCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2NhbGxiYWNrcy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAobV9jYWxsYmFja3NbaV0t
PmRvbWFpbiA9PSBkb21haW4pIHsKKyAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7CisgICAg
ICAgICAgICAgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbikpOworICAg
ICAgICAgICAgICAgIChtX2NhbGxiYWNrc1tpXS0+Y2FsbGJhY2spLmdldCgpLT5oYW5kbGVFdmVu
dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsZXRlIG1fY2FsbGJhY2tzW2ldOwor
ICAgICAgICAgICAgbV9jYWxsYmFja3MucmVtb3ZlKGkpOworICAgICAgICB9CisgICAgfQogfQog
Ci12b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBp
KyspCisgICAgICAgIGlmIChld2tfbm90aWZpY2F0aW9uX2dldChtX3BlbmRpbmdOb3RpZmljYXRp
b25zW2ldKSA9PSBld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb24pKSB7CisgICAg
ICAgICAgICBtX3BlbmRpbmdOb3RpZmljYXRpb25zLnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
CmluZGV4IDI2MGM0NDIuLjRkZDcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oCkBAIC0yMywxMyArMjMsMTYgQEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNs
dWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIK
KyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCA6IHB1Ymxp
YyBOb3RpZmljYXRpb25QcmVzZW50ZXIgewotCiBwdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKCk7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2
YXNfT2JqZWN0KiB2aWV3KTsKICAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKTsKQEAgLTM5LDYgKzQyLDIy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdmlydHVhbCBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgbWFrZVBlcm1pc3Np
b25DYWNoZShWZWN0b3I8U3RyaW5nPiBkb21haW5zKTsKKyAgICB2b2lkIGFsbG93Tm90aWZpY2F0
aW9uRm9yRG9tYWluKGNvbnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbik7
CisgICAgdm9pZCByZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKEV3a19Ob3RpZmljYXRpb24qKTsK
KworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIEhhc2hTZXQ8Tm90aWZp
Y2F0aW9uKj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fY2Fj
aGVkUGVybWlzc2lvbnM7CisgICAgVmVjdG9yPEV3a19Ob3RpZmljYXRpb24qPiBtX3BlbmRpbmdO
b3RpZmljYXRpb25zOworCisgICAgc3RydWN0IENhbGxiYWNrSW5mbyB7CisgICAgICAgIFN0cmlu
ZyBkb21haW47CisgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrOworICAgIH07
CisgICAgVmVjdG9yPENhbGxiYWNrSW5mbyo+IG1fY2FsbGJhY2tzOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9FV2ViS2l0LmgKaW5kZXggM2Y3OTRmYi4uNzg0YzE1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdl
YktpdC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiZXdrX2pzLmgiCiAjaW5jbHVkZSAi
ZXdrX21haW4uaCIKICNpbmNsdWRlICJld2tfbmV0d29yay5oIgorI2luY2x1ZGUgImV3a19ub3Rp
ZmljYXRpb24uaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3MuaCIKICNpbmNsdWRlICJld2tfdmll
dy5oIgogI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44NmFiMWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19ub3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIHsKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwq
IG5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbjsKKyNlbmRpZgorICAgIGJvb2wgcmVwbGFjZW1lbnQ7CisgICAgY29uc3QgY2hhciog
cmVwbGFjZUlEOworICAgIGNvbnN0IGNoYXIqIGljb25VUkw7CisgICAgY29uc3QgY2hhciogdGl0
bGU7CisgICAgY29uc3QgY2hhciogYm9keTsKKyAgICBjb25zdCBjaGFyKiB1cmw7CisgICAgY29u
c3QgY2hhciogZGlyOworICAgIHVuc2lnbmVkIHJlZjsKK307CisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9nZXQoY29u
c3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tO
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbjsKK30KKyNlbmRpZgorCitFaW5hX0Jvb2wgZXdrX25v
dGlmaWNhdGlvbl9yZXBsYWNlbWVudF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPnJlcGxhY2VtZW50Owor
fQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3JlcGxhY2VJRF9nZXQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmlj
YXRpb24tPnJlcGxhY2VJRDsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9pY29u
X3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAg
IHJldHVybiBld2tOb3RpZmljYXRpb24tPmljb25VUkw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19u
b3RpZmljYXRpb25fdGl0bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT50aXRsZTsKK30KKworY29uc3Qg
Y2hhciogZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+Ym9keTsKK30K
KworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQoY29uc3QgRXdrX05v
dGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRp
b24tPnVybDsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KGNvbnN0
IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90
aWZpY2F0aW9uLT5kaXI7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9ldmVudF9zZW5kKEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiwgRXdrX05vdGlmaWNhdGlvbl9FdmVudF9U
eXBlIGV3a05vdGlmaWNhdGlvbkV2ZW50VHlwZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IGV3a19ub3RpZmlj
YXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIHN3aXRjaCAoZXdrTm90aWZpY2F0aW9uRXZl
bnRUeXBlKSB7CisgICAgICAgIGNhc2UgRVdLX05PVElGSUNBVElPTl9PTkNMSUNLOgorICAgICAg
ICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KFdlYkNvcmU6OkV2ZW50OjpjcmVhdGUo
V2ViQ29yZTo6ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfTk9USUZJQ0FUSU9OX09ORElTUExBWToKKyAg
ICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChXZWJDb3JlOjpFdmVudDo6Y3Jl
YXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQsIGZhbHNlLCB0cnVlKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfTk9USUZJQ0FUSU9OX09OQ0xPU0U6
CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoV2ViQ29yZTo6RXZlbnQ6
OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIHRydWUpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVXS19OT1RJRklDQVRJT05fT05FUlJP
UjoKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChXZWJDb3JlOjpFdmVu
dDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIGV3a05vdGlmaWNhdGlvbiwgRWluYV9Cb29sIHBlcm1pdCwgY29uc3QgY2hhciogZG9t
YWluKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbi0+
bm90aWZpY2F0aW9uUHJlc2VudGVyLT5hbGxvd05vdGlmaWNhdGlvbkZvckRvbWFpbihTdHJpbmco
ZG9tYWluKSwgcGVybWl0KTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcGVy
bWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
biwgRWluYV9MaXN0KiBkb21haW5zLCBpbnQgc2l6ZSkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKyAgICBWZWN0b3I8U3RyaW5nPiBwZXJtaXR0ZWREb21haW5zOworICAgIHZvaWQqIGRv
bWFpbjsKKyAgICBFaW5hX0xpc3QqIGxpc3RJdGVyYXRvcjsKKyAgICBFSU5BX0xJU1RfRk9SRUFD
SChkb21haW5zLCBsaXN0SXRlcmF0b3IsIGRvbWFpbikKKyAgICAgICAgcGVybWl0dGVkRG9tYWlu
cy5hcHBlbmQoU3RyaW5nKHN0YXRpY19jYXN0PGNoYXIqPihkb21haW4pKSk7CisgICAgZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb25QcmVzZW50ZXItPm1ha2VQZXJtaXNzaW9uQ2FjaGUocGVy
bWl0dGVkRG9tYWlucyk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
RXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25QcmVzZW50ZXIsIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBib29sIHJlcGxhY2VtZW50KQoreworICAgIEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9IG5ldyBFd2tfTm90aWZpY2F0aW9uKCk7
CisKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvblByZXNlbnRlciA9IG5vdGlmaWNh
dGlvblByZXNlbnRlcjsKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbiA9IG5vdGlm
aWNhdGlvbjsKKyAgICBld2tOb3RpZmljYXRpb24tPnJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQ7
CisgICAgaWYgKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNhdGlv
biktPnJlcGxhY2VJZCgpLmxlbmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPmljb25V
UkwgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRp
b24qPihub3RpZmljYXRpb24pCisgICAgICAgICAgICAtPnJlcGxhY2VJZCgpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGlmIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmlj
YXRpb24pLT5jb250ZW50cygpLmljb24uc3RyaW5nKCkubGVuZ3RoKCkpCisgICAgICAgIGV3a05v
dGlmaWNhdGlvbi0+aWNvblVSTCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0YXRpY19jYXN0PFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbikKKyAgICAgICAgICAgIC0+Y29udGVu
dHMoKS5pY29uLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT5jb250ZW50cygpLnRpdGxlLmxl
bmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPnRpdGxlID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKQor
ICAgICAgICAgICAgLT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChz
dGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pLT5jb250ZW50
cygpLmJvZHkubGVuZ3RoKCkpCisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+Ym9keSA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5vdGlm
aWNhdGlvbikKKyAgICAgICAgICAgIC0+Y29udGVudHMoKS5ib2R5LnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24p
LT51cmwoKS5zdHJpbmcoKS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT51cmwg
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24q
Pihub3RpZmljYXRpb24pCisgICAgICAgICAgICAtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGlmIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmlj
YXRpb24pLT5kaXIoKS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5kaXIgPSBl
aW5hX3N0cmluZ3NoYXJlX2FkZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihu
b3RpZmljYXRpb24pCisgICAgICAgICAgICAtPmRpcigpLnV0ZjgoKS5kYXRhKCkpOworICAgIGV3
a05vdGlmaWNhdGlvbi0+cmVmID0gMTsKKworICAgIHJldHVybiBld2tOb3RpZmljYXRpb247Cit9
CisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBld2tfbm90aWZpY2F0
aW9uX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+aWNvblVSTCk7CisgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT50aXRsZSk7CisgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT5ib2R5KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChld2tOb3RpZmljYXRpb24tPnVybCk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZXdrTm90
aWZpY2F0aW9uLT5kaXIpOworICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb247Cit9CisjZW5kaWYK
Kwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlZihFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24pCit7CisgICAgZXdrTm90aWZpY2F0aW9uLT5yZWYrKzsKK30KKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX2RlcmVmKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAg
ICBpZiAoLS1ld2tOb3RpZmljYXRpb24tPnJlZikKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uUHJlc2Vu
dGVyLT5yZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKGV3a05vdGlmaWNhdGlvbik7CisgICAgZXdr
X25vdGlmaWNhdGlvbl9kZXN0cm95KGV3a05vdGlmaWNhdGlvbik7CisjZW5kaWYKK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjhmMDU2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19ub3Rp
ZmljYXRpb25faAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgPEVpbmEu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAq
IEBicmllZiBBUElzIGZvciB0aGUgd2ViIG5vdGlmaWNhdGlvbiBvZiBXZWJLaXQtRUZMCisgKgor
ICogVGhpcyBvYmplY3QgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIHVzZSB3ZWIgbm90aWZpY2F0
aW9uIGZvciBXZWJLaXQtRUZMIGNvbXBvbmVudC4KKyAqIFJlZmVyIHRvIHRoZSBXM0MgV2ViIE5v
dGlmaWNhdGlvbnMoaHR0cDovL3d3dy53My5vcmcvVFIvbm90aWZpY2F0aW9ucykKKyAqLworCisv
Ly8gQ3JlYXRlIGEgdHlwZSBuYW1lIGZvciBAYyBFd2tfTm90aWZpY2F0aW9uLgordHlwZWRlZiBz
dHJ1Y3QgX0V3a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlvbjsKKworLy8vIENyZWF0ZSBh
IHR5cGUgbmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlvbl9FdmVudF9UeXBlLgordHlwZWRlZiBl
bnVtIHsKKyAgICBFV0tfTk9USUZJQ0FUSU9OX09OQ0xJQ0ssCisgICAgRVdLX05PVElGSUNBVElP
Tl9PTkRJU1BMQVksCisgICAgRVdLX05PVElGSUNBVElPTl9PTkNMT1NFLAorICAgIEVXS19OT1RJ
RklDQVRJT05fT05FUlJPUiwKK30gRXdrX05vdGlmaWNhdGlvbl9FdmVudF9UeXBlOworCisvKioK
KyAqIEdldHMgdmFsdWUgb2YgcmVwbGFjZW1lbnQgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgor
ICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgVGhlIG5vdGlmaWNhdGlvbiBuZWVkIHRvIGJlIHJlcGxhY2Vk
IHdpdGggYWxyZWFkeSBkaXNwbGF5ZWQgb25lLgorICogICAgICAgICBAYyBFSU5BX0ZBTFNFIFRo
ZSBub3RpZmljYXRpb24gbmVlZCB0byBiZSBkaXNwbGF5ZWQgbmV3bHkuCisgKi8KK0VBUEkgRWlu
YV9Cb29sIGV3a19ub3RpZmljYXRpb25fcmVwbGFjZW1lbnRfZ2V0KGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIGVuaSk7CisKKy8qKgorICogR2V0cyByZXBsYWNlSUQgZm9yIHRoZSBub3RpZmljYXRp
b24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0
aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiByZXBsYWNlSUQgb2Ygbm90aWZp
Y2F0aW9uLgorICovCitFQVBJIGNvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fcmVwbGFjZUlE
X2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbmkpOworCisvKioKKyAqIEdldHMgaWNvblVS
TCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICog
QHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJu
IGNoYXJhY3RlciBwb2ludGVyIHRvIHRoZSBpY29uVVJMIG9mIG5vdGlmaWNhdGlvbi4KKyAqLwor
RUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChFd2tfTm90aWZp
Y2F0aW9uICplbmkpOworCisvKioKKyAqIEdldHMgdGl0bGUgZm9yIHRoZSBub3RpZmljYXRpb24g
ZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9u
IHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBjaGFyYWN0ZXIgcG9pbnRlciB0byB0
aGUgdGl0bGUgb2Ygbm90aWZpY2F0aW9uLiBUaGVyZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMg
cmV0dXJuIHZhbHVlLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fdGl0
bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogR2V0cyBib2R5
IGNvbnRlbnRzIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4K
KyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAq
IEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8gdGhlIGJvZHkgY29udGVudHMgb2Ygbm90aWZp
Y2F0aW9uLiBUaGVyZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMgcmV0dXJuIHZhbHVlLgorICov
CitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05v
dGlmaWNhdGlvbiAqZW5pKTsKKworLyoqCisgKiBHZXRzIGh0bWwgY29udGVudHMgVVJMIGZvciB0
aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqIFRoZSBodG1sIGNv
bnRlbnRzIFVSTCBpcyBhIFVSTCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vdGlmaWNhdGlvbiB3aGlj
aCBpcyBjb25zaXN0ZWQgb2YgaHRtbCBkb2N1bWVudC4KKyAqIElmIGFuIGFwcGxpY2F0aW9uIHdh
bnRzIHRvIHVzZSB0aGlzIEFQSSwgYSBwb3B1cCBpcyBkaXNwbGF5ZWQgdGhhdCBpbmNsdWRlcyBh
IHdlYnBhZ2UgZnJvbSB0aGlzIFVSTC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBz
b3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8gdGhl
IGh0bWwgY29udGVudHMgdXJsIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMgdG8g
ZnJlZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZp
Y2F0aW9uX2h0bWxfdXJsX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioK
KyAqIEdldHMgZGlyZWN0aW9uIG9mIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRp
b24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAq
CisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVyIHRvIGRpcmVjdGlvbiBvZiBub3RpZmljYXRp
b24uIFRoZXJlIGlzIG5vIG5lZWRzIHRvIGZyZWUgdGhpcyByZXR1cm4gdmFsdWUuCisgKi8KK0VB
UEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KEV3a19Ob3RpZmljYXRpb24g
KmVuaSk7CisKKy8qKgorICogQXBwbGljYXRpb24gbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9u
IHdoZW4gaXQgcmVjZWl2ZXMgYSB1c2VyJ3MgcmVzcG9uc2UgYWJvdXQgdGhlIHBlcm1pc3Npb24g
cmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJl
LgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBFSU5BX1RSVUUgdG8gYWxsb3cgdG8gc2hvdyBub3Rp
ZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8gbm90IGFsbG93IHRvIHNob3cgbm90aWZpY2F0aW9u
LgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQgYSBwZXJtaXQgbGlzdC4KKyAq
LworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxsKGNv
bnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSwgRWluYV9Cb29sIHBlcm1pdHRlZCwgY29uc3QgY2hh
ciAqZG9tYWluKTsKKworLyoqCisgKiBNYWtlcyBhIGNhY2hlIGZvciBwZXJtaXR0ZWQgZG9tYWlu
cy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhdCBzdGFydCB0aW1l
IGJ5IGFuIGFwcGxpY2F0aW9uIHdoaWNoIHVzZXMgbm90aWZpY2F0aW9uIEFQSXMuCisgKiBJZiB0
aGUgYXBwbGljYXRpb24gaGFzIG9uZSBvciBtb3JlIHBlcm1pdHRlZCBkb21haW5zLCBpdCBjYW4g
Y3JlYXRlIGEgY2FjaGUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5v
dGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIGRvbWFpbnMgZG9tYWluIGxp
c3Qgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBwZXJtaXNzaW9uIGNhY2hlLgorICogQHBhcmFtIHNp
emUgdG90YWwgbnVtYmVyIG9mIGRvbWFpbnMKKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRp
b25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSwgRWlu
YV9MaXN0ICpkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICogTWFrZXMgYW4gZXZlbnQgZm9y
IEphdmFTY3JpcHQgY2FsbGJhY2sgd2hlbiBhbiBhcHBsaWNhdGlvbiBnZW5lcmF0ZXMgYSBub3Rp
ZmljYXRpb24gY2FsbGJhY2sgZXZlbnQuCisgKgorICogQHBhcmFtIGVuaSBAYyBFd2tfTm90aWZp
Y2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKiBAcGFyYW0gZXQgQGMgRXdrX05vdGlmaWNhdGlv
bl9FdmVudF9UeXBlIGV2ZW50IHR5cGUgZm9yIGNhbGxiYWNrLgorICovCitFQVBJIHZvaWQgZXdr
X25vdGlmaWNhdGlvbl9ldmVudF9zZW5kKEV3a19Ob3RpZmljYXRpb24gKmVuaSwgRXdrX05vdGlm
aWNhdGlvbl9FdmVudF9UeXBlIGV0KTsKKworLyoqCisgKiBJbmNyZWFzZXMgcmVmZXJlbmNlIGNv
dW50IHRvIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRp
b24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcmVm
KEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogRGVjcmVhc2VzIHJlZmVyZW5jZSBj
b3VudCB0byBAYyBFd2tfTm90aWZpY2F0aW9uLgorICogRXdrX05vdGlmaWNhdGlvbiBvYmplY3Qg
d2lsbCBiZSBkZXN0cm95ZWQgd2hlbiByZWZlcmVuY2UgY291bnQgaXMgc2V0IHRvIDAuCisgKgor
ICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2
b2lkIGV3a19ub3RpZmljYXRpb25fZGVyZWYoRXdrX05vdGlmaWNhdGlvbiAqZW5pKTsKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NmI5ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCitFd2tfTm90
aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwqLCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwg
Ym9vbCByZXBsYWNlbWVudCk7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOworV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBld2tf
bm90aWZpY2F0aW9uX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
OworCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisjZW5kaWYgLy8gZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggZGQw
ZDg5Yi4uYmYwODhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Nyw2ICs2
NywxMCBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbC5oIgorI2VuZGlmCisKICNkZWZpbmUgWk9PTV9NSU4gKDAuMDUpCiAjZGVm
aW5lIFpPT01fTUFYICg0LjApCiAKQEAgLTYxMyw2ICs2MTcsMTAgQEAgc3RhdGljIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSkKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQgPSBuZXcgV2ViQ29y
ZTo6RGV2aWNlTW90aW9uQ2xpZW50RWZsOwogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0
aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgcGFnZUNsaWVudHMubm90aWZpY2F0
aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChz
bWFydERhdGEtPnNlbGYpOworI2VuZGlmCisKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6
OlBhZ2UocGFnZUNsaWVudHMpOwogICAgIGlmICghcHJpdi0+cGFnZSkgewogICAgICAgICBDUklU
SUNBTCgiQ291bGQgbm90IGNyZWF0ZSBXZWJLaXQgUGFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuaAppbmRleCBkMWM2NWViLi5hNWI5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApA
QCAtODIsNiArODIsOSBAQAogICogIC0gInZpZXcscmVzaXplZCIsIHZvaWQ6IHZpZXcgb2JqZWN0
J3Mgc2l6ZSB3YXMgY2hhbmdlZC4KICAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgdm9pZDogcmVw
b3J0cyB0aGF0IHZpZXdwb3J0IHdhcyBjaGFuZ2VkLgogICogIC0gInpvb20sYW5pbWF0ZWQsZW5k
Iiwgdm9pZDogcmVxdWVzdGVkIGFuaW1hdGVkIHpvb20gaXMgZmluaXNoZWQuCisgKiAgLSAibm90
aWZpY2F0aW9uLHNob3ciLCBAYyBFd2tfTm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgY29udGVudHMg
dG8gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9uLgorICogIC0gIm5vdGlmaWNhdGlvbixjYW5jZWwi
LCBAYyBFd2tfTm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgbm90aWZpY2F0aW9uIGluZGV4IHRvIGNh
bmNlbC4KKyAqICAtICJub3RpZmljYXRpb24scGVybWlzc2lvbixyZXF1ZXN0IiwgY2hhcio6IHJl
cXVlc3RlZCBkb21haW4gZm9yIGdldHRpbmcgdXNlciBwZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIu
CiAgKi8KIAogI2lmbmRlZiBld2tfdmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDk3ZGE2
MTEuLjM1MjUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC04MSw3ICs4MSw3IEBAIFdFQktJ
VF9GRUFUVVJFKEVOQUJMRV9NQVRITUwgIkVuYWJsZSBNYXRoTUwiIERFRkFVTFQgT04pCiBXRUJL
SVRfRkVBVFVSRShFTkFCTEVfTUVURVJfVEFHICJFbmFibGUgTWV0ZXIgdGFnIiBERUZBVUxUIE9O
KQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01JQ1JPREFUQSAiRW5hYmxlIEhUTUw1IG1pY3JvZGF0
YSBzdXBwb3J0IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9ORVRTQ0FQRV9Q
TFVHSU5fQVBJICJFbmFibGUgTmV0c2NhcGUgcGx1Z2luIEFQSSIgREVGQVVMVCBPRkYpCi1XRUJL
SVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERF
RkFVTFQgT0ZGKQorV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBu
b3RpZmljYXRpb25zIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX09SSUVOVEFU
SU9OX0VWRU5UUyAiRW5hYmxlIG9yaWVudGF0aW9uIGV2ZW50cyIgREVGQVVMVCBPRkYpCiBXRUJL
SVRfRkVBVFVSRShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSAiRW5hYmxlIFBhZ2UgVmlzaWJp
bGl0eSBBUEkiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUFJPR1JFU1NfVEFH
ICJFbmFibGUgcHJvZ3Jlc3MgdGFnIiBERUZBVUxUIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYxMmQ5YTEuLjJlOTIwN2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wMS0xNiAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBBZGQgQVBJIGZvciBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBXZWIgTm90
aWZpY2F0aW9uIGZlYXR1cmUgZm9yIFdlYktpdC1FZmwuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvQ01ha2VMaXN0cy50eHQ6IEFkZCBub3RpZmljYXRpb25zIGRpcmVjdG9yeSBwYXRo
IGZvciB0aGUgRHVtcFJlbmRlclRyZWUuCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6
IEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCiAy
MDEyLTAxLTA1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIERvbid0IGhhcmRjb2RlIGV4cGVjdGVkIGZpbGUgVVJJcyBpbiBhcyB0aGV5IGRlcGVuZCBv
biB0aGUgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRl
eCBjOTI5MTkxLi5jNDU3OGQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
Q01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMTYsNiArMTE2LDEyIEBAIElGIChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBF
TkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMp
CisgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAg
ICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBB
RERfREVGSU5JVElPTlMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJU
cmVlL2d0ay9mb250cyIKICAgICAgICAgICAgICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFS
WV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiMWQ3Nzg1Li5mZmVjOTU1IDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdApAQCAtMjc1LDcgKzI3NSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1
ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlm
aWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNC
bGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnko
KSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAg
eyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRh
dGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElP
Tl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0
aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123901</attachid>
            <date>2012-01-25 02:11:29 -0800</date>
            <delta_ts>2012-01-26 01:00:44 -0800</delta_ts>
            <desc>Add new patch.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>33453</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNmYzNmRlLi5iOTM1OTZl
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDEtMjUgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5k
c3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPHN0eWxlIHNjb3BlZD46IEltcGxlbWVu
dCByZWdpc3RlcmluZyBvZiA8c3R5bGUgc2NvcGVkPiB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggZWMwYzdkOC4uOWNlNmYzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZf
VVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0g
IExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9E
SVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVORElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAg
ICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTk1LDYgKzg5LDE1
IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiAp
CiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIK
KyAgICApCisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9l
d2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktp
dF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJQlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFS
SUVTfQpAQCAtMjQzLDYgKzI0Niw3IEBAIFNFVChFV2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbG9nZ2luZy5oCiAgICAgJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX21haW4uaAogICAgICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19uZXR3b3JrLmgKKyAgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKICAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmgKICAgICAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfc2V0dGluZ3MuaAogICAgICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a192aWV3LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkODdlMDRjLi40YjNkNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MTItMDEtMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3Rp
ZmljYXRpb24gZmVhdHVyZSBhbmQgZXhwb3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAg
IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2F0aW9ucyBwcm9w
ZXJ0eSBpbiB3aW5kb3cubmF2aWdhdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6
IEFkZCAiZXdrX25vdGlmaWNhdGlvbi5jcHAiIGFuZCAiZXdrX25vdGlmaWNhdGlvbi5oIi4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiBSZW1vdmUgbm90aWZp
Y2F0aW9uUHJlc2VudGVyKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIGJ5IHIxMDEzMDcu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDogRGl0dG8uCisgICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJt
aXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlz
c2lvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6YWxsb3dOb3RpZmljYXRpb25Gb3JEb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChD
YWxsYmFja0luZm8pOgorICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6CisgICAgICAgICogZXdrL2V3
a19ub3RpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fcmVwbGFjZW1lbnRfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVwbGFjZUlE
X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9u
X2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlyX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0
aW9uX2V2ZW50X3NlbmQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2Nh
bGxiYWNrX2NhbGwpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWlu
c19hZGQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9kZXN0cm95KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVmKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGVyZWYpOgorICAgICAgICAqIGV3ay9ld2tfbm90
aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaC4KKyAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogQWRk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCBvYmplY3QgdG8gdGhlIHBhZ2VDbGllbnQu
bm90aWZpY2F0aW9uQ2xpZW50LgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGQgZGVzY3Jp
cHRpb24gYWJvdXQgdGhlIHNtYXJ0X2NhbGxfYmFjayBtZXNzYWdlcyBvZiB0aGUgbm90aWZpY2F0
aW9uLgorCiAyMDEyLTAxLTE3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gVXNlIHN0YXRpYyBjb25zdCBpbnN0ZWQgb2YgI2RlZmluZSBt
YWNyby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDAuLjliNGZkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNTUsMTAg
KzU1LDYgQEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAj
aW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgi
CkBAIC00MTcsMTQgKzQxMyw2IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFi
YXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJv
bWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCiB2b2lkIENocm9tZUNsaWVu
dEVmbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4g
cHJwRmlsZUNob29zZXIpCiB7CiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9vc2VyID0gcHJw
RmlsZUNob29zZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oCmluZGV4IDRiNDdjNzMuLjBiMWNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yOCwxMCAr
MjgsNiBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5o
IgotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE0LDEwICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7Ci0j
ZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qg
c3BhY2VOZWVkZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggYmE0NjZmNS4uNzUwNWJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSw1MyArMjEs
MTE1IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfbm90aWZp
Y2F0aW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNf
T2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCiB7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdOb3RpZmljYXRpb25zLnNpemUoKTsg
aSsrKQorICAgICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZpY2F0
aW9uc1tpXSk7CiB9CiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgcmVwbGFjZW1lbnQgPSBmYWxzZTsKKyAgICBpZiAo
IW5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkuaXNFbXB0eSgpKQorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAg
ICAgICBpZiAoZXdrX25vdGlmaWNhdGlvbl9nZXQobV9wZW5kaW5nTm90aWZpY2F0aW9uc1tpXSkt
PnJlcGxhY2VJZCgpID09IG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkpIHsKKyAgICAgICAgICAg
ICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZpY2F0aW9uc1tpXSk7
CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
biA9IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbiwgcmVwbGFjZW1l
bnQpOworICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuYXBwZW5kKGV3a05vdGlmaWNhdGlvbik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRp
b24sc2hvdyIsIGV3a05vdGlmaWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9kZXJlZihl
d2tOb3RpZmljYXRpb24pOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZp
Y2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUodGhpcywgbm90aWZpY2F0aW9uLCBmYWxz
ZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmlj
YXRpb24sY2FuY2VsIiwgZXdrTm90aWZpY2F0aW9uKTsKKyAgICBld2tfbm90aWZpY2F0aW9uX2Rl
cmVmKGV3a05vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGlmIChld2tf
bm90aWZpY2F0aW9uX2dldChtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKSA9PSBub3RpZmljYXRp
b24pCisgICAgICAgICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZp
Y2F0aW9uc1tpXSk7CisgICAgbV9wZW5kaW5nTm90aWZpY2F0aW9ucy5jbGVhcigpOwogfQogCiB2
b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBkZWxldGUgdGhpczsK
IH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2NhY2hl
ZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkg
PT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkgeworICAgICAgICBDYWxsYmFja0luZm8qIGNh
bGxiYWNrSW5mbyA9IG5ldyBDYWxsYmFja0luZm8oKTsKKyAgICAgICAgY2FsbGJhY2tJbmZvLT5k
b21haW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOworICAgICAgICBj
YWxsYmFja0luZm8tPmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIG1fY2FsbGJhY2tzLmFw
cGVuZChjYWxsYmFja0luZm8pOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBjb25zdF9jYXN0
PGNoYXIqPihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKQor
ICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0
c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CisgICAgLy8gQmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgbW9kYWwgZGlhbG9ncyB0byByZXF1ZXN0IHBlcm1pc3Npb24sIGl0J3Mg
aW1wb3NzaWJsZSB0byBjYW5jZWwgdGhlbS4KK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoVmVjdG9yPFN0cmluZz4gZG9tYWlucykK
K3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRvbWFpbnMuc2l6ZSgpOyBpKyspCisgICAg
ICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRkKGRvbWFpbnNbaV0pOworfQorCit2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6YWxsb3dOb3RpZmljYXRpb25Gb3JEb21haW4oY29u
c3QgU3RyaW5nIGRvbWFpbiwgY29uc3QgYm9vbCBwZXJtaXNzaW9uKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9jYWxsYmFja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1f
Y2FsbGJhY2tzW2ldLT5kb21haW4gPT0gZG9tYWluKSB7CisgICAgICAgICAgICBpZiAocGVybWlz
c2lvbikgeworICAgICAgICAgICAgICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRkKFN0cmluZyhk
b21haW4pKTsKKyAgICAgICAgICAgICAgICAobV9jYWxsYmFja3NbaV0tPmNhbGxiYWNrKS5nZXQo
KS0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBtX2Nh
bGxiYWNrc1tpXTsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLnJlbW92ZShpKTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNl
bFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
dm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlbW92ZVBlbmRpbmdOb3RpZmlj
YXRpb24oRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdOb3RpZmljYXRp
b25zLnNpemUoKTsgaSsrKQorICAgICAgICBpZiAoZXdrX25vdGlmaWNhdGlvbl9nZXQobV9wZW5k
aW5nTm90aWZpY2F0aW9uc1tpXSkgPT0gZXdrX25vdGlmaWNhdGlvbl9nZXQoZXdrTm90aWZpY2F0
aW9uKSkgeworICAgICAgICAgICAgbV9wZW5kaW5nTm90aWZpY2F0aW9ucy5yZW1vdmUoaSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuaAppbmRleCAyNjBjNDQyLi40ZGQ3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDE2IEBACiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgPEV2
YXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQogcHVibGljOgotICAgIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBA
IC0zOSw2ICs0MiwyMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOwog
ICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNrUGVybWlz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJl
cXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2b2lk
IG1ha2VQZXJtaXNzaW9uQ2FjaGUoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk7CisgICAgdm9pZCBh
bGxvd05vdGlmaWNhdGlvbkZvckRvbWFpbihjb25zdCBTdHJpbmcgZG9tYWluLCBjb25zdCBib29s
IHBlcm1pc3Npb24pOworICAgIHZvaWQgcmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihFd2tfTm90
aWZpY2F0aW9uKik7CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKKyAgICBI
YXNoU2V0PE5vdGlmaWNhdGlvbio+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoU2V0PFdURjo6
U3RyaW5nPiBtX2NhY2hlZFBlcm1pc3Npb25zOworICAgIFZlY3RvcjxFd2tfTm90aWZpY2F0aW9u
Kj4gbV9wZW5kaW5nTm90aWZpY2F0aW9uczsKKworICAgIHN0cnVjdCBDYWxsYmFja0luZm8gewor
ICAgICAgICBTdHJpbmcgZG9tYWluOworICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjazsKKyAgICB9OworICAgIFZlY3RvcjxDYWxsYmFja0luZm8qPiBtX2NhbGxiYWNrczsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCmluZGV4IDBmZmI1MWMuLjYzMzA2MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV3a19qcy5o
IgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25ldHdvcmsuaCIKKyNpbmNs
dWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X3BvbGljeS5o
IgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODZhYjFjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2luY2x1
ZGUgImV3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb247CisjZW5kaWYKKyAgICBib29sIHJlcGxhY2VtZW50OworICAg
IGNvbnN0IGNoYXIqIHJlcGxhY2VJRDsKKyAgICBjb25zdCBjaGFyKiBpY29uVVJMOworICAgIGNv
bnN0IGNoYXIqIHRpdGxlOworICAgIGNvbnN0IGNoYXIqIGJvZHk7CisgICAgY29uc3QgY2hhciog
dXJsOworICAgIGNvbnN0IGNoYXIqIGRpcjsKKyAgICB1bnNpZ25lZCByZWY7Cit9OworCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitXZWJDb3JlOjpOb3RpZmljYXRpb24qIGV3a19ub3RpZmlj
YXRpb25fZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAg
ICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb247Cit9CisjZW5kaWYKKworRWlu
YV9Cb29sIGV3a19ub3RpZmljYXRpb25fcmVwbGFjZW1lbnRfZ2V0KGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5y
ZXBsYWNlbWVudDsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9yZXBsYWNlSURf
Z2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1
cm4gZXdrTm90aWZpY2F0aW9uLT5yZXBsYWNlSUQ7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3Rp
ZmljYXRpb25faWNvbl91cmxfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5pY29uVVJMOworfQorCitjb25z
dCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+dGl0bGU7
Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05v
dGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRp
b24tPmJvZHk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25faHRtbF91cmxfZ2V0
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4g
ZXdrTm90aWZpY2F0aW9uLT51cmw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25f
ZGlyX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisgICAg
cmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+ZGlyOworfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25f
ZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIEV3a19Ob3RpZmlj
YXRpb25fRXZlbnRfVHlwZSBld2tOb3RpZmljYXRpb25FdmVudFR5cGUpCit7CisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24g
PSBld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmlj
YXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICBzd2l0Y2ggKGV3a05v
dGlmaWNhdGlvbkV2ZW50VHlwZSkgeworICAgICAgICBjYXNlIEVXS19OT1RJRklDQVRJT05fT05D
TElDSzoKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChXZWJDb3JlOjpF
dmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmYWxzZSwgdHJ1
ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVdLX05PVElGSUNBVElPTl9P
TkRJU1BMQVk6CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoV2ViQ29y
ZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50LCBmYWxz
ZSwgdHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVdLX05PVElGSUNB
VElPTl9PTkNMT1NFOgorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KFdl
YkNvcmU6OkV2ZW50OjpjcmVhdGUoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZh
bHNlLCB0cnVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfTk9USUZJ
Q0FUSU9OX09ORVJST1I6CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQo
V2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
ZmFsc2UsIHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
K30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tfY2FsbChjb25z
dCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIEVpbmFfQm9vbCBwZXJtaXQsIGNv
bnN0IGNoYXIqIGRvbWFpbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tO
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvblByZXNlbnRlci0+YWxsb3dOb3RpZmljYXRpb25Gb3JE
b21haW4oU3RyaW5nKGRvbWFpbiksIHBlcm1pdCk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24sIEVpbmFfTGlzdCogZG9tYWlucywgaW50IHNpemUpCit7CisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgVmVjdG9yPFN0cmluZz4gcGVybWl0dGVkRG9tYWluczsK
KyAgICB2b2lkKiBkb21haW47CisgICAgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7CisgICAgRUlO
QV9MSVNUX0ZPUkVBQ0goZG9tYWlucywgbGlzdEl0ZXJhdG9yLCBkb21haW4pCisgICAgICAgIHBl
cm1pdHRlZERvbWFpbnMuYXBwZW5kKFN0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4oZG9tYWluKSkp
OworICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uUHJlc2VudGVyLT5tYWtlUGVybWlz
c2lvbkNhY2hlKHBlcm1pdHRlZERvbWFpbnMpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKK0V3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmljYXRpb25fY3JlYXRlKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogbm90aWZpY2F0aW9uUHJlc2Vu
dGVyLCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgYm9vbCByZXBsYWNlbWVu
dCkKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBuZXcgRXdrX05v
dGlmaWNhdGlvbigpOworCisgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25QcmVzZW50
ZXIgPSBub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb24gPSBub3RpZmljYXRpb247CisgICAgZXdrTm90aWZpY2F0aW9uLT5yZXBsYWNlbWVudCA9
IHJlcGxhY2VtZW50OworICAgIGlmIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24q
Pihub3RpZmljYXRpb24pLT5yZXBsYWNlSWQoKS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZp
Y2F0aW9uLT5pY29uVVJMID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKQorICAgICAgICAgICAgLT5yZXBsYWNlSWQo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uKj4obm90aWZpY2F0aW9uKS0+Y29udGVudHMoKS5pY29uLnN0cmluZygpLmxlbmd0aCgpKQor
ICAgICAgICBld2tOb3RpZmljYXRpb24tPmljb25VUkwgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChz
dGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24pCisgICAgICAg
ICAgICAtPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKS0+Y29udGVu
dHMoKS50aXRsZS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT50aXRsZSA9IGVp
bmFfc3RyaW5nc2hhcmVfYWRkKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvbio+KG5v
dGlmaWNhdGlvbikKKyAgICAgICAgICAgIC0+Y29udGVudHMoKS50aXRsZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0
aW9uKS0+Y29udGVudHMoKS5ib2R5Lmxlbmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24t
PmJvZHkgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb3RpZmlj
YXRpb24qPihub3RpZmljYXRpb24pCisgICAgICAgICAgICAtPmNvbnRlbnRzKCkuYm9keS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKj4o
bm90aWZpY2F0aW9uKS0+dXJsKCkuc3RyaW5nKCkubGVuZ3RoKCkpCisgICAgICAgIGV3a05vdGlm
aWNhdGlvbi0+dXJsID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKQorICAgICAgICAgICAgLT51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0
aW9uKj4obm90aWZpY2F0aW9uKS0+ZGlyKCkubGVuZ3RoKCkpCisgICAgICAgIGV3a05vdGlmaWNh
dGlvbi0+ZGlyID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90
aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uKQorICAgICAgICAgICAgLT5kaXIoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBld2tOb3RpZmljYXRpb24tPnJlZiA9IDE7CisKKyAgICByZXR1cm4gZXdrTm90
aWZpY2F0aW9uOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChld2tOb3RpZmljYXRpb24tPmljb25VUkwp
OworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+dGl0bGUpOworICAg
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+Ym9keSk7CisgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT51cmwpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+ZGlyKTsKKyAgICBkZWxldGUgZXdrTm90aWZpY2F0aW9u
OworfQorI2VuZGlmCisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9yZWYoRXdrX05vdGlmaWNhdGlv
biogZXdrTm90aWZpY2F0aW9uKQoreworICAgIGV3a05vdGlmaWNhdGlvbi0+cmVmKys7Cit9CisK
K3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZXJlZihFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24pCit7CisgICAgaWYgKC0tZXdrTm90aWZpY2F0aW9uLT5yZWYpCisgICAgICAgIHJldHVy
bjsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvblByZXNlbnRlci0+cmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihld2tOb3RpZmljYXRp
b24pOworICAgIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShld2tOb3RpZmljYXRpb24pOworI2Vu
ZGlmCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZjA1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTYxIEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBld2tfbm90aWZpY2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNp
bmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworLyoqCisgKiBAYnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24gb2YgV2Vi
S2l0LUVGTAorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byB1c2Ug
d2ViIG5vdGlmaWNhdGlvbiBmb3IgV2ViS2l0LUVGTCBjb21wb25lbnQuCisgKiBSZWZlciB0byB0
aGUgVzNDIFdlYiBOb3RpZmljYXRpb25zKGh0dHA6Ly93d3cudzMub3JnL1RSL25vdGlmaWNhdGlv
bnMpCisgKi8KKworLy8vIENyZWF0ZSBhIHR5cGUgbmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlv
bi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19Ob3RpZmljYXRpb247CisK
Ky8vLyBDcmVhdGUgYSB0eXBlIG5hbWUgZm9yIEBjIEV3a19Ob3RpZmljYXRpb25fRXZlbnRfVHlw
ZS4KK3R5cGVkZWYgZW51bSB7CisgICAgRVdLX05PVElGSUNBVElPTl9PTkNMSUNLLAorICAgIEVX
S19OT1RJRklDQVRJT05fT05ESVNQTEFZLAorICAgIEVXS19OT1RJRklDQVRJT05fT05DTE9TRSwK
KyAgICBFV0tfTk9USUZJQ0FUSU9OX09ORVJST1IsCit9IEV3a19Ob3RpZmljYXRpb25fRXZlbnRf
VHlwZTsKKworLyoqCisgKiBHZXRzIHZhbHVlIG9mIHJlcGxhY2VtZW50IGZyb20gQGMgRXdrX05v
dGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0
dXJlLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIFRoZSBub3RpZmljYXRpb24gbmVlZCB0
byBiZSByZXBsYWNlZCB3aXRoIGFscmVhZHkgZGlzcGxheWVkIG9uZS4KKyAqICAgICAgICAgQGMg
RUlOQV9GQUxTRSBUaGUgbm90aWZpY2F0aW9uIG5lZWQgdG8gYmUgZGlzcGxheWVkIG5ld2x5Lgor
ICovCitFQVBJIEVpbmFfQm9vbCBld2tfbm90aWZpY2F0aW9uX3JlcGxhY2VtZW50X2dldChjb25z
dCBFd2tfTm90aWZpY2F0aW9uKiBlbmkpOworCisvKioKKyAqIEdldHMgcmVwbGFjZUlEIGZvciB0
aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0g
ZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gcmVwbGFj
ZUlEIG9mIG5vdGlmaWNhdGlvbi4KKyAqLworRUFQSSBjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0
aW9uX3JlcGxhY2VJRF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW5pKTsKKworLyoqCisg
KiBHZXRzIGljb25VUkwgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0
aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisg
KgorICogQHJldHVybiBjaGFyYWN0ZXIgcG9pbnRlciB0byB0aGUgaWNvblVSTCBvZiBub3RpZmlj
YXRpb24uCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9n
ZXQoRXdrX05vdGlmaWNhdGlvbiAqZW5pKTsKKworLyoqCisgKiBHZXRzIHRpdGxlIGZvciB0aGUg
bm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5p
IE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVy
IHBvaW50ZXIgdG8gdGhlIHRpdGxlIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMg
dG8gZnJlZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90
aWZpY2F0aW9uX3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioK
KyAqIEdldHMgYm9keSBjb250ZW50cyBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19O
b3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVj
dHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVyIHRvIHRoZSBib2R5IGNvbnRl
bnRzIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMgdG8gZnJlZSB0aGlzIHJldHVy
biB2YWx1ZS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogR2V0cyBodG1sIGNvbnRl
bnRzIFVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisg
KiBUaGUgaHRtbCBjb250ZW50cyBVUkwgaXMgYSBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBub3Rp
ZmljYXRpb24gd2hpY2ggaXMgY29uc2lzdGVkIG9mIGh0bWwgZG9jdW1lbnQuCisgKiBJZiBhbiBh
cHBsaWNhdGlvbiB3YW50cyB0byB1c2UgdGhpcyBBUEksIGEgcG9wdXAgaXMgZGlzcGxheWVkIHRo
YXQgaW5jbHVkZXMgYSB3ZWJwYWdlIGZyb20gdGhpcyBVUkwuCisgKgorICogQHBhcmFtIGVuaSBO
b3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBw
b2ludGVyIHRvIHRoZSBodG1sIGNvbnRlbnRzIHVybCBvZiBub3RpZmljYXRpb24uIFRoZXJlIGlz
IG5vIG5lZWRzIHRvIGZyZWUgdGhpcyByZXR1cm4gdmFsdWUuCisgKi8KK0VBUEkgY29uc3QgY2hh
ciAqZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAq
ZW5pKTsKKworLyoqCisgKiBHZXRzIGRpcmVjdGlvbiBvZiBub3RpZmljYXRpb24gZnJvbSBAYyBF
d2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBz
dHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBjaGFyYWN0ZXIgcG9pbnRlciB0byBkaXJlY3Rpb24g
b2Ygbm90aWZpY2F0aW9uLiBUaGVyZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMgcmV0dXJuIHZh
bHVlLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fZGlyX2dldChFd2tf
Tm90aWZpY2F0aW9uICplbmkpOworCisvKioKKyAqIEFwcGxpY2F0aW9uIG5lZWRzIHRvIGNhbGwg
dGhpcyBmdW5jdGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEgdXNlcidzIHJlc3BvbnNlIGFib3V0IHRo
ZSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291
cmNlIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBwZXJtaXR0ZWQgQGMgRUlOQV9UUlVFIHRvIGFsbG93
IHRvIHNob3cgbm90aWZpY2F0aW9uLCBAYyBFSU5BX0ZBTFNFIHRvIG5vdCBhbGxvdyB0byBzaG93
IG5vdGlmaWNhdGlvbi4KKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRkIGEgcGVy
bWl0IGxpc3QuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2Fs
bGJhY2tfY2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbmksIEVpbmFfQm9vbCBwZXJtaXR0
ZWQsIGNvbnN0IGNoYXIgKmRvbWFpbik7CisKKy8qKgorICogTWFrZXMgYSBjYWNoZSBmb3IgcGVy
bWl0dGVkIGRvbWFpbnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQg
YXQgc3RhcnQgdGltZSBieSBhbiBhcHBsaWNhdGlvbiB3aGljaCB1c2VzIG5vdGlmaWNhdGlvbiBB
UElzLgorICogSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBvbmUgb3IgbW9yZSBwZXJtaXR0ZWQgZG9t
YWlucywgaXQgY2FuIGNyZWF0ZSBhIGNhY2hlIHVzaW5nIHRoaXMgZnVuY3Rpb24uCisgKgorICog
QHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBkb21h
aW5zIGRvbWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZS4K
KyAqIEBwYXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKi8KK0VBUEkgdm9pZCBl
d2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tfTm90aWZpY2F0
aW9uICplbmksIEVpbmFfTGlzdCAqZG9tYWlucywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2Vz
IGFuIGV2ZW50IGZvciBKYXZhU2NyaXB0IGNhbGxiYWNrIHdoZW4gYW4gYXBwbGljYXRpb24gZ2Vu
ZXJhdGVzIGEgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGV2ZW50LgorICoKKyAqIEBwYXJhbSBlbmkg
QGMgRXdrX05vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIGV0IEBjIEV3
a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZSBldmVudCB0eXBlIGZvciBjYWxsYmFjay4KKyAqLwor
RUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uICpl
bmksIEV3a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZSBldCk7CisKKy8qKgorICogSW5jcmVhc2Vz
IHJlZmVyZW5jZSBjb3VudCB0byBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBl
bmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90
aWZpY2F0aW9uX3JlZihFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioKKyAqIERlY3JlYXNl
cyByZWZlcmVuY2UgY291bnQgdG8gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqIEV3a19Ob3RpZmlj
YXRpb24gb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHdoZW4gcmVmZXJlbmNlIGNvdW50IGlzIHNl
dCB0byAwLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUu
CisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2RlcmVmKEV3a19Ob3RpZmljYXRpb24g
KmVuaSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25v
dGlmaWNhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0
aW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODZiOWQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRp
b25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25fcHJpdmF0
ZV9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24u
aCIKKworRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24sIGJvb2wgcmVwbGFjZW1lbnQpOwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Rl
c3Ryb3koRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKK1dlYkNvcmU6Ok5vdGlm
aWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdr
Tm90aWZpY2F0aW9uKTsKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2VuZGlm
IC8vIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IGYzMzg1YmQuLmViYzMyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNjgsNiArNjgsMTAgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVm
bC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgZmxv
YXQgem9vbU1pbmltdW0gPSAwLjA1Owogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NYXhpbXVtID0g
NC4wOwogCkBAIC02MTQsNiArNjE4LDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAg
cGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlv
bkNsaWVudEVmbDsKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5l
dyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorICAgIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5l
dyBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxm
KTsKKyNlbmRpZgorCiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGll
bnRzKTsKICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5v
dCBjcmVhdGUgV2ViS2l0IFBhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggYTQz
MzUzNy4uNTA5MzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTgzLDYgKzgzLDkg
QEAKICAqICAtICJ2aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNo
YW5nZWQuCiAgKiAgLSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3
cG9ydCB3YXMgY2hhbmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVl
c3RlZCBhbmltYXRlZCB6b29tIGlzIGZpbmlzaGVkLgorICogIC0gIm5vdGlmaWNhdGlvbixzaG93
IiwgQGMgRXdrX05vdGlmaWNhdGlvbjogcmVxdWVzdGVkIGNvbnRlbnRzIHRvIGRpc3BsYXkgdGhl
IG5vdGlmaWNhdGlvbi4KKyAqICAtICJub3RpZmljYXRpb24sY2FuY2VsIiwgQGMgRXdrX05vdGlm
aWNhdGlvbjogcmVxdWVzdGVkIG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisgKiAgLSAi
bm90aWZpY2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNoYXIqOiByZXF1ZXN0ZWQgZG9tYWlu
IGZvciBnZXR0aW5nIHVzZXIgcGVybWlzc2lvbiBmcm9tIHRoZSB1c2VyLgogICovCiAKICNpZm5k
ZWYgZXdrX3ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA5ODVjYTI3Li5kYzY5ZGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFC
TEVfTUFUSE1MICJFbmFibGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX01FVEVSX1RBRyAiRW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFU
VVJFKEVOQUJMRV9NSUNST0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVG
QVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5h
YmxlIE5ldHNjYXBlIHBsdWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dF
QktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIg
REVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVu
YWJsZSBvcmllbnRhdGlvbiBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZB
VUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dy
ZXNzIHRhZyIgREVGQVVMVCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBmNGIyZjY3Li5iMTkxODk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjUg
IEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0g
QWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlmaWNhdGlvbiBmZWF0
dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0OiBBZGQgbm90aWZpY2F0aW9ucyBkaXJlY3RvcnkgcGF0aCBmb3IgdGhlIER1bXBS
ZW5kZXJUcmVlCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6IEVuYWJsZSBFTkFCTEVf
Tk9USUZJQ0FUSU9OUyBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCiAyMDEyLTAxLTI0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gVHJpZ2dl
ciBDaHJvbWl1bSBNYWMgUmVsZWFzZSAoUGVyZikgb24gbmV3IGNvbW1pdHMuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggMGRhZTE2OC4uODQxMDY4OCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtMTE4LDYgKzExOCwxMiBAQCBJ
RiAoV1RGX1VTRV9DVVJMKQogICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVf
RElSRUNUT1JJRVMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5ESUYg
KCkKIAorSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQorICAgIExJU1QoQVBQRU5EIER1bXBSZW5k
ZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlm
aWNhdGlvbnMiCisgICAgKQorRU5ESUYgKCkKKwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09O
Rl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAgICAg
ICAgICAgLUREQVRBX0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5k
ZXggYjliOTk3Mi4uNmRmMTFjNyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3Niw3ICsyNzYsNyBAQCBt
eSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5f
QVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1cHBv
cnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xl
IERlc2t0b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG5v
dGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJ
T05TIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwk
bm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1l
dmVudHMiLCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0Js
YWNrQmVycnkoKSwgdmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124072</attachid>
            <date>2012-01-26 01:00:44 -0800</date>
            <delta_ts>2012-02-01 20:26:24 -0800</delta_ts>
            <desc>Fixed patch for the comment #31</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>32934</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNmYzNmRlLi5iOTM1OTZl
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDEtMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDEtMjUgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5k
c3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgPHN0eWxlIHNjb3BlZD46IEltcGxlbWVu
dCByZWdpc3RlcmluZyBvZiA8c3R5bGUgc2NvcGVkPiB3aXRoIHRoZSBzY29waW5nIGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggZWMwYzdkOC4uOWNlNmYzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTU2LDEyICs1Niw2IEBAIElGIChXVEZf
VVNFX1BBTkdPKQogICApCiBFTkRJRiAoKQogCi1JRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCi0g
IExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCi0gICAgIiR7V0VCQ09SRV9E
SVJ9L25vdGlmaWNhdGlvbnMiCi0gICkKLUVORElGICgpCi0KIExJU1QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCiAg
ICAgZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTk1LDYgKzg5LDE1
IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfanMuY3BwCiAp
CiAKK0lGIChFTkFCTEVfTk9USUZJQ0FUSU9OUykKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIK
KyAgICApCisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICAgICAgZWZsL2V3ay9l
d2tfbm90aWZpY2F0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFdlYktp
dF9MSUJSQVJJRVMKICAgICAke0NhaXJvX0xJQlJBUklFU30KICAgICAke0VDT1JFX1hfTElCUkFS
SUVTfQpAQCAtMjQzLDYgKzI0Niw3IEBAIFNFVChFV2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbG9nZ2luZy5oCiAgICAgJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX21haW4uaAogICAgICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19uZXR3b3JrLmgKKyAgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKICAgICAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmgKICAgICAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfc2V0dGluZ3MuaAogICAgICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a192aWV3LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkODdlMDRjLi40YjNkNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MTItMDEtMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIFdlYiBOb3Rp
ZmljYXRpb24gZmVhdHVyZSBhbmQgZXhwb3NlcyBBUEkgZm9yIFdlYktpdC1FRmwuCisgICAgICAg
IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gd2Via2l0Tm90aWZpY2F0aW9ucyBwcm9w
ZXJ0eSBpbiB3aW5kb3cubmF2aWdhdG9yLgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6
IEFkZCAiZXdrX25vdGlmaWNhdGlvbi5jcHAiIGFuZCAiZXdrX25vdGlmaWNhdGlvbi5oIi4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOiBSZW1vdmUgbm90aWZp
Y2F0aW9uUHJlc2VudGVyKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIGJ5IHIxMDEzMDcu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6
cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
aDogRGl0dG8uCisgICAgICAgIChDaHJvbWVDbGllbnRFZmwpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJt
aXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjptYWtlUGVybWlz
c2lvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6YWxsb3dOb3RpZmljYXRpb25Gb3JEb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChD
YWxsYmFja0luZm8pOgorICAgICAgICAqIGV3ay9FV2ViS2l0Lmg6CisgICAgICAgICogZXdrL2V3
a19ub3RpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fcmVwbGFjZW1lbnRfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVwbGFjZUlE
X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9u
X2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faHRtbF91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlyX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0
aW9uX2V2ZW50X3NlbmQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2Nh
bGxiYWNrX2NhbGwpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9wZXJtaXR0ZWRfZG9tYWlu
c19hZGQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9kZXN0cm95KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVmKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGVyZWYpOgorICAgICAgICAqIGV3ay9ld2tfbm90
aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZh
dGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaC4KKyAgICAg
ICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogQWRk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCBvYmplY3QgdG8gdGhlIHBhZ2VDbGllbnQu
bm90aWZpY2F0aW9uQ2xpZW50LgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOiBBZGQgZGVzY3Jp
cHRpb24gYWJvdXQgdGhlIHNtYXJ0X2NhbGxfYmFjayBtZXNzYWdlcyBvZiB0aGUgbm90aWZpY2F0
aW9uLgorCiAyMDEyLTAxLTE3ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gVXNlIHN0YXRpYyBjb25zdCBpbnN0ZWQgb2YgI2RlZmluZSBt
YWNyby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuY3BwCmluZGV4IGEyNWY5ZDAuLjliNGZkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNTUsMTAg
KzU1LDYgQEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAj
aW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgi
CkBAIC00MTcsMTQgKzQxMyw2IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFi
YXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJv
bWVDbGllbnRFZmw6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCiB2b2lkIENocm9tZUNsaWVu
dEVmbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4g
cHJwRmlsZUNob29zZXIpCiB7CiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBjaG9vc2VyID0gcHJw
RmlsZUNob29zZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oCmluZGV4IDRiNDdjNzMuLjBiMWNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yOCwxMCAr
MjgsNiBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5o
IgotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE0LDEwICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7Ci0j
ZW5kaWYKLQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qg
c3BhY2VOZWVkZWQpOwogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggYmE0NjZmNS4uMTQ1NTFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSw1MyArMjEs
MTE0IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfbm90aWZp
Y2F0aW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNf
T2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCiB7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdOb3RpZmljYXRpb25zLnNpemUoKTsg
aSsrKQorICAgICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZpY2F0
aW9uc1tpXSk7CiB9CiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIGJvb2wgcmVwbGFjZW1lbnQgPSBmYWxzZTsKKyAgICBpZiAo
IW5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkuaXNFbXB0eSgpKQorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAg
ICAgICBpZiAoZXdrX25vdGlmaWNhdGlvbl9nZXQobV9wZW5kaW5nTm90aWZpY2F0aW9uc1tpXSkt
PnJlcGxhY2VJZCgpID09IG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkpIHsKKyAgICAgICAgICAg
ICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZpY2F0aW9uc1tpXSk7
CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
biA9IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbiwgcmVwbGFjZW1l
bnQpOworICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuYXBwZW5kKGV3a05vdGlmaWNhdGlvbik7
CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRp
b24sc2hvdyIsIGV3a05vdGlmaWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9kZXJlZihl
d2tOb3RpZmljYXRpb24pOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZp
Y2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUodGhpcywgbm90aWZpY2F0aW9uLCBmYWxz
ZSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmlj
YXRpb24sY2FuY2VsIiwgZXdrTm90aWZpY2F0aW9uKTsKKyAgICBld2tfbm90aWZpY2F0aW9uX2Rl
cmVmKGV3a05vdGlmaWNhdGlvbik7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcGVuZGluZ05vdGlmaWNhdGlvbnMuc2l6ZSgpOyBpKyspCisgICAgICAgIGlmIChld2tf
bm90aWZpY2F0aW9uX2dldChtX3BlbmRpbmdOb3RpZmljYXRpb25zW2ldKSA9PSBub3RpZmljYXRp
b24pCisgICAgICAgICAgICBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kobV9wZW5kaW5nTm90aWZp
Y2F0aW9uc1tpXSk7CisgICAgbV9wZW5kaW5nTm90aWZpY2F0aW9ucy5jbGVhcigpOwogfQogCiB2
b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBkZWxldGUgdGhpczsK
IH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2NhY2hl
ZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkg
PT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkgeworICAgICAgICBDYWxsYmFja0luZm8qIGNh
bGxiYWNrSW5mbyA9IG5ldyBDYWxsYmFja0luZm8oKTsKKyAgICAgICAgY2FsbGJhY2tJbmZvLT5k
b21haW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOworICAgICAgICBj
YWxsYmFja0luZm8tPmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIG1fY2FsbGJhY2tzLmFw
cGVuZChjYWxsYmFja0luZm8pOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBjb25zdF9jYXN0
PGNoYXIqPihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25zLnNpemUoKQor
ICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0
c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CisgICAgLy8gQmVjYXVz
ZSB3ZSBhcmUgdXNpbmcgbW9kYWwgZGlhbG9ncyB0byByZXF1ZXN0IHBlcm1pc3Npb24sIGl0J3Mg
aW1wb3NzaWJsZSB0byBjYW5jZWwgdGhlbS4KK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkb21haW5zLnNpemUoKTsgaSsr
KQorICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChkb21haW5zW2ldKTsKK30KKwordm9p
ZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0aW9uRm9yRG9t
YWluKGNvbnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbikKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2FsbGJhY2tzLnNpemUoKTsgaSsrKQorICAgICAgICBp
ZiAobV9jYWxsYmFja3NbaV0tPmRvbWFpbiA9PSBkb21haW4pIHsKKyAgICAgICAgICAgIGlmIChw
ZXJtaXNzaW9uKSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3Ry
aW5nKGRvbWFpbikpOworICAgICAgICAgICAgICAgIChtX2NhbGxiYWNrc1tpXS0+Y2FsbGJhY2sp
LmdldCgpLT5oYW5kbGVFdmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsZXRl
IG1fY2FsbGJhY2tzW2ldOworICAgICAgICAgICAgbV9jYWxsYmFja3MucmVtb3ZlKGkpOworICAg
ICAgICB9CiB9CiAKLXZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxS
ZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3Zv
aWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpyZW1vdmVQZW5kaW5nTm90aWZpY2F0
aW9uKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nTm90aWZpY2F0aW9u
cy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKGV3a19ub3RpZmljYXRpb25fZ2V0KG1fcGVuZGlu
Z05vdGlmaWNhdGlvbnNbaV0pID09IGV3a19ub3RpZmljYXRpb25fZ2V0KGV3a05vdGlmaWNhdGlv
bikpIHsKKyAgICAgICAgICAgIG1fcGVuZGluZ05vdGlmaWNhdGlvbnMucmVtb3ZlKGkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmgKaW5kZXggMjYwYzQ0Mi4uZDA2ZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgKQEAgLTIzLDEzICsyMywxNiBAQAogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxFdmFz
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsIDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRlciB7Ci0KIHB1YmxpYzoKLSAgICBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwogICAgIH5Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOwpAQCAt
MzksNiArNDIsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKICAg
ICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1
ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBt
YWtlUGVybWlzc2lvbkNhY2hlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKKyAgICB2
b2lkIGFsbG93Tm90aWZpY2F0aW9uRm9yRG9tYWluKGNvbnN0IFN0cmluZyBkb21haW4sIGNvbnN0
IGJvb2wgcGVybWlzc2lvbik7CisgICAgdm9pZCByZW1vdmVQZW5kaW5nTm90aWZpY2F0aW9uKEV3
a19Ob3RpZmljYXRpb24qKTsKKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3Owor
ICAgIEhhc2hTZXQ8Tm90aWZpY2F0aW9uKj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hTZXQ8
V1RGOjpTdHJpbmc+IG1fY2FjaGVkUGVybWlzc2lvbnM7CisgICAgVmVjdG9yPEV3a19Ob3RpZmlj
YXRpb24qPiBtX3BlbmRpbmdOb3RpZmljYXRpb25zOworCisgICAgc3RydWN0IENhbGxiYWNrSW5m
byB7CisgICAgICAgIFN0cmluZyBkb21haW47CisgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+
IGNhbGxiYWNrOworICAgIH07CisgICAgVmVjdG9yPENhbGxiYWNrSW5mbyo+IG1fY2FsbGJhY2tz
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXggMGZmYjUxYy4uNjMzMDYyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiZXdr
X2pzLmgiCiAjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNsdWRlICJld2tfbmV0d29yay5oIgor
I2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfcG9s
aWN5LmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2U4YzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMTgzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUg
IkV2ZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisj
aW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWluYS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9u
IHsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwqIG5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyAgICBXZWJDb3JlOjpO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbjsKKyNlbmRpZgorICAgIGJvb2wgcmVwbGFjZW1lbnQ7
CisgICAgY29uc3QgY2hhciogcmVwbGFjZUlEOworICAgIGNvbnN0IGNoYXIqIGljb25Vcmw7Cisg
ICAgY29uc3QgY2hhciogdGl0bGU7CisgICAgY29uc3QgY2hhciogYm9keTsKKyAgICBjb25zdCBj
aGFyKiB1cmw7CisgICAgY29uc3QgY2hhciogZGlyOworICAgIHVuc2lnbmVkIHJlZjsKK307CisK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvbiogZXdrX25v
dGlmaWNhdGlvbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbjsKK30KKyNlbmRpZgor
CitFaW5hX0Jvb2wgZXdrX25vdGlmaWNhdGlvbl9yZXBsYWNlbWVudF9nZXQoY29uc3QgRXdrX05v
dGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRp
b24tPnJlcGxhY2VtZW50OworfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3JlcGxh
Y2VJRF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAg
IHJldHVybiBld2tOb3RpZmljYXRpb24tPnJlcGxhY2VJRDsKK30KKworY29uc3QgY2hhciogZXdr
X25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tOb3RpZmljYXRpb24tPmljb25Vcmw7Cit9CisK
K2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmlj
YXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT50
aXRsZTsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldChjb25zdCBF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlm
aWNhdGlvbi0+Ym9keTsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9odG1sX3Vy
bF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJl
dHVybiBld2tOb3RpZmljYXRpb24tPnVybDsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNh
dGlvbl9kaXJfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sK
KyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5kaXI7Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9ldmVudF9zZW5kKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiwgRXdrX05v
dGlmaWNhdGlvbl9FdmVudF9UeXBlIGV3a05vdGlmaWNhdGlvbkV2ZW50VHlwZSkKK3sKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbiA9IGV3a19ub3RpZmljYXRpb25fZ2V0KGV3a05vdGlmaWNhdGlvbik7CisgICAgaWYgKG5v
dGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIHN3aXRjaCAo
ZXdrTm90aWZpY2F0aW9uRXZlbnRUeXBlKSB7CisgICAgICAgIGNhc2UgRVdLX05PVElGSUNBVElP
Tl9PTkNMSUNLOgorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KFdlYkNv
cmU6OkV2ZW50OjpjcmVhdGUoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNl
LCB0cnVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfTk9USUZJQ0FU
SU9OX09ORElTUExBWToKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChX
ZWJDb3JlOjpFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQs
IGZhbHNlLCB0cnVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFV0tfTk9U
SUZJQ0FUSU9OX09OQ0xPU0U6CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZl
bnQoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuY2xvc2VFdmVu
dCwgZmFsc2UsIHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVXS19O
T1RJRklDQVRJT05fT05FUlJPUjoKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hF
dmVudChXZWJDb3JlOjpFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCBmYWxzZSwgdHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZgorfQorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYWxsYmFja19jYWxs
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiwgRWluYV9Cb29sIHBlcm1p
dCwgY29uc3QgY2hhciogZG9tYWluKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uUHJlc2VudGVyLT5hbGxvd05vdGlmaWNhdGlv
bkZvckRvbWFpbihTdHJpbmcoZG9tYWluKSwgcGVybWl0KTsKKyNlbmRpZgorfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3RpZmljYXRp
b24qIGV3a05vdGlmaWNhdGlvbiwgRWluYV9MaXN0KiBkb21haW5zLCBpbnQgc2l6ZSkKK3sKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBWZWN0b3I8U3RyaW5nPiBwZXJtaXR0ZWREb21h
aW5zOworICAgIHZvaWQqIGRvbWFpbjsKKyAgICBFaW5hX0xpc3QqIGxpc3RJdGVyYXRvcjsKKyAg
ICBFSU5BX0xJU1RfRk9SRUFDSChkb21haW5zLCBsaXN0SXRlcmF0b3IsIGRvbWFpbikKKyAgICAg
ICAgcGVybWl0dGVkRG9tYWlucy5hcHBlbmQoU3RyaW5nKHN0YXRpY19jYXN0PGNoYXIqPihkb21h
aW4pKSk7CisgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25QcmVzZW50ZXItPm1ha2VQ
ZXJtaXNzaW9uQ2FjaGUocGVybWl0dGVkRG9tYWlucyk7CisjZW5kaWYKK30KKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVh
dGUoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25Q
cmVzZW50ZXIsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBib29sIHJlcGxh
Y2VtZW50KQoreworICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9IG5ldyBF
d2tfTm90aWZpY2F0aW9uKCk7CisKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvblBy
ZXNlbnRlciA9IG5vdGlmaWNhdGlvblByZXNlbnRlcjsKKyAgICBld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjsKKyAgICBld2tOb3RpZmljYXRpb24tPnJlcGxhY2Vt
ZW50ID0gcmVwbGFjZW1lbnQ7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkubGVu
Z3RoKCkpCisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+cmVwbGFjZUlEID0gZWluYV9zdHJpbmdz
aGFyZV9hZGQobm90aWZpY2F0aW9uLT5yZXBsYWNlSWQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBp
ZiAobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmljb24uc3RyaW5nKCkubGVuZ3RoKCkpCisgICAg
ICAgIGV3a05vdGlmaWNhdGlvbi0+aWNvblVybCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKG5vdGlm
aWNhdGlvbi0+Y29udGVudHMoKS5pY29uLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlm
IChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUubGVuZ3RoKCkpCisgICAgICAgIGV3a05v
dGlmaWNhdGlvbi0+dGl0bGUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChub3RpZmljYXRpb24tPmNv
bnRlbnRzKCkudGl0bGUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+Y29u
dGVudHMoKS5ib2R5Lmxlbmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPmJvZHkgPSBl
aW5hX3N0cmluZ3NoYXJlX2FkZChub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keS51dGY4KCku
ZGF0YSgpKTsKKyAgICBpZiAobm90aWZpY2F0aW9uLT51cmwoKS5zdHJpbmcoKS5sZW5ndGgoKSkK
KyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT51cmwgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChub3Rp
ZmljYXRpb24tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChub3RpZmlj
YXRpb24tPmRpcigpLmxlbmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPmRpciA9IGVp
bmFfc3RyaW5nc2hhcmVfYWRkKG5vdGlmaWNhdGlvbi0+ZGlyKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZXdrTm90aWZpY2F0aW9uLT5yZWYgPSAxOworCisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlv
bjsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fZGVzdHJveShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7Cisg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT5pY29uVXJsKTsKKyAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChld2tOb3RpZmljYXRpb24tPnRpdGxlKTsKKyAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbChld2tOb3RpZmljYXRpb24tPmJvZHkpOworICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChl
d2tOb3RpZmljYXRpb24tPmRpcik7CisgICAgZGVsZXRlIGV3a05vdGlmaWNhdGlvbjsKK30KKyNl
bmRpZgorCit2b2lkIGV3a19ub3RpZmljYXRpb25fcmVmKEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbikKK3sKKyAgICBld2tOb3RpZmljYXRpb24tPnJlZisrOworfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fZGVyZWYoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGlmICgtLWV3a05vdGlmaWNhdGlvbi0+cmVmKQorICAgICAgICByZXR1cm47CisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
blByZXNlbnRlci0+cmVtb3ZlUGVuZGluZ05vdGlmaWNhdGlvbihld2tOb3RpZmljYXRpb24pOwor
ICAgIGV3a19ub3RpZmljYXRpb25fZGVzdHJveShld2tOb3RpZmljYXRpb24pOworI2VuZGlmCit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZjA1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTYxIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBl
d2tfbm90aWZpY2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRl
IDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
LyoqCisgKiBAYnJpZWYgQVBJcyBmb3IgdGhlIHdlYiBub3RpZmljYXRpb24gb2YgV2ViS2l0LUVG
TAorICoKKyAqIFRoaXMgb2JqZWN0IGFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byB1c2Ugd2ViIG5v
dGlmaWNhdGlvbiBmb3IgV2ViS2l0LUVGTCBjb21wb25lbnQuCisgKiBSZWZlciB0byB0aGUgVzND
IFdlYiBOb3RpZmljYXRpb25zKGh0dHA6Ly93d3cudzMub3JnL1RSL25vdGlmaWNhdGlvbnMpCisg
Ki8KKworLy8vIENyZWF0ZSBhIHR5cGUgbmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlvbi4KK3R5
cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19Ob3RpZmljYXRpb247CisKKy8vLyBD
cmVhdGUgYSB0eXBlIG5hbWUgZm9yIEBjIEV3a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZS4KK3R5
cGVkZWYgZW51bSB7CisgICAgRVdLX05PVElGSUNBVElPTl9PTkNMSUNLLAorICAgIEVXS19OT1RJ
RklDQVRJT05fT05ESVNQTEFZLAorICAgIEVXS19OT1RJRklDQVRJT05fT05DTE9TRSwKKyAgICBF
V0tfTk9USUZJQ0FUSU9OX09ORVJST1IsCit9IEV3a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZTsK
KworLyoqCisgKiBHZXRzIHZhbHVlIG9mIHJlcGxhY2VtZW50IGZyb20gQGMgRXdrX05vdGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgor
ICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIFRoZSBub3RpZmljYXRpb24gbmVlZCB0byBiZSBy
ZXBsYWNlZCB3aXRoIGFscmVhZHkgZGlzcGxheWVkIG9uZS4KKyAqICAgICAgICAgQGMgRUlOQV9G
QUxTRSBUaGUgbm90aWZpY2F0aW9uIG5lZWQgdG8gYmUgZGlzcGxheWVkIG5ld2x5LgorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfbm90aWZpY2F0aW9uX3JlcGxhY2VtZW50X2dldChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uKiBlbmkpOworCisvKioKKyAqIEdldHMgcmVwbGFjZUlEIGZvciB0aGUgbm90
aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5v
dGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gcmVwbGFjZUlEIG9m
IG5vdGlmaWNhdGlvbi4KKyAqLworRUFQSSBjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3Jl
cGxhY2VJRF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZW5pKTsKKworLyoqCisgKiBHZXRz
IGljb25VUkwgZm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgor
ICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICog
QHJldHVybiBjaGFyYWN0ZXIgcG9pbnRlciB0byB0aGUgaWNvblVSTCBvZiBub3RpZmljYXRpb24u
CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9pY29uX3VybF9nZXQoRXdr
X05vdGlmaWNhdGlvbiAqZW5pKTsKKworLyoqCisgKiBHZXRzIHRpdGxlIGZvciB0aGUgbm90aWZp
Y2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlm
aWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVyIHBvaW50
ZXIgdG8gdGhlIHRpdGxlIG9mIG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMgdG8gZnJl
ZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0
aW9uX3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioKKyAqIEdl
dHMgYm9keSBjb250ZW50cyBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmlj
YXRpb24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4K
KyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVyIHRvIHRoZSBib2R5IGNvbnRlbnRzIG9m
IG5vdGlmaWNhdGlvbi4gVGhlcmUgaXMgbm8gbmVlZHMgdG8gZnJlZSB0aGlzIHJldHVybiB2YWx1
ZS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KGNvbnN0
IEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogR2V0cyBodG1sIGNvbnRlbnRzIFVS
TCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKiBUaGUg
aHRtbCBjb250ZW50cyBVUkwgaXMgYSBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBub3RpZmljYXRp
b24gd2hpY2ggaXMgY29uc2lzdGVkIG9mIGh0bWwgZG9jdW1lbnQuCisgKiBJZiBhbiBhcHBsaWNh
dGlvbiB3YW50cyB0byB1c2UgdGhpcyBBUEksIGEgcG9wdXAgaXMgZGlzcGxheWVkIHRoYXQgaW5j
bHVkZXMgYSB3ZWJwYWdlIGZyb20gdGhpcyBVUkwuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmlj
YXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVy
IHRvIHRoZSBodG1sIGNvbnRlbnRzIHVybCBvZiBub3RpZmljYXRpb24uIFRoZXJlIGlzIG5vIG5l
ZWRzIHRvIGZyZWUgdGhpcyByZXR1cm4gdmFsdWUuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdr
X25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqZW5pKTsK
KworLyoqCisgKiBHZXRzIGRpcmVjdGlvbiBvZiBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90
aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1
cmUuCisgKgorICogQHJldHVybiBjaGFyYWN0ZXIgcG9pbnRlciB0byBkaXJlY3Rpb24gb2Ygbm90
aWZpY2F0aW9uLiBUaGVyZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMgcmV0dXJuIHZhbHVlLgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fZGlyX2dldChFd2tfTm90aWZp
Y2F0aW9uICplbmkpOworCisvKioKKyAqIEFwcGxpY2F0aW9uIG5lZWRzIHRvIGNhbGwgdGhpcyBm
dW5jdGlvbiB3aGVuIGl0IHJlY2VpdmVzIGEgdXNlcidzIHJlc3BvbnNlIGFib3V0IHRoZSBwZXJt
aXNzaW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0
cnVjdHVyZS4KKyAqIEBwYXJhbSBwZXJtaXR0ZWQgQGMgRUlOQV9UUlVFIHRvIGFsbG93IHRvIHNo
b3cgbm90aWZpY2F0aW9uLCBAYyBFSU5BX0ZBTFNFIHRvIG5vdCBhbGxvdyB0byBzaG93IG5vdGlm
aWNhdGlvbi4KKyAqIEBwYXJhbSBkb21haW4gZG9tYWluIFVSTCBmb3IgYWRkIGEgcGVybWl0IGxp
c3QuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tf
Y2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbmksIEVpbmFfQm9vbCBwZXJtaXR0ZWQsIGNv
bnN0IGNoYXIgKmRvbWFpbik7CisKKy8qKgorICogTWFrZXMgYSBjYWNoZSBmb3IgcGVybWl0dGVk
IGRvbWFpbnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYXQgc3Rh
cnQgdGltZSBieSBhbiBhcHBsaWNhdGlvbiB3aGljaCB1c2VzIG5vdGlmaWNhdGlvbiBBUElzLgor
ICogSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBvbmUgb3IgbW9yZSBwZXJtaXR0ZWQgZG9tYWlucywg
aXQgY2FuIGNyZWF0ZSBhIGNhY2hlIHVzaW5nIHRoaXMgZnVuY3Rpb24uCisgKgorICogQHBhcmFt
IGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBkb21haW5zIGRv
bWFpbiBsaXN0IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gcGVybWlzc2lvbiBjYWNoZS4KKyAqIEBw
YXJhbSBzaXplIHRvdGFsIG51bWJlciBvZiBkb21haW5zCisgKi8KK0VBUEkgdm9pZCBld2tfbm90
aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tfTm90aWZpY2F0aW9uICpl
bmksIEVpbmFfTGlzdCAqZG9tYWlucywgaW50IHNpemUpOworCisvKioKKyAqIE1ha2VzIGFuIGV2
ZW50IGZvciBKYXZhU2NyaXB0IGNhbGxiYWNrIHdoZW4gYW4gYXBwbGljYXRpb24gZ2VuZXJhdGVz
IGEgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGV2ZW50LgorICoKKyAqIEBwYXJhbSBlbmkgQGMgRXdr
X05vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIGV0IEBjIEV3a19Ob3Rp
ZmljYXRpb25fRXZlbnRfVHlwZSBldmVudCB0eXBlIGZvciBjYWxsYmFjay4KKyAqLworRUFQSSB2
b2lkIGV3a19ub3RpZmljYXRpb25fZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uICplbmksIEV3
a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZSBldCk7CisKKy8qKgorICogSW5jcmVhc2VzIHJlZmVy
ZW5jZSBjb3VudCB0byBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90
aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0
aW9uX3JlZihFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioKKyAqIERlY3JlYXNlcyByZWZl
cmVuY2UgY291bnQgdG8gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqIEV3a19Ob3RpZmljYXRpb24g
b2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHdoZW4gcmVmZXJlbmNlIGNvdW50IGlzIHNldCB0byAw
LgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKi8K
K0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2RlcmVmKEV3a19Ob3RpZmljYXRpb24gKmVuaSk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNh
dGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0
aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3By
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODZiOWQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKwor
RXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24sIGJvb2wgcmVwbGFjZW1lbnQpOwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3ko
RXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKTsKK1dlYkNvcmU6Ok5vdGlmaWNhdGlv
biogZXdrX25vdGlmaWNhdGlvbl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZp
Y2F0aW9uKTsKKworI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2VuZGlmIC8vIGV3
a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmlu
ZGV4IGYzMzg1YmQuLmViYzMyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAt
NjgsNiArNjgsMTAgQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbC5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgZmxvYXQgem9v
bU1pbmltdW0gPSAwLjA1Owogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NYXhpbXVtID0gNC4wOwog
CkBAIC02MTQsNiArNjE4LDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tf
dmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNs
aWVudHMuZGV2aWNlTW90aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVu
dEVmbDsKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJD
b3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgorI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQorICAgIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCA9IG5ldyBXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKKyNl
bmRpZgorCiAgICAgcHJpdi0+cGFnZSA9IG5ldyBXZWJDb3JlOjpQYWdlKHBhZ2VDbGllbnRzKTsK
ICAgICBpZiAoIXByaXYtPnBhZ2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBjcmVh
dGUgV2ViS2l0IFBhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggYTQzMzUzNy4u
NTA5MzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTgzLDYgKzgzLDkgQEAKICAq
ICAtICJ2aWV3LHJlc2l6ZWQiLCB2b2lkOiB2aWV3IG9iamVjdCdzIHNpemUgd2FzIGNoYW5nZWQu
CiAgKiAgLSAidmlld3BvcnQsY2hhbmdlZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB2aWV3cG9ydCB3
YXMgY2hhbmdlZC4KICAqICAtICJ6b29tLGFuaW1hdGVkLGVuZCIsIHZvaWQ6IHJlcXVlc3RlZCBh
bmltYXRlZCB6b29tIGlzIGZpbmlzaGVkLgorICogIC0gIm5vdGlmaWNhdGlvbixzaG93IiwgQGMg
RXdrX05vdGlmaWNhdGlvbjogcmVxdWVzdGVkIGNvbnRlbnRzIHRvIGRpc3BsYXkgdGhlIG5vdGlm
aWNhdGlvbi4KKyAqICAtICJub3RpZmljYXRpb24sY2FuY2VsIiwgQGMgRXdrX05vdGlmaWNhdGlv
bjogcmVxdWVzdGVkIG5vdGlmaWNhdGlvbiBpbmRleCB0byBjYW5jZWwuCisgKiAgLSAibm90aWZp
Y2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNoYXIqOiByZXF1ZXN0ZWQgZG9tYWluIGZvciBn
ZXR0aW5nIHVzZXIgcGVybWlzc2lvbiBmcm9tIHRoZSB1c2VyLgogICovCiAKICNpZm5kZWYgZXdr
X3ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCA5ODVjYTI3Li5kYzY5ZGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQpAQCAtODEsNyArODEsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUFU
SE1MICJFbmFibGUgTWF0aE1MIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01F
VEVSX1RBRyAiRW5hYmxlIE1ldGVyIHRhZyIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVO
QUJMRV9NSUNST0RBVEEgIkVuYWJsZSBIVE1MNSBtaWNyb2RhdGEgc3VwcG9ydCIgREVGQVVMVCBP
RkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQSSAiRW5hYmxlIE5l
dHNjYXBlIHBsdWdpbiBBUEkiIERFRkFVTFQgT0ZGKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05P
VElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRpb25zIiBERUZBVUxUIE9GRikKK1dFQktJVF9G
RUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90aWZpY2F0aW9ucyIgREVGQVVM
VCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMgIkVuYWJsZSBv
cmllbnRhdGlvbiBldmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BB
R0VfVklTSUJJTElUWV9BUEkgIkVuYWJsZSBQYWdlIFZpc2liaWxpdHkgQVBJIiBERUZBVUxUIE9O
KQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1BST0dSRVNTX1RBRyAiRW5hYmxlIHByb2dyZXNzIHRh
ZyIgREVGQVVMVCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmNGIyZjY3Li5iMTkxODk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjUgIEtpaG9u
ZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEFQ
SSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlIGZv
ciBXZWJLaXQtRWZsLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0OiBBZGQgbm90aWZpY2F0aW9ucyBkaXJlY3RvcnkgcGF0aCBmb3IgdGhlIER1bXBSZW5kZXJU
cmVlCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6IEVuYWJsZSBFTkFCTEVfTk9USUZJ
Q0FUSU9OUyBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCiAyMDEyLTAxLTI0ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gVHJpZ2dlciBDaHJv
bWl1bSBNYWMgUmVsZWFzZSAoUGVyZikgb24gbmV3IGNvbW1pdHMuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggMGRhZTE2OC4uODQxMDY4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtMTE4LDYgKzExOCwxMiBAQCBJRiAoV1RG
X1VTRV9DVVJMKQogICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNU
T1JJRVMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5ESUYgKCkKIAor
SUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQorICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVl
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlv
bnMiCisgICAgKQorRU5ESUYgKCkKKwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNfQ09ORl9ESVI9
IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAgICAgICAgICAg
LUREQVRBX0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggYjli
OTk3Mi4uNmRmMTFjNyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysr
IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3Niw3ICsyNzYsNyBAQCBteSBAZmVh
dHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIiwg
ZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1cHBvcnQgfSwK
IAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIERlc2t0
b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElG
SUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG5vdGlmaWNh
dGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwg
ZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbm90aWZp
Y2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlvbi1ldmVudHMi
LCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVy
cnkoKSwgdmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125068</attachid>
            <date>2012-02-01 20:26:24 -0800</date>
            <delta_ts>2012-02-01 22:03:48 -0800</delta_ts>
            <desc>Merge pending notification queue and stored notification queue.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>17325</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiNDZiMzhmLi4xZDcwYTFi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDItMDEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDEtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgd2Via2l0LXBlcmYuYXBwc3BvdC5jb20gc2hvdWxkIGFjY2Vw
dCB0ZXN0IHJlc3VsdHMgd2l0aG91dCBtZWRpYW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwu
dHh0CmluZGV4IGVjMGM3ZDguLjljZTZmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NNYWtlTGlzdHNFZmwudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwu
dHh0CkBAIC01NiwxMiArNTYsNiBAQCBJRiAoV1RGX1VTRV9QQU5HTykKICAgKQogRU5ESUYgKCkK
IAotSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQotICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwotICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25zIgotICApCi1F
TkRJRiAoKQotCiBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9XZWJDb3JlU3Vw
cG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCkBAIC05NSw2ICs4OSwxNSBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIGVmbC9ld2svZXdrX2pzLmNwcAogKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElP
TlMpCisgICAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAg
IiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCisgICAgICAgIGVmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKKyAgICAp
CitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCiAgICAgJHtDYWlyb19M
SUJSQVJJRVN9CiAgICAgJHtFQ09SRV9YX0xJQlJBUklFU30KQEAgLTI0Myw2ICsyNDYsNyBAQCBT
RVQoRVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2xvZ2dpbmcuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19tYWluLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tf
bmV0d29yay5oCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX25v
dGlmaWNhdGlvbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X3NlY3VyaXR5X3BvbGljeS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX3NldHRpbmdzLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3
ay9ld2tfdmlldy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZGQ5NGM4NS4uYmM2MWUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTAxICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIFdlYiBO
b3RpZmljYXRpb24gZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgYW5kIGV4cG9z
ZXMgQVBJIGZvciBXZWJLaXQtRUZsLgorICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJh
c2VkIG9uIHdlYmtpdE5vdGlmaWNhdGlvbnMgcHJvcGVydHkgaW4gd2luZG93Lm5hdmlnYXRvci4K
KworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBBZGQgImV3a19ub3RpZmljYXRpb24uY3Bw
IiBhbmQgImV3a19ub3RpZmljYXRpb24uaCIuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDogUmVtb3ZlIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIHdoaWNoIGlz
IG5vIGxvbmdlciByZXF1aXJlZCBieSByMTAxMzA3LgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IERpdHRvLgorICAgICAgICAo
Q2hyb21lQ2xpZW50RWZsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0
aW9uRm9yRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6cmVtb3ZlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBl
d2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Ob3RpZmljYXRp
b24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX25vdGlm
aWNhdGlvbl9yZXBsYWNlbWVudF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9yZXBs
YWNlSURfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fZXZlbnRfc2VuZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25fY2FsbGJhY2tfY2FsbCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9k
b21haW5zX2FkZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2NyZWF0ZSk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9y
ZWYpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZXJlZik6CisgICAgICAgICogZXdrL2V3
a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb25f
cHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oLgor
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwgb2JqZWN0IHRvIHRoZSBwYWdlQ2xpZW50Lm5vdGlmaWNhdGlvbkNsaWVudC4KKyAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogQWRkIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBz
bWFydF9jYWxsX2JhY2sgbWVzc2FnZXMgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKwogMjAxMi0wMS0z
MSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0g
QWRkIGJhc2ljIERSVC9FZmwgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCB2aWV3cG9ydCB0ZXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKaW5kZXggYTI1ZjlkMC4uOWI0ZmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01NSwxMCArNTUs
NiBAQAogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNs
dWRlICJEYXRhYmFzZURldGFpbHMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAg
LTQxNywxNCArNDEzLDYgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNs
aWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIHZvaWQgQ2hyb21lQ2xpZW50RWZs
OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBG
aWxlQ2hvb3NlcikKIHsKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxl
Q2hvb3NlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgKaW5kZXggNGI0N2M3My4uMGIxY2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTI4LDEwICsyOCw2
IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCi0j
ZW5kaWYKLQogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMTQsMTAgKzExMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKLSNlbmRp
ZgotCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCBiYTQ2NmY1Li5mZjJhOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKQEAgLTIxLDUzICsyMSwxMTMg
QEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmpl
Y3QqIHZpZXcpCisgICAgOiBtX3ZpZXcodmlldykKIHsKIH0KIAogTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKIHsKKyAgICBO
b3RpZmljYXRpb25zUXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7
CisgICAgd2hpbGUgKGl0ICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgeworICAgICAgICBld2tf
bm90aWZpY2F0aW9uX2Rlc3Ryb3koaXQtPnNlY29uZCk7CisgICAgICAgICsraXQ7CisgICAgfQor
ICAgIG1fbm90aWZpY2F0aW9ucy5jbGVhcigpOwogfQogCiBib29sIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHJlcGxhY2VtZW50
ID0gZmFsc2U7CisgICAgaWYgKCFub3RpZmljYXRpb24tPnJlcGxhY2VJZCgpLmlzRW1wdHkoKSkg
eworICAgICAgICBOb3RpZmljYXRpb25zUXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25zLmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChpdCAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QtPnJlcGxhY2VJZCgpID09IG5vdGlmaWNhdGlv
bi0+cmVwbGFjZUlkKCkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2l0Owor
ICAgICAgICB9CisgICAgfQorICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9
IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbiwgcmVwbGFjZW1lbnQp
OworICAgIG1fbm90aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uLCBld2tOb3RpZmljYXRpb24p
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0
aW9uLHNob3ciLCBld2tOb3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmljYXRpb25fZGVyZWYo
ZXdrTm90aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6aXRlcmF0
b3IgaXQgPSBtX25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pOworICAgIGlmIChpdCAh
PSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpCisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLGNhbmNlbCIsIGl0LT5zZWNvbmQpOwogfQog
CiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0
aW9ucy5maW5kKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGl0ICE9IG1fbm90aWZpY2F0aW9ucy5l
bmQoKSkKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KGl0LT5zZWNvbmQpOworICAg
IG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBkZWxldGUgdGhpczsKIH0KIAogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9u
cy5lbmQoKSkgeworICAgICAgICBtX2NhbGxiYWNrcy5hZGQoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgY2FsbGJhY2spOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBj
b25zdF9jYXN0PGNoYXIqPihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlz
c2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25z
LnNpemUoKQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lv
bkFsbG93ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CisgICAg
Ly8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgbW9kYWwgZGlhbG9ncyB0byByZXF1ZXN0IHBlcm1pc3Np
b24sIGl0J3MgaW1wb3NzaWJsZSB0byBjYW5jZWwgdGhlbS4KK30KKwordm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkb21haW5zLnNp
emUoKTsgaSsrKQorICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChkb21haW5zW2ldKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0
aW9uRm9yRG9tYWluKGNvbnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbikK
K3sKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFZvaWRDYWxsYmFjaz4gPjo6aXRlcmF0b3Ig
aXQgPSBtX2NhbGxiYWNrcy5maW5kKGRvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fY2FsbGJhY2tz
LmVuZCgpKSB7CisgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7CisgICAgICAgICAgICAgICAgbV9j
YWNoZWRQZXJtaXNzaW9ucy5hZGQoZG9tYWluKTsKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25k
LmdldCgpLT5oYW5kbGVFdmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICBtX2NhbGxiYWNr
cy5yZW1vdmUoaXQpOworICAgIH0KIH0KIAotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlbW92ZU5v
dGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCAyNjBjNDQyLi4xM2QxZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDE2IEBA
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRl
ciB7Ci0KIHB1YmxpYzoKLSAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKKyAg
ICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwogICAg
IH5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG93KE5vdGlmaWNhdGlvbiopOwpAQCAtMzksNiArNDIsMTggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworCisgICAgdm9pZCBtYWtlUGVybWlzc2lvbkNhY2hlKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGFsbG93Tm90aWZpY2F0aW9uRm9yRG9tYWluKGNv
bnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbik7CisgICAgdm9pZCByZW1v
dmVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKik7CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxOb3RpZmljYXRpb24qLCBFd2tfTm90
aWZpY2F0aW9uKj4gTm90aWZpY2F0aW9uc1F1ZXVlOworICAgIE5vdGlmaWNhdGlvbnNRdWV1ZSBt
X25vdGlmaWNhdGlvbnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNz
aW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFZvaWRDYWxsYmFjaz4gPiBtX2NhbGxi
YWNrczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCmluZGV4IDBmZmI1MWMuLjYzMzA2
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
ImV3a19qcy5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25ldHdvcmsu
aCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5
X3BvbGljeS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4NTNiMzQyLi5kOGUzOWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY4LDYgKzY4LDEwIEBACiAjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgi
CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NaW5pbXVtID0gMC4wNTsKIHN0YXRp
YyBjb25zdCBmbG9hdCB6b29tTWF4aW11bSA9IDQuMDsKIApAQCAtNjE0LDYgKzYxOCwxMCBAQCBz
dGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVu
dCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRFZmw7CiAgICAgcGFnZUNsaWVudHMu
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnRFZmw7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBwYWdlQ2xp
ZW50cy5ub3RpZmljYXRpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2Ug
PSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xpZW50cyk7CiAgICAgaWYgKCFwcml2LT5wYWdlKSB7
CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IGE0MzM1MzcuLjUwOTM5ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCkBAIC04Myw2ICs4Myw5IEBACiAgKiAgLSAidmlldyxyZXNpemVkIiwgdm9p
ZDogdmlldyBvYmplY3QncyBzaXplIHdhcyBjaGFuZ2VkLgogICogIC0gInZpZXdwb3J0LGNoYW5n
ZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdmlld3BvcnQgd2FzIGNoYW5nZWQuCiAgKiAgLSAiem9v
bSxhbmltYXRlZCxlbmQiLCB2b2lkOiByZXF1ZXN0ZWQgYW5pbWF0ZWQgem9vbSBpcyBmaW5pc2hl
ZC4KKyAqICAtICJub3RpZmljYXRpb24sc2hvdyIsIEBjIEV3a19Ob3RpZmljYXRpb246IHJlcXVl
c3RlZCBjb250ZW50cyB0byBkaXNwbGF5IHRoZSBub3RpZmljYXRpb24uCisgKiAgLSAibm90aWZp
Y2F0aW9uLGNhbmNlbCIsIEBjIEV3a19Ob3RpZmljYXRpb246IHJlcXVlc3RlZCBub3RpZmljYXRp
b24gaW5kZXggdG8gY2FuY2VsLgorICogIC0gIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVl
c3QiLCBjaGFyKjogcmVxdWVzdGVkIGRvbWFpbiBmb3IgZ2V0dGluZyB1c2VyIHBlcm1pc3Npb24g
ZnJvbSB0aGUgdXNlci4KICAqLwogCiAjaWZuZGVmIGV3a192aWV3X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKaW5kZXggMmYyYWJmNC4uMjAyMmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTgxLDcg
KzgxLDcgQEAgV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX01BVEhNTCAiRW5hYmxlIE1hdGhNTCIgREVG
QVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9NRVRFUl9UQUcgIkVuYWJsZSBNZXRlciB0
YWciIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfTUlDUk9EQVRBICJFbmFibGUg
SFRNTDUgbWljcm9kYXRhIHN1cHBvcnQiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5B
QkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgIkVuYWJsZSBOZXRzY2FwZSBwbHVnaW4gQVBJIiBERUZB
VUxUIE9GRikKLVdFQktJVF9GRUFUVVJFKEVOQUJMRV9OT1RJRklDQVRJT05TICJFbmFibGUgbm90
aWZpY2F0aW9ucyIgREVGQVVMVCBPRkYpCitXRUJLSVRfRkVBVFVSRShFTkFCTEVfTk9USUZJQ0FU
SU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShF
TkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTICJFbmFibGUgb3JpZW50YXRpb24gZXZlbnRzIiBERUZB
VUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJICJFbmFi
bGUgUGFnZSBWaXNpYmlsaXR5IEFQSSIgREVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJM
RV9QUk9HUkVTU19UQUcgIkVuYWJsZSBwcm9ncmVzcyB0YWciIERFRkFVTFQgT04pCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKaW5kZXggMGRhZTE2OC4uODQxMDY4OCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dApAQCAtMTE4LDYgKzExOCwxMiBA
QCBJRiAoV1RGX1VTRV9DVVJMKQogICAgIExJU1QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0lOQ0xV
REVfRElSRUNUT1JJRVMgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9jdXJsKQogRU5E
SUYgKCkKIAorSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQorICAgIExJU1QoQVBQRU5EIER1bXBS
ZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L25v
dGlmaWNhdGlvbnMiCisgICAgKQorRU5ESUYgKCkKKwogQUREX0RFRklOSVRJT05TKC1ERk9OVFNf
Q09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiAgICAgICAg
ICAgICAgICAgLUREQVRBX0RJUj0iJHtUSEVNRV9CSU5BUllfRElSfSIpCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
aW5kZXggMjdhMDg0ZS4uMjFhNWU1MSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTI3Nyw3ICsyNzcsNyBA
QCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRTQ0FQRV9QTFVH
SU5fQVBJIiwgZGVmYXVsdCA9PiAhaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXRzY2FwZVBsdWdpblN1
cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9n
Z2xlIERlc2t0b3AgTm90aWZpY2F0aW9ucyBTdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBc
JG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklD
QVRJT05TIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+
IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJvcmllbnRhdGlv
bi1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgT3JpZW50YXRpb24gRXZlbnRzIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTIiwgZGVmYXVsdCA9PiBp
c0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRvcmllbnRhdGlvbkV2ZW50c1N1cHBvcnQgfSwK
</data>
<flag name="commit-queue"
          id="126488"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125077</attachid>
            <date>2012-02-01 22:03:48 -0800</date>
            <delta_ts>2012-06-04 18:25:39 -0700</delta_ts>
            <desc>Fix efl build error.</desc>
            <filename>notificationEfl.patch</filename>
            <type>text/plain</type>
            <size>32315</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiNDZiMzhmLi4xZDcwYTFi
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDItMDEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgW0VGTF0gQWRkIEFQSSBmb3IgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlIGZvciBXZWJLaXQtRWZsLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTItMDEtMzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgd2Via2l0LXBlcmYuYXBwc3BvdC5jb20gc2hvdWxkIGFjY2Vw
dCB0ZXN0IHJlc3VsdHMgd2l0aG91dCBtZWRpYW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwu
dHh0CmluZGV4IGVjMGM3ZDguLjljZTZmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NNYWtlTGlzdHNFZmwudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwu
dHh0CkBAIC01NiwxMiArNTYsNiBAQCBJRiAoV1RGX1VTRV9QQU5HTykKICAgKQogRU5ESUYgKCkK
IAotSUYgKEVOQUJMRV9OT1RJRklDQVRJT05TKQotICBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwotICAgICIke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25zIgotICApCi1F
TkRJRiAoKQotCiBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9XZWJDb3JlU3Vw
cG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAogICAgIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCkBAIC05NSw2ICs4OSwxNSBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIGVmbC9ld2svZXdrX2pzLmNwcAogKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElP
TlMpCisgICAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAg
IiR7V0VCQ09SRV9ESVJ9L25vdGlmaWNhdGlvbnMiCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCisgICAgICAgIGVmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKKyAgICAp
CitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCiAgICAgJHtDYWlyb19M
SUJSQVJJRVN9CiAgICAgJHtFQ09SRV9YX0xJQlJBUklFU30KQEAgLTI0Myw2ICsyNDYsNyBAQCBT
RVQoRVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2xvZ2dpbmcuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19tYWluLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tf
bmV0d29yay5oCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX25v
dGlmaWNhdGlvbi5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X3NlY3VyaXR5X3BvbGljeS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX3NldHRpbmdzLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3
ay9ld2tfdmlldy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZGQ5NGM4NS4uYmM2MWUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTAyLTAxICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZCBBUEkgZm9yIFdlYiBO
b3RpZmljYXRpb24gZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50cyBXZWIgTm90aWZpY2F0aW9uIGZlYXR1cmUgYW5kIGV4cG9z
ZXMgQVBJIGZvciBXZWJLaXQtRUZsLgorICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGJh
c2VkIG9uIHdlYmtpdE5vdGlmaWNhdGlvbnMgcHJvcGVydHkgaW4gd2luZG93Lm5hdmlnYXRvci4K
KworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OiBBZGQgImV3a19ub3RpZmljYXRpb24uY3Bw
IiBhbmQgImV3a19ub3RpZmljYXRpb24uaCIuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDogUmVtb3ZlIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIHdoaWNoIGlz
IG5vIGxvbmdlciByZXF1aXJlZCBieSByMTAxMzA3LgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6IERpdHRvLgorICAgICAgICAo
Q2hyb21lQ2xpZW50RWZsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bWFrZVBlcm1pc3Npb25DYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0
aW9uRm9yRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6cmVtb3ZlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBl
d2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Ob3RpZmljYXRp
b24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX25vdGlm
aWNhdGlvbl9yZXBsYWNlbWVudF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9yZXBs
YWNlSURfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9odG1sX3VybF9nZXQp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fZXZlbnRfc2VuZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Np
b25fY2FsbGJhY2tfY2FsbCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9k
b21haW5zX2FkZCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2NyZWF0ZSk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2Rlc3Ryb3kpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9y
ZWYpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZXJlZik6CisgICAgICAgICogZXdrL2V3
a19ub3RpZmljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19ub3RpZmljYXRpb25f
cHJpdmF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oLgor
ICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6IEFkZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmwgb2JqZWN0IHRvIHRoZSBwYWdlQ2xpZW50Lm5vdGlmaWNhdGlvbkNsaWVudC4KKyAgICAg
ICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3
KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDogQWRkIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBz
bWFydF9jYWxsX2JhY2sgbWVzc2FnZXMgb2YgdGhlIG5vdGlmaWNhdGlvbi4KKwogMjAxMi0wMS0z
MSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0g
QWRkIGJhc2ljIERSVC9FZmwgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCB2aWV3cG9ydCB0ZXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKaW5kZXggYTI1ZjlkMC4uOWI0ZmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC01NSwxMCArNTUs
NiBAQAogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNs
dWRlICJEYXRhYmFzZURldGFpbHMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAg
LTQxNywxNCArNDEzLDYgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNs
aWVudEVmbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIHZvaWQgQ2hyb21lQ2xpZW50RWZs
OjpydW5PcGVuUGFuZWwoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBG
aWxlQ2hvb3NlcikKIHsKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxl
Q2hvb3NlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgKaW5kZXggNGI0N2M3My4uMGIxY2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTI4LDEwICsyOCw2
IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCi0jaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCi0j
ZW5kaWYKLQogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMTQsMTAgKzExMCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKLSNlbmRp
ZgotCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCk7CiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCBiYTQ2NmY1Li5mZjJhOThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKQEAgLTIxLDUzICsyMSwxMTMg
QEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQorTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmpl
Y3QqIHZpZXcpCisgICAgOiBtX3ZpZXcodmlldykKIHsKIH0KIAogTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsOjp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKIHsKKyAgICBO
b3RpZmljYXRpb25zUXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7
CisgICAgd2hpbGUgKGl0ICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgeworICAgICAgICBld2tf
bm90aWZpY2F0aW9uX2Rlc3Ryb3koaXQtPnNlY29uZCk7CisgICAgICAgICsraXQ7CisgICAgfQor
ICAgIG1fbm90aWZpY2F0aW9ucy5jbGVhcigpOwogfQogCiBib29sIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHJlcGxhY2VtZW50
ID0gZmFsc2U7CisgICAgaWYgKCFub3RpZmljYXRpb24tPnJlcGxhY2VJZCgpLmlzRW1wdHkoKSkg
eworICAgICAgICBOb3RpZmljYXRpb25zUXVldWU6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25zLmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChpdCAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QtPnJlcGxhY2VJZCgpID09IG5vdGlmaWNhdGlv
bi0+cmVwbGFjZUlkKCkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2l0Owor
ICAgICAgICB9CisgICAgfQorICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9
IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbiwgcmVwbGFjZW1lbnQp
OworICAgIG1fbm90aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uLCBld2tOb3RpZmljYXRpb24p
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0
aW9uLHNob3ciLCBld2tOb3RpZmljYXRpb24pOworICAgIGV3a19ub3RpZmljYXRpb25fZGVyZWYo
ZXdrTm90aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6aXRlcmF0
b3IgaXQgPSBtX25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pOworICAgIGlmIChpdCAh
PSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpCisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLGNhbmNlbCIsIGl0LT5zZWNvbmQpOwogfQog
CiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0
aW9ucy5maW5kKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGl0ICE9IG1fbm90aWZpY2F0aW9ucy5l
bmQoKSkKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KGl0LT5zZWNvbmQpOworICAg
IG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBkZWxldGUgdGhpczsKIH0KIAogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9u
cy5lbmQoKSkgeworICAgICAgICBtX2NhbGxiYWNrcy5hZGQoY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgY2FsbGJhY2spOworICAgICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBj
b25zdF9jYXN0PGNoYXIqPihjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICB9CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlz
c2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFtX2NhY2hlZFBlcm1pc3Npb25z
LnNpemUoKQorICAgICAgICB8fCBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkgPT0gbV9jYWNoZWRQZXJtaXNzaW9ucy5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIFBlcm1pc3Npb25EZW5pZWQ7CisKKyAgICByZXR1cm4gUGVybWlzc2lv
bkFsbG93ZWQ7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCit7CisgICAg
Ly8gQmVjYXVzZSB3ZSBhcmUgdXNpbmcgbW9kYWwgZGlhbG9ncyB0byByZXF1ZXN0IHBlcm1pc3Np
b24sIGl0J3MgaW1wb3NzaWJsZSB0byBjYW5jZWwgdGhlbS4KK30KKwordm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6Om1ha2VQZXJtaXNzaW9uQ2FjaGUoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkb21haW5zLnNp
emUoKTsgaSsrKQorICAgICAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChkb21haW5zW2ldKTsK
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFsbG93Tm90aWZpY2F0
aW9uRm9yRG9tYWluKGNvbnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbikK
K3sKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFZvaWRDYWxsYmFjaz4gPjo6aXRlcmF0b3Ig
aXQgPSBtX2NhbGxiYWNrcy5maW5kKGRvbWFpbik7CisgICAgaWYgKGl0ICE9IG1fY2FsbGJhY2tz
LmVuZCgpKSB7CisgICAgICAgIGlmIChwZXJtaXNzaW9uKSB7CisgICAgICAgICAgICAgICAgbV9j
YWNoZWRQZXJtaXNzaW9ucy5hZGQoZG9tYWluKTsKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25k
LmdldCgpLT5oYW5kbGVFdmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICBtX2NhbGxiYWNr
cy5yZW1vdmUoaXQpOworICAgIH0KIH0KIAotdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlbW92ZU5v
dGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCAyNjBjNDQyLi4xM2QxZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAtMjMsMTMgKzIzLDE2IEBA
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNh
dGlvbi5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRl
ciB7Ci0KIHB1YmxpYzoKLSAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKKyAg
ICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcpOwogICAg
IH5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG93KE5vdGlmaWNhdGlvbiopOwpAQCAtMzksNiArNDIsMTggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+KTsKICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworCisgICAgdm9pZCBtYWtlUGVybWlzc2lvbkNhY2hlKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zKTsKKyAgICB2b2lkIGFsbG93Tm90aWZpY2F0aW9uRm9yRG9tYWluKGNv
bnN0IFN0cmluZyBkb21haW4sIGNvbnN0IGJvb2wgcGVybWlzc2lvbik7CisgICAgdm9pZCByZW1v
dmVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKik7CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxOb3RpZmljYXRpb24qLCBFd2tfTm90
aWZpY2F0aW9uKj4gTm90aWZpY2F0aW9uc1F1ZXVlOworICAgIE5vdGlmaWNhdGlvbnNRdWV1ZSBt
X25vdGlmaWNhdGlvbnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9jYWNoZWRQZXJtaXNz
aW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFZvaWRDYWxsYmFjaz4gPiBtX2NhbGxi
YWNrczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCmluZGV4IDBmZmI1MWMuLjYzMzA2
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
ImV3a19qcy5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5jbHVkZSAiZXdrX25ldHdvcmsu
aCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5
X3BvbGljeS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a192aWV3
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlY2MyNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDE4MyBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
IgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfRXdrX05vdGlmaWNh
dGlvbiB7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb247CisjZW5kaWYKKyAgICBib29sIHJlcGxhY2Vt
ZW50OworICAgIGNvbnN0IGNoYXIqIHJlcGxhY2VJRDsKKyAgICBjb25zdCBjaGFyKiBpY29uVXJs
OworICAgIGNvbnN0IGNoYXIqIHRpdGxlOworICAgIGNvbnN0IGNoYXIqIGJvZHk7CisgICAgY29u
c3QgY2hhciogdXJsOworICAgIGNvbnN0IGNoYXIqIGRpcjsKKyAgICB1bnNpZ25lZCByZWY7Cit9
OworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitXZWJDb3JlOjpOb3RpZmljYXRpb24qIGV3
a19ub3RpZmljYXRpb25fZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb247Cit9CisjZW5k
aWYKKworRWluYV9Cb29sIGV3a19ub3RpZmljYXRpb25fcmVwbGFjZW1lbnRfZ2V0KGNvbnN0IEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZp
Y2F0aW9uLT5yZXBsYWNlbWVudDsKK30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9y
ZXBsYWNlSURfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sK
KyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5yZXBsYWNlSUQ7Cit9CisKK2NvbnN0IGNoYXIq
IGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3
a05vdGlmaWNhdGlvbikKK3sKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5pY29uVXJsOwor
fQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChjb25zdCBFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlv
bi0+dGl0bGU7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoY29u
c3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiBld2tO
b3RpZmljYXRpb24tPmJvZHk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25faHRt
bF91cmxfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAg
ICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT51cmw7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3Rp
ZmljYXRpb25fZGlyX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
Cit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+ZGlyOworfQorCit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fZXZlbnRfc2VuZChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIEV3
a19Ob3RpZmljYXRpb25fRXZlbnRfVHlwZSBld2tOb3RpZmljYXRpb25FdmVudFR5cGUpCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24gPSBld2tfbm90aWZpY2F0aW9uX2dldChld2tOb3RpZmljYXRpb24pOworICAgIGlm
IChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICBzd2l0
Y2ggKGV3a05vdGlmaWNhdGlvbkV2ZW50VHlwZSkgeworICAgICAgICBjYXNlIEVXS19OT1RJRklD
QVRJT05fT05DTElDSzoKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChX
ZWJDb3JlOjpFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBm
YWxzZSwgdHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVdLX05PVElG
SUNBVElPTl9PTkRJU1BMQVk6CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoRXZl
bnQoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZGlzcGxheUV2
ZW50LCBmYWxzZSwgdHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVdL
X05PVElGSUNBVElPTl9PTkNMT1NFOgorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRj
aEV2ZW50KFdlYkNvcmU6OkV2ZW50OjpjcmVhdGUoV2ViQ29yZTo6ZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
V0tfTk9USUZJQ0FUSU9OX09ORVJST1I6CisgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpc3Bh
dGNoRXZlbnQoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FsbGJhY2tf
Y2FsbChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24sIEVpbmFfQm9vbCBw
ZXJtaXQsIGNvbnN0IGNoYXIqIGRvbWFpbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvblByZXNlbnRlci0+YWxsb3dOb3RpZmlj
YXRpb25Gb3JEb21haW4oU3RyaW5nKGRvbWFpbiksIHBlcm1pdCk7CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX3Blcm1pdHRlZF9kb21haW5zX2FkZChjb25zdCBFd2tfTm90aWZp
Y2F0aW9uKiBld2tOb3RpZmljYXRpb24sIEVpbmFfTGlzdCogZG9tYWlucywgaW50IHNpemUpCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgVmVjdG9yPFN0cmluZz4gcGVybWl0dGVk
RG9tYWluczsKKyAgICB2b2lkKiBkb21haW47CisgICAgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7
CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0goZG9tYWlucywgbGlzdEl0ZXJhdG9yLCBkb21haW4pCisg
ICAgICAgIHBlcm1pdHRlZERvbWFpbnMuYXBwZW5kKFN0cmluZyhzdGF0aWNfY2FzdDxjaGFyKj4o
ZG9tYWluKSkpOworICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uUHJlc2VudGVyLT5t
YWtlUGVybWlzc2lvbkNhY2hlKHBlcm1pdHRlZERvbWFpbnMpOworI2VuZGlmCit9CisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKK0V3a19Ob3RpZmljYXRpb24qIGV3a19ub3RpZmljYXRpb25f
Y3JlYXRlKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogbm90aWZpY2F0
aW9uUHJlc2VudGVyLCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgYm9vbCBy
ZXBsYWNlbWVudCkKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBu
ZXcgRXdrX05vdGlmaWNhdGlvbigpOworCisgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRp
b25QcmVzZW50ZXIgPSBub3RpZmljYXRpb25QcmVzZW50ZXI7CisgICAgZXdrTm90aWZpY2F0aW9u
LT5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgZXdrTm90aWZpY2F0aW9uLT5yZXBs
YWNlbWVudCA9IHJlcGxhY2VtZW50OworICAgIGlmIChub3RpZmljYXRpb24tPnJlcGxhY2VJZCgp
Lmxlbmd0aCgpKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPnJlcGxhY2VJRCA9IGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKG5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgaWYgKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5pY29uLnN0cmluZygpLmxlbmd0aCgpKQor
ICAgICAgICBld2tOb3RpZmljYXRpb24tPmljb25VcmwgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChu
b3RpZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBpZiAobm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlLmxlbmd0aCgpKQorICAgICAgICBl
d2tOb3RpZmljYXRpb24tPnRpdGxlID0gZWluYV9zdHJpbmdzaGFyZV9hZGQobm90aWZpY2F0aW9u
LT5jb250ZW50cygpLnRpdGxlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChub3RpZmljYXRpb24t
PmNvbnRlbnRzKCkuYm9keS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ib2R5
ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmJvZHkudXRm
OCgpLmRhdGEoKSk7CisgICAgaWYgKG5vdGlmaWNhdGlvbi0+dXJsKCkuc3RyaW5nKCkubGVuZ3Ro
KCkpCisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+dXJsID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
bm90aWZpY2F0aW9uLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobm90
aWZpY2F0aW9uLT5kaXIoKS5sZW5ndGgoKSkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5kaXIg
PSBlaW5hX3N0cmluZ3NoYXJlX2FkZChub3RpZmljYXRpb24tPmRpcigpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGV3a05vdGlmaWNhdGlvbi0+cmVmID0gMTsKKworICAgIHJldHVybiBld2tOb3RpZmlj
YXRpb247Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBld2tf
bm90aWZpY2F0aW9uX2Rlc3Ryb3koRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGV3a05vdGlmaWNhdGlvbi0+aWNvblVybCk7Cisg
ICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT50aXRsZSk7CisgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoZXdrTm90aWZpY2F0aW9uLT5ib2R5KTsKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChld2tOb3RpZmljYXRpb24tPnVybCk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoZXdrTm90aWZpY2F0aW9uLT5kaXIpOworICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb247Cit9
CisjZW5kaWYKKwordm9pZCBld2tfbm90aWZpY2F0aW9uX3JlZihFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24pCit7CisgICAgZXdrTm90aWZpY2F0aW9uLT5yZWYrKzsKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX2RlcmVmKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyAgICBpZiAoLS1ld2tOb3RpZmljYXRpb24tPnJlZikKKyAgICAgICAgcmV0dXJuOwor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb25QcmVzZW50ZXItPnJlbW92ZU5vdGlmaWNhdGlvbihld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbik7CisgICAgZXdrX25vdGlmaWNhdGlvbl9kZXN0cm95KGV3a05vdGlmaWNhdGlvbik7
CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3Rp
ZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhmMDU2YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwx
NjEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25faAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX2gK
KworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZgorCisvKioKKyAqIEBicmllZiBBUElzIGZvciB0aGUgd2ViIG5vdGlmaWNhdGlvbiBv
ZiBXZWJLaXQtRUZMCisgKgorICogVGhpcyBvYmplY3QgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRv
IHVzZSB3ZWIgbm90aWZpY2F0aW9uIGZvciBXZWJLaXQtRUZMIGNvbXBvbmVudC4KKyAqIFJlZmVy
IHRvIHRoZSBXM0MgV2ViIE5vdGlmaWNhdGlvbnMoaHR0cDovL3d3dy53My5vcmcvVFIvbm90aWZp
Y2F0aW9ucykKKyAqLworCisvLy8gQ3JlYXRlIGEgdHlwZSBuYW1lIGZvciBAYyBFd2tfTm90aWZp
Y2F0aW9uLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlv
bjsKKworLy8vIENyZWF0ZSBhIHR5cGUgbmFtZSBmb3IgQGMgRXdrX05vdGlmaWNhdGlvbl9FdmVu
dF9UeXBlLgordHlwZWRlZiBlbnVtIHsKKyAgICBFV0tfTk9USUZJQ0FUSU9OX09OQ0xJQ0ssCisg
ICAgRVdLX05PVElGSUNBVElPTl9PTkRJU1BMQVksCisgICAgRVdLX05PVElGSUNBVElPTl9PTkNM
T1NFLAorICAgIEVXS19OT1RJRklDQVRJT05fT05FUlJPUiwKK30gRXdrX05vdGlmaWNhdGlvbl9F
dmVudF9UeXBlOworCisvKioKKyAqIEdldHMgdmFsdWUgb2YgcmVwbGFjZW1lbnQgZnJvbSBAYyBF
d2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBz
dHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgVGhlIG5vdGlmaWNhdGlvbiBu
ZWVkIHRvIGJlIHJlcGxhY2VkIHdpdGggYWxyZWFkeSBkaXNwbGF5ZWQgb25lLgorICogICAgICAg
ICBAYyBFSU5BX0ZBTFNFIFRoZSBub3RpZmljYXRpb24gbmVlZCB0byBiZSBkaXNwbGF5ZWQgbmV3
bHkuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19ub3RpZmljYXRpb25fcmVwbGFjZW1lbnRfZ2V0
KGNvbnN0IEV3a19Ob3RpZmljYXRpb24qIGVuaSk7CisKKy8qKgorICogR2V0cyByZXBsYWNlSUQg
Zm9yIHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBw
YXJhbSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBy
ZXBsYWNlSUQgb2Ygbm90aWZpY2F0aW9uLgorICovCitFQVBJIGNvbnN0IGNoYXIqIGV3a19ub3Rp
ZmljYXRpb25fcmVwbGFjZUlEX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBlbmkpOworCisv
KioKKyAqIEdldHMgaWNvblVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIEBjIEV3a19Ob3Rp
ZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVy
ZS4KKyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVyIHRvIHRoZSBpY29uVVJMIG9mIG5v
dGlmaWNhdGlvbi4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2ljb25f
dXJsX2dldChFd2tfTm90aWZpY2F0aW9uICplbmkpOworCisvKioKKyAqIEdldHMgdGl0bGUgZm9y
IHRoZSBub3RpZmljYXRpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJh
bSBlbmkgTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKgorICogQHJldHVybiBjaGFy
YWN0ZXIgcG9pbnRlciB0byB0aGUgdGl0bGUgb2Ygbm90aWZpY2F0aW9uLiBUaGVyZSBpcyBubyBu
ZWVkcyB0byBmcmVlIHRoaXMgcmV0dXJuIHZhbHVlLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3
a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisK
Ky8qKgorICogR2V0cyBib2R5IGNvbnRlbnRzIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMg
RXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ug
c3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFjdGVyIHBvaW50ZXIgdG8gdGhlIGJvZHkg
Y29udGVudHMgb2Ygbm90aWZpY2F0aW9uLiBUaGVyZSBpcyBubyBuZWVkcyB0byBmcmVlIHRoaXMg
cmV0dXJuIHZhbHVlLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fYm9k
eV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqZW5pKTsKKworLyoqCisgKiBHZXRzIGh0bWwg
Y29udGVudHMgVVJMIGZvciB0aGUgbm90aWZpY2F0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlv
bi4KKyAqIFRoZSBodG1sIGNvbnRlbnRzIFVSTCBpcyBhIFVSTCBhc3NvY2lhdGVkIHdpdGggdGhl
IG5vdGlmaWNhdGlvbiB3aGljaCBpcyBjb25zaXN0ZWQgb2YgaHRtbCBkb2N1bWVudC4KKyAqIElm
IGFuIGFwcGxpY2F0aW9uIHdhbnRzIHRvIHVzZSB0aGlzIEFQSSwgYSBwb3B1cCBpcyBkaXNwbGF5
ZWQgdGhhdCBpbmNsdWRlcyBhIHdlYnBhZ2UgZnJvbSB0aGlzIFVSTC4KKyAqCisgKiBAcGFyYW0g
ZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICoKKyAqIEByZXR1cm4gY2hhcmFj
dGVyIHBvaW50ZXIgdG8gdGhlIGh0bWwgY29udGVudHMgdXJsIG9mIG5vdGlmaWNhdGlvbi4gVGhl
cmUgaXMgbm8gbmVlZHMgdG8gZnJlZSB0aGlzIHJldHVybiB2YWx1ZS4KKyAqLworRUFQSSBjb25z
dCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2h0bWxfdXJsX2dldChjb25zdCBFd2tfTm90aWZpY2F0
aW9uICplbmkpOworCisvKioKKyAqIEdldHMgZGlyZWN0aW9uIG9mIG5vdGlmaWNhdGlvbiBmcm9t
IEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291
cmNlIHN0cnVjdHVyZS4KKyAqCisgKiBAcmV0dXJuIGNoYXJhY3RlciBwb2ludGVyIHRvIGRpcmVj
dGlvbiBvZiBub3RpZmljYXRpb24uIFRoZXJlIGlzIG5vIG5lZWRzIHRvIGZyZWUgdGhpcyByZXR1
cm4gdmFsdWUuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0
KEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogQXBwbGljYXRpb24gbmVlZHMgdG8g
Y2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQgcmVjZWl2ZXMgYSB1c2VyJ3MgcmVzcG9uc2UgYWJv
dXQgdGhlIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlv
biBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFtIHBlcm1pdHRlZCBAYyBFSU5BX1RSVUUgdG8g
YWxsb3cgdG8gc2hvdyBub3RpZmljYXRpb24sIEBjIEVJTkFfRkFMU0UgdG8gbm90IGFsbG93IHRv
IHNob3cgbm90aWZpY2F0aW9uLgorICogQHBhcmFtIGRvbWFpbiBkb21haW4gVVJMIGZvciBhZGQg
YSBwZXJtaXQgbGlzdC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9jYWxsYmFja19jYWxsKGNvbnN0IEV3a19Ob3RpZmljYXRpb24gKmVuaSwgRWluYV9Cb29sIHBl
cm1pdHRlZCwgY29uc3QgY2hhciAqZG9tYWluKTsKKworLyoqCisgKiBNYWtlcyBhIGNhY2hlIGZv
ciBwZXJtaXR0ZWQgZG9tYWlucy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNh
bGxlZCBhdCBzdGFydCB0aW1lIGJ5IGFuIGFwcGxpY2F0aW9uIHdoaWNoIHVzZXMgbm90aWZpY2F0
aW9uIEFQSXMuCisgKiBJZiB0aGUgYXBwbGljYXRpb24gaGFzIG9uZSBvciBtb3JlIHBlcm1pdHRl
ZCBkb21haW5zLCBpdCBjYW4gY3JlYXRlIGEgY2FjaGUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KKyAq
CisgKiBAcGFyYW0gZW5pIE5vdGlmaWNhdGlvbiBzb3VyY2Ugc3RydWN0dXJlLgorICogQHBhcmFt
IGRvbWFpbnMgZG9tYWluIGxpc3Qgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBwZXJtaXNzaW9uIGNh
Y2hlLgorICogQHBhcmFtIHNpemUgdG90YWwgbnVtYmVyIG9mIGRvbWFpbnMKKyAqLworRUFQSSB2
b2lkIGV3a19ub3RpZmljYXRpb25fcGVybWl0dGVkX2RvbWFpbnNfYWRkKGNvbnN0IEV3a19Ob3Rp
ZmljYXRpb24gKmVuaSwgRWluYV9MaXN0ICpkb21haW5zLCBpbnQgc2l6ZSk7CisKKy8qKgorICog
TWFrZXMgYW4gZXZlbnQgZm9yIEphdmFTY3JpcHQgY2FsbGJhY2sgd2hlbiBhbiBhcHBsaWNhdGlv
biBnZW5lcmF0ZXMgYSBub3RpZmljYXRpb24gY2FsbGJhY2sgZXZlbnQuCisgKgorICogQHBhcmFt
IGVuaSBAYyBFd2tfTm90aWZpY2F0aW9uIHNvdXJjZSBzdHJ1Y3R1cmUuCisgKiBAcGFyYW0gZXQg
QGMgRXdrX05vdGlmaWNhdGlvbl9FdmVudF9UeXBlIGV2ZW50IHR5cGUgZm9yIGNhbGxiYWNrLgor
ICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9ldmVudF9zZW5kKEV3a19Ob3RpZmljYXRp
b24gKmVuaSwgRXdrX05vdGlmaWNhdGlvbl9FdmVudF9UeXBlIGV0KTsKKworLyoqCisgKiBJbmNy
ZWFzZXMgcmVmZXJlbmNlIGNvdW50IHRvIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBh
cmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVjdHVyZS4KKyAqLworRUFQSSB2b2lkIGV3
a19ub3RpZmljYXRpb25fcmVmKEV3a19Ob3RpZmljYXRpb24gKmVuaSk7CisKKy8qKgorICogRGVj
cmVhc2VzIHJlZmVyZW5jZSBjb3VudCB0byBAYyBFd2tfTm90aWZpY2F0aW9uLgorICogRXdrX05v
dGlmaWNhdGlvbiBvYmplY3Qgd2lsbCBiZSBkZXN0cm95ZWQgd2hlbiByZWZlcmVuY2UgY291bnQg
aXMgc2V0IHRvIDAuCisgKgorICogQHBhcmFtIGVuaSBOb3RpZmljYXRpb24gc291cmNlIHN0cnVj
dHVyZS4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGVyZWYoRXdrX05vdGlmaWNh
dGlvbiAqZW5pKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBl
d2tfbm90aWZpY2F0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3Rp
ZmljYXRpb25fcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4
NmI5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9w
cml2YXRlX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNh
dGlvbi5oIgorCitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqLCBXZWJDb3JlOjpOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiwgYm9vbCByZXBsYWNlbWVudCk7Cit2b2lkIGV3a19ub3RpZmljYXRp
b25fZGVzdHJveShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOworV2ViQ29yZTo6
Tm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pOworCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCisj
ZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAKaW5kZXggODUzYjM0Mi4uZDhlMzlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCkBAIC02OCw2ICs2OCwxMCBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50RWZsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2VuZGlmCisKIHN0YXRpYyBjb25z
dCBmbG9hdCB6b29tTWluaW11bSA9IDAuMDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgem9vbU1heGlt
dW0gPSA0LjA7CiAKQEAgLTYxNCw2ICs2MTgsMTAgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkK
ICAgICBwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQgPSBuZXcgV2ViQ29yZTo6RGV2aWNl
TW90aW9uQ2xpZW50RWZsOwogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50
ID0gbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsOwogI2VuZGlmCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgcGFnZUNsaWVudHMubm90aWZpY2F0aW9uQ2xpZW50
ID0gbmV3IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChzbWFydERhdGEt
PnNlbGYpOworI2VuZGlmCisKICAgICBwcml2LT5wYWdlID0gbmV3IFdlYkNvcmU6OlBhZ2UocGFn
ZUNsaWVudHMpOwogICAgIGlmICghcHJpdi0+cGFnZSkgewogICAgICAgICBDUklUSUNBTCgiQ291
bGQgbm90IGNyZWF0ZSBXZWJLaXQgUGFnZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRl
eCBhNDMzNTM3Li41MDkzOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtODMsNiAr
ODMsOSBAQAogICogIC0gInZpZXcscmVzaXplZCIsIHZvaWQ6IHZpZXcgb2JqZWN0J3Mgc2l6ZSB3
YXMgY2hhbmdlZC4KICAqICAtICJ2aWV3cG9ydCxjaGFuZ2VkIiwgdm9pZDogcmVwb3J0cyB0aGF0
IHZpZXdwb3J0IHdhcyBjaGFuZ2VkLgogICogIC0gInpvb20sYW5pbWF0ZWQsZW5kIiwgdm9pZDog
cmVxdWVzdGVkIGFuaW1hdGVkIHpvb20gaXMgZmluaXNoZWQuCisgKiAgLSAibm90aWZpY2F0aW9u
LHNob3ciLCBAYyBFd2tfTm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgY29udGVudHMgdG8gZGlzcGxh
eSB0aGUgbm90aWZpY2F0aW9uLgorICogIC0gIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBAYyBFd2tf
Tm90aWZpY2F0aW9uOiByZXF1ZXN0ZWQgbm90aWZpY2F0aW9uIGluZGV4IHRvIGNhbmNlbC4KKyAq
ICAtICJub3RpZmljYXRpb24scGVybWlzc2lvbixyZXF1ZXN0IiwgY2hhcio6IHJlcXVlc3RlZCBk
b21haW4gZm9yIGdldHRpbmcgdXNlciBwZXJtaXNzaW9uIGZyb20gdGhlIHVzZXIuCiAgKi8KIAog
I2lmbmRlZiBld2tfdmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDJmMmFiZjQuLjIwMjJj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC04MSw3ICs4MSw3IEBAIFdFQktJVF9GRUFUVVJF
KEVOQUJMRV9NQVRITUwgIkVuYWJsZSBNYXRoTUwiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVS
RShFTkFCTEVfTUVURVJfVEFHICJFbmFibGUgTWV0ZXIgdGFnIiBERUZBVUxUIE9OKQogV0VCS0lU
X0ZFQVRVUkUoRU5BQkxFX01JQ1JPREFUQSAiRW5hYmxlIEhUTUw1IG1pY3JvZGF0YSBzdXBwb3J0
IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJ
ICJFbmFibGUgTmV0c2NhcGUgcGx1Z2luIEFQSSIgREVGQVVMVCBPRkYpCi1XRUJLSVRfRkVBVFVS
RShFTkFCTEVfTk9USUZJQ0FUSU9OUyAiRW5hYmxlIG5vdGlmaWNhdGlvbnMiIERFRkFVTFQgT0ZG
KQorV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX05PVElGSUNBVElPTlMgIkVuYWJsZSBub3RpZmljYXRp
b25zIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5U
UyAiRW5hYmxlIG9yaWVudGF0aW9uIGV2ZW50cyIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVBVFVS
RShFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQSSAiRW5hYmxlIFBhZ2UgVmlzaWJpbGl0eSBBUEki
IERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfUFJPR1JFU1NfVEFHICJFbmFibGUg
cHJvZ3Jlc3MgdGFnIiBERUZBVUxUIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxNjNmMWIuLjA3ZDBjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0w
Mi0wMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgIFtF
RkxdIEFkZCBBUEkgZm9yIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZS4KKyAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dDogQWRkIG5vdGlmaWNhdGlvbnMgZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBEdW1w
UmVuZGVyVHJlZQorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBFbmFibGUgRU5BQkxF
X05PVElGSUNBVElPTlMgZmVhdHVyZSBmb3IgV2ViS2l0LUVmbC4KKwogMjAxMi0wMi0wMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgdGVzdHMg
dG8gc2hvdyB0aGF0IHRoZSBtYWMtZXdzIHByb2Nlc3NlcyBwYXRjaGVzIGZyb20KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAppbmRleCAwZGFlMTY4Li44NDEwNjg4IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNiArMTE4LDEyIEBA
IElGIChXVEZfVVNFX0NVUkwpCiAgICAgTElTVChBUFBFTkQgRHVtcFJlbmRlclRyZWVfSU5DTFVE
RV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwpCiBFTkRJ
RiAoKQogCitJRiAoRU5BQkxFX05PVElGSUNBVElPTlMpCisgICAgTElTVChBUFBFTkQgRHVtcFJl
bmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vbm90
aWZpY2F0aW9ucyIKKyAgICApCitFTkRJRiAoKQorCiBBRERfREVGSU5JVElPTlMoLURGT05UU19D
T05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKICAgICAgICAg
ICAgICAgICAtRERBVEFfRElSPSIke1RIRU1FX0JJTkFSWV9ESVJ9IikKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApp
bmRleCAyN2EwODRlLi4yMWE1ZTUxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMjc3LDcgKzI3Nyw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFNDQVBFX1BMVUdJ
Tl9BUEkiLCBkZWZhdWx0ID0+ICFpc0VmbCgpLCB2YWx1ZSA9PiBcJG5ldHNjYXBlUGx1Z2luU3Vw
cG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dn
bGUgRGVza3RvcCBOb3RpZmljYXRpb25zIFN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwk
bm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNB
VElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4g
XCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9u
LWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlz
QmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145673</attachid>
            <date>2012-06-04 18:25:39 -0700</date>
            <delta_ts>2012-06-04 23:32:41 -0700</delta_ts>
            <desc>New patch followed by changing WebCore.</desc>
            <filename>notificationEfl01.patch</filename>
            <type>text/plain</type>
            <size>38698</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNmE2ZmQ5Li42NjUzZTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYt
MDMgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDogUmVtb3ZlIGZh
c3Qvbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9u
czogQWRkIG5ldyBmYWlsaW5nIHRlc3QgY2FzZXMgZm9yIHRoZSBub3RpZmljYXRpb25zLgorCiAy
MDEyLTA1LTMxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERhdGFUcmFuc2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpIHNob3VsZCBz
eW5jaHJvbm91c2x5IHJldHVybiBlbnRyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAy
NWEzMjQ4Li5mM2JmNjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjY5LDkgKzI2
OSw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdl
LWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmds
LXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4u
aHRtbAogCi0jIFRoZSBFRkwgcG9ydCBoYXMgbm8gc3VwcG9ydCBmb3IgZGVza3RvcCBub3RpZmlj
YXRpb25zCi1mYXN0L25vdGlmaWNhdGlvbnMKLQogIyBUaGUgRUZMIHBvcnQgaGFzIG5vIHN1cHBv
cnQgZm9yIHVzZXIgZ2VzdHVyZSAoZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3Mg
aW4gRFJUIGFuZCBpbiB0aGUgcG9ydCBpdHNlbGYgYXMgd2VsbCkKIGZhc3QvZnJhbWVzL2xvY2F0
aW9uLXJlZGlyZWN0LXVzZXItZ2VzdHVyZS5odG1sCiBmYXN0L2ZyYW1lcy9tZXRhLXJlZnJlc2gt
dXNlci1nZXN0dXJlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggN2RjMzU3MC4uMDUzOTg3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTcxNCw2ICs3MTQsMTkgQEAgQlVHV0s4Nzk4NSA6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1pbWFnZVNtb290aGluZ0VuYWJsZWQuaHRtbCA9IFRFWFQKIC8vIEZhaWxzIG9u
IEdUSysgYW5kIFF0IGFzIHdlbGwuCiBCVUdXSzg2NDQ1IDogZmFzdC9tdWx0aWNvbC9zcGxpdC1p
bi10b3AtbWFyZ2luLmh0bWwgPSBJTUFHRQogCisvLyBSZWZhY3RvciBub3RpZmljYXRpb24gdGVz
dHMgcmVxdWlyaW5nIGZpbGU6Ly8gcGVybWlzc2lvbi4KK0JVR1dLODE2OTcgOiBmYXN0L25vdGlm
aWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jYW5jZWwtcmVxdWVzdC1wZXJtaXNzaW9uLmh0bWwgPSBU
RVhUCitCVUdXSzgxNjk3IDogZmFzdC9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMtY2hlY2st
cGVybWlzc2lvbi5odG1sID0gVEVYVAorQlVHV0s4MTY5NyA6IGZhc3Qvbm90aWZpY2F0aW9ucy9u
b3RpZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi5odG1sID0gQ1JBU0ggVEVYVAorQlVHV0s4
MTY5NyA6IGZhc3Qvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXdpdGhvdXQtcGVybWlzc2lv
bi5odG1sID0gVEVYVAorCisvLyBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb2N1
bWVudC1jbG9zZS1jcmFzaC5odG1sIGZhaWxzIGFmdGVyIHI3NzczOC4KK0JVR1dLNTM4NjggOiBm
YXN0L25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1kb2N1bWVudC1jbG9zZS1jcmFzaC5odG1s
ID0gQ1JBU0ggVEVYVAorCisvLyBFZmwgZG9lc24ndCBzdXBwb3J0IHRvIHNpbXVsYXRlRGVza3Rv
cE5vdGlmaWNhdGlvbkNsaWNrLgorQlVHV0tFRkwgOiBmYXN0L25vdGlmaWNhdGlvbnMvbm90aWZp
Y2F0aW9ucy1jbGljay1ldmVudC1mb2N1cy5odG1sID0gVEVYVAorQlVHV0tFRkwgOiBmYXN0L25v
dGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy1jbGljay1ldmVudC5odG1sID0gVEVYVAorCiAvLyBU
aGVzZSB0ZXN0cyBkbyBub3Qgc2VlbSB0byBmYWlsIGFueXdoZXJlIGVsc2UuCiBCVUdXSzg4MDMw
IDogZmFzdC9tdWx0aWNvbC9jb2x1bW4tYnJlYWstd2l0aC1iYWxhbmNpbmcuaHRtbCA9IElNQUdF
CiBCVUdXSzg4MDMxIDogZmFzdC9tdWx0aWNvbC9zcGFuL2dlbmVyYXRlZC1jaGlsZC1zcGxpdC1m
bG93LWNyYXNoLmh0bWwgPSBJTUFHRStURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVjOGRlMi4uMzQxOTIy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTAzICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFN1cHBvcnQgZm9yIFdl
YiBOb3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZSByZXF1ZXN0UGVybWlzc2lvbiBjYW4gYmUgcHJvY2Vzc2VkIHdoZW4gYXJn
dW1lbnQgaXMgbnVsbCBvbiB0aGUgSlNDLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXNr
dG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vdGlmaWNh
dGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb24pOgorCiAyMDEyLTA1LTMxICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERhdGFUcmFu
c2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpIHNob3VsZCBzeW5jaHJvbm91c2x5IHJldHVybiBl
bnRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90
aWZpY2F0aW9uc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0
b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAppbmRleCAzOGM2ODIzLi45N2I0OGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25zQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmlj
YXRpb25zQ3VzdG9tLmNwcApAQCAtNTgsMTAgKzU4LDEzIEBAIEpTVmFsdWUgSlNOb3RpZmljYXRp
b25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoY29u
dGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9y
KGV4ZWMpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgUmVmUHRyPEpTQ3VzdG9tVm9pZENh
bGxiYWNrPiBjYWxsYmFjazsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7CisgICAg
ICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjKTsKIAotICAgIFBhc3NSZWZQdHI8SlNDdXN0b21Wb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShleGVjLT5hcmd1
bWVudCgwKS5nZXRPYmplY3QoKSwgdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KGNvbnRleHQpLCBleGVjKSk7CisgICAgICAgIGNhbGxiYWNrID0gSlNDdXN0b21Wb2lk
Q2FsbGJhY2s6OmNyZWF0ZShleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKSwgdG9KU0RPTUds
b2JhbE9iamVjdChzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCBleGVjKSk7CisgICAg
fQogCiAgICAgaW1wbCgpLT5yZXF1ZXN0UGVybWlzc2lvbihjYWxsYmFjayk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiYTJiMjUuLjJmM2JiOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMDYtMDMgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZTogQWRkIGV3a19ub3RpZmljYXRpb24uY3BwIGZpbGUgZm9yIGJ1aWxkaW5nLgor
CiAyMDEyLTA2LTAxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF0gRUZMJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgbmVlZHMgdG8g
aW1wbGVtZW50IGRlbGl2ZXJXZWJJbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDdk
OTI5ZWYuLjE2Mjg3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzcsOSArNzcsOCBA
QCBJRiAoRU5BQkxFX05FVFdPUktfSU5GTykKIEVORElGICgpCiAKIElGIChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykKLSAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAi
JHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKLSAgKQorICBMSVNUKEFQUEVORCBXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25zKQorICBMSVNU
KEFQUEVORCBXZWJLaXRfU09VUkNFUyBlZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwKQogRU5E
SUYgKCkKIAogTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAx
MWU2YjlkLi5lOGVkYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTIt
MDYtMDMgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9ydGluZyB3ZWIg
bm90aWZpY2F0aW9uIG9uIHRoZSBlZmwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2Ug
c3VwcG9ydCBmb2xsb3dpbmcgYXBpcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElzIDogY3JlYXRl
Tm90aWZpY2F0aW9ucywgY2hlY2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lvbiwgc2hvdywg
Y2FuY2VsLgorICAgICAgICBFdmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25lcnJvciwgb25j
bG9zZSwgb25jbGljay4KKyAgICAgICAgSW4gYWRkaXRpb24sIHdlIGNhbiBwYXNzIDggdGVzdCBj
YXNlcyBvbiB0aGUgbGF5b3V0IHRlc3QgYWJvdXQgd2ViIG5vdGlmaWNhdGlvbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmR1bXBOb3RpZmljYXRpb24pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVyRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVl
c3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVk
LgorICAgICAgICAoX0V3a19Ob3RpZmljYXRpb24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlv
bl9nZXRfbm90aWZpY2F0aW9uKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY3JlYXRlKToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGVsZXRlKToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fZGlzcGF0Y2hfY2xpY2spOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRj
aF9jbG9zZSk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9yKToKKyAg
ICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfc2hvdyk6CisgICAgICAgIChld2tfbm90
aWZpY2F0aW9uX3RpdGxlX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJs
X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3
a19ub3RpZmljYXRpb25fdGFnX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpcl9n
ZXQpOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tf
dmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbnNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X25v
dGlmaWNhdGlvbl9jbGllbnRfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTIt
MDYtMDMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBBZGQgZXdrX2N1c3RvbV9oYW5kbGVyX3ByaXZhdGUuaCBmb3IgZXdrX2N1c3RvbV9oYW5kbGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggYjQ1YWVmMS4uYjliMmE3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8SlNF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNp
bmNsdWRlIDxNZW1vcnlDYWNoZS5oPgorI2luY2x1ZGUgPE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbC5oPgogI2luY2x1ZGUgPFBhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFByaW50Q29udGV4
dC5oPgogI2luY2x1ZGUgPFJlbmRlclRyZWVBc1RleHQuaD4KQEAgLTgxOCwzICs4MTksMTEgQEAg
Ym9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGludCogc3RhcnQsIGkKIAogICAgIHJldHVybiB0cnVlOwogfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcE5vdGlmaWNhdGlvbihib29sIGZsYWcpCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmR1bXBOb3RpZmlj
YXRpb24gPSBmbGFnOworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggMmFl
MzQzMS4uOTI5NmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTEyMSw2ICsxMjEsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKEV2YXNfT2JqZWN0
KiwgY29uc3QgY2hhciopOwogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlKEV2YXNfT2JqZWN0KiwgaW50LCBpbnQpOwogICAgIHN0YXRpYyBib29s
IHNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqLCBpbnQqLCBpbnQqKTsKKworICAgIHN0YXRpYyB2
b2lkIGR1bXBOb3RpZmljYXRpb24oYm9vbCBmbGFnKTsKIH07CiAKICNlbmRpZiAvLyBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAK
aW5kZXggZTMzNzM1MS4uNzIzN2MyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwuY3BwCkBAIC0yMSw1MyArMjEsMTM5IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK2Jvb2wgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpkdW1wTm90aWZpY2F0aW9uID0gZmFsc2U7CisK
K05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCgpCiB7CisgICAgd2hpbGUgKCFtX25vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdp
bigpOworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2RlbGV0ZShpdGVyLT5zZWNvbmQpOworICAg
ICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KIH0KIAogYm9vbCBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFub3RpZmljYXRpb24tPnRhZygpLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKE5vdGlmaWNh
dGlvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOyBpdGVyICE9
IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgaWYgKGl0ZXItPmZp
cnN0LT50YWcoKSA9PSBub3RpZmljYXRpb24tPnRhZygpICYmIGl0ZXItPmZpcnN0LT51cmwoKS5w
cm90b2NvbCgpID09IG5vdGlmaWNhdGlvbi0+dXJsKCkucHJvdG9jb2woKSAmJiBpdGVyLT5maXJz
dC0+dXJsKCkuaG9zdCgpID09IG5vdGlmaWNhdGlvbi0+dXJsKCkuaG9zdCgpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGR1bXBOb3RpZmljYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHByaW50
ZigiUkVQTEFDSU5HIE5PVElGSUNBVElPTiAlc1xuIiwgaXRlci0+Zmlyc3QtPmlzSFRNTCgpID8g
aXRlci0+Zmlyc3QtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiBpdGVyLT5maXJzdC0+
dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICAgICAgICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLGNhbmNlbCIsIHN0YXRpY19j
YXN0PHZvaWQqPihpdGVyLT5zZWNvbmQpKTsKKyAgICAgICAgICAgICAgICBtX25vdGlmaWNhdGlv
bnMucmVtb3ZlKGl0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBIVE1MIG5vdGlmaWNhdGlvbnMgaXMgbm90IHN1cHBvcnRl
ZC4KKyAgICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBld2tfbm90aWZpY2F0
aW9uX2NyZWF0ZShtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRpb24sc2hvdyIsIHN0YXRpY19jYXN0PHZv
aWQqPihld2tOb3RpZmljYXRpb24pKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuYWRkKG5vdGlmaWNh
dGlvbiwgZXdrTm90aWZpY2F0aW9uKTsKKworICAgIGlmIChkdW1wTm90aWZpY2F0aW9uKSB7Cisg
ICAgICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKQorICAgICAgICAgICAgcHJpbnRmKCJE
RVNLVE9QIE5PVElGSUNBVElPTjogY29udGVudHMgYXQgJXNcbiIsIG5vdGlmaWNhdGlvbi0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTjolcyBpY29uICVzLCB0aXRsZSAlcywgdGV4dCAl
c1xuIiwKKyAgICAgICAgICAgICAgICBub3RpZmljYXRpb24tPmRpcigpID09ICJydGwiID8gIihS
VEwpIiA6ICIiLAorICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+aWNvblVSTCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIG5vdGlmaWNhdGlvbi0+dGl0bGUoKS51dGY4KCkuZGF0YSgpLAor
ICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+Ym9keSgpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pOworICAgIGlmIChpdGVyICE9
IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgeworICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBzdGF0aWNfY2FzdDx2b2lk
Kj4oaXRlci0+c2Vjb25kKSk7CisgICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXRlcik7
CisgICAgfQorCisgICAgaWYgKGR1bXBOb3RpZmljYXRpb24gJiYgbm90aWZpY2F0aW9uLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1M
KCkpCisgICAgICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIENMT1NFRDogJXNc
biIsIG5vdGlmaWNhdGlvbi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VEOiAl
c1xuIiwgbm90aWZpY2F0aW9uLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KIH0KIAog
dm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERl
c3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIC8vIENhbGxlZCBmcm9tIH5Ob3RpZmljYXRpb24oKSwgUmVtb3ZlIHRoZSBlbnRy
eSBmcm9tIHRoZSBub3RpZmljYXRpb25zIGxpc3QuCisgICAgTm90aWZpY2F0aW9uTWFwOjppdGVy
YXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAo
aXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlv
bl9kZWxldGUoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShp
dGVyKTsKKyAgICB9CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpu
b3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIFN0cmluZyBkb21haW4gPSBjb250ZXh0LT51cmwoKS5o
b3N0KCk7CisgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmFkZChkb21haW4sIGNhbGxi
YWNrKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlm
aWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2Fz
dDxjaGFyKj4oZG9tYWluLnV0ZjgoKS5kYXRhKCkpKSk7CisKKyAgICBpZiAoZHVtcE5vdGlmaWNh
dGlvbikKKyAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBQRVJNSVNTSU9OIFJF
UVVFU1RFRDogJXNcbiIsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiB9CisjZW5kaWYKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNz
aW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFBlcm1pc3Npb25zTWFwOjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRQZXJtaXNzaW9ucy5maW5k
KGNvbnRleHQtPnVybCgpLmhvc3QoKSk7CisKKyAgICBpZiAoaXRlciA9PSBtX2NhY2hlZFBlcm1p
c3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbk5vdEFsbG93ZWQ7CisKKyAg
ICBpZiAoaXRlci0+c2Vjb25kKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7CisK
ICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgU3RyaW5n
IGRvbWFpbiA9IGNvbnRleHQtPnVybCgpLmhvc3QoKTsKKyAgICBQZXJtaXNzaW9uUmVxdWVzdE1h
cDo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5maW5kKGRvbWFp
bik7CisgICAgaWYgKGl0ZXIgIT0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmVuZCgpKSB7
CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZp
Y2F0aW9uLHBlcm1pc3Npb24sY2FuY2VsIiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8
Y2hhcio+KGRvbWFpbi51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMucmVtb3ZlKGRvbWFpbik7CisKKyAgICAgICAgaWYgKGR1bXBOb3RpZmljYXRp
b24pCisgICAgICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1JU1NJT04g
UkVRVUVTVCBDQU5DRUxMRUQ6ICVzXG4iLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmFkZFBlcm1pc3Npb24oY29uc3QgY2hhciogZG9tYWluLCBjb25zdCBi
b29sIGlzQWxsb3dlZCkKK3sKKyAgICBQZXJtaXNzaW9uUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5maW5kKFN0cmluZyhkb21haW4pKTsKKyAg
ICBpZiAoaXRlciAhPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAg
ICAgaWYgKGlzQWxsb3dlZCkKKyAgICAgICAgICAgIGl0ZXItPnNlY29uZC0+aGFuZGxlRXZlbnQo
KTsKKyAgICAgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLnJlbW92ZShpdGVyKTsKKyAg
ICB9CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5hZGQoU3RyaW5nKGRvbWFpbiksIGlzQWxsb3dl
ZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKaW5kZXggNTUxNzRl
Ny4uOWVjYzZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgKQEAgLTIyLDIz
ICsyMiw0NCBAQAogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKLSNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNp
bmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRlciB7Ci0K
K2NsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRp
b25DbGllbnQgewogcHVibGljOgotICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgp
OworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7
CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBi
b29sIHNob3coTm90aWZpY2F0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmlj
YXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5v
dGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVz
dHJveWVkKCk7CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVy
bWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworI2VuZGlm
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJt
aXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBl
cm1pc3Npb25DYWxsYmFjaz4pIHsgfQorI2VuZGlmCisgICAgdmlydHVhbCBOb3RpZmljYXRpb25D
bGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQgYWRkUGVybWlzc2lvbihjb25zdCBjaGFyKiBk
b21haW4sIGJvb2wgaXNBbGxvd2VkKTsKKworICAgIHN0YXRpYyBib29sIGR1bXBOb3RpZmljYXRp
b247CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKKworICAgIHR5cGVkZWYg
SGFzaE1hcDxXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBFd2tfTm90aWZpY2F0aW9uKj4gTm90aWZp
Y2F0aW9uTWFwOworICAgIE5vdGlmaWNhdGlvbk1hcCBtX25vdGlmaWNhdGlvbnM7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gPiBQZXJt
aXNzaW9uUmVxdWVzdE1hcDsKKyAgICBQZXJtaXNzaW9uUmVxdWVzdE1hcCBtX3BlbmRpbmdQZXJt
aXNzaW9uUmVxdWVzdHM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgYm9vbD4gUGVybWlz
c2lvbnNNYXA7CisgICAgUGVybWlzc2lvbnNNYXAgbV9jYWNoZWRQZXJtaXNzaW9uczsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzE5NzBhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMTQwIEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7Cisg
ICAgRXZhc19PYmplY3QqIHZpZXc7CisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb247Cit9OworCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9n
ZXRfbm90aWZpY2F0aW9uKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAg
ICByZXR1cm4gZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb247Cit9CisKK0V3a19Ob3RpZmlj
YXRpb24qIGV3a19ub3RpZmljYXRpb25fY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJDb3Jl
OjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24gPSBuZXcgRXdrX05vdGlmaWNhdGlvbjsKKyAgICBld2tOb3RpZmljYXRp
b24tPnZpZXcgPSB2aWV3OworICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uID0gbm90
aWZpY2F0aW9uOworICAgIHJldHVybiBld2tOb3RpZmljYXRpb247Cit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kZWxldGUoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
ICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb247Cit9CisjZW5kaWYKKwordm9pZCBld2tfbm90aWZp
Y2F0aW9uX2Rpc3BhdGNoX2NsaWNrKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikK
K3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xpZW50
ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52aWV3
KTsKKyAgICBpZiAoY2xpZW50KQorICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
bi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0
aW9uX2Rpc3BhdGNoX2Nsb3NlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xpZW50ID0g
ZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52aWV3KTsK
KyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9u
LT5kaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUo
ZXdrTm90aWZpY2F0aW9uKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0
aW9uX2Rpc3BhdGNoX2Vycm9yKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xpZW50ID0g
ZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52aWV3KTsK
KyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9u
LT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUo
ZXdrTm90aWZpY2F0aW9uKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBld2tfbm90aWZpY2F0
aW9uX2Rpc3BhdGNoX3Nob3coRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CisgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBjbGllbnQgPSBl
d2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50X2dldChld2tOb3RpZmljYXRpb24tPnZpZXcpOwor
ICAgIGlmIChjbGllbnQpIHsKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24t
PmRpc3BhdGNoU2hvd0V2ZW50KCk7CisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
ICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChXZWJD
b3JlOjpFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworI2VuZGlmCisjZW5kaWYKKyAgICB9Cit9CisKK0VpbmFfU3RyaW5nc2hh
cmUqIGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmlj
YXRpb24tPm5vdGlmaWNhdGlvbi0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAg
cmV0dXJuIDA7CisjZW5kaWYKK30KKworRWluYV9TdHJpbmdzaGFyZSogZXdrX25vdGlmaWNhdGlv
bl9pY29uX3VybF9nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisg
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0
aW9uLT5pY29uVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK0VpbmFfU3RyaW5nc2hhcmUqIGV3a19ub3RpZmljYXRpb25fYm9k
eV9nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgcmV0dXJu
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT5ib2R5
KCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK0Vp
bmFfU3RyaW5nc2hhcmUqIGV3a19ub3RpZmljYXRpb25fdGFnX2dldChFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQo
ZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPnRhZygpLnV0ZjgoKS5kYXRhKCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitFaW5hX1N0cmluZ3NoYXJlKiBld2tfbm90
aWZpY2F0aW9uX2Rpcl9nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGV3a05vdGlmaWNhdGlvbi0+bm90aWZp
Y2F0aW9uLT5kaXIoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5k
aWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkMjdlNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwxMjEgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioK
KyAqIEBmaWxlICAgIGV3a19ub3RpZmljYXRpb24uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRo
ZSB3ZWIgbm90aWZpY2F0aW9uIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25f
aAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgQGEgX0V3a19Ob3RpZmljYXRpb24uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05v
dGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCitzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb25f
UGVybWlzc2lvbiB7CisgICAgY2hhciogZG9tYWluOworICAgIGJvb2wgaXNBbGxvd2VkOworfTsK
Ky8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNz
aW9uLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbiBFd2tfTm90
aWZpY2F0aW9uX1Blcm1pc3Npb247CisKKy8qKgorICogRGlzcGF0Y2ggY2xpY2sgZXZlbnQgdG8g
dGhlIGphdmFzY3JpcHQgY2FsbGJhY2sgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlm
aWNhdGlvbiBvYmplY3QgZm9yIGRpc3BhdGNoaW5nIGNsaWNrIGV2ZW50LgorICovCitFQVBJIHZv
aWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9uKiBlbik7
CisKKy8qKgorICogRGlzcGF0Y2ggY2xvc2UgZXZlbnQgdG8gdGhlIGphdmFzY3JpcHQgY2FsbGJh
Y2sgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QgZm9yIGRp
c3BhdGNoaW5nIGNsb3NlIGV2ZW50LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9k
aXNwYXRjaF9jbG9zZShFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogRGlzcGF0Y2gg
ZXJyb3IgZXZlbnQgdG8gdGhlIGphdmFzY3JpcHQgY2FsbGJhY2sgZnVuY3Rpb24uCisgKgorICog
QHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QgZm9yIGRpc3BhdGNoaW5nIGVycm9yIGV2ZW50
LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90
aWZpY2F0aW9uKiBlbik7CisKKy8qKgorICogRGlzcGF0Y2ggc2hvdy9kaXNwYWx5IGV2ZW50IHRv
IHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3Rp
ZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBzaG93L2Rpc3BsYXkgZXZlbnQuCisgKi8K
K0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX3Nob3coRXdrX05vdGlmaWNhdGlv
biogZW4pOworCisvKioKKyAqIEdldCB0aXRsZSBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisg
KgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKiAKKyAqIEByZXR1cm4gdGl0
bGUgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMgdG8gYmUgZGVsZXRlZCBieSBlaW5hX3N0
cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBFaW5hX1N0cmluZ3NoYXJl
KiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0aW9uKiBlbik7CisKKy8q
KgorICogR2V0IGljb24gdXJsIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFy
YW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdC4KKyAqIAorICogQHJldHVybiBpY29uIHVybCBvZiB0
aGUgbm90aWZpY2F0aW9uIHdoaWNoIGhhcyB0byBiZSBkZWxldGVkIGJ5IGVpbmFfc3RyaW5nc2hh
cmVfZGVsIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIEVpbmFfU3RyaW5nc2hhcmUqIGV3a19u
b3RpZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGVuKTsKKworLyoqCisg
KiBHZXQgYm9keSBjb250ZW50cyBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBh
cmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKiAKKyAqIEByZXR1cm4gYm9keSBjb250ZW50
cyBvZiB0aGUgbm90aWZpY2F0aW9uIHdoaWNoIGhhcyB0byBiZSBkZWxldGVkIGJ5IGVpbmFfc3Ry
aW5nc2hhcmVfZGVsIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIEVpbmFfU3RyaW5nc2hhcmUq
IGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQoRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioK
KyAqIEdldCB0YWcvcmVwbGFjZWQgaWQgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAq
IEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0LgorICogCisgKiBAcmV0dXJuIHRhZy9yZXBs
YWNlZCBpZCBvZiB0aGUgbm90aWZpY2F0aW9uIHdoaWNoIGhhcyB0byBiZSBkZWxldGVkIGJ5IGVp
bmFfc3RyaW5nc2hhcmVfZGVsIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIEVpbmFfU3RyaW5n
c2hhcmUqIGV3a19ub3RpZmljYXRpb25fdGFnX2dldChFd2tfTm90aWZpY2F0aW9uKiBlbik7CisK
Ky8qKgorICogR2V0IGRpcmVjdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICog
QHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKiAKKyAqIEByZXR1cm4gZGlyZWN0aW9u
IG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2ggaGFzIHRvIGJlIGRlbGV0ZWQgYnkgZWluYV9zdHJp
bmdzaGFyZV9kZWwgYWZ0ZXIgdXNpbmcgaXQuCisgKi8KK0VBUEkgRWluYV9TdHJpbmdzaGFyZSog
ZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGVuKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMWQ0MjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgKQEAg
LTAsMCArMSwzNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdr
X25vdGlmaWNhdGlvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2lu
Y2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvbiog
ZXdrX25vdGlmaWNhdGlvbl9nZXRfbm90aWZpY2F0aW9uKEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbik7CitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShF
dmFzX09iamVjdCosIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9u
KTsKKworI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDFlYzVmOTcuLjQ2NWViZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcApAQCAtODcsNiArODcsMTEgQEAKICNpbmNsdWRlICJCYXR0ZXJ5
Q2xpZW50RWZsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgorI2VuZGlm
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNlbmRpZgpAQCAtNzQ0LDYgKzc0OSwxMCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKQogICAgIFdlYkNvcmU6OnByb3ZpZGVCYXR0ZXJ5VG8ocHJpdi0+cGFnZS5nZXQoKSwgbmV3
IFdlYkNvcmU6OkJhdHRlcnlDbGllbnRFZmwpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIFdlYkNvcmU6OnBy
b3ZpZGVOb3RpZmljYXRpb24ocHJpdi0+cGFnZS5nZXQoKSwgbmV3IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpKTsKKyNlbmRpZgorCiAgICAg
cHJpdi0+cGFnZVNldHRpbmdzID0gcHJpdi0+cGFnZS0+c2V0dGluZ3MoKTsKIAogICAgIHByaXYt
PnZpZXdwb3J0QXJndW1lbnRzLndpZHRoID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZh
bHVlQXV0bzsKQEAgLTQ0MDMsNiArNDQxMiwyNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGlu
Z193ZWJfYXVkaW9fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYmxlKQog
I2VuZGlmCiB9CiAKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zX3NldChF
dmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluLCBFaW5hX0Jvb2wgaXNBbGxv
d2VkKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCisgICAgRVdLX1ZJRVdfU0RfR0VUKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc21hcnREYXRhLCBwcml2KTsKKyAgICBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqPihXZWJDb3JlOjpOb3RpZmljYXRp
b25Db250cm9sbGVyOjpjbGllbnRGcm9tKHByaXYtPnBhZ2UuZ2V0KCkpKS0+YWRkUGVybWlzc2lv
bihkb21haW4sIGlzQWxsb3dlZCk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwqIGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KEV2
YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBwcml2LCAwKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6Y2xpZW50RnJvbShwcml2LT5wYWdlLmdldCgpKSk7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNl
IEVXS1ByaXZhdGUgewogCiBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZShjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggZGFlZDhhYy4uZTIyOTAy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTI3NTMsNiArMjc1MywxNSBAQCBFQVBJ
IEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19nZXQoY29uc3QgRXZhc19P
YmplY3QgKm8pOwogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3dlYl9h
dWRpb19zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCisvKioKKyAqIFNl
dCBwZXJtaXNzaW9uIGNhY2hlIGxpc3QgZm9yIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0g
byB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHBlcm1pc3Npb24gY2FjaGUgbGlzdC4KKyAqIEBwYXJh
bSBkb21haW4gc3RyaW5nIGZvciBkZXRlcm1pbmUgcGVybWlzc2lvbi4KKyAqIEBwYXJhbSBpc0Fs
bG93ZWQgQGMgRUlOQV9UUlVFIHRvIHBlcm1pdCwgQGMgRUlOQV9GQUxTRSB0byBkZW55LgorICov
CitFQVBJIHZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zX3NldChFdmFzX09i
amVjdCogbywgY29uc3QgY2hhciogZG9tYWluLCBFaW5hX0Jvb2wgaXNBbGxvd2VkKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oCmluZGV4IGQwMzIxOWM3Li4yYWQwYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlld19wcml2YXRlLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDb2xvckNob29zZXJDbGllbnQ7CiAjZW5kaWYKLQorY2xh
c3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50
OwogfQogCkBAIC0xNTAsNiArMTUwLDEwIEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfb2JqZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19OCiBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdf
Y29udGV4dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBld2tfdmlld19ub3RpZmljYXRpb25fY2xp
ZW50X2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CisjZW5kaWYKKwogbmFtZXNwYWNlIEVXS1By
aXZhdGUgewogV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1Zp
ZXcpOwogUGxhdGZvcm1QYWdlQ2xpZW50IGNvcmVQYWdlQ2xpZW50KEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjZmNhZjBlLi5lMmVhMzYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDYtMDMgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3IgV2Vi
IE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlc2UgYXJlIGVtdWxhdGluZyBmb3Igc2hvdywgY2FuY2VsIGV2ZW50cyBmb3IgdGhl
IGxheW91dCB0ZXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNocm9tZTo6Y3JlYXRlVmlldyk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZUNocm9tZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZUNocm9tZTo6b25Ob3RpZmljYXRpb25TaG93KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
Q2hyb21lOjpvbk5vdGlmaWNhdGlvbkNhbmNlbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6c2VuZE5vdGlmaWNhdGlvblNob3dFdmVudCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6c2VuZE5vdGlmaWNhdGlvbkNhbmNlbEV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlQ2hyb21lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTItMDYtMDMgIFZhcnVuIEphaW4gIDx2YXJ1bmphaW5AZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEFkZCBuZXcgZ2VzdHVyZSB0eXBlICh0d28gZmluZ2VyIHRhcCkgdGhh
dCB0cmlnZ2VycyBjb250ZXh0IG1lbnUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0
cy50eHQKaW5kZXggMDZjZWYzYS4uYzg3OWEwZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9D
TWFrZUxpc3RzLnR4dApAQCAtNTUsNiArNTUsNyBAQCBTRVQoRHVtcFJlbmRlclRyZWVfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICR7V0VCQ09SRV9ESVJ9L2NzcwogICAgICR7V0VCQ09SRV9ESVJ9
L2h0bWwKICAgICAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IKKyAgICAke1dFQkNPUkVfRElSfS9u
b3RpZmljYXRpb25zCiAgICAgJHtXRUJDT1JFX0RJUn0vcGFnZQogICAgICR7V0VCQ09SRV9ESVJ9
L3BhZ2UvYW5pbWF0aW9uCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IDg2MmE2
MTYuLmJhMjE3ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0U3Vw
cG9ydC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRp
b24uaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIiAvLyBGSVhNRTogY3JlYXRlIHNvbWUgV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWUuY3BwIGluc3RlYWQKIAogI2luY2x1ZGUgPEVXZWJL
aXQuaD4KQEAgLTExMCw2ICsxMTEsOCBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJv
bWU6OmNyZWF0ZVZpZXcoKSBjb25zdAogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh2aWV3LCAibWl4ZWRjb250ZW50LHJ1biIsIG9uSW5zZWN1cmVDb250ZW50UnVuLCAwKTsKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQodmlldywgIm1peGVkY29udGVudCxkaXNw
bGF5ZWQiLCBvbkluc2VjdXJlQ29udGVudERpc3BsYXllZCwgMCk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHZpZXcsICJmcmFtZSxjcmVhdGVkIiwgb25GcmFtZUNyZWF0ZWQs
IDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh2aWV3LCAibm90aWZpY2F0
aW9uLHNob3ciLCBvbk5vdGlmaWNhdGlvblNob3csIDApOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCh2aWV3LCAibm90aWZpY2F0aW9uLGNhbmNlbCIsIG9uTm90aWZpY2F0aW9u
Q2FuY2VsLCAwKTsKIAogICAgIGNvbm5lY3RFZGl0aW5nQ2FsbGJhY2tzKHZpZXcpOwogCkBAIC0x
NzIsNiArMTc1LDggQEAgYm9vbCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6aW5pdGlhbGl6ZSgpCiAg
ICAgICAgIGV3a19zZXR0aW5nc19hcHBsaWNhdGlvbl9jYWNoZV9wYXRoX3NldChwYXRoKTsKICAg
ICB9CiAKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmR1bXBOb3RpZmljYXRpb24odHJ1
ZSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzQ1LDMgKzc1MCwyMyBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbih2b2lk
KiwgRXZhc19PYmplY3QqLAogICAgICAgICAgICBzZXJ2aWNlSW5mby0+aHJlZiwKICAgICAgICAg
ICAgc2VydmljZUluZm8tPmRpc3Bvc2l0aW9uKTsKIH0KKwordm9pZCBEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6b25Ob3RpZmljYXRpb25TaG93KHZvaWQqLCBFdmFzX09iamVjdCogdmlldywgdm9pZCog
ZXZlbnRJbmZvKQoreworICAgIGVjb3JlX3RpbWVyX2FkZCgwLCBzZW5kTm90aWZpY2F0aW9uU2hv
d0V2ZW50LCBldmVudEluZm8pOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbk5v
dGlmaWNhdGlvbkNhbmNlbCh2b2lkKiwgRXZhc19PYmplY3QqIHZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKK3sKKyAgICBlY29yZV90aW1lcl9hZGQoMCwgc2VuZE5vdGlmaWNhdGlvbkNhbmNlbEV2ZW50
LCBldmVudEluZm8pOworfQorCitFaW5hX0Jvb2wgRHVtcFJlbmRlclRyZWVDaHJvbWU6OnNlbmRO
b3RpZmljYXRpb25TaG93RXZlbnQodm9pZCogZGF0YSkKK3sKKyAgICBld2tfbm90aWZpY2F0aW9u
X2Rpc3BhdGNoX3Nob3coc3RhdGljX2Nhc3Q8RXdrX05vdGlmaWNhdGlvbio+KGRhdGEpKTsKK30K
KworRWluYV9Cb29sIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpzZW5kTm90aWZpY2F0aW9uQ2FuY2Vs
RXZlbnQodm9pZCogZGF0YSkKK3sKKyAgICBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Nsb3Nl
KHN0YXRpY19jYXN0PEV3a19Ob3RpZmljYXRpb24qPihkYXRhKSk7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5oCmluZGV4IDliNjViNDEuLjli
ODIxYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJl
ZUNocm9tZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNo
cm9tZS5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbHVlcygpOwogCisgICAgc3RhdGljIEVpbmFfQm9vbCBzZW5kTm90aWZp
Y2F0aW9uU2hvd0V2ZW50KHZvaWQqKTsKKyAgICBzdGF0aWMgRWluYV9Cb29sIHNlbmROb3RpZmlj
YXRpb25DYW5jZWxFdmVudCh2b2lkKik7CisKIHByaXZhdGU6CiAgICAgRHVtcFJlbmRlclRyZWVD
aHJvbWUoRXZhcyopOwogCkBAIC0xMjMsNiArMTI2LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRp
YyB2b2lkIG9uRnJhbWVJbnRlbnROZXcodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOwogICAg
IHN0YXRpYyB2b2lkIG9uRnJhbWVJbnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uKHZvaWQqLCBFdmFz
X09iamVjdCosIHZvaWQqKTsKKworICAgIHN0YXRpYyB2b2lkIG9uTm90aWZpY2F0aW9uU2hvdyh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgb25Ob3RpZmljYXRp
b25DYW5jZWwodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopOwogfTsKIAogI2VuZGlmIC8vIER1
bXBSZW5kZXJUcmVlQ2hyb21lX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQppbmRleCBlOTY4NTFmLi5jNGRkMWM2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCkBAIC0yNDksNyArMjQ5LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiIsIGRlZmF1bHQgPT4gMSwgdmFsdWUg
PT4gXCRqYXZhc2NyaXB0RGVidWdnZXJTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVn
YWN5LW5vdGlmaWNhdGlvbnMiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IE5vdGlmaWNhdGlvbnMg
c3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIs
IGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbGVnYWN5Tm90aWZpY2F0aW9u
c1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05T
IiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkbGVn
YWN5Tm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJsZWdhY3ktd2Vi
a2l0LWJsb2ItYnVpbGRlciIsIGRlc2MgPT4gIlRvZ2dsZSBMZWdhY3kgV2ViS2l0IEJsb2IgQnVp
bGRlciBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0xFR0FDWV9XRUJLSVRfQkxP
Ql9CVUlMREVSIiwgZGVmYXVsdCA9PiAoaXNHdGsoKSB8fCBpc0Nocm9taXVtKCkgfHwgaXNCbGFj
a0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeVdlYktpdEJsb2JCdWlsZGVyU3VwcG9ydCB9LApA
QCAtMjkxLDcgKzI5MSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX05FVFdPUktfSU5GTyIsIGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXR3b3Jr
SW5mb1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9
PiAiVG9nZ2xlIE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRu
b3RpZmljYXRpb25zU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FU
SU9OUyIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBc
JG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAib3JpZW50YXRpb24t
ZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiwKICAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNC
bGFja0JlcnJ5KCksIHZhbHVlID0+IFwkb3JpZW50YXRpb25FdmVudHNTdXBwb3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145701</attachid>
            <date>2012-06-04 23:32:41 -0700</date>
            <delta_ts>2012-06-05 01:26:42 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>notificationEfl02.patch</filename>
            <type>text/plain</type>
            <size>28061</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2YwOWJlOC4uZDA4NmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0wNCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQg
ZXdrX25vdGlmaWNhdGlvbi5jcHAuCisKIDIwMTItMDYtMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0
b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRG9uJ3QgdXNlIFdlYktp
dCBIQVZFKCkgbWFjcm8gaW4gcHVibGljIFF0IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IDJkZWY4NjkuLmMzNWU3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzcs
OSArNzcsOCBAQCBJRiAoRU5BQkxFX05FVFdPUktfSU5GTykKIEVORElGICgpCiAKIElGIChFTkFC
TEVfTk9USUZJQ0FUSU9OUykKLSAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKLSAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKLSAgKQorICBMSVNUKEFQUEVO
RCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25z
KQorICBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUyBlZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
Y3BwKQogRU5ESUYgKCkKIAogTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCAzNjA1NmE5Li42MGFlNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMDYtMDQgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9y
dGluZyB3ZWIgbm90aWZpY2F0aW9uIG9uIHRoZSBFRkwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2Ugc3VwcG9ydCBmb2xsb3dpbmcgYXBpcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElz
IDogY3JlYXRlTm90aWZpY2F0aW9ucywgY2hlY2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lv
biwgc2hvdywgY2FuY2VsLgorICAgICAgICBFdmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25l
cnJvciwgb25jbG9zZSwgb25jbGljay4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpj
aGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19O
b3RpZmljYXRpb24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9nZXRfbm90aWZpY2F0aW9u
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fY3JlYXRlKToKKyAgICAgICAgKGV3a19ub3Rp
ZmljYXRpb25fZGVsZXRlKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xp
Y2spOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZSk6CisgICAgICAg
IChld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9yKToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fZGlzcGF0Y2hfc2hvdyk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dl
dCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fdGFn
X2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpcl9nZXQpOgorICAgICAgICAqIGV3
ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0
aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAg
ICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25f
cGVybWlzc2lvbnNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRf
Z2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDYtMDQgIFRvbWFzeiBNb3Jh
d3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVmYWN0b3Ig
ZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbC5jcHAKaW5kZXggZTMzNzM1MS4uZjcyMTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSw1MyArMjEsMTA5IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgImV3a19ub3Rp
ZmljYXRpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
Zmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAg
ICA6IG1fdmlldyh2aWV3KQogewogfQogCiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQogeworICAgIHdoaWxlICghbV9ub3Rp
ZmljYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlv
bl9kZWxldGUoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShp
dGVyKTsKKyAgICB9CiB9CiAKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpz
aG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbm90aWZpY2F0aW9uLT50YWcoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZm9yIChOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25v
dGlmaWNhdGlvbnMuYmVnaW4oKTsgaXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7ICsraXRl
cikKKyAgICAgICAgICAgIGlmIChpdGVyLT5maXJzdC0+dGFnKCkgPT0gbm90aWZpY2F0aW9uLT50
YWcoKSAmJiBpdGVyLT5maXJzdC0+dXJsKCkucHJvdG9jb2woKSA9PSBub3RpZmljYXRpb24tPnVy
bCgpLnByb3RvY29sKCkgJiYgaXRlci0+Zmlyc3QtPnVybCgpLmhvc3QoKSA9PSBub3RpZmljYXRp
b24tPnVybCgpLmhvc3QoKSkgeworICAgICAgICAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLGNhbmNlbCIsIHN0YXRpY19jYXN0PHZv
aWQqPihpdGVyLT5zZWNvbmQpKTsKKyAgICAgICAgICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVt
b3ZlKGl0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgIH0K
KworICAgIC8vIEZJWE1FOiBIVE1MIG5vdGlmaWNhdGlvbnMgaXMgbm90IHN1cHBvcnRlZC4KKyAg
ICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBld2tfbm90aWZpY2F0aW9uX2Ny
ZWF0ZShtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRpb24sc2hvdyIsIHN0YXRpY19jYXN0PHZvaWQqPihl
d2tOb3RpZmljYXRpb24pKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuYWRkKG5vdGlmaWNhdGlvbiwg
ZXdrTm90aWZpY2F0aW9uKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTm90aWZpY2F0aW9uTWFwOjppdGVyYXRv
ciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRl
ciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRpb24sY2FuY2VsIiwgc3RhdGljX2Nhc3Q8
dm9pZCo+KGl0ZXItPnNlY29uZCkpOworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0
ZXIpOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5v
dGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIENhbGxlZCBmcm9tIH5Ob3RpZmljYXRpb24o
KSwgUmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBub3RpZmljYXRpb25zIGxpc3QuCisgICAgTm90
aWZpY2F0aW9uTWFwOjppdGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZp
Y2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAg
ICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3Rp
ZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFN0cmluZyBkb21haW4g
PSBjb250ZXh0LT51cmwoKS5ob3N0KCk7CisgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3Rz
LmFkZChkb21haW4sIGNhbGxiYWNrKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCBzdGF0aWNfY2Fz
dDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4oZG9tYWluLnV0ZjgoKS5kYXRhKCkpKSk7CiB9Cisj
ZW5kaWYKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCitOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFBlcm1pc3Npb25zTWFwOjpp
dGVyYXRvciBpdGVyID0gbV9jYWNoZWRQZXJtaXNzaW9ucy5maW5kKGNvbnRleHQtPnVybCgpLmhv
c3QoKSk7CisKKyAgICBpZiAoaXRlciA9PSBtX2NhY2hlZFBlcm1pc3Npb25zLmVuZCgpKQorICAg
ICAgICByZXR1cm4gUGVybWlzc2lvbk5vdEFsbG93ZWQ7CisKKyAgICBpZiAoaXRlci0+c2Vjb25k
KQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7CisKICAgICByZXR1cm4gUGVybWlz
c2lvbkRlbmllZDsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNh
bmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgU3RyaW5nIGRvbWFpbiA9IGNvbnRleHQt
PnVybCgpLmhvc3QoKTsKKyAgICBQZXJtaXNzaW9uUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXRlciA9
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5maW5kKGRvbWFpbik7CisgICAgaWYgKGl0ZXIg
IT0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmVuZCgpKSB7CisgICAgICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLHBlcm1pc3Npb24s
Y2FuY2VsIiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KGRvbWFpbi51dGY4
KCkuZGF0YSgpKSkpOworICAgICAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMucmVtb3Zl
KGRvbWFpbik7CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6YWRkUGVybWlzc2lvbihjb25zdCBjaGFyKiBkb21haW4sIGNvbnN0IGJvb2wgaXNBbGxvd2Vk
KQoreworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5n
UGVybWlzc2lvblJlcXVlc3RzLmZpbmQoU3RyaW5nKGRvbWFpbikpOworICAgIGlmIChpdGVyICE9
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5lbmQoKSkgeworICAgICAgICBpZiAoaXNBbGxv
d2VkKQorICAgICAgICAgICAgaXRlci0+c2Vjb25kLT5oYW5kbGVFdmVudCgpOworICAgICAgICBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMucmVtb3ZlKGl0ZXIpOworICAgIH0KKyAgICBtX2Nh
Y2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmcoZG9tYWluKSwgaXNBbGxvd2VkKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCA1NTE3NGU3Li4yMzRiODQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAtMjIsMjMgKzIyLDQyIEBACiAK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNl
bnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgImV3a19u
b3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVyIHsKLQorY2xhc3MgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlmaWNhdGlvbkNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CisgICAgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKICAgICB+Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3Rp
ZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopOwogICAg
IHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKik7
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKyNp
ZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQ
ZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4pOwotICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNr
UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisjZW5kaWYKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrPikgeyB9CisjZW5kaWYKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlz
c2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOworCisgICAgdm9pZCBhZGRQZXJtaXNzaW9uKGNvbnN0IGNoYXIqIGRvbWFpbiwgYm9vbCBp
c0FsbG93ZWQpOworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CisKKyAgICB0
eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgRXdrX05vdGlmaWNhdGlvbio+
IE5vdGlmaWNhdGlvbk1hcDsKKyAgICBOb3RpZmljYXRpb25NYXAgbV9ub3RpZmljYXRpb25zOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+
ID4gUGVybWlzc2lvblJlcXVlc3RNYXA7CisgICAgUGVybWlzc2lvblJlcXVlc3RNYXAgbV9wZW5k
aW5nUGVybWlzc2lvblJlcXVlc3RzOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGJvb2w+
IFBlcm1pc3Npb25zTWFwOworICAgIFBlcm1pc3Npb25zTWFwIG1fY2FjaGVkUGVybWlzc2lvbnM7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMxOTcwYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcApAQCAtMCwwICsx
LDE0MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisK
KyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3QgX0V3a19Ob3RpZmljYXRp
b24geworICAgIEV2YXNfT2JqZWN0KiB2aWV3OworICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uOworfTsKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCitXZWJDb3JlOjpOb3RpZmljYXRpb24qIGV3a19ub3RpZmlj
YXRpb25fZ2V0X25vdGlmaWNhdGlvbihFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
Cit7CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uOworfQorCitFd2tf
Tm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShFdmFzX09iamVjdCogdmlldywg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRXdrX05vdGlmaWNh
dGlvbiogZXdrTm90aWZpY2F0aW9uID0gbmV3IEV3a19Ob3RpZmljYXRpb247CisgICAgZXdrTm90
aWZpY2F0aW9uLT52aWV3ID0gdmlldzsKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
biA9IG5vdGlmaWNhdGlvbjsKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uOworfQorCit2b2lk
IGV3a19ub3RpZmljYXRpb25fZGVsZXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyAgICBkZWxldGUgZXdrTm90aWZpY2F0aW9uOworfQorI2VuZGlmCisKK3ZvaWQgZXdr
X25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwq
IGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlv
bi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRp
b24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNs
aWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+
dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25f
ZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRp
b24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNs
aWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+
dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbi0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25f
ZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xp
ZW50ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52
aWV3KTsKKyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZp
Y2F0aW9uLT5kaXNwYXRjaFNob3dFdmVudCgpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoRXZl
bnQoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZGlzcGxheUV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyNlbmRpZgorI2VuZGlmCisgICAgfQorfQorCitFaW5hX1N0
cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90aWZpY2F0aW9uKiBl
d2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoZXdr
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK0VpbmFfU3RyaW5nc2hhcmUqIGV3a19ub3Rp
ZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikK
K3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQorICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbi0+aWNvblVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitFaW5hX1N0cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0
aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAg
IHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
bi0+Ym9keSgpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitFaW5hX1N0cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQoRXdrX05vdGlm
aWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8
fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hh
cmVfYWRkKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT50YWcoKS51dGY4KCkuZGF0YSgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworRWluYV9TdHJpbmdzaGFyZSog
ZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbi0+ZGlyKCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZDI3ZTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworLyoqCisgKiBAZmlsZSAgICBld2tfbm90aWZpY2F0aW9uLmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgd2ViIG5vdGlmaWNhdGlvbiBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8vIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTm90aWZpY2F0aW9uLgordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlvbjsKKworc3RydWN0IF9Fd2tfTm90aWZp
Y2F0aW9uX1Blcm1pc3Npb24geworICAgIGNoYXIqIGRvbWFpbjsKKyAgICBib29sIGlzQWxsb3dl
ZDsKK307CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Ob3RpZmljYXRpb25f
UGVybWlzc2lvbi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb24g
RXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uOworCisvKioKKyAqIERpc3BhdGNoIGNsaWNrIGV2
ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBl
biBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBjbGljayBldmVudC4KKyAqLwor
RUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xpY2soRXdrX05vdGlmaWNhdGlv
biogZW4pOworCisvKioKKyAqIERpc3BhdGNoIGNsb3NlIGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0
IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0
IGZvciBkaXNwYXRjaGluZyBjbG9zZSBldmVudC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmlj
YXRpb25fZGlzcGF0Y2hfY2xvc2UoRXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIERp
c3BhdGNoIGVycm9yIGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgor
ICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBlcnJv
ciBldmVudC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfZXJyb3Io
RXdrX05vdGlmaWNhdGlvbiogZW4pOworCisvKioKKyAqIERpc3BhdGNoIHNob3cvZGlzcGFseSBl
dmVudCB0byB0aGUgamF2YXNjcmlwdCBjYWxsYmFjayBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0g
ZW4gbm90aWZpY2F0aW9uIG9iamVjdCBmb3IgZGlzcGF0Y2hpbmcgc2hvdy9kaXNwbGF5IGV2ZW50
LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3a19Ob3Rp
ZmljYXRpb24qIGVuKTsKKworLyoqCisgKiBHZXQgdGl0bGUgZnJvbSBAYyBFd2tfTm90aWZpY2F0
aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0LgorICogCisgKiBAcmV0
dXJuIHRpdGxlIG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2ggaGFzIHRvIGJlIGRlbGV0ZWQgYnkg
ZWluYV9zdHJpbmdzaGFyZV9kZWwgYWZ0ZXIgdXNpbmcgaXQuCisgKi8KK0VBUEkgRWluYV9TdHJp
bmdzaGFyZSogZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoRXdrX05vdGlmaWNhdGlvbiogZW4p
OworCisvKioKKyAqIEdldCBpY29uIHVybCBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgor
ICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKiAKKyAqIEByZXR1cm4gaWNvbiB1
cmwgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMgdG8gYmUgZGVsZXRlZCBieSBlaW5hX3N0
cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBFaW5hX1N0cmluZ3NoYXJl
KiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChFd2tfTm90aWZpY2F0aW9uKiBlbik7CisK
Ky8qKgorICogR2V0IGJvZHkgY29udGVudHMgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoK
KyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0LgorICogCisgKiBAcmV0dXJuIGJvZHkg
Y29udGVudHMgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMgdG8gYmUgZGVsZXRlZCBieSBl
aW5hX3N0cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBFaW5hX1N0cmlu
Z3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGVuKTsK
KworLyoqCisgKiBHZXQgdGFnL3JlcGxhY2VkIGlkIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4K
KyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdC4KKyAqIAorICogQHJldHVybiB0
YWcvcmVwbGFjZWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMgdG8gYmUgZGVsZXRl
ZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBFaW5h
X1N0cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQoRXdrX05vdGlmaWNhdGlvbiog
ZW4pOworCisvKioKKyAqIEdldCBkaXJlY3Rpb24gZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgor
ICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0LgorICogCisgKiBAcmV0dXJuIGRp
cmVjdGlvbiBvZiB0aGUgbm90aWZpY2F0aW9uIHdoaWNoIGhhcyB0byBiZSBkZWxldGVkIGJ5IGVp
bmFfc3RyaW5nc2hhcmVfZGVsIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIEVpbmFfU3RyaW5n
c2hhcmUqIGV3a19ub3RpZmljYXRpb25fZGlyX2dldChFd2tfTm90aWZpY2F0aW9uKiBlbik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlv
bl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9u
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzFkNDIwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisjZGVm
aW5lIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24u
aCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCitXZWJDb3JlOjpOb3RpZmlj
YXRpb24qIGV3a19ub3RpZmljYXRpb25fZ2V0X25vdGlmaWNhdGlvbihFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pOworRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9j
cmVhdGUoRXZhc19PYmplY3QqLCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7
Cit2b2lkIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbik7CisKKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3NldHRpbmdzX3ByaXZhdGVfaAor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCAyYWViYjg5Li45ZDQ0ZGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTg4LDYgKzg4LDExIEBACiAjaW5jbHVkZSAi
QmF0dGVyeUNsaWVudEVmbC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIK
KyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjZW5kaWYKQEAgLTc0NSw2ICs3NTAsMTAgQEAgc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKICAgICBXZWJDb3JlOjpwcm92aWRlQmF0dGVyeVRvKHByaXYtPnBhZ2UuZ2V0
KCksIG5ldyBXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBXZWJD
b3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKSk7CisjZW5kaWYK
KwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncyA9IHByaXYtPnBhZ2UtPnNldHRpbmdzKCk7CiAKICAg
ICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzOjpWYWx1ZUF1dG87CkBAIC00MzY5LDYgKzQzNzgsMjQgQEAgRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfd2ViX2F1ZGlvX3NldChFdmFzX09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVu
YWJsZSkKICNlbmRpZgogfQogCit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9u
c19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGRvbWFpbiwgRWluYV9Cb29s
IGlzQWxsb3dlZCkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEp
OworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwcml2LT5wYWdlLmdldCgpKSktPmFkZFBl
cm1pc3Npb24oZG9tYWluLCBpc0FsbG93ZWQpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBld2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50
X2dldChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OmNsaWVudEZyb20ocHJpdi0+cGFnZS5nZXQoKSkpOworfQorI2VuZGlmCisKIG5h
bWVzcGFjZSBFV0tQcml2YXRlIHsKIAogV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCmluZGV4IDVlM2U4NjIu
LjY5MmM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCkBAIC03Miw2ICs3MiwxMCBAQAog
ICogIC0gIm1peGVkY29udGVudCxkaXNwbGF5ZWQiLCB2b2lkOiBhbnkgb2YgdGhlIGNvbnRhaW5p
bmcgZnJhbWVzIGhhcyBsb2FkZWQgYW5kIGRpc3BsYXllZCBtaXhlZCBjb250ZW50LgogICogIC0g
Im1peGVkY29udGVudCxydW4iLCB2b2lkOiBhbnkgb2YgdGhlIGNvbnRhaW5pbmcgZnJhbWVzIGhh
cyBsb2FkZWQgYW5kIHJ1biBtaXhlZCBjb250ZW50LgogICogIC0gIm5hdmlnYXRlLHdpdGgsZGF0
YSIsIEV3a19WaWV3X05hdmlnYXRpb25fRGF0YSo6IHJlcG9ydHMgdGhhdCB2aWV3IGRpZCBuYXZp
Z2F0aW9uIGFuZCBnaXZlcyB0aGUgbmF2aWdhdGlvbiBkZXRhaWxzLgorICogIC0gIm5vdGlmaWNh
dGlvbixjYW5jZWwiLCBFd2tfTm90aWZpY2F0aW9uKjogcmVxdWVzdCB0byBjYW5jZWwgbm90aWZp
Y2F0aW9uIHNob3dpbmcuCisgKiAgLSAibm90aWZpY2F0aW9uLHNob3ciLCBFd2tfTm90aWZpY2F0
aW9uKjogcmVxdWVzdCB0byBzaG93IG5vdGlmaWNhdGlvbi4KKyAqICAtICJub3RpZmljYXRpb24s
cGVybWlzc2lvbixjYW5jZWwiLCBjb25zdCBjaGFyKjogcmVxdWVzdCB0byBjYW5jZWwgcGVybWlz
c2lvbiByZXF1ZXN0aW5nIGZvciBkb21haW4uCisgKiAgLSAibm90aWZpY2F0aW9uLHBlcm1pc3Np
b24scmVxdWVzdCIsIGNvbnN0IGNoYXIqOiByZXF1ZXN0IHRvIGNvbmZpcm0gcGVybWlzc2lvbiBm
b3IgZG9tYWluIGZyb20gdWVzci4KICAqICAtICJwZXJmb3JtLGNsaWVudCxyZWRpcmVjdCIsIEV3
a19WaWV3X1JlZGlyZWN0aW9uX0RhdGEqOiByZXBvcnRzIHRoYXQgdmlldyBwZXJmb3JtZWQgYSBj
bGllbnQgcmVkaXJlY3QgYW5kIGdpdmVzIHRoZSByZWRpcmVjdGlvbiBkZXRhaWxzLgogICogIC0g
InBlcmZvcm0sc2VydmVyLHJlZGlyZWN0IiwgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSo6IHJl
cG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1lZCBhIHNlcnZlciByZWRpcmVjdCBhbmQgZ2l2ZXMgdGhl
IHJlZGlyZWN0aW9uIGRldGFpbHMuCiAgKiAgLSAicHJvdG9jb2xoYW5kbGVyLHJlZ2lzdHJhdGlv
bixyZXF1ZXN0ZWQiLCBFd2tfQ3VzdG9tX0hhbmRsZXJfRGF0YTogYWRkIGEgaGFuZGxlciB1cmwg
Zm9yIHRoZSBnaXZlbiBwcm90b2NvbC4KQEAgLTI2MjQsNiArMjYyOCwxNSBAQCBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOwogICovCiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19z
ZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogCisvKioKKyAqIFNldCBwZXJt
aXNzaW9uIGNhY2hlIGxpc3QgZm9yIG5vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB0byBzZXQgdGhlIHBlcm1pc3Npb24gY2FjaGUgbGlzdC4KKyAqIEBwYXJhbSBkb21h
aW4gc3RyaW5nIGZvciBkZXRlcm1pbmUgcGVybWlzc2lvbi4KKyAqIEBwYXJhbSBpc0FsbG93ZWQg
QGMgRUlOQV9UUlVFIHRvIHBlcm1pdCwgQGMgRUlOQV9GQUxTRSB0byBkZW55LgorICovCitFQVBJ
IHZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zX3NldChFdmFzX09iamVjdCog
bywgY29uc3QgY2hhciogZG9tYWluLCBFaW5hX0Jvb2wgaXNBbGxvd2VkKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oCmluZGV4IGI3NDRlMTUuLmVjNjVkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3ByaXZhdGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDb2xvcjsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgotCitjbGFzcyBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiB9CiAK
QEAgLTE1NCw2ICsxNTQsMTAgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGlu
Z19vYmplY3RfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX04KIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEKiBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0
X2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRVdLUHJpdmF0ZSB7
CiBXZWJDb3JlOjpQYWdlICpjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdrVmlldyk7CiBQ
bGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQzNWI5
ODUuLjY0OGE3YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNCAgS2lob25nIEt3b24gIDxraWhvbmcu
a3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZp
Y2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgRU5BQkxFX05PVElGSUNBVElPTlMgYW5kIEVOQUJMRV9SRUdBQ1lfTk9USUZJQ0FUSU9O
UyBmb3IgdGhlIEVGTC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbToKKwogMjAxMi0wNi0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2Vzc191bml0
dGVzdC5UZXN0U2VydmVyUHJvY2Vzcy50ZXN0X2Jhc2ljIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggZTk2ODUxZi4uYzRkZDFjNiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjQ5LDcgKzI0OSw3IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIi
LCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkamF2YXNjcmlwdERlYnVnZ2VyU3VwcG9ydCB9LAog
CiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xl
IExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
TEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9
PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlz
RWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7
IG9wdGlvbiA9PiAibGVnYWN5LXdlYmtpdC1ibG9iLWJ1aWxkZXIiLCBkZXNjID0+ICJUb2dnbGUg
TGVnYWN5IFdlYktpdCBCbG9iIEJ1aWxkZXIgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiIsIGRlZmF1bHQgPT4gKGlzR3RrKCkgfHwg
aXNDaHJvbWl1bSgpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCRsZWdhY3lXZWJLaXRC
bG9iQnVpbGRlclN1cHBvcnQgfSwKQEAgLTI5MSw3ICsyOTEsNyBAQCBteSBAZmVhdHVyZXMgPSAo
CiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZs
KCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAi
bm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFj
a0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8
fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBv
cHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlv
biBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9F
VkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9u
RXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="review"
          id="152872"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145722</attachid>
            <date>2012-06-05 01:26:42 -0700</date>
            <delta_ts>2012-06-11 04:10:08 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>notificationEfl03.patch</filename>
            <type>text/plain</type>
            <size>27806</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2YwOWJlOC4uODMxMjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0wNSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQg
ZXdrX25vdGlmaWNhdGlvbi5jcHAuCisKIDIwMTItMDYtMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0
b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRG9uJ3QgdXNlIFdlYktp
dCBIQVZFKCkgbWFjcm8gaW4gcHVibGljIFF0IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IDJkZWY4NjkuLmMzNWU3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzcs
OSArNzcsOCBAQCBJRiAoRU5BQkxFX05FVFdPUktfSU5GTykKIEVORElGICgpCiAKIElGIChFTkFC
TEVfTk9USUZJQ0FUSU9OUykKLSAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKLSAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKLSAgKQorICBMSVNUKEFQUEVO
RCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25z
KQorICBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUyBlZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
Y3BwKQogRU5ESUYgKCkKIAogTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCAzNjA1NmE5Li4xYmRkOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDYtMDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9y
dGluZyB3ZWIgbm90aWZpY2F0aW9uIG9uIHRoZSBFRkwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2Ugc3VwcG9ydCBmb2xsb3dpbmcgYXBpcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElz
IDogY3JlYXRlTm90aWZpY2F0aW9ucywgY2hlY2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lv
biwgc2hvdywgY2FuY2VsLgorICAgICAgICBFdmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25l
cnJvciwgb25jbG9zZSwgb25jbGljay4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpj
aGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19O
b3RpZmljYXRpb24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9kZWxldGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9k
aXNwYXRjaF9jbGljayk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Nsb3Nl
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfZXJyb3IpOgorICAgICAgICAo
ZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25vdGlm
aWNhdGlvbl9yZXBsYWNlX2lkX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpcl9n
ZXQpOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tf
dmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbnNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X25v
dGlmaWNhdGlvbl9jbGllbnRfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTIt
MDYtMDQgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gUmVmYWN0b3IgZXdrX3ZpZXdfY29udGV4dF9wYWludCBjb2RlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKaW5kZXggZTMzNzM1MS4uZjcyMTE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCkBAIC0yMSw1MyArMjEsMTA5IEBACiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgImV3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCitOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbChFdmFz
X09iamVjdCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQogewogfQogCiBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKQogewor
ICAgIHdoaWxlICghbV9ub3RpZmljYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBOb3RpZmlj
YXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsKKyAgICAg
ICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3Rp
ZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CiB9CiAKIGJvb2wgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbm90aWZpY2F0
aW9uLT50YWcoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChOb3RpZmljYXRpb25NYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsgaXRlciAhPSBtX25vdGlmaWNh
dGlvbnMuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAgIGlmIChpdGVyLT5maXJzdC0+dGFnKCkg
PT0gbm90aWZpY2F0aW9uLT50YWcoKSAmJiBpdGVyLT5maXJzdC0+dXJsKCkucHJvdG9jb2woKSA9
PSBub3RpZmljYXRpb24tPnVybCgpLnByb3RvY29sKCkgJiYgaXRlci0+Zmlyc3QtPnVybCgpLmhv
c3QoKSA9PSBub3RpZmljYXRpb24tPnVybCgpLmhvc3QoKSkgeworICAgICAgICAgICAgICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLGNhbmNl
bCIsIHN0YXRpY19jYXN0PHZvaWQqPihpdGVyLT5zZWNvbmQpKTsKKyAgICAgICAgICAgICAgICBt
X25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBIVE1MIG5vdGlmaWNhdGlvbnMgaXMg
bm90IHN1cHBvcnRlZC4KKyAgICBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24gPSBl
d2tfbm90aWZpY2F0aW9uX2NyZWF0ZShtX3ZpZXcsIG5vdGlmaWNhdGlvbik7CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRpb24sc2hvdyIsIHN0
YXRpY19jYXN0PHZvaWQqPihld2tOb3RpZmljYXRpb24pKTsKKyAgICBtX25vdGlmaWNhdGlvbnMu
YWRkKG5vdGlmaWNhdGlvbiwgZXdrTm90aWZpY2F0aW9uKTsKKworICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgTm90aWZp
Y2F0aW9uTWFwOjppdGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRpb24sY2Fu
Y2VsIiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGl0ZXItPnNlY29uZCkpOworICAgICAgICBtX25vdGlm
aWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIENhbGxlZCBm
cm9tIH5Ob3RpZmljYXRpb24oKSwgUmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBub3RpZmljYXRp
b25zIGxpc3QuCisgICAgTm90aWZpY2F0aW9uTWFwOjppdGVyYXRvciBpdGVyID0gbV9ub3RpZmlj
YXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlv
bnMuZW5kKCkpIHsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoaXRlci0+c2Vjb25k
KTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9CiB9CiAKIHZv
aWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25Db250cm9sbGVy
RGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6
OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIFN0cmluZyBkb21haW4gPSBjb250ZXh0LT51cmwoKS5ob3N0KCk7CisgICAgbV9wZW5kaW5n
UGVybWlzc2lvblJlcXVlc3RzLmFkZChkb21haW4sIGNhbGxiYWNrKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJl
cXVlc3QiLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4oZG9tYWluLnV0Zjgo
KS5kYXRhKCkpKSk7CiB9CisjZW5kaWYKIAotTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNz
aW9uIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFBlcm1pc3Npb25zTWFwOjppdGVyYXRvciBpdGVyID0gbV9jYWNoZWRQZXJtaXNzaW9ucy5maW5k
KGNvbnRleHQtPnVybCgpLmhvc3QoKSk7CisKKyAgICBpZiAoaXRlciA9PSBtX2NhY2hlZFBlcm1p
c3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbk5vdEFsbG93ZWQ7CisKKyAg
ICBpZiAoaXRlci0+c2Vjb25kKQorICAgICAgICByZXR1cm4gUGVybWlzc2lvbkFsbG93ZWQ7CisK
ICAgICByZXR1cm4gUGVybWlzc2lvbkRlbmllZDsKIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRFZmw6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgU3RyaW5n
IGRvbWFpbiA9IGNvbnRleHQtPnVybCgpLmhvc3QoKTsKKyAgICBQZXJtaXNzaW9uUmVxdWVzdE1h
cDo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5maW5kKGRvbWFp
bik7CisgICAgaWYgKGl0ZXIgIT0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmVuZCgpKSB7
CisgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZp
Y2F0aW9uLHBlcm1pc3Npb24sY2FuY2VsIiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8
Y2hhcio+KGRvbWFpbi51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMucmVtb3ZlKGRvbWFpbik7CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6YWRkUGVybWlzc2lvbihjb25zdCBjaGFyKiBkb21haW4sIGNv
bnN0IGJvb2wgaXNBbGxvd2VkKQoreworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwOjppdGVyYXRv
ciBpdGVyID0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmZpbmQoU3RyaW5nKGRvbWFpbikp
OworICAgIGlmIChpdGVyICE9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5lbmQoKSkgewor
ICAgICAgICBpZiAoaXNBbGxvd2VkKQorICAgICAgICAgICAgaXRlci0+c2Vjb25kLT5oYW5kbGVF
dmVudCgpOworICAgICAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMucmVtb3ZlKGl0ZXIp
OworICAgIH0KKyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmFkZChTdHJpbmcoZG9tYWluKSwgaXNB
bGxvd2VkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAppbmRleCA1
NTE3NGU3Li4yMzRiODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaApAQCAt
MjIsMjMgKzIyLDQyIEBACiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5o
IgorI2luY2x1ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVy
IHsKLQorY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGljIE5vdGlm
aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKCk7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2
aWV3KTsKICAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5v
dGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXJEZXN0cm95ZWQoKTsKKyNpZiBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4pOwotICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVy
OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPikgeyB9CisjZW5kaWYKKyAgICB2aXJ0dWFsIE5vdGlmaWNh
dGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9pZCBhZGRQZXJtaXNzaW9uKGNvbnN0IGNo
YXIqIGRvbWFpbiwgYm9vbCBpc0FsbG93ZWQpOworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0
KiBtX3ZpZXc7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwg
RXdrX05vdGlmaWNhdGlvbio+IE5vdGlmaWNhdGlvbk1hcDsKKyAgICBOb3RpZmljYXRpb25NYXAg
bV9ub3RpZmljYXRpb25zOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJD
b3JlOjpWb2lkQ2FsbGJhY2s+ID4gUGVybWlzc2lvblJlcXVlc3RNYXA7CisgICAgUGVybWlzc2lv
blJlcXVlc3RNYXAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzOworICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+IFBlcm1pc3Npb25zTWFwOworICAgIFBlcm1pc3Npb25zTWFwIG1f
Y2FjaGVkUGVybWlzc2lvbnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25v
dGlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkZWY0
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0
aW9uLmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tf
bm90aWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1
Y3QgX0V3a19Ob3RpZmljYXRpb24geworICAgIEV2YXNfT2JqZWN0KiB2aWV3OworICAgIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uOworfTsKKworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitFd2tfTm90aWZpY2F0aW9u
KiBld2tfbm90aWZpY2F0aW9uX2NyZWF0ZShFdmFzX09iamVjdCogdmlldywgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uID0gbmV3IEV3a19Ob3RpZmljYXRpb247CisgICAgZXdrTm90aWZpY2F0aW9uLT52
aWV3ID0gdmlldzsKKyAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbiA9IG5vdGlmaWNh
dGlvbjsKKyAgICByZXR1cm4gZXdrTm90aWZpY2F0aW9uOworfQorCit2b2lkIGV3a19ub3RpZmlj
YXRpb25fZGVsZXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyAgICBk
ZWxldGUgZXdrTm90aWZpY2F0aW9uOworfQorI2VuZGlmCisKK3ZvaWQgZXdrX25vdGlmaWNhdGlv
bl9kaXNwYXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNsaWVu
dCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+dmll
dyk7CisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRp
b24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOworI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNh
dGlvbl9kaXNwYXRjaF9jbG9zZShFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNs
aWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+
dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25f
ZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRp
b24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KGV3a05vdGlmaWNh
dGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBld2tOb3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIGV3a19ub3RpZmlj
YXRpb25fZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQg
ZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlm
aWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90
aWZpY2F0aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uLT5kaXNwYXRjaFNob3dFdmVudCgpOworI2lmIEVOQUJMRShMRUdB
Q1lfTk9USUZJQ0FUSU9OUykKKyAgICAgICAgZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24t
PmRpc3BhdGNoRXZlbnQoV2ViQ29yZTo6RXZlbnQ6OmNyZWF0ZShXZWJDb3JlOjpldmVudE5hbWVz
KCkuZGlzcGxheUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyNlbmRpZgorI2VuZGlmCisgICAgfQor
fQorCitFaW5hX1N0cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gZWluYV9zdHJpbmdz
aGFyZV9hZGQoZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPnRpdGxlKCkudXRmOCgpLmRh
dGEoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK0VpbmFfU3RyaW5nc2hh
cmUqIGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+aWNvblVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitFaW5hX1N0cmluZ3NoYXJlKiBl
d2tfbm90aWZpY2F0aW9uX2JvZHlfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbi0+Ym9keSgpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCitFaW5hX1N0cmluZ3NoYXJlKiBld2tfbm90aWZpY2F0aW9uX3JlcGxh
Y2VfaWRfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIHJl
dHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+
cmVwbGFjZUlkKCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlm
Cit9CisKK0VpbmFfU3RyaW5nc2hhcmUqIGV3a19ub3RpZmljYXRpb25fZGlyX2dldChFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gZWluYV9zdHJpbmdz
aGFyZV9hZGQoZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpcigpLnV0ZjgoKS5kYXRh
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19ub3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xZjNjZjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19u
b3RpZmljYXRpb24uaApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX25vdGlmaWNh
dGlvbi5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIHdlYiBub3RpZmljYXRpb24gQVBJLgor
ICovCisKKyNpZm5kZWYgZXdrX25vdGlmaWNhdGlvbl9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRp
b25faAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX05vdGlm
aWNhdGlvbi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIEV3a19Ob3RpZmljYXRp
b247CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uIHsKKyAgICBjaGFyICpk
b21haW47CisgICAgRWluYV9Cb29sIGFsbG93OworfTsKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBAYSBfRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uLgordHlwZWRlZiBzdHJ1Y3QgX0V3
a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbiBFd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb247CisK
Ky8qKgorICogRGlzcGF0Y2ggY2xpY2sgZXZlbnQgdG8gdGhlIGphdmFzY3JpcHQgY2FsbGJhY2sg
ZnVuY3Rpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QgZm9yIGRpc3Bh
dGNoaW5nIGNsaWNrIGV2ZW50LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNw
YXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogRGlzcGF0Y2ggY2xv
c2UgZXZlbnQgdG8gdGhlIGphdmFzY3JpcHQgY2FsbGJhY2sgZnVuY3Rpb24uCisgKgorICogQHBh
cmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QgZm9yIGRpc3BhdGNoaW5nIGNsb3NlIGV2ZW50Lgor
ICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZShFd2tfTm90aWZp
Y2F0aW9uICplbik7CisKKy8qKgorICogRGlzcGF0Y2ggZXJyb3IgZXZlbnQgdG8gdGhlIGphdmFz
Y3JpcHQgY2FsbGJhY2sgZnVuY3Rpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBv
YmplY3QgZm9yIGRpc3BhdGNoaW5nIGVycm9yIGV2ZW50LgorICovCitFQVBJIHZvaWQgZXdrX25v
dGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgor
ICogRGlzcGF0Y2ggc2hvdy9kaXNwYWx5IGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNr
IGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNw
YXRjaGluZyBzaG93L2Rpc3BsYXkgZXZlbnQuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0
aW9uX2Rpc3BhdGNoX3Nob3coRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIEdldCB0
aXRsZSBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNh
dGlvbiBvYmplY3QuCisgKgorICogQHJldHVybiB0aXRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIHdo
aWNoIGhhcyB0byBiZSBkZWxldGVkIGJ5IGVpbmFfc3RyaW5nc2hhcmVfZGVsIGFmdGVyIHVzaW5n
IGl0LgorICovCitFQVBJIEVpbmFfU3RyaW5nc2hhcmUgKmV3a19ub3RpZmljYXRpb25fdGl0bGVf
Z2V0KEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBHZXQgaWNvbiBVUkwgZnJvbSBA
YyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0
LgorICoKKyAqIEByZXR1cm4gaWNvbiBVUkwgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMg
dG8gYmUgZGVsZXRlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAq
LworRUFQSSBFaW5hX1N0cmluZ3NoYXJlICpld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChF
d2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IGJvZHkgY29udGVudHMgZnJvbSBA
YyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0
LgorICoKKyAqIEByZXR1cm4gYm9keSBjb250ZW50cyBvZiB0aGUgbm90aWZpY2F0aW9uIHdoaWNo
IGhhcyB0byBiZSBkZWxldGVkIGJ5IGVpbmFfc3RyaW5nc2hhcmVfZGVsIGFmdGVyIHVzaW5nIGl0
LgorICovCitFQVBJIEVpbmFfU3RyaW5nc2hhcmUgKmV3a19ub3RpZmljYXRpb25fYm9keV9nZXQo
RXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIEdldCByZXBsYWNlSWQgZnJvbSBAYyBF
d2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0Lgor
ICoKKyAqIEByZXR1cm4gcmVwbGFjZUlkIG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2ggaGFzIHRv
IGJlIGRlbGV0ZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9kZWwgYWZ0ZXIgdXNpbmcgaXQuCisgKi8K
K0VBUEkgRWluYV9TdHJpbmdzaGFyZSAqZXdrX25vdGlmaWNhdGlvbl9yZXBsYWNlX2lkX2dldChF
d2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IGRpcmVjdGlvbiBmcm9tIEBjIEV3
a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisg
KgorICogQHJldHVybiBkaXJlY3Rpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBoYXMgdG8g
YmUgZGVsZXRlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCBhZnRlciB1c2luZyBpdC4KKyAqLwor
RUFQSSBFaW5hX1N0cmluZ3NoYXJlICpld2tfbm90aWZpY2F0aW9uX2Rpcl9nZXQoRXdrX05vdGlm
aWNhdGlvbiAqZW4pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8v
IGV3a19ub3RpZmljYXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25v
dGlmaWNhdGlvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWJhNzQ3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uX3ByaXZhdGUuaApAQCAtMCwwICsxLDMzIEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9u
X3ByaXZhdGVfaAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKwor
RXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoRXZhc19PYmplY3QqLCBX
ZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRp
b25fZGVsZXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbik7CisKKyNlbmRpZgor
I2VuZGlmIC8vIGV3a19zZXR0aW5nc19wcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKaW5kZXggMmFlYmI4OS4uNzdiMjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCkBAIC04OCw2ICs4OCwxMSBAQAogI2luY2x1ZGUgIkJhdHRlcnlDbGllbnRFZmwuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgiCisjZW5kaWYKKwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2VuZGlm
CkBAIC03NDUsNiArNzUwLDEwIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tf
dmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgV2ViQ29y
ZTo6cHJvdmlkZUJhdHRlcnlUbyhwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6QmF0dGVy
eUNsaWVudEVmbCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgV2ViQ29yZTo6cHJvdmlkZU5vdGlmaWNhdGlv
bihwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKHNtYXJ0RGF0YS0+c2VsZikpOworI2VuZGlmCisKICAgICBwcml2LT5wYWdlU2V0dGlu
Z3MgPSBwcml2LT5wYWdlLT5zZXR0aW5ncygpOwogCiAgICAgcHJpdi0+dmlld3BvcnRBcmd1bWVu
dHMud2lkdGggPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwpAQCAtNDM2
OSw2ICs0Mzc4LDI0IEBAIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19zZXQo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFibGUpCiAjZW5kaWYKIH0KIAordm9p
ZCBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbnNfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBjb25zdCBjaGFyKiBkb21haW4sIEVpbmFfQm9vbCBhbGxvdykKK3sKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIEVXS19W
SUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNt
YXJ0RGF0YSwgcHJpdik7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKj4oV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y2xpZW50
RnJvbShwcml2LT5wYWdlLmdldCgpKSktPmFkZFBlcm1pc3Npb24oZG9tYWluLCBhbGxvdyk7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCitjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRF
ZmwqIGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAw
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsKj4oV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwcml2
LT5wYWdlLmdldCgpKSk7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIEVXS1ByaXZhdGUgewogCiBX
ZWJDb3JlOjpQYWdlKiBjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgKaW5kZXggNWUzZTg2Mi4uMjg5YzJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmgKQEAgLTcyLDYgKzcyLDEwIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3Bs
YXllZCIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQg
ZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6
IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNv
bnRlbnQuCiAgKiAgLSAibmF2aWdhdGUsd2l0aCxkYXRhIiwgRXdrX1ZpZXdfTmF2aWdhdGlvbl9E
YXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgZGlkIG5hdmlnYXRpb24gYW5kIGdpdmVzIHRoZSBuYXZp
Z2F0aW9uIGRldGFpbHMuCisgKiAgLSAibm90aWZpY2F0aW9uLGNhbmNlbCIsIEV3a19Ob3RpZmlj
YXRpb24qOiByZXF1ZXN0IHRvIGNhbmNlbCBub3RpZmljYXRpb24gc2hvd2luZy4KKyAqICAtICJu
b3RpZmljYXRpb24scGVybWlzc2lvbixjYW5jZWwiLCBjb25zdCBjaGFyKjogcmVxdWVzdCB0byBj
YW5jZWwgcGVybWlzc2lvbiByZXF1ZXN0aW5nIGZvciBkb21haW4uCisgKiAgLSAibm90aWZpY2F0
aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNvbnN0IGNoYXIqOiByZXF1ZXN0IHRvIGNvbmZpcm0g
cGVybWlzc2lvbiBmb3IgZG9tYWluIGZyb20gdWVzci4KKyAqICAtICJub3RpZmljYXRpb24sc2hv
dyIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1ZXN0IHRvIHNob3cgbm90aWZpY2F0aW9uLgogICog
IC0gInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0IiwgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSo6
IHJlcG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1lZCBhIGNsaWVudCByZWRpcmVjdCBhbmQgZ2l2ZXMg
dGhlIHJlZGlyZWN0aW9uIGRldGFpbHMuCiAgKiAgLSAicGVyZm9ybSxzZXJ2ZXIscmVkaXJlY3Qi
LCBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgcGVyZm9ybWVk
IGEgc2VydmVyIHJlZGlyZWN0IGFuZCBnaXZlcyB0aGUgcmVkaXJlY3Rpb24gZGV0YWlscy4KICAq
ICAtICJwcm90b2NvbGhhbmRsZXIscmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIsIEV3a19DdXN0b21f
SGFuZGxlcl9EYXRhOiBhZGQgYSBoYW5kbGVyIHVybCBmb3IgdGhlIGdpdmVuIHByb3RvY29sLgpA
QCAtMjYyNCw2ICsyNjI4LDE1IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdf
d2ViX2F1ZGlvX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29s
ICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlvX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sIGVuYWJsZSk7CiAKKy8qKgorICogU2V0IHBlcm1pc3Npb24gY2FjaGUgbGlzdCBmb3Igbm90
aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgcGVybWlz
c2lvbiBjYWNoZSBsaXN0LgorICogQHBhcmFtIGRvbWFpbiBzdHJpbmcgZm9yIGRldGVybWluZSBw
ZXJtaXNzaW9uLgorICogQHBhcmFtIGFsbG93IEBjIEVJTkFfVFJVRSB0byBwZXJtaXQsIEBjIEVJ
TkFfRkFMU0UgdG8gZGVueS4KKyAqLworRUFQSSB2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9w
ZXJtaXNzaW9uc19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmRvbWFpbiwgRWluYV9C
b29sIGFsbG93KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGI3NDRlMTUuLjJmNWJmNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVu
dDsKICNlbmRpZgotCitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw7CiBjbGFz
cyBQb3B1cE1lbnVDbGllbnQ7CiB9CiAKQEAgLTE1NCw2ICsxNTQsMTAgQEAgYm9vbCBld2tfdmll
d19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBFdmFzX04KIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEKiBld2tfdmlld19hY2NlbGVy
YXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dldChFdmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCitjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGV3
a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRfZ2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNl
bmRpZgorCiBuYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CiBXZWJDb3JlOjpQYWdlICpjb3JlUGFnZShj
b25zdCBFdmFzX09iamVjdCAqZXdrVmlldyk7CiBQbGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VD
bGllbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQzNWI5ODUuLmVjNjU2YjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0wNi0wNSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgRU5BQkxFX05PVElGSUNBVElPTlMg
YW5kIEVOQUJMRV9SRUdBQ1lfTk9USUZJQ0FUSU9OUyBmb3IgdGhlIEVGTC4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMi0wNi0wNCAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC5zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5UZXN0U2VydmVyUHJvY2Vzcy50ZXN0
X2Jhc2ljIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5k
ZXggZTk2ODUxZi4uYzRkZDFjNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbQpAQCAtMjQ5LDcgKzI0OSw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwk
amF2YXNjcmlwdERlYnVnZ2VyU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1u
b3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZh
dWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBw
b3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRl
ZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5v
dGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LXdlYmtpdC1i
bG9iLWJ1aWxkZXIiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IFdlYktpdCBCbG9iIEJ1aWxkZXIg
c3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJ
TERFUiIsIGRlZmF1bHQgPT4gKGlzR3RrKCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzQmxhY2tCZXJy
eSgpKSwgdmFsdWUgPT4gXCRsZWdhY3lXZWJLaXRCbG9iQnVpbGRlclN1cHBvcnQgfSwKQEAgLTI5
MSw3ICsyOTEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9O
RVRXT1JLX0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9T
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRv
Z2dsZSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9U
SUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZp
Y2F0aW9uc1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMi
LCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3Rp
ZmljYXRpb25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50
cyIsIGRlc2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tC
ZXJyeSgpLCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="review"
          id="152893"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146824</attachid>
            <date>2012-06-11 04:10:08 -0700</date>
            <delta_ts>2012-06-17 23:37:35 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>notificationEfl04.patch</filename>
            <type>text/plain</type>
            <size>27800</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2YwOWJlOC4uNTNiYmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0xMCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQg
ZXdrX25vdGlmaWNhdGlvbi5jcHAuCisKIDIwMTItMDYtMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0
b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRG9uJ3QgdXNlIFdlYktp
dCBIQVZFKCkgbWFjcm8gaW4gcHVibGljIFF0IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IDJkZWY4NjkuLmMzNWU3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzcs
OSArNzcsOCBAQCBJRiAoRU5BQkxFX05FVFdPUktfSU5GTykKIEVORElGICgpCiAKIElGIChFTkFC
TEVfTk9USUZJQ0FUSU9OUykKLSAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKLSAgICAiJHtXRUJDT1JFX0RJUn0vbm90aWZpY2F0aW9ucyIKLSAgKQorICBMSVNUKEFQUEVO
RCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUyAke1dFQkNPUkVfRElSfS9ub3RpZmljYXRpb25z
KQorICBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUyBlZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
Y3BwKQogRU5ESUYgKCkKIAogTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwppbmRleCA4OTcwMTBlLi4wODlkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDYtMTAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9y
dGluZyB3ZWIgbm90aWZpY2F0aW9uIG9uIHRoZSBFRkwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBw
YXRjaCwgd2Ugc3VwcG9ydCBmb2xsb3dpbmcgQVBJcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElz
IDogY3JlYXRlTm90aWZpY2F0aW9ucywgY2hlY2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lv
biwgc2hvdywgY2FuY2VsLgorICAgICAgICBFdmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25l
cnJvciwgb25jbG9zZSwgb25jbGljay4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZp
Y2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpj
aGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAg
ICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19O
b3RpZmljYXRpb24pOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAg
ICAoZXdrX25vdGlmaWNhdGlvbl9kZWxldGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9k
aXNwYXRjaF9jbGljayk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Nsb3Nl
KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfZXJyb3IpOgorICAgICAgICAo
ZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KToK
KyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fYm9keV9nZXQpOgorICAgICAgICAoZXdrX25vdGlm
aWNhdGlvbl9yZXBsYWNlX2lkX2dldCk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2Rpcl9n
ZXQpOgorICAgICAgICAqIGV3ay9ld2tfbm90aWZpY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGV3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChld2tf
dmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbnNfc2V0KToKKyAgICAgICAgKGV3a192aWV3X25v
dGlmaWNhdGlvbl9jbGllbnRfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXdfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTIt
MDYtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
c3VwcG9ydCBmb3IgdGFyZ2V0LWRlbnNpdHlkcGkgaW4gdGhlIHZpZXdwb3J0IG1ldGEgdGFnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcAppbmRleCBlMzM3MzUxLi5mNzIxMTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5jcHAKQEAgLTIxLDUzICsyMSwx
MDkgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKIAogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCgpCiB7CisgICAgd2hpbGUgKCFtX25vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigp
OworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2RlbGV0ZShpdGVyLT5zZWNvbmQpOworICAgICAg
ICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KIH0KIAogYm9vbCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24p
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFu
b3RpZmljYXRpb24tPnRhZygpLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKE5vdGlmaWNhdGlv
bk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOyBpdGVyICE9IG1f
bm90aWZpY2F0aW9ucy5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgaWYgKGl0ZXItPmZpcnN0
LT50YWcoKSA9PSBub3RpZmljYXRpb24tPnRhZygpICYmIGl0ZXItPmZpcnN0LT51cmwoKS5wcm90
b2NvbCgpID09IG5vdGlmaWNhdGlvbi0+dXJsKCkucHJvdG9jb2woKSAmJiBpdGVyLT5maXJzdC0+
dXJsKCkuaG9zdCgpID09IG5vdGlmaWNhdGlvbi0+dXJsKCkuaG9zdCgpKSB7CisgICAgICAgICAg
ICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJub3RpZmljYXRp
b24sY2FuY2VsIiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGl0ZXItPnNlY29uZCkpOworICAgICAgICAg
ICAgICAgIG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IEhUTUwgbm90aWZpY2F0
aW9ucyBpcyBub3Qgc3VwcG9ydGVkLgorICAgIEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbiA9IGV3a19ub3RpZmljYXRpb25fY3JlYXRlKG1fdmlldywgbm90aWZpY2F0aW9uKTsKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNhdGlvbixz
aG93Iiwgc3RhdGljX2Nhc3Q8dm9pZCo+KGV3a05vdGlmaWNhdGlvbikpOworICAgIG1fbm90aWZp
Y2F0aW9ucy5hZGQobm90aWZpY2F0aW9uLCBld2tOb3RpZmljYXRpb24pOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWwo
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmluZChu
b3RpZmljYXRpb24pOworICAgIGlmIChpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgewor
ICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgIm5vdGlmaWNh
dGlvbixjYW5jZWwiLCBzdGF0aWNfY2FzdDx2b2lkKj4oaXRlci0+c2Vjb25kKSk7CisgICAgICAg
IG1fbm90aWZpY2F0aW9ucy5yZW1vdmUoaXRlcik7CisgICAgfQogfQogCiB2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8g
Q2FsbGVkIGZyb20gfk5vdGlmaWNhdGlvbigpLCBSZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIG5v
dGlmaWNhdGlvbnMgbGlzdC4KKyAgICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBt
X25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pOworICAgIGlmIChpdGVyICE9IG1fbm90
aWZpY2F0aW9ucy5lbmQoKSkgeworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2RlbGV0ZShpdGVy
LT5zZWNvbmQpOworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0K
IH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgU3RyaW5nIGRvbWFpbiA9IGNvbnRleHQtPnVybCgpLmhvc3QoKTsKKyAgICBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuYWRkKGRvbWFpbiwgY2FsbGJhY2spOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAibm90aWZpY2F0aW9uLHBlcm1p
c3Npb24scmVxdWVzdCIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PGNoYXIqPihkb21h
aW4udXRmOCgpLmRhdGEoKSkpKTsKIH0KKyNlbmRpZgogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXI6
OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK05vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgUGVybWlzc2lvbnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlZFBlcm1pc3Np
b25zLmZpbmQoY29udGV4dC0+dXJsKCkuaG9zdCgpKTsKKworICAgIGlmIChpdGVyID09IG1fY2Fj
aGVkUGVybWlzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uTm90QWxsb3dl
ZDsKKworICAgIGlmIChpdGVyLT5zZWNvbmQpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uQWxs
b3dlZDsKKwogICAgIHJldHVybiBQZXJtaXNzaW9uRGVuaWVkOwogfQogCiB2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBTdHJpbmcgZG9tYWluID0gY29udGV4dC0+dXJsKCkuaG9zdCgpOworICAgIFBlcm1pc3Npb25S
ZXF1ZXN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmZp
bmQoZG9tYWluKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMu
ZW5kKCkpIHsKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcs
ICJub3RpZmljYXRpb24scGVybWlzc2lvbixjYW5jZWwiLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29u
c3RfY2FzdDxjaGFyKj4oZG9tYWluLnV0ZjgoKS5kYXRhKCkpKSk7CisgICAgICAgIG1fcGVuZGlu
Z1Blcm1pc3Npb25SZXF1ZXN0cy5yZW1vdmUoZG9tYWluKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjphZGRQZXJtaXNzaW9uKGNvbnN0IGNoYXIqIGRv
bWFpbiwgY29uc3QgYm9vbCBpc0FsbG93ZWQpCit7CisgICAgUGVybWlzc2lvblJlcXVlc3RNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZmluZChTdHJpbmco
ZG9tYWluKSk7CisgICAgaWYgKGl0ZXIgIT0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmVu
ZCgpKSB7CisgICAgICAgIGlmIChpc0FsbG93ZWQpCisgICAgICAgICAgICBpdGVyLT5zZWNvbmQt
PmhhbmRsZUV2ZW50KCk7CisgICAgICAgIG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5yZW1v
dmUoaXRlcik7CisgICAgfQorICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuYWRkKFN0cmluZyhkb21h
aW4pLCBpc0FsbG93ZWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5o
CmluZGV4IDU1MTc0ZTcuLjIzNGI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oCkBAIC0yMiwyMyArMjIsNDIgQEAKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCi0j
aW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
Q2xpZW50LmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgPEV2YXMu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25Q
cmVzZW50ZXIgewotCitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwgOiBwdWJs
aWMgTm90aWZpY2F0aW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRFZmwoKTsKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoRXZhc19P
YmplY3QqIHZpZXcpOwogICAgIH5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWwoTm90aWZpY2F0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVj
dERlc3Ryb3llZChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9u
Q29udHJvbGxlckRlc3Ryb3llZCgpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7Ci0gICAgdmlydHVhbCBOb3RpZmljYXRpb25Q
cmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KSB7IH0KKyNlbmRpZgorICAgIHZpcnR1YWwg
Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlz
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2b2lkIGFkZFBlcm1pc3Npb24o
Y29uc3QgY2hhciogZG9tYWluLCBib29sIGlzQWxsb3dlZCk7CisKK3ByaXZhdGU6CisgICAgRXZh
c19PYmplY3QqIG1fdmlldzsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpOb3RpZmlj
YXRpb24qLCBFd2tfTm90aWZpY2F0aW9uKj4gTm90aWZpY2F0aW9uTWFwOworICAgIE5vdGlmaWNh
dGlvbk1hcCBtX25vdGlmaWNhdGlvbnM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gPiBQZXJtaXNzaW9uUmVxdWVzdE1hcDsKKyAgICBQ
ZXJtaXNzaW9uUmVxdWVzdE1hcCBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHM7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgYm9vbD4gUGVybWlzc2lvbnNNYXA7CisgICAgUGVybWlzc2lv
bnNNYXAgbV9jYWNoZWRQZXJtaXNzaW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbm90aWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44YTcwMDUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19u
b3RpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a19ub3RpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2lu
Y2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKK3N0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiB7CisgICAgRXZhc19PYmplY3QqIHZpZXc7Cisg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb247Cit9OworCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK0V3a19Ob3Rp
ZmljYXRpb24qIGV3a19ub3RpZmljYXRpb25fY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3LCBXZWJD
b3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24gPSBuZXcgRXdrX05vdGlmaWNhdGlvbjsKKyAgICBld2tOb3RpZmlj
YXRpb24tPnZpZXcgPSB2aWV3OworICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uID0g
bm90aWZpY2F0aW9uOworICAgIHJldHVybiBld2tOb3RpZmljYXRpb247Cit9CisKK3ZvaWQgZXdr
X25vdGlmaWNhdGlvbl9kZWxldGUoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGRlbGV0ZSBld2tOb3RpZmljYXRpb247Cit9CisjZW5kaWYKKwordm9pZCBld2tfbm90
aWZpY2F0aW9uX2Rpc3BhdGNoX2NsaWNrKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlv
bikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0
aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50KQorICAgICAgICBld2tOb3RpZmljYXRpb24tPm5v
dGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CisjZW5kaWYKK30KKwordm9pZCBld2tf
bm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Nsb3NlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNh
dGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dEVmbCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZp
Y2F0aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlv
bi0+bm90aWZpY2F0aW9uLT5kaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgZXdrX25vdGlm
aWNhdGlvbl9kZWxldGUoZXdrTm90aWZpY2F0aW9uKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9p
ZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9yKEV3a19Ob3RpZmljYXRpb24qIGV3a05v
dGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZpY2F0aW9uX2NsaWVudF9nZXQoZXdr
Tm90aWZpY2F0aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50KSB7CisgICAgICAgIGV3a05vdGlm
aWNhdGlvbi0+bm90aWZpY2F0aW9uLT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAgICAgZXdr
X25vdGlmaWNhdGlvbl9kZWxldGUoZXdrTm90aWZpY2F0aW9uKTsKKyAgICB9CisjZW5kaWYKK30K
Kwordm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX3Nob3coRXdrX05vdGlmaWNhdGlvbiog
ZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsKiBjbGllbnQgPSBld2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50X2dl
dChld2tOb3RpZmljYXRpb24tPnZpZXcpOworICAgIGlmIChjbGllbnQpIHsKKyAgICAgICAgZXdr
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoU2hvd0V2ZW50KCk7CisjaWYgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlm
aWNhdGlvbi0+ZGlzcGF0Y2hFdmVudChXZWJDb3JlOjpFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2
ZW50TmFtZXMoKS5kaXNwbGF5RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworI2VuZGlmCisjZW5kaWYK
KyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fdGl0bGVfZ2V0KEV3a19O
b3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIHJldHVybiBzdHJkdXAoZXdr
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRp
b25faWNvbl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
ICAgIHJldHVybiBzdHJkdXAoZXdrTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmljb25VUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworY29uc3QgY2hhciogZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dldChFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uLT5ib2R5KCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fcmVwbGFj
ZV9pZF9nZXQoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgcmV0
dXJuIHN0cmR1cChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+cmVwbGFjZUlkKCkudXRm
OCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2NvbnN0IGNo
YXIqIGV3a19ub3RpZmljYXRpb25fZGlyX2dldChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmlj
YXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0
aW9uLT5kaXIoKS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkYTJjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IGV3a19ub3RpZmljYXRpb25faAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX2gKKworI2luY2x1
ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvKioKKyAqIEBmaWxlIGV3a19ub3RpZmljYXRpb24uaAorICogQGJyaWVmIEFQSXMgdG8gaW1w
bGVtZW50IGZvciB0aGUgV2ViIE5vdGlmaWNhdGlvbiBmZWF0dXJlLgorICoKKyAqIFByb3ZpZGUg
QVBJcyB0byBzdXBwb3J0IHRoZSBXZWIgTm90aWZpY2F0aW9uJ3MgY2FsbGJhY2suCisgKiAob25z
aG93LCBvbmRpc3BsYXksIG9uZXJyb3IsIG9uY2xvc2UsIG9uY2xpY2spCisgKiBBbmQgc3VwcG9y
dCBnZXR0ZXIgZm9yIHRoZSBAYyBFd2tfTm90aWZpY2F0aW9uJ3MgYXR0cmlidXRlcy4KKyAqLwor
CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Ob3RpZmljYXRpb24uCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbiBFd2tfTm90aWZpY2F0aW9uOworCitzdHJ1Y3Qg
X0V3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbiB7CisgICAgY2hhciAqZG9tYWluOworICAgIEVp
bmFfQm9vbCBhbGxvdzsKK307CisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19O
b3RpZmljYXRpb25fUGVybWlzc2lvbi4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9u
X1Blcm1pc3Npb24gRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9uOworCisvKioKKyAqIERpc3Bh
dGNoIGNsaWNrIGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoK
KyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBjbGljayBl
dmVudC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xpY2soRXdr
X05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIERpc3BhdGNoIGNsb3NlIGV2ZW50IHRvIHRo
ZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmlj
YXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBjbG9zZSBldmVudC4KKyAqLworRUFQSSB2b2lk
IGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xvc2UoRXdrX05vdGlmaWNhdGlvbiAqZW4pOwor
CisvKioKKyAqIERpc3BhdGNoIGVycm9yIGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNr
IGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNw
YXRjaGluZyBlcnJvciBldmVudC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlz
cGF0Y2hfZXJyb3IoRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIERpc3BhdGNoIHNo
b3cvZGlzcGFseSBldmVudCB0byB0aGUgamF2YXNjcmlwdCBjYWxsYmFjayBmdW5jdGlvbi4KKyAq
CisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdCBmb3IgZGlzcGF0Y2hpbmcgc2hvdy9k
aXNwbGF5IGV2ZW50LgorICovCitFQVBJIHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9z
aG93KEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBHZXQgdGl0bGUgZnJvbSBAYyBF
d2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0Lgor
ICoKKyAqIEByZXR1cm4gdGl0bGUgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBhIG5ld2x5
IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBoYXMgdG8gYmUgZGVsZXRlZCBhZnRlciB1c2luZyBpdC4K
KyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChFd2tfTm90
aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IGljb24gVVJMIGZyb20gQGMgRXdrX05vdGlm
aWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdC4KKyAqCisgKiBA
cmV0dXJuIGljb24gVVJMIG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2ggaXMgYSBuZXdseSBhbGxv
Y2F0ZWQgc3RyaW5nLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25faWNv
bl91cmxfZ2V0KEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBHZXQgYm9keSBjb250
ZW50cyBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNh
dGlvbiBvYmplY3QuCisgKgorICogQHJldHVybiBib2R5IGNvbnRlbnRzIG9mIHRoZSBub3RpZmlj
YXRpb24gd2hpY2ggaXMgYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIHRoYXQgaGFzIHRvIGJlIGRl
bGV0ZWQgYWZ0ZXIgdXNpbmcgaXQuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNh
dGlvbl9ib2R5X2dldChFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IHJlcGxh
Y2VJZCBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNh
dGlvbiBvYmplY3QuCisgKgorICogQHJldHVybiByZXBsYWNlSWQgb2YgdGhlIG5vdGlmaWNhdGlv
biB3aGljaCBpcyBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBoYXMgdG8gYmUgZGVsZXRl
ZCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9u
X3JlcGxhY2VfaWRfZ2V0KEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBHZXQgZGly
ZWN0aW9uIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gZW4gbm90aWZp
Y2F0aW9uIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIGRpcmVjdGlvbiBvZiB0aGUgbm90aWZpY2F0
aW9uIHdoaWNoIGlzIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyB0aGF0IGhhcyB0byBiZSBkZWxl
dGVkIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRp
b25fZGlyX2dldChFd2tfTm90aWZpY2F0aW9uICplbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMDQ5NzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzMgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIGV3a19ub3RpZmljYXRpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19ub3RpZmljYXRpb25f
cHJpdmF0ZV9oCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJld2tfbm90
aWZpY2F0aW9uLmgiCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorCitFd2tfTm90aWZpY2F0aW9uKiBld2tfbm90aWZpY2F0aW9uX2Ny
ZWF0ZShFdmFzX09iamVjdCosIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKTsK
K3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZp
Y2F0aW9uKTsKKworI2VuZGlmCisjZW5kaWYgLy8gZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlX2gK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggOTc5OGU5NC4uNWY2NWI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC04OCw2ICs4OCwxMSBAQAogI2luY2x1ZGUg
IkJhdHRlcnlDbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOb3RpZmljYXRpb25D
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmgi
CisjZW5kaWYKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2VuZGlmCkBAIC03NDUsNiArNzUwLDEwIEBAIHN0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpCiAgICAgV2ViQ29yZTo6cHJvdmlkZUJhdHRlcnlUbyhwcml2LT5wYWdlLmdl
dCgpLCBuZXcgV2ViQ29yZTo6QmF0dGVyeUNsaWVudEVmbCk7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgV2Vi
Q29yZTo6cHJvdmlkZU5vdGlmaWNhdGlvbihwcml2LT5wYWdlLmdldCgpLCBuZXcgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZikpOworI2VuZGlm
CisKICAgICBwcml2LT5wYWdlU2V0dGluZ3MgPSBwcml2LT5wYWdlLT5zZXR0aW5ncygpOwogCiAg
ICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMud2lkdGggPSBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50czo6VmFsdWVBdXRvOwpAQCAtNDM2OCw2ICs0Mzc3LDI0IEBAIEVpbmFfQm9vbCBld2tfdmll
d19zZXR0aW5nX3dlYl9hdWRpb19zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBl
bmFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lv
bnNfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKiBkb21haW4sIEVpbmFfQm9v
bCBhbGxvdykKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorICAgIEVXS19WSUVXX1NEX0dFVChld2tWaWV3LCBzbWFydERhdGEpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUKHNtYXJ0RGF0YSwgcHJpdik7CisgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwcml2LT5wYWdlLmdldCgpKSktPmFkZFBlcm1p
c3Npb24oZG9tYWluLCBhbGxvdyk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKj4oV2ViQ29yZTo6Tm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6Y2xpZW50RnJvbShwcml2LT5wYWdlLmdldCgpKSk7Cit9CisjZW5kaWYK
KwogbmFtZXNwYWNlIEVXS1ByaXZhdGUgewogCiBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZShjb25z
dCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggMTNk
MmNkMi4uZmUyNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTcyLDYgKzcyLDEw
IEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZvaWQ6IGFueSBvZiB0aGUgY29u
dGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCiAg
KiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFt
ZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibmF2aWdhdGUsd2l0
aCxkYXRhIiwgRXdrX1ZpZXdfTmF2aWdhdGlvbl9EYXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgZGlk
IG5hdmlnYXRpb24gYW5kIGdpdmVzIHRoZSBuYXZpZ2F0aW9uIGRldGFpbHMuCisgKiAgLSAibm90
aWZpY2F0aW9uLGNhbmNlbCIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1ZXN0IHRvIGNhbmNlbCBu
b3RpZmljYXRpb24gc2hvd2luZy4KKyAqICAtICJub3RpZmljYXRpb24scGVybWlzc2lvbixjYW5j
ZWwiLCBjb25zdCBjaGFyKjogcmVxdWVzdCB0byBjYW5jZWwgcGVybWlzc2lvbiByZXF1ZXN0aW5n
IGZvciBkb21haW4uCisgKiAgLSAibm90aWZpY2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNv
bnN0IGNoYXIqOiByZXF1ZXN0IHRvIGNvbmZpcm0gcGVybWlzc2lvbiBmb3IgZG9tYWluIGZyb20g
dWVzci4KKyAqICAtICJub3RpZmljYXRpb24sc2hvdyIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1
ZXN0IHRvIHNob3cgbm90aWZpY2F0aW9uLgogICogIC0gInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0
IiwgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSo6IHJlcG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1l
ZCBhIGNsaWVudCByZWRpcmVjdCBhbmQgZ2l2ZXMgdGhlIHJlZGlyZWN0aW9uIGRldGFpbHMuCiAg
KiAgLSAicGVyZm9ybSxzZXJ2ZXIscmVkaXJlY3QiLCBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRh
KjogcmVwb3J0cyB0aGF0IHZpZXcgcGVyZm9ybWVkIGEgc2VydmVyIHJlZGlyZWN0IGFuZCBnaXZl
cyB0aGUgcmVkaXJlY3Rpb24gZGV0YWlscy4KICAqICAtICJwcm90b2NvbGhhbmRsZXIscmVnaXN0
cmF0aW9uLHJlcXVlc3RlZCIsIEV3a19DdXN0b21fSGFuZGxlcl9EYXRhOiBhZGQgYSBoYW5kbGVy
IHVybCBmb3IgdGhlIGdpdmVuIHByb3RvY29sLgpAQCAtMjYzNiw2ICsyNjQwLDE1IEBAIEVBUEkg
RWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlvX2dldChjb25zdCBFdmFzX09i
amVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1
ZGlvX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKKy8qKgorICogU2V0
IHBlcm1pc3Npb24gY2FjaGUgbGlzdCBmb3Igbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgcGVybWlzc2lvbiBjYWNoZSBsaXN0LgorICogQHBhcmFt
IGRvbWFpbiBzdHJpbmcgZm9yIGRldGVybWluZSBwZXJtaXNzaW9uLgorICogQHBhcmFtIGFsbG93
IEBjIEVJTkFfVFJVRSB0byBwZXJtaXQsIEBjIEVJTkFfRkFMU0UgdG8gZGVueS4KKyAqLworRUFQ
SSB2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uc19zZXQoRXZhc19PYmplY3Qg
Km8sIGNvbnN0IGNoYXIgKmRvbWFpbiwgRWluYV9Cb29sIGFsbG93KTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5o
CmluZGV4IGI3NDRlMTUuLjk1ZDA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3ByaXZhdGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
b2xvcjsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgotCitjbGFzcyBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiB9CiAKQEAg
LTE1NCw2ICsxNTQsMTAgQEAgYm9vbCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19v
YmplY3RfY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX04KIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEKiBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19jb250ZXh0X2dl
dChFdmFzX09iamVjdCogZXdrVmlldyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCitjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKyNlbmRpZgorCiBuYW1lc3BhY2UgRVdL
UHJpdmF0ZSB7CiBXZWJDb3JlOjpQYWdlICpjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCAqZXdr
Vmlldyk7CiBQbGF0Zm9ybVBhZ2VDbGllbnQgY29yZVBhZ2VDbGllbnQoRXZhc19PYmplY3QqIGV3
a1ZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDhiOGYxOWIuLjlhNDNiYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNi0xMCAgS2lob25nIEt3b24g
IDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMIFN1cHBvcnQgZm9yIFdl
YiBOb3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuYWJsZSBFTkFCTEVfTk9USUZJQ0FUSU9OUyBhbmQgRU5BQkxFX1JFR0FDWV9OT1RJ
RklDQVRJT05TIGZvciB0aGUgRUZMLgorCiAyMDEyLTA2LTEwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEV4cG9zZSBsYXlvdXRUZXN0Q29udHJvbGxlciBhcyB0
ZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNjVh
YjA5NS4uYjVmMTk5OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpA
QCAtMjU0LDcgKzI1NCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkamF2YXNj
cmlwdERlYnVnZ2VyU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmlj
YXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+
IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0s
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQg
PT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNh
dGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LXdlYmtpdC1ibG9iLWJ1
aWxkZXIiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IFdlYktpdCBCbG9iIEJ1aWxkZXIgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiIs
IGRlZmF1bHQgPT4gKGlzR3RrKCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzQmxhY2tCZXJyeSgpKSwg
dmFsdWUgPT4gXCRsZWdhY3lXZWJLaXRCbG9iQnVpbGRlclN1cHBvcnQgfSwKQEAgLTI5Niw3ICsy
OTYsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ORVRXT1JL
X0lORk8iLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkbmV0d29ya0luZm9TdXBwb3J0
IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibm90aWZpY2F0aW9ucyIsIGRlc2MgPT4gIlRvZ2dsZSBO
b3RpZmljYXRpb25zIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FU
SU9OUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkbm90aWZpY2F0aW9u
c1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05PVElGSUNBVElPTlMiLCBkZWZh
dWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpKSwgdmFsdWUgPT4gXCRub3RpZmljYXRp
b25zU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIm9yaWVudGF0aW9uLWV2ZW50cyIsIGRl
c2MgPT4gIlRvZ2dsZSBPcmllbnRhdGlvbiBFdmVudHMgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9PUklFTlRBVElPTl9FVkVOVFMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgp
LCB2YWx1ZSA9PiBcJG9yaWVudGF0aW9uRXZlbnRzU3VwcG9ydCB9LAo=
</data>
<flag name="review"
          id="154182"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148060</attachid>
            <date>2012-06-17 23:37:35 -0700</date>
            <delta_ts>2012-06-18 21:37:55 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>notificationEfl05.patch</filename>
            <type>text/plain</type>
            <size>28990</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWM4Mzg4NS4uYTM5ZjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0xNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQg
ZXdrX25vdGlmaWNhdGlvbi5jcHAuCisKIDIwMTItMDYtMTMgIFJvYmluIENhbyAgPHJvYmluLmNh
b0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEVuYWJsZSBNRURJ
QV9TVFJFQU0gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMmRlZjg2OS4u
MTA3YmVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTEsNiArMTExLDcgQEAgTElT
VChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19qcy5jcHAKICAgICBlZmwv
ZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9ld2svZXdrX25ldHdvcmsuY3BwCisgICAgZWZsL2V3
ay9ld2tfbm90aWZpY2F0aW9uLmNwcAogICAgIGVmbC9ld2svZXdrX3BhaW50X2NvbnRleHQuY3Bw
CiAgICAgZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAogICAgIGVmbC9ld2svZXdrX3Nl
Y3VyaXR5X3BvbGljeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1MmUxMGYwLi4xNTA2YjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTItMDYtMTcgIEtpaG9uZyBLd29u
ICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3Ig
V2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9ydGluZyB3ZWIgbm90aWZpY2F0aW9uIG9uIHRo
ZSBFRkwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2Ugc3VwcG9ydCBmb2xsb3dpbmcg
QVBJcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElzIDogY3JlYXRlTm90aWZpY2F0aW9ucywgY2hl
Y2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lvbiwgc2hvdywgY2FuY2VsLgorICAgICAgICBF
dmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25lcnJvciwgb25jbG9zZSwgb25jbGljay4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjphZGRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Ob3RpZmljYXRpb24pOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZWxldGUp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xpY2sp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZSk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9yKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fZGlzcGF0Y2hfc2hvdyk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6
CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAgIChld2tf
bm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVwbGFj
ZV9pZF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KToKKyAgICAgICAg
KiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBld2svZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0
aW9uX3Blcm1pc3Npb25zX3NldCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fY2xp
ZW50X2dldCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1
ZXN0KToKKyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbmNlbCk6
CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA2LTE1ICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRUZMJ3MgTGF5
b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3Qgc3VwcG9ydCB0aXRsZVRleHREaXJlY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IGUzMzczNTEuLjFiZThkOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsNTMgKzIxLDEx
MiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgogCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAg
IDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCiB7CisgICAgd2hpbGUgKCFtX25vdGlm
aWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgICAgICBld2tfbm90aWZpY2F0aW9u
X2RlbGV0ZShpdGVyLT5zZWNvbmQpOworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0
ZXIpOworICAgIH0KIH0KIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNo
b3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFub3RpZmljYXRpb24tPnRhZygpLmlzRW1wdHko
KSkgeworICAgICAgICBmb3IgKE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90
aWZpY2F0aW9ucy5iZWdpbigpOyBpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgKytpdGVy
KQorICAgICAgICAgICAgaWYgKGl0ZXItPmZpcnN0LT50YWcoKSA9PSBub3RpZmljYXRpb24tPnRh
ZygpCisgICAgICAgICAgICAgICAgJiYgaXRlci0+Zmlyc3QtPnVybCgpLnByb3RvY29sKCkgPT0g
bm90aWZpY2F0aW9uLT51cmwoKS5wcm90b2NvbCgpCisgICAgICAgICAgICAgICAgJiYgaXRlci0+
Zmlyc3QtPnVybCgpLmhvc3QoKSA9PSBub3RpZmljYXRpb24tPnVybCgpLmhvc3QoKSkgeworICAg
ICAgICAgICAgICAgIGV3a19ub3RpZmljYXRpb25fY2FuY2VsKGl0ZXItPnNlY29uZCk7CisgICAg
ICAgICAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogSFRNTCBub3Rp
ZmljYXRpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUobV92aWV3LCBub3RpZmljYXRpb24p
OworICAgIGV3a19ub3RpZmljYXRpb25fc2hvdyhld2tOb3RpZmljYXRpb24pOworICAgIG1fbm90
aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uLCBld2tOb3RpZmljYXRpb24pOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmlu
ZChub3RpZmljYXRpb24pOworICAgIGlmIChpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkg
eworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2NhbmNlbChpdGVyLT5zZWNvbmQpOworICAgICAg
ICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8v
IENhbGxlZCBmcm9tIH5Ob3RpZmljYXRpb24oKSwgUmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBu
b3RpZmljYXRpb25zIGxpc3QuCisgICAgTm90aWZpY2F0aW9uTWFwOjppdGVyYXRvciBpdGVyID0g
bV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25v
dGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoaXRl
ci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFN0cmluZyBkb21haW4gPSBjb250ZXh0LT51cmwoKS5ob3N0KCk7CisgICAg
bV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmFkZChkb21haW4sIGNhbGxiYWNrKTsKKyAgICBl
d2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0KG1fdmlldywgZG9tYWluKTsK
IH0KKyNlbmRpZgogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKK05vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUGVybWlzc2lvbnNN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+dXJs
KCkuaG9zdCgpKTsKKworICAgIGlmIChpdGVyID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkp
CisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uTm90QWxsb3dlZDsKKworICAgIGlmIChpdGVyLT5z
ZWNvbmQpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uQWxsb3dlZDsKKwogICAgIHJldHVybiBQ
ZXJtaXNzaW9uRGVuaWVkOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcgZG9tYWluID0gY29u
dGV4dC0+dXJsKCkuaG9zdCgpOworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwOjppdGVyYXRvciBp
dGVyID0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmZpbmQoZG9tYWluKTsKKyAgICBpZiAo
aXRlciAhPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAgICAgZXdr
X3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FuY2VsKG1fdmlldywgZG9tYWluKTsKKyAg
ICAgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLnJlbW92ZShkb21haW4pOworICAgIH0K
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFkZFBlcm1pc3Npb24o
Y29uc3QgY2hhciogZG9tYWluLCBjb25zdCBib29sIGlzQWxsb3dlZCkKK3sKKyAgICBQZXJtaXNz
aW9uUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0
cy5maW5kKFN0cmluZyhkb21haW4pKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKGlzQWxsb3dlZCkKKyAgICAgICAgICAg
IGl0ZXItPnNlY29uZC0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgbV9wZW5kaW5nUGVybWlzc2lv
blJlcXVlc3RzLnJlbW92ZShpdGVyKTsKKyAgICB9CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5h
ZGQoU3RyaW5nKGRvbWFpbiksIGlzQWxsb3dlZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgKaW5kZXggNTUxNzRlNy4uMjM0Yjg0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgKQEAgLTIyLDIzICsyMiw0MiBAQAogCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb24uaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGlj
IE5vdGlmaWNhdGlvblByZXNlbnRlciB7Ci0KK2NsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25DbGllbnQgewogcHVibGljOgotICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCk7CisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFs
IE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pIHsgfQorI2VuZGlm
CisgICAgdmlydHVhbCBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQg
YWRkUGVybWlzc2lvbihjb25zdCBjaGFyKiBkb21haW4sIGJvb2wgaXNBbGxvd2VkKTsKKworcHJp
dmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbiosIEV3a19Ob3RpZmljYXRpb24qPiBOb3RpZmljYXRpb25NYXA7
CisgICAgTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uczsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxiYWNrPiA+IFBlcm1pc3Npb25SZXF1
ZXN0TWFwOworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwIG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1
ZXN0czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBib29sPiBQZXJtaXNzaW9uc01hcDsK
KyAgICBQZXJtaXNzaW9uc01hcCBtX2NhY2hlZFBlcm1pc3Npb25zOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNlZDIyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIHsKKyAgICBFdmFzX09i
amVjdCogdmlldzsKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbjsKK307
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQorRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIHZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9IG5ldyBFd2tfTm90aWZpY2F0aW9uOwor
ICAgIGV3a05vdGlmaWNhdGlvbi0+dmlldyA9IHZpZXc7CisgICAgZXdrTm90aWZpY2F0aW9uLT5u
b3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbjsK
K30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2RlbGV0ZShFd2tfTm90aWZpY2F0aW9uKiBld2tO
b3RpZmljYXRpb24pCit7CisgICAgZGVsZXRlIGV3a05vdGlmaWNhdGlvbjsKK30KKwordm9pZCBl
d2tfbm90aWZpY2F0aW9uX3Nob3coRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrTm90aWZpY2F0aW9uLT52
aWV3LCAibm90aWZpY2F0aW9uLHNob3ciLCBld2tOb3RpZmljYXRpb24pOworfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fY2FuY2VsKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a05vdGlmaWNhdGlvbi0+
dmlldywgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBld2tOb3RpZmljYXRpb24pOworfQorI2VuZGlm
CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRf
Z2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgZXdr
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOworI2VuZGlm
Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZShFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGll
bnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAg
ICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cisg
ICAgICAgIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQor
I2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlv
bl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkgewor
ICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFcnJvckV2ZW50
KCk7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZp
Y2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50
KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT5kaXNwYXRjaFNob3dF
dmVudCgpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICAgICAgZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoV2ViQ29yZTo6RXZlbnQ6OmNy
ZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
KyNlbmRpZgorI2VuZGlmCisgICAgfQorfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9u
X3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT50aXRsZSgp
LnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitjb25z
dCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChjb25zdCBFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCisgICAgcmV0dXJuIHN0cmR1cChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+Ym9k
eSgpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitj
b25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3JlcGxhY2VfaWRfZ2V0KGNvbnN0IEV3a19Ob3Rp
ZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIHJldHVybiBzdHJkdXAoZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPnJlcGxhY2VJZCgpLnV0ZjgoKS5kYXRhKCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0
aW9uX2Rpcl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQorewor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMp
CisgICAgcmV0dXJuIHN0cmR1cChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlyKCku
dXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE0MmQyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX2gKKyNkZWZpbmUgZXdrX25vdGlmaWNhdGlvbl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBA
ZmlsZSBld2tfbm90aWZpY2F0aW9uLmgKKyAqIEBicmllZiBBUElzIHRvIGltcGxlbWVudCBmb3Ig
dGhlIFdlYiBOb3RpZmljYXRpb24gZmVhdHVyZS4KKyAqCisgKiBQcm92aWRlIEFQSXMgdG8gc3Vw
cG9ydCB0aGUgV2ViIE5vdGlmaWNhdGlvbidzIGNhbGxiYWNrLgorICogKG9uc2hvdywgb25kaXNw
bGF5LCBvbmVycm9yLCBvbmNsb3NlLCBvbmNsaWNrKQorICogQW5kIHN1cHBvcnQgZ2V0dGVyIGZv
ciB0aGUgQGMgRXdrX05vdGlmaWNhdGlvbidzIGF0dHJpYnV0ZXMuCisgKi8KKworLy8vIENyZWF0
ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTm90aWZpY2F0aW9uLgordHlwZWRlZiBzdHJ1Y3Qg
X0V3a19Ob3RpZmljYXRpb24gRXdrX05vdGlmaWNhdGlvbjsKKworc3RydWN0IF9Fd2tfTm90aWZp
Y2F0aW9uX1Blcm1pc3Npb24geworICAgIGNoYXIgKmRvbWFpbjsKKyAgICBFaW5hX0Jvb2wgYWxs
b3c7Cit9OworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIF9Fd2tfTm90aWZpY2F0aW9u
X1Blcm1pc3Npb24uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNhdGlvbl9QZXJtaXNzaW9u
IEV3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbjsKKworLyoqCisgKiBEaXNwYXRjaCBjbGljayBl
dmVudCB0byB0aGUgamF2YXNjcmlwdCBjYWxsYmFjayBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0g
ZW4gbm90aWZpY2F0aW9uIG9iamVjdCBmb3IgZGlzcGF0Y2hpbmcgY2xpY2sgZXZlbnQuCisgKi8K
K0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2NsaWNrKEV3a19Ob3RpZmljYXRp
b24gKmVuKTsKKworLyoqCisgKiBEaXNwYXRjaCBjbG9zZSBldmVudCB0byB0aGUgamF2YXNjcmlw
dCBjYWxsYmFjayBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVj
dCBmb3IgZGlzcGF0Y2hpbmcgY2xvc2UgZXZlbnQuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZp
Y2F0aW9uX2Rpc3BhdGNoX2Nsb3NlKEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBE
aXNwYXRjaCBlcnJvciBldmVudCB0byB0aGUgamF2YXNjcmlwdCBjYWxsYmFjayBmdW5jdGlvbi4K
KyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdCBmb3IgZGlzcGF0Y2hpbmcgZXJy
b3IgZXZlbnQuCisgKi8KK0VBUEkgdm9pZCBld2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9y
KEV3a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBEaXNwYXRjaCBzaG93L2Rpc3BhbHkg
ZXZlbnQgdG8gdGhlIGphdmFzY3JpcHQgY2FsbGJhY2sgZnVuY3Rpb24uCisgKgorICogQHBhcmFt
IGVuIG5vdGlmaWNhdGlvbiBvYmplY3QgZm9yIGRpc3BhdGNoaW5nIHNob3cvZGlzcGxheSBldmVu
dC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfc2hvdyhFd2tfTm90
aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IHRpdGxlIGZyb20gQGMgRXdrX05vdGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdC4KKyAqCisgKiBAcmV0
dXJuIHRpdGxlIG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2ggaXMgYSBuZXdseSBhbGxvY2F0ZWQg
c3RyaW5nIHRoYXQgaGFzIHRvIGJlIGRlbGV0ZWQgYWZ0ZXIgdXNpbmcgaXQuCisgKi8KK0VBUEkg
Y29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl90aXRsZV9nZXQoY29uc3QgRXdrX05vdGlmaWNh
dGlvbiAqZW4pOworCisvKioKKyAqIEdldCBpY29uIFVSTCBmcm9tIEBjIEV3a19Ob3RpZmljYXRp
b24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKgorICogQHJldHVy
biBpY29uIFVSTCBvZiB0aGUgbm90aWZpY2F0aW9uIHdoaWNoIGlzIGEgbmV3bHkgYWxsb2NhdGVk
IHN0cmluZy4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2ljb25fdXJs
X2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IGJvZHkgY29u
dGVudHMgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmlj
YXRpb24gb2JqZWN0LgorICoKKyAqIEByZXR1cm4gYm9keSBjb250ZW50cyBvZiB0aGUgbm90aWZp
Y2F0aW9uIHdoaWNoIGlzIGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyB0aGF0IGhhcyB0byBiZSBk
ZWxldGVkIGFmdGVyIHVzaW5nIGl0LgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIEdl
dCByZXBsYWNlSWQgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBu
b3RpZmljYXRpb24gb2JqZWN0LgorICoKKyAqIEByZXR1cm4gcmVwbGFjZUlkIG9mIHRoZSBub3Rp
ZmljYXRpb24gd2hpY2ggaXMgYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIHRoYXQgaGFzIHRvIGJl
IGRlbGV0ZWQgYWZ0ZXIgdXNpbmcgaXQuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlm
aWNhdGlvbl9yZXBsYWNlX2lkX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8q
KgorICogR2V0IGRpcmVjdGlvbiBmcm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBh
cmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKgorICogQHJldHVybiBkaXJlY3Rpb24gb2Yg
dGhlIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBo
YXMgdG8gYmUgZGVsZXRlZCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBjb25zdCBjaGFyICpl
d2tfbm90aWZpY2F0aW9uX2Rpcl9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19ub3RpZmljYXRpb25f
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbl9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbl9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg5MThmMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUu
aApAQCAtMCwwICsxLDM1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorI2RlZmlu
ZSBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgi
CisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworRXdrX05vdGlmaWNhdGlvbiog
ZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoRXZhc19PYmplY3QqLCBXZWJDb3JlOjpOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKEV3a19Ob3Rp
ZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3RpZmljYXRpb25fc2hvdyhF
d2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOwordm9pZCBld2tfbm90aWZpY2F0aW9u
X2NhbmNlbChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pOworCisjZW5kaWYKKyNl
bmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCA0MDNkYWIxLi5mNjhjMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTkwLDYgKzkwLDExIEBACiAjaW5jbHVkZSAiQmF0dGVyeUNsaWVudEVmbC5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaCIKKyNlbmRpZgorCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjZW5k
aWYKQEAgLTc1Miw2ICs3NTcsMTAgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3
a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBXZWJD
b3JlOjpwcm92aWRlQmF0dGVyeVRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpCYXR0
ZXJ5Q2xpZW50RWZsKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0
aW9uKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmwoc21hcnREYXRhLT5zZWxmKSk7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2VTZXR0
aW5ncyA9IHByaXYtPnBhZ2UtPnNldHRpbmdzKCk7CiAKICAgICBwcml2LT52aWV3cG9ydEFyZ3Vt
ZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CkBAIC00
NDMzLDYgKzQ0NDIsMzggQEAgdm9pZCBld2tfdmlld19jdXJzb3Jfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKICAgICB9CiB9CiAKK3ZvaWQg
ZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25zX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhciogZG9tYWluLCBFaW5hX0Jvb2wgYWxsb3cpCit7CisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBFV0tfVklF
V19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzbWFy
dERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbCo+KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZy
b20ocHJpdi0+cGFnZS5nZXQoKSkpLT5hZGRQZXJtaXNzaW9uKGRvbWFpbiwgYWxsb3cpOworI2Vu
ZGlmCit9CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQorY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
KiBld2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50X2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwg
MCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCo+KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20o
cHJpdi0+cGFnZS5nZXQoKSkpOworfQorCit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJt
aXNzaW9uX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdURjo6U3RyaW5nJiBkb21haW4p
Cit7CisgICAgY2hhciogcmVxdWVzdGVkRG9tYWluID0gc3RyZHVwKGRvbWFpbi51dGY4KCkuZGF0
YSgpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJub3Rp
ZmljYXRpb24scGVybWlzc2lvbixyZXF1ZXN0IiwgcmVxdWVzdGVkRG9tYWluKTsKKyAgICBkZWxl
dGUgcmVxdWVzdGVkRG9tYWluOworfQorCit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJt
aXNzaW9uX2NhbmNlbChFdmFzX09iamVjdCogZXdrVmlldywgV1RGOjpTdHJpbmcmIGRvbWFpbikK
K3sKKyAgICBjaGFyKiByZXF1ZXN0ZWREb21haW4gPSBzdHJkdXAoZG9tYWluLnV0ZjgoKS5kYXRh
KCkpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgIm5vdGlm
aWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCByZXF1ZXN0ZWREb21haW4pOworICAgIGRlbGV0
ZSByZXF1ZXN0ZWREb21haW47Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIEVXS1ByaXZhdGUgewog
CiBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggMTNkMmNkMi4uZmUyNTZmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKQEAgLTcyLDYgKzcyLDEwIEBACiAgKiAgLSAibWl4ZWRjb250ZW50LGRp
c3BsYXllZCIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBh
bmQgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibWl4ZWRjb250ZW50LHJ1biIsIHZv
aWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgcnVuIG1peGVk
IGNvbnRlbnQuCiAgKiAgLSAibmF2aWdhdGUsd2l0aCxkYXRhIiwgRXdrX1ZpZXdfTmF2aWdhdGlv
bl9EYXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgZGlkIG5hdmlnYXRpb24gYW5kIGdpdmVzIHRoZSBu
YXZpZ2F0aW9uIGRldGFpbHMuCisgKiAgLSAibm90aWZpY2F0aW9uLGNhbmNlbCIsIEV3a19Ob3Rp
ZmljYXRpb24qOiByZXF1ZXN0IHRvIGNhbmNlbCBub3RpZmljYXRpb24gc2hvd2luZy4KKyAqICAt
ICJub3RpZmljYXRpb24scGVybWlzc2lvbixjYW5jZWwiLCBjb25zdCBjaGFyKjogcmVxdWVzdCB0
byBjYW5jZWwgcGVybWlzc2lvbiByZXF1ZXN0aW5nIGZvciBkb21haW4uCisgKiAgLSAibm90aWZp
Y2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNvbnN0IGNoYXIqOiByZXF1ZXN0IHRvIGNvbmZp
cm0gcGVybWlzc2lvbiBmb3IgZG9tYWluIGZyb20gdWVzci4KKyAqICAtICJub3RpZmljYXRpb24s
c2hvdyIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1ZXN0IHRvIHNob3cgbm90aWZpY2F0aW9uLgog
ICogIC0gInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0IiwgRXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0
YSo6IHJlcG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1lZCBhIGNsaWVudCByZWRpcmVjdCBhbmQgZ2l2
ZXMgdGhlIHJlZGlyZWN0aW9uIGRldGFpbHMuCiAgKiAgLSAicGVyZm9ybSxzZXJ2ZXIscmVkaXJl
Y3QiLCBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgcGVyZm9y
bWVkIGEgc2VydmVyIHJlZGlyZWN0IGFuZCBnaXZlcyB0aGUgcmVkaXJlY3Rpb24gZGV0YWlscy4K
ICAqICAtICJwcm90b2NvbGhhbmRsZXIscmVnaXN0cmF0aW9uLHJlcXVlc3RlZCIsIEV3a19DdXN0
b21fSGFuZGxlcl9EYXRhOiBhZGQgYSBoYW5kbGVyIHVybCBmb3IgdGhlIGdpdmVuIHByb3RvY29s
LgpAQCAtMjYzNiw2ICsyNjQwLDE1IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRp
bmdfd2ViX2F1ZGlvX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAgKi8KIEVBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlvX3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIGVuYWJsZSk7CiAKKy8qKgorICogU2V0IHBlcm1pc3Npb24gY2FjaGUgbGlzdCBmb3Ig
bm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgcGVy
bWlzc2lvbiBjYWNoZSBsaXN0LgorICogQHBhcmFtIGRvbWFpbiBzdHJpbmcgZm9yIGRldGVybWlu
ZSBwZXJtaXNzaW9uLgorICogQHBhcmFtIGFsbG93IEBjIEVJTkFfVFJVRSB0byBwZXJtaXQsIEBj
IEVJTkFfRkFMU0UgdG8gZGVueS4KKyAqLworRUFQSSB2b2lkIGV3a192aWV3X25vdGlmaWNhdGlv
bl9wZXJtaXNzaW9uc19zZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKmRvbWFpbiwgRWlu
YV9Cb29sIGFsbG93KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGI3MGU3NTUuLmE3ZDdmZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMzUsNiArMzUsNyBA
QCBjbGFzcyBDb2xvckNob29zZXJDbGllbnQ7CiAjZW5kaWYKIAogY2xhc3MgQ3Vyc29yOworY2xh
c3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50
OwogfQogCkBAIC0xNTYsNiArMTU3LDEyIEBAIGJvb2wgZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmdfb2JqZWN0X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19OCiBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdf
Y29udGV4dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBld2tfdmlld19ub3RpZmljYXRp
b25fY2xpZW50X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7Cit2b2lkIGV3a192aWV3
X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdU
Rjo6U3RyaW5nJiBkb21haW4pOwordm9pZCBld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lv
bl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdURjo6U3RyaW5nJiBkb21haW4pOworI2Vu
ZGlmCisKIG5hbWVzcGFjZSBFV0tQcml2YXRlIHsKIFdlYkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNv
bnN0IEV2YXNfT2JqZWN0ICpld2tWaWV3KTsKIFBsYXRmb3JtUGFnZUNsaWVudCBjb3JlUGFnZUNs
aWVudChFdmFzX09iamVjdCogZXdrVmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDE5YTBhMS4uM2IyNmVkZSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTA2LTE3ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkwgU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIEVOQUJMRV9OT1RJRklDQVRJT05TIGFu
ZCBFTkFCTEVfUkVHQUNZX05PVElGSUNBVElPTlMgZm9yIHRoZSBFRkwuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMDYtMTcgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2FyZGVuLW8tbWF0aWMg
J1Jlc3VsdHMnIHBhbmVsIGlzIGJyb2tlbiBmb3IgdGhlIEFwcGxlIHBsYXRmb3JtCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYTBiN2MwZi4uZjI4NmZkMCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjU4LDcgKzI1OCw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkamF2YXNjcmlwdERlYnVnZ2VyU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1ub3RpZmljYXRpb25zIiwgZGVzYyA9PiAi
VG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZhdWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2
YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgp
IHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAK
ICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LXdlYmtpdC1ibG9iLWJ1aWxkZXIiLCBkZXNjID0+ICJU
b2dnbGUgTGVnYWN5IFdlYktpdCBCbG9iIEJ1aWxkZXIgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJTERFUiIsIGRlZmF1bHQgPT4gKGlzR3Rr
KCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9
PiBcJGxlZ2FjeVdlYktpdEJsb2JCdWlsZGVyU3VwcG9ydCB9LApAQCAtMzAwLDcgKzMwMCw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX05FVFdPUktfSU5GTyIs
IGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRuZXR3b3JrSW5mb1N1cHBvcnQgfSwKIAog
ICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIE5vdGlmaWNh
dGlvbnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9OT1RJRklDQVRJT05TIiwg
ZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUgPT4gXCRub3RpZmljYXRpb25zU3VwcG9y
dCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9USUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4g
KGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBw
b3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAib3JpZW50YXRpb24tZXZlbnRzIiwgZGVzYyA9PiAi
VG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX09SSUVOVEFUSU9OX0VWRU5UUyIsIGRlZmF1bHQgPT4gaXNCbGFja0JlcnJ5KCksIHZhbHVl
ID0+IFwkb3JpZW50YXRpb25FdmVudHNTdXBwb3J0IH0sCg==
</data>
<flag name="review"
          id="155675"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148240</attachid>
            <date>2012-06-18 21:37:55 -0700</date>
            <delta_ts>2012-07-04 03:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>notificationEfl06.patch</filename>
            <type>text/plain</type>
            <size>29014</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWM4Mzg4NS4uYTM5ZjI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wNi0xNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXSBTdXBwb3J0IGZvciBXZWIgTm90aWZpY2F0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQg
ZXdrX25vdGlmaWNhdGlvbi5jcHAuCisKIDIwMTItMDYtMTMgIFJvYmluIENhbyAgPHJvYmluLmNh
b0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEVuYWJsZSBNRURJ
QV9TVFJFQU0gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMmRlZjg2OS4u
MTA3YmVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMTEsNiArMTExLDcgQEAgTElT
VChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19qcy5jcHAKICAgICBlZmwv
ZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9ld2svZXdrX25ldHdvcmsuY3BwCisgICAgZWZsL2V3
ay9ld2tfbm90aWZpY2F0aW9uLmNwcAogICAgIGVmbC9ld2svZXdrX3BhaW50X2NvbnRleHQuY3Bw
CiAgICAgZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAogICAgIGVmbC9ld2svZXdrX3Nl
Y3VyaXR5X3BvbGljeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1MmUxMGYwLi4xNTA2YjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTItMDYtMTcgIEtpaG9uZyBLd29u
ICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gU3VwcG9ydCBmb3Ig
V2ViIE5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50cyBmb3Igc3VwcG9ydGluZyB3ZWIgbm90aWZpY2F0aW9uIG9uIHRo
ZSBFRkwgcG9ydC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2Ugc3VwcG9ydCBmb2xsb3dpbmcg
QVBJcyBhbmQgZXZlbnRzLgorICAgICAgICBBUElzIDogY3JlYXRlTm90aWZpY2F0aW9ucywgY2hl
Y2tQZXJtaXNzaW9uLCByZXF1ZXN0UGVybWlzc2lvbiwgc2hvdywgY2FuY2VsLgorICAgICAgICBF
dmVudHMgOiBvbnNob3csIG9uZGlzcGxheSwgb25lcnJvciwgb25jbG9zZSwgb25jbGljay4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpzaG93
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudEVmbDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudEVmbDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50RWZsOjphZGRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudEVmbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBld2svZXdrX25vdGlmaWNhdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19Ob3RpZmljYXRpb24pOgorICAgICAgICAoZXdr
X25vdGlmaWNhdGlvbl9jcmVhdGUpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kZWxldGUp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9zaG93KToKKyAgICAgICAgKGV3a19ub3RpZmlj
YXRpb25fY2FuY2VsKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xpY2sp
OgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZSk6CisgICAgICAgIChl
d2tfbm90aWZpY2F0aW9uX2Rpc3BhdGNoX2Vycm9yKToKKyAgICAgICAgKGV3a19ub3RpZmljYXRp
b25fZGlzcGF0Y2hfc2hvdyk6CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldCk6
CisgICAgICAgIChld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldCk6CisgICAgICAgIChld2tf
bm90aWZpY2F0aW9uX2JvZHlfZ2V0KToKKyAgICAgICAgKGV3a19ub3RpZmljYXRpb25fcmVwbGFj
ZV9pZF9nZXQpOgorICAgICAgICAoZXdrX25vdGlmaWNhdGlvbl9kaXJfZ2V0KToKKyAgICAgICAg
KiBld2svZXdrX25vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBld2svZXdrX25vdGlm
aWNhdGlvbl9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoZXdrX3ZpZXdfbm90aWZpY2F0
aW9uX3Blcm1pc3Npb25zX3NldCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fY2xp
ZW50X2dldCk6CisgICAgICAgIChld2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1
ZXN0KToKKyAgICAgICAgKGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbmNlbCk6
CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3X3ByaXZh
dGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA2LTE1ICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gRUZMJ3MgTGF5
b3V0VGVzdENvbnRyb2xsZXIgZG9lcyBub3Qgc3VwcG9ydCB0aXRsZVRleHREaXJlY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwuY3BwCmluZGV4IGUzMzczNTEuLmJjZjI5Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsLmNwcApAQCAtMjEsNTMgKzIxLDEx
MiBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbC5oIgogCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKLSNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKCkKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAg
IDogbV92aWV3KHZpZXcpCiB7CiB9CiAKIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbDo6
fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpCiB7CisgICAgd2hpbGUgKCFtX25vdGlm
aWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgICAgICBld2tfbm90aWZpY2F0aW9u
X2RlbGV0ZShpdGVyLT5zZWNvbmQpOworICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0
ZXIpOworICAgIH0KIH0KIAogYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OnNo
b3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFub3RpZmljYXRpb24tPnRhZygpLmlzRW1wdHko
KSkgeworICAgICAgICBmb3IgKE5vdGlmaWNhdGlvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbm90
aWZpY2F0aW9ucy5iZWdpbigpOyBpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgKytpdGVy
KQorICAgICAgICAgICAgaWYgKGl0ZXItPmZpcnN0LT50YWcoKSA9PSBub3RpZmljYXRpb24tPnRh
ZygpCisgICAgICAgICAgICAgICAgJiYgaXRlci0+Zmlyc3QtPnVybCgpLnByb3RvY29sKCkgPT0g
bm90aWZpY2F0aW9uLT51cmwoKS5wcm90b2NvbCgpCisgICAgICAgICAgICAgICAgJiYgaXRlci0+
Zmlyc3QtPnVybCgpLmhvc3QoKSA9PSBub3RpZmljYXRpb24tPnVybCgpLmhvc3QoKSkgeworICAg
ICAgICAgICAgICAgIGV3a19ub3RpZmljYXRpb25fY2FuY2VsKGl0ZXItPnNlY29uZCk7CisgICAg
ICAgICAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogSFRNTCBub3Rp
ZmljYXRpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90
aWZpY2F0aW9uID0gZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUobV92aWV3LCBub3RpZmljYXRpb24p
OworICAgIGV3a19ub3RpZmljYXRpb25fc2hvdyhld2tOb3RpZmljYXRpb24pOworICAgIG1fbm90
aWZpY2F0aW9ucy5hZGQobm90aWZpY2F0aW9uLCBld2tOb3RpZmljYXRpb24pOworCisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjYW5j
ZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBOb3RpZmljYXRpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmlu
ZChub3RpZmljYXRpb24pOworICAgIGlmIChpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkg
eworICAgICAgICBld2tfbm90aWZpY2F0aW9uX2NhbmNlbChpdGVyLT5zZWNvbmQpOworICAgICAg
ICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXIpOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRFZmw6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8v
IENhbGxlZCBmcm9tIH5Ob3RpZmljYXRpb24oKSwgcmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBu
b3RpZmljYXRpb25zIGxpc3QuCisgICAgTm90aWZpY2F0aW9uTWFwOjppdGVyYXRvciBpdGVyID0g
bV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25v
dGlmaWNhdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgZXdrX25vdGlmaWNhdGlvbl9kZWxldGUoaXRl
ci0+c2Vjb25kKTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdGVyKTsKKyAgICB9
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRFZmw6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFN0cmluZyBkb21haW4gPSBjb250ZXh0LT51cmwoKS5ob3N0KCk7CisgICAg
bV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmFkZChkb21haW4sIGNhbGxiYWNrKTsKKyAgICBl
d2tfdmlld19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9yZXF1ZXN0KG1fdmlldywgZG9tYWluKTsK
IH0KKyNlbmRpZgogCi1Ob3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50RWZsOjpjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKK05vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmw6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUGVybWlzc2lvbnNN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhY2hlZFBlcm1pc3Npb25zLmZpbmQoY29udGV4dC0+dXJs
KCkuaG9zdCgpKTsKKworICAgIGlmIChpdGVyID09IG1fY2FjaGVkUGVybWlzc2lvbnMuZW5kKCkp
CisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uTm90QWxsb3dlZDsKKworICAgIGlmIChpdGVyLT5z
ZWNvbmQpCisgICAgICAgIHJldHVybiBQZXJtaXNzaW9uQWxsb3dlZDsKKwogICAgIHJldHVybiBQ
ZXJtaXNzaW9uRGVuaWVkOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcgZG9tYWluID0gY29u
dGV4dC0+dXJsKCkuaG9zdCgpOworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwOjppdGVyYXRvciBp
dGVyID0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmZpbmQoZG9tYWluKTsKKyAgICBpZiAo
aXRlciAhPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAgICAgZXdr
X3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25fY2FuY2VsKG1fdmlldywgZG9tYWluKTsKKyAg
ICAgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLnJlbW92ZShkb21haW4pOworICAgIH0K
K30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmw6OmFkZFBlcm1pc3Npb24o
Y29uc3QgY2hhciogZG9tYWluLCBjb25zdCBib29sIGlzQWxsb3dlZCkKK3sKKyAgICBQZXJtaXNz
aW9uUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0
cy5maW5kKFN0cmluZyhkb21haW4pKTsKKyAgICBpZiAoaXRlciAhPSBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKGlzQWxsb3dlZCkKKyAgICAgICAgICAg
IGl0ZXItPnNlY29uZC0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgbV9wZW5kaW5nUGVybWlzc2lv
blJlcXVlc3RzLnJlbW92ZShpdGVyKTsKKyAgICB9CisgICAgbV9jYWNoZWRQZXJtaXNzaW9ucy5h
ZGQoU3RyaW5nKGRvbWFpbiksIGlzQWxsb3dlZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50RWZsLmgKaW5kZXggNTUxNzRlNy4uMjM0Yjg0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50RWZsLmgKQEAgLTIyLDIzICsyMiw0MiBAQAogCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb24uaCIKLSNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJld2tfbm90aWZpY2F0aW9uLmgiCisj
aW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsIDogcHVibGlj
IE5vdGlmaWNhdGlvblByZXNlbnRlciB7Ci0KK2NsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCA6IHB1YmxpYyBOb3RpZmljYXRpb25DbGllbnQgewogcHVibGljOgotICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudEVmbCgpOworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CiAgICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudEVmbCgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopOwogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCk7CisjaWYgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFs
IE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworI2VuZGlmCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pIHsgfQorI2VuZGlm
CisgICAgdmlydHVhbCBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZvaWQg
YWRkUGVybWlzc2lvbihjb25zdCBjaGFyKiBkb21haW4sIGJvb2wgaXNBbGxvd2VkKTsKKworcHJp
dmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbiosIEV3a19Ob3RpZmljYXRpb24qPiBOb3RpZmljYXRpb25NYXA7
CisgICAgTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uczsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxiYWNrPiA+IFBlcm1pc3Npb25SZXF1
ZXN0TWFwOworICAgIFBlcm1pc3Npb25SZXF1ZXN0TWFwIG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1
ZXN0czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBib29sPiBQZXJtaXNzaW9uc01hcDsK
KyAgICBQZXJtaXNzaW9uc01hcCBtX2NhY2hlZFBlcm1pc3Npb25zOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmVjNDc3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX25vdGlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uIHsKKyAgICBFdmFzX09i
amVjdCogdmlldzsKKyAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbjsKK307
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQorRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoRXZhc19PYmpl
Y3QqIHZpZXcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbiA9IG5ldyBFd2tfTm90aWZpY2F0aW9uOwor
ICAgIGV3a05vdGlmaWNhdGlvbi0+dmlldyA9IHZpZXc7CisgICAgZXdrTm90aWZpY2F0aW9uLT5u
b3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgcmV0dXJuIGV3a05vdGlmaWNhdGlvbjsK
K30KKwordm9pZCBld2tfbm90aWZpY2F0aW9uX2RlbGV0ZShFd2tfTm90aWZpY2F0aW9uKiBld2tO
b3RpZmljYXRpb24pCit7CisgICAgZGVsZXRlIGV3a05vdGlmaWNhdGlvbjsKK30KKwordm9pZCBl
d2tfbm90aWZpY2F0aW9uX3Nob3coRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrTm90aWZpY2F0aW9uLT52
aWV3LCAibm90aWZpY2F0aW9uLHNob3ciLCBld2tOb3RpZmljYXRpb24pOworfQorCit2b2lkIGV3
a19ub3RpZmljYXRpb25fY2FuY2VsKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikK
K3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a05vdGlmaWNhdGlvbi0+
dmlldywgIm5vdGlmaWNhdGlvbixjYW5jZWwiLCBld2tOb3RpZmljYXRpb24pOworfQorI2VuZGlm
CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbGljayhFd2tfTm90aWZpY2F0aW9u
KiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGllbnRf
Z2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkKKyAgICAgICAgZXdr
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOworI2VuZGlm
Cit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9jbG9zZShFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlvbl9jbGll
bnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkgeworICAgICAg
ICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cisg
ICAgICAgIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7CisgICAgfQor
I2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9lcnJvcihFd2tfTm90
aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwqIGNsaWVudCA9IGV3a192aWV3X25vdGlmaWNhdGlv
bl9jbGllbnRfZ2V0KGV3a05vdGlmaWNhdGlvbi0+dmlldyk7CisgICAgaWYgKGNsaWVudCkgewor
ICAgICAgICBld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hFcnJvckV2ZW50
KCk7CisgICAgICAgIGV3a19ub3RpZmljYXRpb25fZGVsZXRlKGV3a05vdGlmaWNhdGlvbik7Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3
a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIGNvbnN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCogY2xpZW50ID0gZXdrX3ZpZXdfbm90aWZp
Y2F0aW9uX2NsaWVudF9nZXQoZXdrTm90aWZpY2F0aW9uLT52aWV3KTsKKyAgICBpZiAoY2xpZW50
KSB7CisgICAgICAgIGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT5kaXNwYXRjaFNob3dF
dmVudCgpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICAgICAgZXdrTm90
aWZpY2F0aW9uLT5ub3RpZmljYXRpb24tPmRpc3BhdGNoRXZlbnQoV2ViQ29yZTo6RXZlbnQ6OmNy
ZWF0ZShXZWJDb3JlOjpldmVudE5hbWVzKCkuZGlzcGxheUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
KyNlbmRpZgorI2VuZGlmCisgICAgfQorfQorCitjb25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9u
X3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7Cisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT50aXRsZSgp
LnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitjb25z
dCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX2ljb25fdXJsX2dldChjb25zdCBFd2tfTm90aWZpY2F0
aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4gc3RyZHVwKGV3a05vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmlj
YXRpb25fYm9keV9nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlvbiogZXdrTm90aWZpY2F0aW9uKQor
eworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCisgICAgcmV0dXJuIHN0cmR1cChld2tOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbi0+Ym9k
eSgpLnV0ZjgoKS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitj
b25zdCBjaGFyKiBld2tfbm90aWZpY2F0aW9uX3RhZ19nZXQoY29uc3QgRXdrX05vdGlmaWNhdGlv
biogZXdrTm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFC
TEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgcmV0dXJuIHN0cmR1cChld2tOb3RpZmljYXRp
b24tPm5vdGlmaWNhdGlvbi0+dGFnKCkudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK2NvbnN0IGNoYXIqIGV3a19ub3RpZmljYXRpb25fZGlyX2dldChj
b25zdCBFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24pCit7CisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICByZXR1cm4g
c3RyZHVwKGV3a05vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uLT5kaXIoKS51dGY4KCkuZGF0YSgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19ub3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfbm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjY1ODIyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbm90
aWZpY2F0aW9uLmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19ub3RpZmljYXRpb25faAorI2Rl
ZmluZSBld2tfbm90aWZpY2F0aW9uX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIEBmaWxlIGV3a19ub3Rp
ZmljYXRpb24uaAorICogQGJyaWVmIEFQSXMgdG8gaW1wbGVtZW50IGZvciB0aGUgV2ViIE5vdGlm
aWNhdGlvbiBmZWF0dXJlLgorICoKKyAqIFByb3ZpZGUgQVBJcyB0byBzdXBwb3J0IHRoZSBXZWIg
Tm90aWZpY2F0aW9uJ3MgY2FsbGJhY2suCisgKiAob25zaG93LCBvbmRpc3BsYXksIG9uZXJyb3Is
IG9uY2xvc2UsIG9uY2xpY2spCisgKiBBbmQgc3VwcG9ydCBnZXR0ZXIgZm9yIHRoZSBAYyBFd2tf
Tm90aWZpY2F0aW9uJ3MgYXR0cmlidXRlcy4KKyAqLworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgQGEgX0V3a19Ob3RpZmljYXRpb24uCit0eXBlZGVmIHN0cnVjdCBfRXdrX05vdGlmaWNh
dGlvbiBFd2tfTm90aWZpY2F0aW9uOworCitzdHJ1Y3QgX0V3a19Ob3RpZmljYXRpb25fUGVybWlz
c2lvbiB7CisgICAgY2hhciAqZG9tYWluOworICAgIEVpbmFfQm9vbCBhbGxvdzsKK307CisvLy8g
Q3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgX0V3a19Ob3RpZmljYXRpb25fUGVybWlzc2lvbi4K
K3R5cGVkZWYgc3RydWN0IF9Fd2tfTm90aWZpY2F0aW9uX1Blcm1pc3Npb24gRXdrX05vdGlmaWNh
dGlvbl9QZXJtaXNzaW9uOworCisvKioKKyAqIERpc3BhdGNoIGNsaWNrIGV2ZW50IHRvIHRoZSBq
YXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRp
b24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBjbGljayBldmVudC4KKyAqLworRUFQSSB2b2lkIGV3
a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfY2xpY2soRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisv
KioKKyAqIERpc3BhdGNoIGNsb3NlIGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1
bmN0aW9uLgorICoKKyAqIEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRj
aGluZyBjbG9zZSBldmVudC4KKyAqLworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0
Y2hfY2xvc2UoRXdrX05vdGlmaWNhdGlvbiAqZW4pOworCisvKioKKyAqIERpc3BhdGNoIGVycm9y
IGV2ZW50IHRvIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJh
bSBlbiBub3RpZmljYXRpb24gb2JqZWN0IGZvciBkaXNwYXRjaGluZyBlcnJvciBldmVudC4KKyAq
LworRUFQSSB2b2lkIGV3a19ub3RpZmljYXRpb25fZGlzcGF0Y2hfZXJyb3IoRXdrX05vdGlmaWNh
dGlvbiAqZW4pOworCisvKioKKyAqIERpc3BhdGNoIHNob3cvZGlzcGFseSBldmVudCB0byB0aGUg
amF2YXNjcmlwdCBjYWxsYmFjayBmdW5jdGlvbi4KKyAqCisgKiBAcGFyYW0gZW4gbm90aWZpY2F0
aW9uIG9iamVjdCBmb3IgZGlzcGF0Y2hpbmcgc2hvdy9kaXNwbGF5IGV2ZW50LgorICovCitFQVBJ
IHZvaWQgZXdrX25vdGlmaWNhdGlvbl9kaXNwYXRjaF9zaG93KEV3a19Ob3RpZmljYXRpb24gKmVu
KTsKKworLyoqCisgKiBHZXQgdGl0bGUgZnJvbSBAYyBFd2tfTm90aWZpY2F0aW9uLgorICoKKyAq
IEBwYXJhbSBlbiBub3RpZmljYXRpb24gb2JqZWN0LgorICoKKyAqIEByZXR1cm4gdGl0bGUgb2Yg
dGhlIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBo
YXMgdG8gYmUgZGVsZXRlZCBhZnRlciB1c2luZyBpdC4KKyAqLworRUFQSSBjb25zdCBjaGFyICpl
d2tfbm90aWZpY2F0aW9uX3RpdGxlX2dldChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbik7CisK
Ky8qKgorICogR2V0IGljb24gVVJMIGZyb20gQGMgRXdrX05vdGlmaWNhdGlvbi4KKyAqCisgKiBA
cGFyYW0gZW4gbm90aWZpY2F0aW9uIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIGljb24gVVJMIG9m
IHRoZSBub3RpZmljYXRpb24gd2hpY2ggaXMgYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nLgorICov
CitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25faWNvbl91cmxfZ2V0KGNvbnN0IEV3
a19Ob3RpZmljYXRpb24gKmVuKTsKKworLyoqCisgKiBHZXQgYm9keSBjb250ZW50cyBmcm9tIEBj
IEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3Qu
CisgKgorICogQHJldHVybiBib2R5IGNvbnRlbnRzIG9mIHRoZSBub3RpZmljYXRpb24gd2hpY2gg
aXMgYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIHRoYXQgaGFzIHRvIGJlIGRlbGV0ZWQgYWZ0ZXIg
dXNpbmcgaXQuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25vdGlmaWNhdGlvbl9ib2R5X2dl
dChjb25zdCBFd2tfTm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IHJlcGxhY2VJZCBm
cm9tIEBjIEV3a19Ob3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBv
YmplY3QuCisgKgorICogQHJldHVybiB0YWcocmVwbGFjZUlEIHdoaWNoIGlzIGluIHRoZSBsZWdh
Y3kgbm90aWZpY2F0aW9uKW9mIHRoZSBub3RpZmljYXRpb24KKyAqIHdoaWNoIGlzIGEgbmV3bHkg
YWxsb2NhdGVkIHN0cmluZyB0aGF0IGhhcyB0byBiZSBkZWxldGVkIGFmdGVyIHVzaW5nIGl0Lgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19ub3RpZmljYXRpb25fdGFnX2dldChjb25zdCBFd2tf
Tm90aWZpY2F0aW9uICplbik7CisKKy8qKgorICogR2V0IGRpcmVjdGlvbiBmcm9tIEBjIEV3a19O
b3RpZmljYXRpb24uCisgKgorICogQHBhcmFtIGVuIG5vdGlmaWNhdGlvbiBvYmplY3QuCisgKgor
ICogQHJldHVybiBkaXJlY3Rpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiB3aGljaCBpcyBhIG5ld2x5
IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBoYXMgdG8gYmUgZGVsZXRlZCBhZnRlciB1c2luZyBpdC4K
KyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbm90aWZpY2F0aW9uX2Rpcl9nZXQoY29uc3QgRXdr
X05vdGlmaWNhdGlvbiAqZW4pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2Vu
ZGlmIC8vIGV3a19ub3RpZmljYXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX25vdGlmaWNhdGlvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDg5MThmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfbm90aWZpY2F0aW9uX3ByaXZhdGUuaApAQCAtMCwwICsxLDM1IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfbm90aWZp
Y2F0aW9uX3ByaXZhdGVfaAorI2RlZmluZSBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVfaAorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiZXdrX25vdGlmaWNhdGlvbi5oIgor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKKworRXdrX05vdGlmaWNhdGlvbiogZXdrX25vdGlmaWNhdGlvbl9jcmVhdGUoRXZhc19PYmpl
Y3QqLCBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbik7Cit2b2lkIGV3a19ub3Rp
ZmljYXRpb25fZGVsZXRlKEV3a19Ob3RpZmljYXRpb24qIGV3a05vdGlmaWNhdGlvbik7Cit2b2lk
IGV3a19ub3RpZmljYXRpb25fc2hvdyhFd2tfTm90aWZpY2F0aW9uKiBld2tOb3RpZmljYXRpb24p
Owordm9pZCBld2tfbm90aWZpY2F0aW9uX2NhbmNlbChFd2tfTm90aWZpY2F0aW9uKiBld2tOb3Rp
ZmljYXRpb24pOworCisjZW5kaWYKKyNlbmRpZiAvLyBld2tfbm90aWZpY2F0aW9uX3ByaXZhdGVf
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA0MDNkYWIxLi5mNjhjMzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTkwLDYgKzkwLDExIEBACiAjaW5jbHVk
ZSAiQmF0dGVyeUNsaWVudEVmbC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwu
aCIKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjZW5kaWYKQEAgLTc1Miw2ICs3NTcsMTAgQEAgc3RhdGljIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKICAgICBXZWJDb3JlOjpwcm92aWRlQmF0dGVyeVRvKHByaXYtPnBhZ2Uu
Z2V0KCksIG5ldyBXZWJDb3JlOjpCYXR0ZXJ5Q2xpZW50RWZsKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBX
ZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRFZmwoc21hcnREYXRhLT5zZWxmKSk7CisjZW5k
aWYKKwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncyA9IHByaXYtPnBhZ2UtPnNldHRpbmdzKCk7CiAK
ICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy53aWR0aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzOjpWYWx1ZUF1dG87CkBAIC00NDMzLDYgKzQ0NDIsMzggQEAgdm9pZCBld2tfdmlld19j
dXJzb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1
cnNvcikKICAgICB9CiB9CiAKK3ZvaWQgZXdrX3ZpZXdfbm90aWZpY2F0aW9uX3Blcm1pc3Npb25z
X3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogZG9tYWluLCBFaW5hX0Jvb2wg
YWxsb3cpCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9U
SUZJQ0FUSU9OUykKKyAgICBFV0tfVklFV19TRF9HRVQoZXdrVmlldywgc21hcnREYXRhKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVChzbWFydERhdGEsIHByaXYpOworICAgIHN0YXRpY19jYXN0PFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OmNsaWVudEZyb20ocHJpdi0+cGFnZS5nZXQoKSkpLT5hZGRQZXJtaXNz
aW9uKGRvbWFpbiwgYWxsb3cpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorY29uc3QgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50RWZsKiBld2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50X2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudEVmbCo+KFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OmNsaWVudEZyb20ocHJpdi0+cGFnZS5nZXQoKSkpOworfQorCit2b2lkIGV3
a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3QoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIFdURjo6U3RyaW5nJiBkb21haW4pCit7CisgICAgY2hhciogcmVxdWVzdGVkRG9tYWluID0g
c3RyZHVwKGRvbWFpbi51dGY4KCkuZGF0YSgpKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJub3RpZmljYXRpb24scGVybWlzc2lvbixyZXF1ZXN0IiwgcmVx
dWVzdGVkRG9tYWluKTsKKyAgICBkZWxldGUgcmVxdWVzdGVkRG9tYWluOworfQorCit2b2lkIGV3
a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX2NhbmNlbChFdmFzX09iamVjdCogZXdrVmll
dywgV1RGOjpTdHJpbmcmIGRvbWFpbikKK3sKKyAgICBjaGFyKiByZXF1ZXN0ZWREb21haW4gPSBz
dHJkdXAoZG9tYWluLnV0ZjgoKS5kYXRhKCkpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgIm5vdGlmaWNhdGlvbixwZXJtaXNzaW9uLHJlcXVlc3QiLCByZXF1
ZXN0ZWREb21haW4pOworICAgIGRlbGV0ZSByZXF1ZXN0ZWREb21haW47Cit9CisjZW5kaWYKKwog
bmFtZXNwYWNlIEVXS1ByaXZhdGUgewogCiBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZShjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggMTNkMmNk
Mi4uZmUyNTZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTcyLDYgKzcyLDEwIEBA
CiAgKiAgLSAibWl4ZWRjb250ZW50LGRpc3BsYXllZCIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFp
bmluZyBmcmFtZXMgaGFzIGxvYWRlZCBhbmQgZGlzcGxheWVkIG1peGVkIGNvbnRlbnQuCiAgKiAg
LSAibWl4ZWRjb250ZW50LHJ1biIsIHZvaWQ6IGFueSBvZiB0aGUgY29udGFpbmluZyBmcmFtZXMg
aGFzIGxvYWRlZCBhbmQgcnVuIG1peGVkIGNvbnRlbnQuCiAgKiAgLSAibmF2aWdhdGUsd2l0aCxk
YXRhIiwgRXdrX1ZpZXdfTmF2aWdhdGlvbl9EYXRhKjogcmVwb3J0cyB0aGF0IHZpZXcgZGlkIG5h
dmlnYXRpb24gYW5kIGdpdmVzIHRoZSBuYXZpZ2F0aW9uIGRldGFpbHMuCisgKiAgLSAibm90aWZp
Y2F0aW9uLGNhbmNlbCIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1ZXN0IHRvIGNhbmNlbCBub3Rp
ZmljYXRpb24gc2hvd2luZy4KKyAqICAtICJub3RpZmljYXRpb24scGVybWlzc2lvbixjYW5jZWwi
LCBjb25zdCBjaGFyKjogcmVxdWVzdCB0byBjYW5jZWwgcGVybWlzc2lvbiByZXF1ZXN0aW5nIGZv
ciBkb21haW4uCisgKiAgLSAibm90aWZpY2F0aW9uLHBlcm1pc3Npb24scmVxdWVzdCIsIGNvbnN0
IGNoYXIqOiByZXF1ZXN0IHRvIGNvbmZpcm0gcGVybWlzc2lvbiBmb3IgZG9tYWluIGZyb20gdWVz
ci4KKyAqICAtICJub3RpZmljYXRpb24sc2hvdyIsIEV3a19Ob3RpZmljYXRpb24qOiByZXF1ZXN0
IHRvIHNob3cgbm90aWZpY2F0aW9uLgogICogIC0gInBlcmZvcm0sY2xpZW50LHJlZGlyZWN0Iiwg
RXdrX1ZpZXdfUmVkaXJlY3Rpb25fRGF0YSo6IHJlcG9ydHMgdGhhdCB2aWV3IHBlcmZvcm1lZCBh
IGNsaWVudCByZWRpcmVjdCBhbmQgZ2l2ZXMgdGhlIHJlZGlyZWN0aW9uIGRldGFpbHMuCiAgKiAg
LSAicGVyZm9ybSxzZXJ2ZXIscmVkaXJlY3QiLCBFd2tfVmlld19SZWRpcmVjdGlvbl9EYXRhKjog
cmVwb3J0cyB0aGF0IHZpZXcgcGVyZm9ybWVkIGEgc2VydmVyIHJlZGlyZWN0IGFuZCBnaXZlcyB0
aGUgcmVkaXJlY3Rpb24gZGV0YWlscy4KICAqICAtICJwcm90b2NvbGhhbmRsZXIscmVnaXN0cmF0
aW9uLHJlcXVlc3RlZCIsIEV3a19DdXN0b21fSGFuZGxlcl9EYXRhOiBhZGQgYSBoYW5kbGVyIHVy
bCBmb3IgdGhlIGdpdmVuIHByb3RvY29sLgpAQCAtMjYzNiw2ICsyNjQwLDE1IEBAIEVBUEkgRWlu
YV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlvX2dldChjb25zdCBFdmFzX09iamVj
dCAqbyk7CiAgKi8KIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3NldHRpbmdfd2ViX2F1ZGlv
X3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsZSk7CiAKKy8qKgorICogU2V0IHBl
cm1pc3Npb24gY2FjaGUgbGlzdCBmb3Igbm90aWZpY2F0aW9uLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcgb2JqZWN0IHRvIHNldCB0aGUgcGVybWlzc2lvbiBjYWNoZSBsaXN0LgorICogQHBhcmFtIGRv
bWFpbiBzdHJpbmcgZm9yIGRldGVybWluZSBwZXJtaXNzaW9uLgorICogQHBhcmFtIGFsbG93IEBj
IEVJTkFfVFJVRSB0byBwZXJtaXQsIEBjIEVJTkFfRkFMU0UgdG8gZGVueS4KKyAqLworRUFQSSB2
b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uc19zZXQoRXZhc19PYmplY3QgKm8s
IGNvbnN0IGNoYXIgKmRvbWFpbiwgRWluYV9Cb29sIGFsbG93KTsKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
d19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCmlu
ZGV4IGI3MGU3NTUuLmE3ZDdmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3By
aXZhdGUuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBDb2xvckNob29zZXJDbGllbnQ7CiAjZW5k
aWYKIAogY2xhc3MgQ3Vyc29yOworY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50RWZs
OwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogfQogCkBAIC0xNTYsNiArMTU3LDEyIEBAIGJvb2wg
ZXdrX3ZpZXdfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfb2JqZWN0X2NyZWF0ZShFdmFzX09iamVj
dCogZXdrVmlldywgRXZhc19OCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCogZXdrX3ZpZXdf
YWNjZWxlcmF0ZWRfY29tcG9zaXRpbmdfY29udGV4dF9nZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
RWZsKiBld2tfdmlld19ub3RpZmljYXRpb25fY2xpZW50X2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldyk7Cit2b2lkIGV3a192aWV3X25vdGlmaWNhdGlvbl9wZXJtaXNzaW9uX3JlcXVlc3Qo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIFdURjo6U3RyaW5nJiBkb21haW4pOwordm9pZCBld2tfdmll
d19ub3RpZmljYXRpb25fcGVybWlzc2lvbl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdU
Rjo6U3RyaW5nJiBkb21haW4pOworI2VuZGlmCisKIG5hbWVzcGFjZSBFV0tQcml2YXRlIHsKIFdl
YkNvcmU6OlBhZ2UgKmNvcmVQYWdlKGNvbnN0IEV2YXNfT2JqZWN0ICpld2tWaWV3KTsKIFBsYXRm
b3JtUGFnZUNsaWVudCBjb3JlUGFnZUNsaWVudChFdmFzX09iamVjdCogZXdrVmlldyk7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDE5YTBhMS4u
M2IyNmVkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTE3ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29u
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkwgU3VwcG9ydCBmb3IgV2ViIE5vdGlmaWNhdGlv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxl
IEVOQUJMRV9OT1RJRklDQVRJT05TIGFuZCBFTkFCTEVfUkVHQUNZX05PVElGSUNBVElPTlMgZm9y
IHRoZSBFRkwuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06
CisKIDIwMTItMDYtMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgZ2FyZGVuLW8tbWF0aWMgJ1Jlc3VsdHMnIHBhbmVsIGlzIGJyb2tlbiBmb3IgdGhl
IEFwcGxlIHBsYXRmb3JtCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5k
ZXggYTBiN2MwZi4uZjI4NmZkMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbQpAQCAtMjU4LDcgKzI1OCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwk
amF2YXNjcmlwdERlYnVnZ2VyU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImxlZ2FjeS1u
b3RpZmljYXRpb25zIiwgZGVzYyA9PiAiVG9nZ2xlIExlZ2FjeSBOb3RpZmljYXRpb25zIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMiLCBkZWZh
dWx0ID0+IGlzQmxhY2tCZXJyeSgpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5vdGlmaWNhdGlvbnNTdXBw
b3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyIsIGRl
ZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeU5v
dGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAibGVnYWN5LXdlYmtpdC1i
bG9iLWJ1aWxkZXIiLCBkZXNjID0+ICJUb2dnbGUgTGVnYWN5IFdlYktpdCBCbG9iIEJ1aWxkZXIg
c3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9MRUdBQ1lfV0VCS0lUX0JMT0JfQlVJ
TERFUiIsIGRlZmF1bHQgPT4gKGlzR3RrKCkgfHwgaXNDaHJvbWl1bSgpIHx8IGlzQmxhY2tCZXJy
eSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGxlZ2FjeVdlYktpdEJsb2JCdWlsZGVyU3VwcG9y
dCB9LApAQCAtMzAwLDcgKzMwMCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX05FVFdPUktfSU5GTyIsIGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4gXCRu
ZXR3b3JrSW5mb1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJub3RpZmljYXRpb25zIiwg
ZGVzYyA9PiAiVG9nZ2xlIE5vdGlmaWNhdGlvbnMgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9OT1RJRklDQVRJT05TIiwgZGVmYXVsdCA9PiBpc0JsYWNrQmVycnkoKSwgdmFsdWUg
PT4gXCRub3RpZmljYXRpb25zU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfTk9U
SUZJQ0FUSU9OUyIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2YWx1
ZSA9PiBcJG5vdGlmaWNhdGlvbnNTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAib3JpZW50
YXRpb24tZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIE9yaWVudGF0aW9uIEV2ZW50cyBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUyIsIGRlZmF1bHQg
PT4gaXNCbGFja0JlcnJ5KCksIHZhbHVlID0+IFwkb3JpZW50YXRpb25FdmVudHNTdXBwb3J0IH0s
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>