<?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>44759</bug_id>
          
          <creation_ts>2010-08-27 04:24:58 -0700</creation_ts>
          <short_desc>[EFL] Add custom network resource handler</short_desc>
          <delta_ts>2011-09-12 10:53:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Flavio Ceolin">flavio.ceolin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alp</cc>
    
    <cc>barbieri</cc>
    
    <cc>bdilly</cc>
    
    <cc>christian</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>flavio.ceolin</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>svillar</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270414</commentid>
    <comment_count>0</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-08-27 04:24:58 -0700</bug_when>
    <thetext>[EFL] Add custom network resource handler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270429</commentid>
    <comment_count>1</comment_count>
      <attachid>65700</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-08-27 05:11:03 -0700</bug_when>
    <thetext>Created attachment 65700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270432</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 05:16:30 -0700</bug_when>
    <thetext>Attachment 65700 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:16:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:20:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:21:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:22:  Line contains tab character.  [whitespace/tab] [5]
WebKit/efl/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebKit/efl/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebKit/efl/ChangeLog:18:  Line contains tab character.  [whitespace/tab] [5]
WebKit/efl/ChangeLog:32:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 11 in 10 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>272586</commentid>
    <comment_count>3</comment_count>
      <attachid>65700</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-31 19:47:38 -0700</bug_when>
    <thetext>Comment on attachment 65700
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:3523
&gt; +#if PLATFORM(EFL)
&gt; +bool FrameLoaderClient::shouldHandleScheme(const String&amp; scheme)
&gt; +{
&gt; +    return false;
&gt; +}
&gt; +
&gt; +void* FrameLoaderClient::handleScheme(const KURL url, String&amp; mime, size_t* bytesRead)
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +#endif
These implementations are misplaced.  Why are you putting FrameLoaderClient impls in FrameLoader.cpp?

&gt; WebCore/loader/FrameLoaderClient.h:271
&gt; +#if PLATFORM(EFL)
&gt; +        virtual bool shouldHandleScheme(const String&amp;);
&gt; +        virtual void* handleScheme(const KURL, String&amp;, size_t*);
&gt; +#endif
Why would these functions be EFL-specific?  I don&apos;t think these make sense here.

&gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:131
&gt; +#if PLATFORM(EFL)
&gt; +static bool startPersonalHandler(ResourceHandle* handle, KURL url);
&gt; +#endif
Adding EFL ifdefs to ResourceHandleSoup isn&apos;t the right approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272790</commentid>
    <comment_count>4</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-09-01 07:12:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 65700 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=65700&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:3523
&gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; +bool FrameLoaderClient::shouldHandleScheme(const String&amp; scheme)
&gt; &gt; +{
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void* FrameLoaderClient::handleScheme(const KURL url, String&amp; mime, size_t* bytesRead)
&gt; &gt; +{
&gt; &gt; +    return 0;
&gt; &gt; +}
&gt; &gt; +#endif
&gt; These implementations are misplaced.  Why are you putting FrameLoaderClient &gt;impls in FrameLoader.cpp?

Because the base class FrameLoaderClient was defined in this file,  moreover there is no file named FrameLoaderClient.cpp. I can do these methods inline inside FrameLoaderClient.h, do you think is it better ?

&gt; 
&gt; &gt; WebCore/loader/FrameLoaderClient.h:271
&gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; +        virtual bool shouldHandleScheme(const String&amp;);
&gt; &gt; +        virtual void* handleScheme(const KURL, String&amp;, size_t*);
&gt; &gt; +#endif
&gt; Why would these functions be EFL-specific?  I don&apos;t think these make sense &gt;here.

The others ports don&apos;t need it, they can do that using their own network library

&gt; 
&gt; &gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:131
&gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; +static bool startPersonalHandler(ResourceHandle* handle, KURL url);
&gt; &gt; +#endif
&gt; Adding EFL ifdefs to ResourceHandleSoup isn&apos;t the right approach.

Interesting, Do you think is better without ifdefs ?

Thanks for the advices.

Regards, Ceolin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272874</commentid>
    <comment_count>5</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-01 10:25:09 -0700</bug_when>
    <thetext>
&gt; Because the base class FrameLoaderClient was defined in this file,  moreover there is no file named FrameLoaderClient.cpp. I can do these methods inline inside FrameLoaderClient.h, do you think is it better ?

WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.* ?

&gt; &gt; &gt; WebCore/loader/FrameLoaderClient.h:271
&gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; +        virtual bool shouldHandleScheme(const String&amp;);
&gt; &gt; &gt; +        virtual void* handleScheme(const KURL, String&amp;, size_t*);
&gt; &gt; &gt; +#endif
&gt; &gt; Why would these functions be EFL-specific?  I don&apos;t think these make sense &gt;here.
&gt; 
&gt; The others ports don&apos;t need it, they can do that using their own network library
&gt; 
&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:131
&gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; +static bool startPersonalHandler(ResourceHandle* handle, KURL url);
&gt; &gt; &gt; +#endif
&gt; &gt; Adding EFL ifdefs to ResourceHandleSoup isn&apos;t the right approach.
&gt; 

Personal x Custom (?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275040</commentid>
    <comment_count>6</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-09-07 08:06:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Because the base class FrameLoaderClient was defined in this file,  moreover there is no file named FrameLoaderClient.cpp. I can do these methods inline inside FrameLoaderClient.h, do you think is it better ?
&gt; 
&gt; WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.* ?
&gt; 
If i don&apos;t implement those methods in the FrameLoader.cpp I have some undefined references as you can see below:

WebCore/libwebcore_efl.so.0.1.0: undefined reference to `WebCore::FrameLoaderClient::shouldHandleScheme(WTF::String const&amp;)&apos;
WebCore/libwebcore_efl.so.0.1.0: undefined reference to `WebCore::FrameLoaderClient::handleScheme(WebCore::KURL, WTF::String&amp;, unsigned int*)&apos;

&gt; &gt; &gt; &gt; WebCore/loader/FrameLoaderClient.h:27
&gt; &gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; &gt; +        virtual bool shouldHandleScheme(const String&amp;);
&gt; &gt; &gt; &gt; +        virtual void* handleScheme(const KURL, String&amp;, size_t*);
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; Why would these functions be EFL-specific?  I don&apos;t think these make sense &gt;here.
&gt; &gt; 
&gt; &gt; The others ports don&apos;t need it, they can do that using their own network library
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:131
&gt; &gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; &gt; +static bool startPersonalHandler(ResourceHandle* handle, KURL url);
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; Adding EFL ifdefs to ResourceHandleSoup isn&apos;t the right approach.
&gt; &gt; 
&gt; 
&gt; Personal x Custom (?)

I think &quot;custom&quot; is better than &quot;personal&quot;. I&apos;m going to change the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275041</commentid>
    <comment_count>7</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-09-07 08:10:13 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; &gt; Because the base class FrameLoaderClient was defined in this file,  moreover there is no file named FrameLoaderClient.cpp. I can do these methods inline inside FrameLoaderClient.h, do you think is it better ?
&gt; &gt; 
&gt; &gt; WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.* ?

If i don&apos;t implement these methods in the FrameLoader.cpp some undefined 
references occurs as you can see below:

WebCore/libwebcore_efl.so.0.1.0: undefined reference to `WebCore::FrameLoaderClient::shouldHandleScheme(WTF::String const&amp;)&apos;
WebCore/libwebcore_efl.so.0.1.0: undefined reference to `WebCore::FrameLoaderClient::handleScheme(WebCore::KURL, WTF::String&amp;, unsigned int*)&apos;
&gt; 
&gt; &gt; &gt; &gt; &gt; WebCore/loader/FrameLoaderClient.h:27
&gt; &gt; &gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; &gt; &gt; +        virtual bool shouldHandleScheme(const String&amp;);
&gt; &gt; &gt; &gt; &gt; +        virtual void* handleScheme(const KURL, String&amp;, size_t*);
&gt; &gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; Why would these functions be EFL-specific?  I don&apos;t think these make sense &gt;here.
&gt; &gt; &gt; 
&gt; &gt; &gt; The others ports don&apos;t need it, they can do that using their own network library
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:131
&gt; &gt; &gt; &gt; &gt; +#if PLATFORM(EFL)
&gt; &gt; &gt; &gt; &gt; +static bool startPersonalHandler(ResourceHandle* handle, KURL url);
&gt; &gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; Adding EFL ifdefs to ResourceHandleSoup isn&apos;t the right approach.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Personal x Custom (?)

I think &quot;custom&quot; is better than &quot;personal&quot;. I&apos;m going to change the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275284</commentid>
    <comment_count>8</comment_count>
      <attachid>66764</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-09-07 14:15:54 -0700</bug_when>
    <thetext>Created attachment 66764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311051</commentid>
    <comment_count>9</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-11-18 13:02:50 -0800</bug_when>
    <thetext>Please, could someone take a look in this patch.

BR, Ceolin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321970</commentid>
    <comment_count>10</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-12-14 08:09:13 -0800</bug_when>
    <thetext>It&apos;s been a while since this patch is awaiting review. Could someone please take a look at it? It probably needs to be rebased to current revision, but it won&apos;t change much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325948</commentid>
    <comment_count>11</comment_count>
      <attachid>66764</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 00:32:59 -0800</bug_when>
    <thetext>Comment on attachment 66764
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:3546
&gt; +#if PLATFORM(EFL)
&gt; +bool FrameLoaderClient::shouldHandleScheme(const String&amp; scheme)
&gt; +{
&gt; +    return false;
&gt; +}
&gt; +
&gt; +void* FrameLoaderClient::handleScheme(const KURL url, String&amp; mime, size_t* bytesRead)
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +#endif

FrameLoaderClient functions should not be implemented in FrameLoader.cpp.  They should be implemented in the client.

&gt; WebCore/platform/network/soup/ResourceHandleSoup.cpp:611
&gt; +#if PLATFORM(EFL)
&gt; +    if (frame-&gt;loader()-&gt;client()-&gt;shouldHandleScheme(protocol)) {
&gt; +        if (startCustomHandler(this, url))
&gt; +            return true;
&gt; +    }
&gt; +#endif

Why is this EFL specific?  The point of clients is to allow for different behavior between ports without #ifs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325949</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 00:34:37 -0800</bug_when>
    <thetext>Ok, so basically you ignored my comments the first time around and I had the exact same comments looking at the patch fresh.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326233</commentid>
    <comment_count>13</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-12-23 12:47:40 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Ok, so basically you ignored my comments the first time around and I had the exact same comments looking at the patch fresh.  :(


I answered your comments, please take a look in the comment #4.
About not implement the functions in the FrameLoader.cpp, what do you think 
is better, put these methods inline inside the FrameLoaderClient.h or just 
in the FrameLoaderClient of the port ? 

Thank you for the advice, again :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326284</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-23 14:29:44 -0800</bug_when>
    <thetext>&gt; I answered your comments, please take a look in the comment #4.
&gt; About not implement the functions in the FrameLoader.cpp, what do you think 
&gt; is better, put these methods inline inside the FrameLoaderClient.h or just 
&gt; in the FrameLoaderClient of the port ? 

One way to answer this question is to look at how we handle all the other FrameLoaderClient methods as well as the other FooClients:

http://trac.webkit.org/browser/trunk/WebCore/loader/EmptyClients.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327214</commentid>
    <comment_count>15</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2010-12-28 04:11:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; I answered your comments, please take a look in the comment #4.
&gt; &gt; About not implement the functions in the FrameLoader.cpp, what do you think 
&gt; &gt; is better, put these methods inline inside the FrameLoaderClient.h or just 
&gt; &gt; in the FrameLoaderClient of the port ? 
&gt; 
&gt; One way to answer this question is to look at how we handle all the other FrameLoaderClient methods as well as the other FooClients:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebCore/loader/EmptyClients.h

Thank you, I&apos;ll see and then fix the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418861</commentid>
    <comment_count>16</comment_count>
      <attachid>96774</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-06-10 13:24:45 -0700</bug_when>
    <thetext>Created attachment 96774
Patch

This new patch contains the fixes suggested in the previous comments. Although, the #if PLATFORM(EFL) in the ResourceHandleSoup.cpp persists because the FrameLoaderClient doesn&apos;t has the necessary methods (just the FrameLoaderClientEfl). Why ? Because the others ports don&apos;t need it, they can do that using their own network library, so no makes sense create the stubs for these methods in the FrameLoaderClient base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418866</commentid>
    <comment_count>17</comment_count>
      <attachid>96774</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-06-10 13:37:43 -0700</bug_when>
    <thetext>Comment on attachment 96774
Patch

Attachment 96774 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8828296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418881</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 13:57:47 -0700</bug_when>
    <thetext>Attachment 96774 did not pass style-queue:

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

Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:141:  The parameter name &quot;handle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:141:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 8 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>418920</commentid>
    <comment_count>19</comment_count>
      <attachid>96789</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-06-10 14:28:02 -0700</bug_when>
    <thetext>Created attachment 96789
Patch

Just fixed.

BR, Flávio Ceolin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418975</commentid>
    <comment_count>20</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-10 15:27:21 -0700</bug_when>
    <thetext>This functionality is now built into libsoup. I think it would be better to use that than reimplementing it yourself. CCing Sergio who was instrumental in adding it to libsoup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419515</commentid>
    <comment_count>21</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-06-13 05:55:36 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; This functionality is now built into libsoup. I think it would be better to use that than reimplementing it yourself. CCing Sergio who was instrumental in adding it to libsoup.

Cool, Is it already in soup upstream ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419643</commentid>
    <comment_count>22</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-13 10:37:44 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; This functionality is now built into libsoup. I think it would be better to use that than reimplementing it yourself. CCing Sergio who was instrumental in adding it to libsoup.
&gt; 
&gt; Cool, Is it already in soup upstream ?

Yes. You can use the SoupRequest API to do this. Take a look at EPHY_TYPE_REQUEST_ABOUT in Epiphany: 

http://git.gnome.org/browse/epiphany/tree/embed/ephy-embed-single.c#n544
http://git.gnome.org/browse/epiphany/tree/lib/ephy-request-about.c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434117</commentid>
    <comment_count>23</comment_count>
      <attachid>100128</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-07-08 10:03:19 -0700</bug_when>
    <thetext>Created attachment 100128
patch

Hi folks, 

This new patch uses the built in libsoup feature to implements the mentioned functionality.

Please, could someone review this patch.

BR, Flávio Ceolin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434188</commentid>
    <comment_count>24</comment_count>
      <attachid>100128</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-07-08 11:33:10 -0700</bug_when>
    <thetext>Comment on attachment 100128
patch

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

I like this approach a lot better. Still I&apos;m concerned at the mix of WebKit and non-WebKit coding style in the new code. Why isn&apos;t the same coding style used everywhere? What&apos;s the EFL policy for WebKit layer files? I&apos;d prefer that we used the same style everywhere in WebKit.

I can&apos;t comment on the API design decision (an EFL person should sign off on that), but they seem sane enough.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler.h:37
&gt; +#endif // ewk_protocol_handler_h

I find it really odd that this file is written specifically for C, but has a C++ style comment. Won&apos;t that break in a strict C compiler?

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:34
&gt; +#include &quot;FrameLoaderClientEfl.h&quot;
&gt; +#include &quot;FrameNetworkingContextEfl.h&quot;
&gt; +#include &quot;ResourceHandle.h&quot;
&gt; +#include &quot;ResourceHandleClient.h&quot;
&gt; +#include &quot;ResourceHandleInternal.h&quot;
&gt; +
&gt; +#include &quot;ewk_private.h&quot;
&gt; +
&gt; +#include &lt;glib-object.h&gt;
&gt; +#include &lt;glib.h&gt;
&gt; +#include &lt;libsoup/soup-requester.h&gt;
&gt; +#include &lt;libsoup/soup.h&gt;

This block of includes does not follow typical WebKit style.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:44
&gt; +static int added_count = 0;

I think this this variable name should more specifically describe what it is counting.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:74
&gt; +{
&gt; +

Extra newline here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:82
&gt; +    const WebCore::FrameLoaderClientEfl* frameLoaderClient = 0;

There&apos;s no need to declare these variables before they are used.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:100
&gt; +                                                     &amp;bytesRead, &amp;mime, uri-&gt;path + 1); // The path always init with /

init -&gt; &quot;initialized with&quot; This comment is missing a period.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:113
&gt; +    EwkProtocolHandlerPrivate* priv  = G_TYPE_INSTANCE_GET_PRIVATE((EwkCustomProtocolHandler *)request,

Please use a C++ or GObject style cast here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:121
&gt; +    EwkProtocolHandlerPrivate* priv  = G_TYPE_INSTANCE_GET_PRIVATE((EwkCustomProtocolHandler *)request,

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:129
&gt; +    GObjectClass* gobject_class = G_OBJECT_CLASS(custom_protocol_handler_class);

This variable name would be gobjectClass if you were following WebKit style. Why aren&apos;t you following WebKit-style in this patch?

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:133
&gt; +    request_class-&gt;schemes = (const char**)schemes;

I&apos;m surprised this cast is necessary.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:148
&gt; +    protocols_size = g_strv_length((gchar**)protocols);

Please use a C++ style cast here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:149
&gt; +    if (protocols_size &lt;= 0 || protocols[protocols_size]) // must be null terminate the array

Should read &quot;This array must be null terminated.&quot;

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:164
&gt; +    schemes = (char**)g_strdupv((gchar**)protocols);

Please use a C++ style cast when casting protocols. The return value of g_strdupv does not need to be cast.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4487
&gt; +    Eina_Bool ret = ewk_custom_protocol_handler_all_unset();

Please use full words for variable names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434204</commentid>
    <comment_count>25</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2011-07-08 11:52:09 -0700</bug_when>
    <thetext>Hi Martin,

I&apos;m the one that created this port (based on an initial try, but I almost rewrote it) and as I&apos;m a core EFL developer, I followed EFL style for EFL related parts (ie: C parts). So Flavio is on the right path, including EFL convention of short-descriptive names if the scope is narrow (such as &quot;ret&quot;).

I believe it is fair to have Flavio to change comments to be finished with a trailing period and to use C++ casts instead of traditional C (although I&apos;m used to the later and so there are couple of them in our code).

The &quot;//&quot; in C header file won&apos;t matter as EFL uses it as well, so if one have EFL installed (required by this port) he will have a compiler that works with that ;-)

Last but not least I believe the &quot;const char **&quot; cast is required due: http://c-faq.com/ansi/constmismatch.html but worth checking.

All in all I&apos;d give an informal &quot;r+&quot; after the minor issues are fixed (trailing &quot;.&quot;, c++ casts)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434270</commentid>
    <comment_count>26</comment_count>
      <attachid>100153</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-07-08 13:29:45 -0700</bug_when>
    <thetext>Created attachment 100153
Patch

Thanks Martin and Gustavo,

This new patch contains the modifications suggested by you.
The code style in the efl files is mixed, in the same file you
can see more than one style. I really tried to follow the style of the file that I edited.

BR, Flavio Ceolin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458226</commentid>
    <comment_count>27</comment_count>
      <attachid>100153</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-08-29 08:15:49 -0700</bug_when>
    <thetext>Comment on attachment 100153
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler.cpp:32
&gt; +/**
&gt; + * Register a protocol handler.
&gt; + *
&gt; + * @param protocols the protocols that will be handled.
&gt; + * @return @c EINA_TRUE if success, @c EINA_FALSE if not.
&gt; + */

Please, move this doc to the header as recently changed for the EFL port.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler.cpp:47
&gt; +
&gt; +/**
&gt; + * Remove protocol handler.
&gt; + *
&gt; + * @return @c EINA_TRUE if success, @c EINA_FALSE if not.
&gt; + */

Same here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:52
&gt; +    } else
&gt; +        EINA_LOG_CRIT(&quot;Could not init custom protocol handler, priv == NULL.&quot;);

We usually do this with a macro finished with _OR_RETURN. This way you can remove the checks for priv in all the other functions. If you don&apos;t want/need a new macro, you can use EINA_SAFETY_ON_NULL_RETURN, but I&apos;m not sure if this check for priv being NULL is a safety check or this path is allowed.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:62
&gt; +    EwkProtocolHandlerPrivate* priv  = G_TYPE_INSTANCE_GET_PRIVATE(obj, EWK_TYPE_CUSTOM_PROTOCOL_HANDLER,
&gt; +                                                                              EwkProtocolHandlerPrivate);
&gt; +    if (priv)
&gt; +        free(priv-&gt;mime);
&gt; +
&gt; +    G_OBJECT_CLASS(ewk_custom_protocol_handler_parent_class)-&gt;finalize(obj);

Do you still have to call this finalize if priv is NULL? Otherwise the previous comment fits here too.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:67
&gt; +    return TRUE;

What is this??

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:79
&gt; +    void* buf = 0;
&gt; +    char* mime = 0;
&gt; +    size_t bytesRead = 0;
&gt; +    SoupURI* uri = 0;
&gt; +    EwkProtocolHandlerPrivate* priv = 0;
&gt; +    WebCore::ResourceHandle* resource = 0;
&gt; +    const WebCore::FrameNetworkingContextEfl* frameContext = 0;
&gt; +    const WebCore::FrameLoaderClientEfl* frameLoaderClient = 0;

No need to initialize everything to 0. If the variable is being set afterwards as a return of a function, initializing them here will just add noise to static code analyzers.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:81
&gt; +    resource = static_cast&lt;WebCore::ResourceHandle*&gt;(g_object_get_data(G_OBJECT(request), &quot;webkit-resource&quot;));

e.g. here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:83
&gt; +        frameContext = static_cast&lt;WebCore::FrameNetworkingContextEfl*&gt;(resource-&gt;getInternal()-&gt;m_context.get());

this is ok, but add a blank line here

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:85
&gt; +        frameLoaderClient = static_cast&lt;WebCore::FrameLoaderClientEfl*&gt;(frameContext-&gt;coreFrame()-&gt;loader()-&gt;client());

this is ok

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:87
&gt; +    uri = soup_request_get_uri(request);

and here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:90
&gt; +    priv  = G_TYPE_INSTANCE_GET_PRIVATE(reinterpret_cast&lt;EwkCustomProtocolHandler*&gt;(request),
&gt; +                                        EWK_TYPE_CUSTOM_PROTOCOL_HANDLER,
&gt; +                                        EwkProtocolHandlerPrivate);

Couldn&apos;t you move this up and using EINA_SAFETY_ON_NULL_RETURN or the like?

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:93
&gt; +    if (!(resource &amp;&amp; frameContext &amp;&amp; frameLoaderClient &amp;&amp; priv &amp;&amp; uri))
&gt; +        return 0;

Isn&apos;t this a candidate for eina safety?

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:99
&gt; +    if (uri-&gt;path[0] == &apos;/&apos;)
&gt; +        buf = ewk_view_protocol_handler_resource_get(frameLoaderClient-&gt;webView(),
&gt; +                                                     &amp;bytesRead, &amp;mime, uri-&gt;path + 1); // The path is always initialized with /.
&gt; +    else
&gt; +        buf = ewk_view_protocol_handler_resource_get(frameLoaderClient-&gt;webView(), &amp;bytesRead, &amp;mime, uri-&gt;host);

buf doesn&apos;t need to be initialized too.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:143
&gt; +    int protocols_size;
&gt; +    SoupSession* session = WebCore::ResourceHandle::defaultSession();
&gt; +    SoupSessionFeature* requester = 0;

same here

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:146
&gt; +    if (protocols_size &lt;= 0 || protocols[protocols_size]) // This array must be null terminated.

g_strv_length returns guint, so it&apos;s not possible to be less than zero.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:172
&gt; +    SoupSession* session = WebCore::ResourceHandle::defaultSession();
&gt; +    SoupSessionFeature* requester = 0;

same here too

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.h:57
&gt; +GType ewk_custom_protocol_handler_get_type();
&gt; +
&gt; +Eina_Bool ewk_custom_protocol_handler_soup_set(const char** protocols);
&gt; +
&gt; +Eina_Bool ewk_custom_protocol_handler_soup_all_unset();

EAPI?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4462
&gt;  /**
&gt; + * Register a new protocol handler for handling an specific protocol (scheme).
&gt; + *
&gt; + * @param o view.
&gt; + * @param protocols the protocols that will be handled.
&gt; + * @param handler the function that will be executed for the protocols
&gt; + * @param ctxt the handler context
&gt; + * @return @c EINA_TRUE if success, @c EINA_FALSE if not.
&gt; + */

Need to be moved to the header

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:4482
&gt; +/**
&gt; + * Remove the custom protocol handler.
&gt; + *
&gt; + * @param o view.
&gt; + * @return @c EINA_TRUE if success, @c EINA_FALSE if not.
&gt; + */

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458274</commentid>
    <comment_count>28</comment_count>
      <attachid>100153</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-08-29 10:37:19 -0700</bug_when>
    <thetext>Comment on attachment 100153
Patch

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

&gt;&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.h:57
&gt;&gt; +Eina_Bool ewk_custom_protocol_handler_soup_all_unset();
&gt; 
&gt; EAPI?

Disregard this comment. This header is not installed. You should make the ewk_protocol_handler.h by CMake though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458772</commentid>
    <comment_count>29</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2011-08-30 01:50:19 -0700</bug_when>
    <thetext>Please add @brief and @file doxygen commands to ewk_protocol_handler.h after license. It&apos;s required to include documentation of the file to HTML doc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458859</commentid>
    <comment_count>30</comment_count>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-08-30 05:39:25 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Please add @brief and @file doxygen commands to ewk_protocol_handler.h after license. It&apos;s required to include documentation of the file to HTML doc.

Sure, I&apos;ll do that. Thanks for advice.

Flávio Ceolin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458893</commentid>
    <comment_count>31</comment_count>
      <attachid>105627</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-08-30 07:42:38 -0700</bug_when>
    <thetext>Created attachment 105627
Patch

A new patch with the suggested fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458969</commentid>
    <comment_count>32</comment_count>
      <attachid>105627</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-08-30 09:45:44 -0700</bug_when>
    <thetext>Comment on attachment 105627
Patch

Looks fine now. Informal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462597</commentid>
    <comment_count>33</comment_count>
      <attachid>105627</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-06 09:37:03 -0700</bug_when>
    <thetext>Comment on attachment 105627
Patch

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

Looks good, but I have a few style nits. With another iteration and the unoffocial r+, I think this patch is fine.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:42
&gt; +static unsigned custom_protocol_added_count = 0;

Please either use camelCase everywhere or this_thing. WebKit style is to use camelCase.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:57
&gt; +                                                                              EwkProtocolHandlerPrivate);

The indent looks off here.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:71
&gt; +    void* buf;

I&apos;d prefer buffer to buf.

&gt; Source/WebKit/efl/ewk/ewk_protocol_handler_soup.cpp:145
&gt; +    guint protocols_size;
&gt; +    SoupSession* session = WebCore::ResourceHandle::defaultSession();

It&apos;s odd that you use camelCase above bug something_else here.

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

Extra space after struct.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:96
&gt; +        void* ctxt;
&gt; +        Ewk_View_Resource_Handler_Cb func;

&quot;context&quot; and &quot;function&quot; In Webkit we do not typically abbreviate variable names.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:3618
&gt; +Eina_Bool ewk_view_protocol_handler_set(Evas_Object* o, const char** protocols, Ewk_View_Resource_Handler_Cb handler, void* ctxt)

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.h:2227
&gt; +                                             void* ctxt);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465637</commentid>
    <comment_count>34</comment_count>
      <attachid>107055</attachid>
    <who name="Flavio Ceolin">flavio.ceolin</who>
    <bug_when>2011-09-12 09:44:59 -0700</bug_when>
    <thetext>Created attachment 107055
patch

First of all, thank you for the review.
I done all the suggested things, please take a look if it&apos;s everything ok now.

BR, Flávio Ceolin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465678</commentid>
    <comment_count>35</comment_count>
      <attachid>107055</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-12 10:53:38 -0700</bug_when>
    <thetext>Comment on attachment 107055
patch

Clearing flags on attachment: 107055

Committed r94965: &lt;http://trac.webkit.org/changeset/94965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465679</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-12 10:53:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65700</attachid>
            <date>2010-08-27 05:11:03 -0700</date>
            <delta_ts>2010-09-07 14:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44759-20100827090824.patch</filename>
            <type>text/plain</type>
            <size>14984</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWZlNzUwYzc4NTEyZmJjNzcxZmFkNWI3N2VlYzNiMjI0Njc0NTBiMS4uODk4M2I3Y2IyYzFiM2Rj
ZDEzMjBhOTFiODE4N2JhMjQyY2Y0ZTM1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wOC0yNyAgRmxh
dmlvIENlb2xpbiAgPGZsYXZpby5jZW9saW5AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VGTF0gQWRkIGN1c3RvbSBuZXR3
b3JrIHJlc291cmNlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ0NzU5CisKKwlUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFuZGxp
bmcgdXNlci1zcGVjaWZpYyBwcm90b2NvbHMgKHNjaGVtZXMpLgorCVRoYXQgbWVhbnMgbG9hZCBz
b21lIHJlc291cmNlIGZyb20gbm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9l
ZXQuCisKKyAgICAgICAgRUZMIHBvcnQgZG9lcyBub3QgaGF2ZSBhdXRvbWF0ZWQgdGVzdCB5ZXQs
IHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkSGFuZGxlU2NoZW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpoYW5kbGVTY2hlbWUpOgorCSog
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6IEZ1bmN0aW9uIHVzZWQgdG8gdGVzdCBpZiB0aGUg
c2NoZW1lIG11c3QKKwliZSBoYW5kbGVkIGJ5IHRoZSBjdXN0b20gcmVzb3VyY2UgaGFuZGxlci4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
OgorCShXZWJDb3JlOjopOiBJbiB0aGlzIHBhcnQgaXMgY2hlY2tlZCBpZiB0aGUgcHJvdG9jb2wg
d2lsbCBiZSBoYW5kbGVkIGJ5CisJYSBwZXJzb25hbCBhIGhhbmRsZXIsIGlmIHllcywgYXNrIGZv
ciB0aGUgRnJhbWVMb2FkZXJDbGllbnQgdGhlIHJlc291cmNlcyBmb3IKKwl0aGUgcHJvdG9jb2wK
KwogMjAxMC0wOC0yNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCAyNDg4OGYyN2U5ZWExOTA2NzJlMjAzZWY4NTYzMGQ1OWE5MzVlMjA4Li43ZDczMDkyMTQ3
NjJkYzVjZWI0ODgwOWQ3ZmU3MDI0MDE2N2U1Njk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBA
IC0zNTEwLDQgKzM1MTAsMTcgQEAgRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJh
bWUsIEZyYW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWUKICAgICByZXR1cm4g
ZnJhbWU7CiB9CiAKKyNpZiBQTEFURk9STShFRkwpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50Ojpz
aG91bGRIYW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkKiBGcmFtZUxvYWRlckNsaWVudDo6aGFuZGxlU2NoZW1lKGNvbnN0IEtV
UkwgdXJsLCBTdHJpbmcmIG1pbWUsIHNpemVfdCogYnl0ZXNSZWFkKQoreworICAgIHJldHVybiAw
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMzVlZWUzMmEzZDQ4MGM1MDU1MzQ2M2M1MjY4ZjUyNWI4NzhiMTNm
Ny4uNDgzMWUxOGFmMzdhYWQ5YWRjZjlmMzljOGIyODVhZTIxNTYyZmU3YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNjUsNiArMjY1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEhhbmRsZVNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkKiBoYW5k
bGVTY2hlbWUoY29uc3QgS1VSTCwgU3RyaW5nJiwgc2l6ZV90Kik7CisjZW5kaWYKKwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKm1p
bWVUeXBlKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
SGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCmluZGV4IDk2YTJmMjU2MWU1ODAzZDU4OTdkYjRiMmI5MTJkNjgyYjViNzAy
ZWIuLmJiYzk5MWUwZWE3YTQxZDUyZmQyN2ZiOTUyOWRkNjE5MWEwZGQyZGQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUzLDYgKzU0LDcgQEAKICNpbmNsdWRlIDxnbGliLmg+
CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNs
dWRlIDxzeXMvdGltZS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogCkBAIC0xMjQsNiArMTI2LDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBHaW9PcGVyYXRp
b24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbmcpOwogc3RhdGljIGJv
b2wgc3RhcnREYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFN0cmluZyB1cmxTdHJpbmcpOwog
c3RhdGljIGJvb2wgc3RhcnRHaW8oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgS1VSTCB1cmwpOwog
CisjaWYgUExBVEZPUk0oRUZMKQorc3RhdGljIGJvb2wgc3RhcnRQZXJzb25hbEhhbmRsZXIoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgS1VSTCB1cmwpOworI2VuZGlmCisKIFJlc291cmNlSGFuZGxl
SW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBpZiAobV9tc2cpIHsK
QEAgLTU5Nyw2ICs2MDMsMTMgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZy
YW1lKQogICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgdG9wbGV2
ZWw7IG1heSBiZSBOVUxMCiAgICAgZC0+bV9mcmFtZSA9IGZyYW1lOwogCisjaWYgUExBVEZPUk0o
RUZMKQorICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRIYW5kbGVTY2hl
bWUocHJvdG9jb2wpKSB7CisgICAgICAgIGlmIChzdGFydFBlcnNvbmFsSGFuZGxlcih0aGlzLCB1
cmwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCiAgICAgICAgIHJldHVybiBzdGFy
dERhdGEodGhpcywgdXJsU3RyaW5nKTsKIApAQCAtOTMxLDQgKzk0NCw1MiBAQCBTb3VwU2Vzc2lv
biogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKICAgICByZXR1cm4gc2Vzc2lvbjsK
IH0KIAorI2lmIFBMQVRGT1JNKEVGTCkKK3N0YXRpYyBib29sIHN0YXJ0UGVyc29uYWxIYW5kbGVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIEtVUkwgdXJsKQoreworICAgIEFTU0VSVChoYW5kbGUp
OworCisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICBTdHJpbmcgbWltZTsKKyAg
ICB2b2lkKiBidWY7CisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBzaXplX3QgYnl0ZXNSZWFk
OworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOwor
CisgICAgaWYgKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpICE9ICJHRVQiICYm
IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpICE9ICJQT1NUIikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAg
IHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CisgICAgdXJsLnJlbW92ZVBvcnQoKTsKKworICAgIGJ1
ZiA9IGQtPm1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+aGFuZGxlU2NoZW1lKHVybCwgbWlt
ZSwgJmJ5dGVzUmVhZCk7CisgICAgaWYgKCFidWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIGJhbGFuY2VkIGJ5IGEgZGVyZWYoKSBpbiBjbGVhbnVwR2lvT3BlcmF0aW9uLCB3aGlj
aCBzaG91bGQgYWx3YXlzIHJ1bgorICAgIGhhbmRsZS0+cmVmKCk7CisKKyAgICBnZXR0aW1lb2Zk
YXkoJnR2LCAwKTsKKyAgICByZXNwb25zZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KGJ5dGVzUmVhZCk7CisgICAgcmVzcG9uc2Uuc2V0TGFzdE1vZGlmaWVkRGF0ZSh0di50dl9zZWMp
OworICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKG1pbWUpOworICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworCisgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGdf
bWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKGJ1ZiwgYnl0ZXNSZWFkLCBmcmVlKTsK
KyAgICBkLT5tX2J1ZmZlclNpemUgPSBieXRlc1JlYWQ7CisgICAgZC0+bV9idWZmZXIgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoZC0+bV9idWZmZXJTaXplKSk7CisgICAgZC0+bV90b3Rh
bCA9IDA7CisKKyAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChkLT5tX2lucHV0U3RyZWFt
KSwgIndlYmtpdC1yZXNvdXJjZSIsIGhhbmRsZSk7CisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9h
c3luYyhkLT5tX2lucHV0U3RyZWFtLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNl
bGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENhbGxiYWNrLCAwKTsK
KworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nIGIvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYjE5MGQ1YzI0ZjA3NDJl
NzNkYTJiMGQ5MTVjMTliZDExYjg4NDhmYS4uNzdmZTgxOGVmNzAzMTc2MmM5NzhkOGEzYzAxNTgw
Yzk1NTE3YzEwMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wOC0yNyAgRmxhdmlvIENlb2xp
biAgPGZsYXZpby5jZW9saW5AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VGTF0gQWRkIGN1c3RvbSBuZXR3b3JrIHJlc291
cmNlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ0NzU5CisKKwlUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFuZGxpbmcgdXNlci1z
cGVjaWZpYyBwcm90b2NvbHMgKHNjaGVtZXMpLgorCVRoYXQgbWVhbnMgbG9hZCBzb21lIHJlc291
cmNlIGZyb20gbm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9lZXQuCisKKyAg
ICAgICAgRUZMIHBvcnQgZG9lcyBub3QgaGF2ZSBhdXRvbWF0ZWQgdGVzdCB5ZXQsIHNvIG5vIG5l
dyB0ZXN0cy4KKworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZEhh
bmRsZVNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6aGFu
ZGxlU2NoZW1lKToKKworCUl0J3MgdGhlIHBpcGUgYmV0d2VlbiBSZXNvdXJjZUhhbmRsZXJTb3Vw
IGFuZCB0aGUgZXdrX3ZpZXcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmg6CisKKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAg
KF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChld2tfdmlld19wcm90b2NvbF9oYW5kbGVy
X3JlZ2lzdGVyKToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5yZWdpc3Rl
cik6CisgICAgICAgIChld2tfdmlld19wcm90b2NvbGhhbmRsZXJfdmFsaWRfaXMpOgorICAgICAg
ICAoZXdrX3ZpZXdfcHJvdG9jb2xoYW5kbGVyX2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3
Lmg6CisKKwlXaGVyZSB0aGUgY3VzdG9tIHJlc291cmNlIGhhbmRsZXIgaXMgc3RvcmVkLgorCiAy
MDEwLTA4LTIzICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAg
ICAgICAgIFtFRkxdIEJ1aWxkIGZpeCBmb3IgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHJlcXVpcmUg
bGlua2luZyB3aXRoICJkbCIuCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDQ5OWQ2YzIxZDc2MjQ3YjY1NDVkMjQ0NGE5MmM2
NmE0MmI5Y2Y2MjcuLjM2ZjVlOTk5NGM2MTQ0MjUzMWI2M2Y0OGZlMmE4YWFiMDk5YWJkNjQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCkBAIC05NDUsNCArOTQ1LDM3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgICAgICBld2tfdmlld19mcmFtZV9tYWlu
X2NsZWFyZWQobV92aWV3KTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxk
SGFuZGxlU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmICghbV92aWV3KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZXdrX3ZpZXdfcHJvdG9jb2xoYW5kbGVy
X3ZhbGlkX2lzKG1fdmlldywgc2NoZW1lLnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCogRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmhhbmRsZVNjaGVtZShjb25zdCBLVVJMIHVybCwgU3RyaW5nJiBtaW1lLCBzaXplX3QqIGJ5
dGVzUmVhZCkKK3sKKyAgICBFd2tfVmlld19SZXNvdXJjZUhhbmRsZXJfQ2IgZnVuYzsKKyAgICBF
d2tfVmlld19SZXNvdXJjZUhhbmRsZXIqIGhhbmRsZXI7CisgICAgY2hhciogbWltZXR5cGUgPSAw
OworICAgIHZvaWQqIGJ1ZjsKKworICAgIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19S
ZXNvdXJjZUhhbmRsZXIgKj4oZXdrX3ZpZXdfcHJvdG9jb2xoYW5kbGVyX2dldChtX3ZpZXcsIHVy
bC5wcm90b2NvbCgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBmdW5jID0gaGFuZGxlci0+ZnVuYzsK
KworICAgIGlmICh1cmwubGFzdFBhdGhDb21wb25lbnQoKS5pc0VtcHR5KCkpCisgICAgICAgIGJ1
ZiA9IGZ1bmModXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgKyBzdHJsZW4odXJsLnByb3RvY29s
KCkudXRmOCgpLmRhdGEoKSkgKyAzLCBieXRlc1JlYWQsCisgICAgICAgICAgICAgICAgICAgJm1p
bWV0eXBlLCBoYW5kbGVyLT5jdHh0KTsKKyAgICBlbHNlCisgICAgICAgIGJ1ZiA9IGZ1bmModXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCkudXRmOCgpLmRhdGEoKSwgYnl0ZXNSZWFkLCAmbWltZXR5cGUs
IGhhbmRsZXItPmN0eHQpOworCisgICAgbWltZSA9ICghbWltZXR5cGUpID8gInRleHQvaHRtbCIg
OiBtaW1ldHlwZTsKKyAgICBmcmVlKG1pbWV0eXBlKTsKKworICAgIHJldHVybiBidWY7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
aAppbmRleCA1NjE3NjBjNTIxZjE2ZGVlYWMxODc3ZmFjYzIzYzc3MmRmMmYyNzlkLi5jYWZlNTZk
OWI2ZGZiYWQyZGJhYTVlNTNlMWUyZWEyYWY0OWI2NjRhIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCkBAIC0yMDIsNiArMjAyLDggQEAg
Y2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewog
CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSGFuZGxlU2NoZW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9p
ZCogaGFuZGxlU2NoZW1lKGNvbnN0IEtVUkwgdXJsLCBTdHJpbmcmLCBzaXplX3QqKTsKICBwcml2
YXRlOgogICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7CiAgICAgRXZhc19PYmplY3QgKm1fZnJhbWU7
CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvV2ViS2l0L2VmbC9l
d2svZXdrX3ByaXZhdGUuaAppbmRleCBlYWFkMTNjMzdmYmZkNGNlYmUwM2E5MTM4Yzk2YTU2Njhj
Yzc5YTk3Li5jNDI2ZDI2MjlkMTEwYjY5ZWRkN2RmY2U1NjIxYWIyYTlkYWE3NDY2IDEwMDY0NAot
LS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3
a19wcml2YXRlLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlv
dXQoRXZhc19PYmplY3QgKm8pOwogCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBl
d2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAorRWluYV9C
b29sIGV3a192aWV3X3Byb3RvY29saGFuZGxlcl92YWxpZF9pcyhFdmFzX09iamVjdCAqbywgY29u
c3QgY2hhciAqc2NoZW1lKTsKK3ZvaWQgKmV3a192aWV3X3Byb3RvY29saGFuZGxlcl9nZXQoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjaGVtZSk7CisKIEVpbmFfQm9vbCBld2tfdmlld19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogbywgRXdrX0ZyYW1lX1Jlc291
cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBh
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cAppbmRleCA3YTk4YmFjMDJkNDJlZWJmM2YzNDc5OWRmOGE4MmIxYzEzNGM4Y2RmLi5lZWQ2MmY4
MzRjOGI4MjM5YWQ0OTQ0MThiMTAzMmViMDU2ZGU5MDMxIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSA8RWNvcmUuaD4KQEAgLTY4LDYgKzY5LDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlX3NldHRpbmdzOwogICAgIFdlYkNvcmU6
OkZyYW1lKiBtYWluX2ZyYW1lOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5OworICAgIEVpbmFf
SGFzaCogcmVzb3VyY2VfaGFuZGxlcnM7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUg
bWVudTsKICAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsKQEAg
LTYwMSw2ICs2MDMsOCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdf
cHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiAgICAgcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5tYXhfc2NhbGUgPSBaT09NX01BWDsKICAgICBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLnVzZXJfc2NhbGFibGUgPSBFSU5BX1RSVUU7CiAKKyAgICBwcml2LT5yZXNvdXJjZV9oYW5k
bGVycyA9IGVpbmFfaGFzaF9zdHJpbmdfc21hbGxfbmV3KDApOworCiAgICAgcHJpdi0+bWFpbl9m
cmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAg
aWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3Jl
YXRlIG1haW4gZnJhbWUuIik7CkBAIC02NDUsNiArNjQ5LDcgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250X2ZhbnRhc3kpOwogICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYpOwogICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2Fuc19zZXJpZik7CisgICAgZWluYV9oYXNoX2Zy
ZWUocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMpOwogCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pv
b20uYW5pbWF0b3IpCiAgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChwcml2LT5hbmltYXRlZF96
b29tLmFuaW1hdG9yKTsKQEAgLTQwMjEsMyArNDAyNiw2OCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNv
dXJjZQogCiAgICAgcmV0dXJuIHNkLT5hcGktPm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKHNk
LCByZXF1ZXN0KTsKIH0KKworLyoqCisgKiBSZWdpc3RlciBhIG5ldyBwcm90b2NvbCBoYW5kbGVy
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJvdG9jb2wgdGhlIHByb3RvY29s
IHRoYXQgd2lsbCBiZSBoYW5kbGVkLgorICogQHBhcmFtIGhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBleGVjdXRlZCBmb3IgdGhlIHByb3RvY29sCisgKiBAcGFyYW0gY3R4dCB0aGUg
aGFuZGxlciBjb250ZXh0CisgKiB0byBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBpZiBub3QuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jl
Z2lzdGVyKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwcm90b2NvbCwgRXdrX1ZpZXdfUmVz
b3VyY2VIYW5kbGVyX0NiIGhhbmRsZXIsIHZvaWQqIGN0eHQpCit7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBpZiAo
IWhhbmRsZXIpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgRXdrX1ZpZXdfUmVz
b3VyY2VIYW5kbGVyKiByID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUmVzb3VyY2VIYW5kbGVyKj4K
KyAgICAgICAgKG1hbGxvYyhzaXplb2YoRXdrX1ZpZXdfUmVzb3VyY2VIYW5kbGVyKSkpOworCisg
ICAgaWYgKCFyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHItPmN0eHQgPSBj
dHh0OworICAgIHItPmZ1bmMgPSBoYW5kbGVyOworICAgIHJldHVybiBlaW5hX2hhc2hfZGlyZWN0
X2FkZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgcHJvdG9jb2wsIHN0YXRpY19jYXN0PHZvaWQg
Kj4ocikpOworfQorCisvKioKKyAqIFJlbW92ZSBwcm90b2NvbCBoYW5kbGVyLgorICoKKyAqIEBw
YXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJvdG9jb2wgdGhlIHByb3RvY29sIHRoYXQgd2lsbCBi
ZSByZW1vdmVkLgorICogdG8gQGMgRUlOQV9UUlVFIGlmIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
aWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl91bnJlZ2lz
dGVyKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAg
IGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcmV0dXJu
IGVpbmFfaGFzaF9kZWxfYnlfa2V5KHByaXYtPnJlc291cmNlX2hhbmRsZXJzLCBwcm90b2NvbCk7
Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbGhhbmRsZXJfdmFsaWRfaXMoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIHNjaGVtZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywg
c2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChlaW5hX2hh
c2hfZmluZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgc2NoZW1lKSkKKyAgICAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKKworICAgIHJldHVybiBFSU5BX0ZBTFNFOworfQorCit2b2lkKiBld2tfdmll
d19wcm90b2NvbGhhbmRsZXJfZ2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzY2hlbWUp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisKKyAgICByZXR1cm4gZWluYV9oYXNoX2ZpbmQocHJpdi0+cmVzb3VyY2VfaGFu
ZGxlcnMsIHNjaGVtZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
IGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCA4ZGQ2MTc4M2MxMWY1ZWZiMzQ3ODky
NGRmN2MxMjg2YzcyOWZjODMzLi42YzVjOGE3N2Y3ODk1YTczYzc3N2QyN2YzOTI3ODcyMjc4ZTMw
Y2YyIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgKQEAgLTkwLDYgKzkwLDEzIEBAIGV4dGVybiAiQyIgewogICogIC0g
ImlucHV0bWV0aG9kcyxjaGFuZ2VkIiB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIg
aXQncyBlbmFibGVkIG9yIG5vdC4KICAqLwogCit0eXBlZGVmIHZvaWQqICgqRXdrX1ZpZXdfUmVz
b3VyY2VIYW5kbGVyX0NiKShjb25zdCBjaGFyICosIHNpemVfdCAqLCBjaGFyICoqLCB2b2lkICop
OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Jlc291cmNlSGFuZGxlciBFd2tfVmlld19SZXNv
dXJjZUhhbmRsZXI7CitzdHJ1Y3QgX0V3a19WaWV3X1Jlc291cmNlSGFuZGxlciB7CisgICAgdm9p
ZCAqY3R4dDsKKyAgICBFd2tfVmlld19SZXNvdXJjZUhhbmRsZXJfQ2IgZnVuYzsKK307CisKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAK
IC8qKgpAQCAtNDUxLDYgKzQ1OCw5IEBAIEVBUEkgdm9pZCBld2tfdmlld19sYXlvdXRfaWZfbmVl
ZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEgKnByaXYpOwogCiBFQVBJIHZvaWQg
ZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIAorRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZWdpc3RlcihFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqcHJvdG9jb2wsIEV3a19WaWV3X1Jlc291cmNlSGFuZGxlcl9DYiBo
YW5kbGVyLCB2b2lkICpjdHh0KTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hh
bmRsZXJfdW5yZWdpc3RlcihFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcHJvdG9jb2wpOwor
CiAvKioKICAqIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHBhaW50IGNvbnRleHQuCiAgKgo=
</data>
<flag name="review"
          id="54536"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66764</attachid>
            <date>2010-09-07 14:15:54 -0700</date>
            <delta_ts>2011-06-10 13:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Added-support-for-custom-handlers.patch</filename>
            <type>text/plain</type>
            <size>15363</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSA4MjgwYTYxNTc2OGU3YWJmYjllODA4NTcyODgxNjcyZjUzYTM4NWUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBUdWUsIDcgU2VwIDIwMTAgMTY6MzY6MTEgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBBZGRlZCBzdXBwb3J0IGZvciBjdXN0b20gaGFuZGxlcnMKCi0tLQogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIzICsrKysrKysKIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAxMiAr
KysrCiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oICAgICAgICAgICAgICAgICB8
ICAgIDUgKysKIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cCAgIHwgICA2MSArKysrKysrKysrKysrKysrKwogV2ViS2l0L2VmbC9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMzICsrKysrKysrKwogV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgfCAgIDMzICsrKysrKysrKwogV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oICAgfCAgICAyICsK
IFdlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAg
MyArCiBXZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgNzAgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9lZmwvZXdrL2V3a192aWV3LmggICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI1MiBp
bnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljZjdkYy4uM2ZlMTBlNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAxMC0wOS0wNyAgRmxhdmlvIENlb2xpbiAgPGZsYXZpby5jZW9saW5AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VGTF0gQWRkIGN1c3RvbSBuZXR3b3JrIHJlc291cmNlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzU5CisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVzZXItc3BlY2lmaWMgcHJvdG9jb2xzIChz
Y2hlbWVzKS4KKyAgICAgICAgVGhhdCBtZWFucyBsb2FkIHNvbWUgcmVzb3VyY2UgZnJvbSBub24t
aHR0cC9maWxlIHN0b3JhZ2UsIGxpa2UgYSB0YXIvemlwL2VldC4KKworICAgICAgICBFRkwgcG9y
dCBkb2VzIG5vdCBoYXZlIGF1dG9tYXRlZCB0ZXN0IHlldCwgc28gbm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50OjpzaG91bGRIYW5kbGVTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnQ6OmhhbmRsZVNjaGVtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6IEZ1bmN0aW9uIHVzZWQgdG8gdGVzdCBpZiB0aGUgc2NoZW1lIG11c3QKKyAg
ICAgICAgYmUgaGFuZGxlZCBieSB0aGUgY3VzdG9tIHJlc291cmNlIGhhbmRsZXIuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oik6IEluIHRoaXMgcGFydCBpcyBjaGVja2VkIGlmIHRoZSBwcm90b2NvbCB3
aWxsIGJlIGhhbmRsZWQgYnkKKyAgICAgICAgYSBjdXN0b20gcmVzb3VyY2UgaGFuZGxlciwgaWYg
eWVzLCBhc2sgZm9yIHRoZSBGcmFtZUxvYWRlckNsaWVudCB0aGUgcmVzb3VyY2VzIGZvcgorICAg
ICAgICB0aGUgcHJvdG9jb2wKKwogMjAxMC0wOS0wNyAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IGRjN2ExY2UuLjA5MTc4ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTM1MzMsNCArMzUzMywxNiBAQCBGcmFtZSogY3JlYXRlV2luZG93KEZyYW1lKiBvcGVu
ZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZQogICAgIHJl
dHVybiBmcmFtZTsKIH0KIAorI2lmIFBMQVRGT1JNKEVGTCkKK2Jvb2wgRnJhbWVMb2FkZXJDbGll
bnQ6OnNob3VsZEhhbmRsZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQqIEZyYW1lTG9hZGVyQ2xpZW50OjpoYW5kbGVTY2hlbWUoY29u
c3QgS1VSTCB1cmwsIFN0cmluZyYgbWltZSwgc2l6ZV90KiBieXRlc1JlYWQpCit7CisgICAgcmV0
dXJuIDA7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMDRhODg2OC4uYTY5ZWU4MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yNjYsNiArMjY2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEhhbmRs
ZVNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkKiBoYW5kbGVTY2hl
bWUoY29uc3QgS1VSTCwgU3RyaW5nJiwgc2l6ZV90Kik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKm1pbWVUeXBl
Ki8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRM
b2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCmluZGV4IDk2YTJmMjUuLjFlYTZjNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
R093blB0clNvdXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTUzLDYgKzU0LDcgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5o
PgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCkBAIC0xMjQs
NiArMTI2LDEwIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBHaW9PcGVyYXRpb24oUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbmcpOwogc3RhdGljIGJvb2wgc3RhcnREYXRhKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIFN0cmluZyB1cmxTdHJpbmcpOwogc3RhdGljIGJvb2wgc3Rh
cnRHaW8oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgS1VSTCB1cmwpOwogCisjaWYgUExBVEZPUk0o
RUZMKQorc3RhdGljIGJvb2wgc3RhcnRDdXN0b21IYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIEtVUkwgdXJsKTsKKyNlbmRpZgorCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCgpCiB7CiAgICAgaWYgKG1fbXNnKSB7CkBAIC01OTcsNiArNjAzLDEz
IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICAvLyBVc2Vk
IHRvIHNldCB0aGUgYXV0aGVudGljYXRpb24gZGlhbG9nIHRvcGxldmVsOyBtYXkgYmUgTlVMTAog
ICAgIGQtPm1fZnJhbWUgPSBmcmFtZTsKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBpZiAoZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkSGFuZGxlU2NoZW1lKHByb3RvY29sKSkgewor
ICAgICAgICBpZiAoc3RhcnRDdXN0b21IYW5kbGVyKHRoaXMsIHVybCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShw
cm90b2NvbCwgImRhdGEiKSkKICAgICAgICAgcmV0dXJuIHN0YXJ0RGF0YSh0aGlzLCB1cmxTdHJp
bmcpOwogCkBAIC05MzEsNCArOTQ0LDUyIEBAIFNvdXBTZXNzaW9uKiBSZXNvdXJjZUhhbmRsZTo6
ZGVmYXVsdFNlc3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uOwogfQogCisjaWYgUExBVEZPUk0o
RUZMKQorc3RhdGljIGJvb2wgc3RhcnRDdXN0b21IYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIEtVUkwgdXJsKQoreworICAgIEFTU0VSVChoYW5kbGUpOworCisgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKKyAgICBTdHJpbmcgbWltZTsKKyAgICB2b2lkKiBidWY7CisgICAgc3Ry
dWN0IHRpbWV2YWwgdHY7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+
Z2V0SW50ZXJuYWwoKTsKKyAgICBzaXplX3QgYnl0ZXNSZWFkOworICAgIFJlc291cmNlSGFuZGxl
Q2xpZW50KiBjbGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOworCisgICAgaWYgKGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpICE9ICJHRVQiICYmIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkuaHR0cE1ldGhvZCgpICE9ICJQT1NUIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
dXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHVybC5zZXRRdWVyeShTdHJpbmco
KSk7CisgICAgdXJsLnJlbW92ZVBvcnQoKTsKKworICAgIGJ1ZiA9IGQtPm1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+aGFuZGxlU2NoZW1lKHVybCwgbWltZSwgJmJ5dGVzUmVhZCk7CisgICAg
aWYgKCFidWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIGJhbGFuY2VkIGJ5IGEg
ZGVyZWYoKSBpbiBjbGVhbnVwR2lvT3BlcmF0aW9uLCB3aGljaCBzaG91bGQgYWx3YXlzIHJ1bgor
ICAgIGhhbmRsZS0+cmVmKCk7CisKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKyAgICByZXNw
b25zZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGJ5dGVzUmVhZCk7CisgICAgcmVz
cG9uc2Uuc2V0TGFzdE1vZGlmaWVkRGF0ZSh0di50dl9zZWMpOworICAgIHJlc3BvbnNlLnNldE1p
bWVUeXBlKG1pbWUpOworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVz
cG9uc2UpOworCisgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9u
ZXdfZnJvbV9kYXRhKGJ1ZiwgYnl0ZXNSZWFkLCBmcmVlKTsKKyAgICBkLT5tX2J1ZmZlclNpemUg
PSBieXRlc1JlYWQ7CisgICAgZC0+bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxs
b2MoZC0+bV9idWZmZXJTaXplKSk7CisgICAgZC0+bV90b3RhbCA9IDA7CisKKyAgICBnX29iamVj
dF9zZXRfZGF0YShHX09CSkVDVChkLT5tX2lucHV0U3RyZWFtKSwgIndlYmtpdC1yZXNvdXJjZSIs
IGhhbmRsZSk7CisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFt
LCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhZENhbGxiYWNrLCAwKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggNTRkNjRlMy4uZDM4YzVlYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBA
QAorMjAxMC0wOS0wNyAgRmxhdmlvIENlb2xpbiAgPGZsYXZpby5jZW9saW5AcHJvZnVzaW9uLm1v
Ymk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VG
TF0gQWRkIGN1c3RvbSBuZXR3b3JrIHJlc291cmNlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzU5CisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVzZXItc3BlY2lmaWMgcHJvdG9jb2xzIChzY2hl
bWVzKS4KKyAgICAgICAgVGhhdCBtZWFucyBsb2FkIHNvbWUgcmVzb3VyY2UgZnJvbSBub24taHR0
cC9maWxlIHN0b3JhZ2UsIGxpa2UgYSB0YXIvemlwL2VldC4KKworICAgICAgICBFRkwgcG9ydCBk
b2VzIG5vdCBoYXZlIGF1dG9tYXRlZCB0ZXN0IHlldCwgc28gbm8gbmV3IHRlc3RzLgorCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkSGFuZGxlU2NoZW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpoYW5kbGVTY2hlbWUpOgorCisg
ICAgICAgIEl0J3MgdGhlIHBpcGUgYmV0d2VlbiBSZXNvdXJjZUhhbmRsZXJTb3VwIGFuZCB0aGUg
ZXdrX3ZpZXcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
Lmg6CisKKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBld2svZXdrX3Zp
ZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmll
d19wcml2X2RlbCk6CisgICAgICAgIChld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3JlZ2lzdGVy
KToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5yZWdpc3Rlcik6CisgICAg
ICAgIChld2tfdmlld19wcm90b2NvbGhhbmRsZXJfdmFsaWRfaXMpOgorICAgICAgICAoZXdrX3Zp
ZXdfcHJvdG9jb2xoYW5kbGVyX2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisKKyAg
ICAgICAgV2hlcmUgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIGlzIHN0b3JlZC4KKwogMjAx
MC0wOS0wNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDhlYzc4M2EuLjczMDM5OWEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisr
KyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBA
IC05NTEsNCArOTUxLDM3IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0CiAgICAgcmV0dXJuIEZy
YW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OmNyZWF0ZShld2tfZnJhbWVfY29yZV9nZXQobV9mcmFt
ZSkpOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzaG91bGRIYW5kbGVTY2hlbWUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChld2tfdmlld19wcm90b2NvbGhhbmRsZXJfdmFsaWRfaXMobV92
aWV3LCBzY2hlbWUudXRmOCgpLmRhdGEoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkKiBGcmFtZUxvYWRlckNsaWVudEVmbDo6aGFuZGxlU2No
ZW1lKGNvbnN0IEtVUkwgdXJsLCBTdHJpbmcmIG1pbWUsIHNpemVfdCogYnl0ZXNSZWFkKQorewor
ICAgIEV3a19WaWV3X1Jlc291cmNlSGFuZGxlcl9DYiBmdW5jOworICAgIEV3a19WaWV3X1Jlc291
cmNlSGFuZGxlciogaGFuZGxlcjsKKyAgICBjaGFyKiBtaW1ldHlwZSA9IDA7CisgICAgdm9pZCog
YnVmOworCisgICAgaGFuZGxlciA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1Jlc291cmNlSGFuZGxl
ciAqPihld2tfdmlld19wcm90b2NvbGhhbmRsZXJfZ2V0KG1fdmlldywgdXJsLnByb3RvY29sKCku
dXRmOCgpLmRhdGEoKSkpOworICAgIGZ1bmMgPSBoYW5kbGVyLT5mdW5jOworCisgICAgaWYgKHVy
bC5sYXN0UGF0aENvbXBvbmVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgYnVmID0gZnVuYyh1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSArIHN0cmxlbih1cmwucHJvdG9jb2woKS51dGY4KCkuZGF0
YSgpKSArIDMsIGJ5dGVzUmVhZCwKKyAgICAgICAgICAgICAgICAgICAmbWltZXR5cGUsIGhhbmRs
ZXItPmN0eHQpOworICAgIGVsc2UKKyAgICAgICAgYnVmID0gZnVuYyh1cmwubGFzdFBhdGhDb21w
b25lbnQoKS51dGY4KCkuZGF0YSgpLCBieXRlc1JlYWQsICZtaW1ldHlwZSwgaGFuZGxlci0+Y3R4
dCk7CisKKyAgICBtaW1lID0gKCFtaW1ldHlwZSkgPyAidGV4dC9odG1sIiA6IG1pbWV0eXBlOwor
ICAgIGZyZWUobWltZXR5cGUpOworCisgICAgcmV0dXJuIGJ1ZjsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IGJkMTA1
Y2QuLmNmNDFiMGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmgKQEAgLTIwNCw2ICsyMDQsOCBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVu
dEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdD
b250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZEhhbmRsZVNjaGVtZShjb25zdCBTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQqIGhhbmRsZVNjaGVtZShjb25zdCBLVVJMLCBTdHJpbmcm
LCBzaXplX3QqKTsKICBwcml2YXRlOgogICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7CiAgICAgRXZh
c19PYmplY3QgKm1fZnJhbWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0
ZS5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCBlYWFkMTNjLi5jNDI2ZDI2
IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1dlYktpdC9l
ZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB2b2lkIGV3a19mcmFtZV9m
b3JjZV9sYXlvdXQoRXZhc19PYmplY3QgKm8pOwogCiBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogbywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
IAorRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29saGFuZGxlcl92YWxpZF9pcyhFdmFzX09iamVj
dCAqbywgY29uc3QgY2hhciAqc2NoZW1lKTsKK3ZvaWQgKmV3a192aWV3X3Byb3RvY29saGFuZGxl
cl9nZXQoRXZhc19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjaGVtZSk7CisKIEVpbmFfQm9vbCBl
d2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogbywgRXdrX0Zy
YW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3QpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlm
ZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAppbmRleCBlYTU0MTY3Li41NTBiNDM4IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSA8RWNvcmUuaD4KQEAgLTY5LDYgKzcwLDcgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0Rh
dGEgewogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlX3NldHRpbmdzOwogICAgIFdlYkNvcmU6
OkZyYW1lKiBtYWluX2ZyYW1lOwogICAgIEV3a19IaXN0b3J5KiBoaXN0b3J5OworICAgIEVpbmFf
SGFzaCogcmVzb3VyY2VfaGFuZGxlcnM7CiAgICAgc3RydWN0IHsKICAgICAgICAgRXdrX01lbnUg
bWVudTsKICAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtZW51X2NsaWVudDsKQEAg
LTYxMyw2ICs2MTUsOCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdf
cHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiAgICAgcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5tYXhfc2NhbGUgPSBaT09NX01BWDsKICAgICBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLnVzZXJfc2NhbGFibGUgPSBFSU5BX1RSVUU7CiAKKyAgICBwcml2LT5yZXNvdXJjZV9oYW5k
bGVycyA9IGVpbmFfaGFzaF9zdHJpbmdfc21hbGxfbmV3KDApOworCiAgICAgcHJpdi0+bWFpbl9m
cmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAg
aWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3Jl
YXRlIG1haW4gZnJhbWUuIik7CkBAIC02NTgsNiArNjYyLDcgQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdikKICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5mb250X2ZhbnRhc3kpOwogICAgIGVpbmFfc3RyaW5n
c2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYpOwogICAgIGVpbmFfc3RyaW5nc2hh
cmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2Fuc19zZXJpZik7CisgICAgZWluYV9oYXNoX2Zy
ZWUocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMpOwogCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pv
b20uYW5pbWF0b3IpCiAgICAgICAgIGVjb3JlX2FuaW1hdG9yX2RlbChwcml2LT5hbmltYXRlZF96
b29tLmFuaW1hdG9yKTsKQEAgLTQxMzksMyArNDE0NCw2OCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIG8sIEV3a19GcmFtZV9SZXNv
dXJjZQogCiAgICAgcmV0dXJuIHNkLT5hcGktPm5hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKHNk
LCByZXF1ZXN0KTsKIH0KKworLyoqCisgKiBSZWdpc3RlciBhIG5ldyBwcm90b2NvbCBoYW5kbGVy
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJvdG9jb2wgdGhlIHByb3RvY29s
IHRoYXQgd2lsbCBiZSBoYW5kbGVkLgorICogQHBhcmFtIGhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBleGVjdXRlZCBmb3IgdGhlIHByb3RvY29sCisgKiBAcGFyYW0gY3R4dCB0aGUg
aGFuZGxlciBjb250ZXh0CisgKiB0byBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9G
QUxTRSBpZiBub3QuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jl
Z2lzdGVyKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwcm90b2NvbCwgRXdrX1ZpZXdfUmVz
b3VyY2VIYW5kbGVyX0NiIGhhbmRsZXIsIHZvaWQqIGN0eHQpCit7CisgICAgRVdLX1ZJRVdfU0Rf
R0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBpZiAo
IWhhbmRsZXIpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgRXdrX1ZpZXdfUmVz
b3VyY2VIYW5kbGVyKiByID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUmVzb3VyY2VIYW5kbGVyKj4K
KyAgICAgICAgKG1hbGxvYyhzaXplb2YoRXdrX1ZpZXdfUmVzb3VyY2VIYW5kbGVyKSkpOworCisg
ICAgaWYgKCFyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHItPmN0eHQgPSBj
dHh0OworICAgIHItPmZ1bmMgPSBoYW5kbGVyOworICAgIHJldHVybiBlaW5hX2hhc2hfZGlyZWN0
X2FkZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgcHJvdG9jb2wsIHN0YXRpY19jYXN0PHZvaWQg
Kj4ocikpOworfQorCisvKioKKyAqIFJlbW92ZSBwcm90b2NvbCBoYW5kbGVyLgorICoKKyAqIEBw
YXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJvdG9jb2wgdGhlIHByb3RvY29sIHRoYXQgd2lsbCBi
ZSByZW1vdmVkLgorICogdG8gQGMgRUlOQV9UUlVFIGlmIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ug
aWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl91bnJlZ2lz
dGVyKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICBFV0tfVklF
V19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAg
IGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcmV0dXJu
IGVpbmFfaGFzaF9kZWxfYnlfa2V5KHByaXYtPnJlc291cmNlX2hhbmRsZXJzLCBwcm90b2NvbCk7
Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbGhhbmRsZXJfdmFsaWRfaXMoRXZhc19P
YmplY3QqIG8sIGNvbnN0IGNoYXIqIHNjaGVtZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywg
c2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChlaW5hX2hh
c2hfZmluZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgc2NoZW1lKSkKKyAgICAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKKworICAgIHJldHVybiBFSU5BX0ZBTFNFOworfQorCit2b2lkKiBld2tfdmll
d19wcm90b2NvbGhhbmRsZXJfZ2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzY2hlbWUp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChz
ZCwgcHJpdik7CisKKyAgICByZXR1cm4gZWluYV9oYXNoX2ZpbmQocHJpdi0+cmVzb3VyY2VfaGFu
ZGxlcnMsIHNjaGVtZSk7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
IGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBjNWQyZDQ1Li43YzlkMjc0IDEwMDY0
NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmgKQEAgLTkxLDYgKzkxLDEzIEBAIGV4dGVybiAiQyIgewogICogIC0gInZpZXcscmVz
aXplZCIsIHZvaWQ6IHZpZXcgb2JqZWN0J3Mgc2l6ZSBoYXMgY2hhbmdlZC4KICAqLwogCit0eXBl
ZGVmIHZvaWQqICgqRXdrX1ZpZXdfUmVzb3VyY2VIYW5kbGVyX0NiKShjb25zdCBjaGFyICosIHNp
emVfdCAqLCBjaGFyICoqLCB2b2lkICopOwordHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Jlc291
cmNlSGFuZGxlciBFd2tfVmlld19SZXNvdXJjZUhhbmRsZXI7CitzdHJ1Y3QgX0V3a19WaWV3X1Jl
c291cmNlSGFuZGxlciB7CisgICAgdm9pZCAqY3R4dDsKKyAgICBFd2tfVmlld19SZXNvdXJjZUhh
bmRsZXJfQ2IgZnVuYzsKK307CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRh
IEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAKIC8qKgpAQCAtNDYyLDYgKzQ2OSw5IEBAIEVBUEkgdm9p
ZCBld2tfdmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0Rh
dGEgKnByaXYpOwogCiBFQVBJIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKTsKIAorRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFu
ZGxlcl9yZWdpc3RlcihFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcHJvdG9jb2wsIEV3a19W
aWV3X1Jlc291cmNlSGFuZGxlcl9DYiBoYW5kbGVyLCB2b2lkICpjdHh0KTsKK0VBUEkgRWluYV9C
b29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5yZWdpc3RlcihFdmFzX09iamVjdCAqbywg
Y29uc3QgY2hhciAqcHJvdG9jb2wpOworCiAvKioKICAqIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHBh
aW50IGNvbnRleHQuCiAgKgotLSAKMS43LjIuMwoK
</data>
<flag name="review"
          id="55872"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96774</attachid>
            <date>2011-06-10 13:24:45 -0700</date>
            <delta_ts>2011-06-10 14:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handler.patch</filename>
            <type>text/plain</type>
            <size>15358</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSA1YWZmZDRiMDc0ZTNhZjhhZTliZGZhNjcxNTIyOTkyN2Q5NWIwNzYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBXZWQsIDggSnVuIDIwMTEgMTY6MTI6NDMgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbRUZMXSAgIEFkZCBjdXN0b20gbmV0d29yayByZXNvdXJjZSBoYW5kbGVyICAgICAgICAK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1OQoKICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFuZGxpbmcgdXNlci1zcGVjaWZpYyBwcm90b2Nv
bHMgKHNjaGVtZXMpLgogICAgICAgIFRoYXQgbWVhbnMgbG9hZCBzb21lIHJlc291cmNlIGZyb20g
bm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9lZXQuCi0tLQogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrKysKIC4u
Li9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCAgIHwgICA2OCAr
KysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzMgKysrKysrKysKIC4uLi9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwICAgIHwgICAzMyArKysrKysrKwogLi4uL2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfcHJpdmF0ZS5oICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwICAgICAgICAgICAgICAgICB8ICAgODUgKysrKysrKysr
KysrKysrKysrKy0KIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oICAgICAgICAgICAg
ICAgICAgIHwgICAxMCArKysKIDggZmlsZXMgY2hhbmdlZCwgMjUwIGluc2VydGlvbnMoKyksIDEg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUzNjY3OWQuLjJlNmRkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNi0xMCAgRmxhdmlvIENlb2xpbiAgPGZsYXZpby5jZW9s
aW5AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0VGTF0gQWRkIGN1c3RvbSBuZXR3b3JrIHJlc291cmNlIGhhbmRsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzU5CisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVzZXItc3BlY2lmaWMg
cHJvdG9jb2xzIChzY2hlbWVzKS4KKyAgICAgICAgVGhhdCBtZWFucyBsb2FkIHNvbWUgcmVzb3Vy
Y2UgZnJvbSBub24taHR0cC9maWxlIHN0b3JhZ2UsIGxpa2UgYSB0YXIvemlwL2VldC4KKworICAg
ICAgICBFRkwgcG9ydCBkb2VzIG5vdCBoYXZlIGF1dG9tYXRlZCB0ZXN0IHlldCwgc28gbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOiBJbiB0aGlzIHBhcnQgaXMgY2hlY2tlZCBp
ZiB0aGUgcHJvdG9jb2wgd2lsbCBiZSBoYW5kbGVkIGJ5CisgICAgICAgIGEgY3VzdG9tIHJlc291
cmNlIGhhbmRsZXIsIGlmIHllcywgYXNrIGZvciB0aGUgRnJhbWVMb2FkZXJDbGllbnRFZmwgdGhl
IHJlc291cmNlcyBmb3IKKyAgICAgICAgdGhlIHByb3RvY29sCisKIDIwMTEtMDYtMTAgIEx1a2Ug
TWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggMGM4NTVkNC4uZjNm
MGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTU1LDkgKzU1LDE1IEBACiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLXJlcXVlc3Rlci5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgog
I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorI2lmZGVmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgorI2luY2x1ZGUgIkZyYW1lTmV0d29y
a2luZ0NvbnRleHRFZmwuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNkZWZp
bmUgUkVBRF9CVUZGRVJfU0laRSA4MTkyCkBAIC0xMzEsNiArMTM3LDEwIEBAIHN0YXRpYyB2b2lk
IHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwogc3RhdGlj
IHZvaWQgY2xvc2VDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwog
c3RhdGljIGJvb2wgc3RhcnROb25IVFRQUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIEtVUkwpOwog
CisjaWYgUExBVEZPUk0oRUZMKQorc3RhdGljIGJvb2wgc3RhcnRDdXN0b21IYW5kbGVyKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIEtVUkwgdXJsKTsKKyNlbmRpZgorCiBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CiAgICAgaWYgKG1fc291cFJlcXVl
c3QpCkBAIC02NjMsNiArNjczLDE1IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0KQogICAgIC8vIFVzZWQgdG8gc2V0IHRoZSBhdXRoZW50aWNh
dGlvbiBkaWFsb2cgdG9wbGV2ZWw7IG1heSBiZSBOVUxMCiAgICAgZC0+bV9jb250ZXh0ID0gY29u
dGV4dDsKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZs
KiBmcmFtZUNvbnRleHQgPSBzdGF0aWNfY2FzdDxGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKj4o
Y29udGV4dCk7CisgICAgRnJhbWVMb2FkZXJDbGllbnRFZmwqIGZyYW1lTG9hZGVyQ2xpZW50ID0g
c3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGllbnRFZmwqPihmcmFtZUNvbnRleHQtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIGlmIChmcmFtZUxvYWRlckNsaWVudC0+c2hv
dWxkSGFuZGxlU2NoZW1lKHByb3RvY29sKSkgeworICAgICAgICBpZiAoc3RhcnRDdXN0b21IYW5k
bGVyKHRoaXMsIHVybCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYK
KwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHBzIikpIHsKICAgICAgICAgaWYgKHN0YXJ0SFRUUFJl
cXVlc3QodGhpcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg1Myw0ICs4NzIsNTMg
QEAgU291cFNlc3Npb24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiAgICAgcmV0
dXJuIHNlc3Npb247CiB9CiAKKyNpZiBQTEFURk9STShFRkwpCitzdGF0aWMgYm9vbCBzdGFydEN1
c3RvbUhhbmRsZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgS1VSTCB1cmwpCit7CisgICAgQVNT
RVJUKGhhbmRsZSk7CisKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIFN0cmlu
ZyBtaW1lOworICAgIHZvaWQqIGJ1ZjsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICBSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIHNpemVf
dCBieXRlc1JlYWQ7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+
Y2xpZW50KCk7CisKKyAgICBpZiAoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCkg
IT0gIkdFVCIgJiYgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9kKCkgIT0gIlBPU1Qi
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CisgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKKyAgICB1cmwucmVtb3ZlUG9ydCgp
OworCisgICAgRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCogZnIgPSBzdGF0aWNfY2FzdDxGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0RWZsICo+KGQtPm1fY29udGV4dC5nZXQoKSk7CisgICAgRnJhbWVM
b2FkZXJDbGllbnRFZmwqIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RhdGljX2Nhc3Q8RnJhbWVMb2Fk
ZXJDbGllbnRFZmwqPihmci0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAg
YnVmID0gZnJhbWVMb2FkZXJDbGllbnQtPmhhbmRsZVNjaGVtZSh1cmwsIG1pbWUsICZieXRlc1Jl
YWQpOworICAgIGlmICghYnVmKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBiYWxh
bmNlZCBieSBhIGRlcmVmKCkgaW4gY2xlYW51cEdpb09wZXJhdGlvbiwgd2hpY2ggc2hvdWxkIGFs
d2F5cyBydW4KKyAgICBoYW5kbGUtPnJlZigpOworCisgICAgZ2V0dGltZW9mZGF5KCZ0diwgMCk7
CisgICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOworICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChieXRlc1JlYWQp
OworICAgIHJlc3BvbnNlLnNldExhc3RNb2RpZmllZERhdGUodHYudHZfc2VjKTsKKyAgICByZXNw
b25zZS5zZXRNaW1lVHlwZShtaW1lKTsKKyAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSho
YW5kbGUsIHJlc3BvbnNlKTsKKworICAgIGQtPm1faW5wdXRTdHJlYW0gPSBnX21lbW9yeV9pbnB1
dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShidWYsIGJ5dGVzUmVhZCwgZnJlZSk7CisgICAgZC0+bV9i
b2R5U2l6ZSA9IGJ5dGVzUmVhZDsKKyAgICBkLT5tX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIq
PihnX21hbGxvYyhkLT5tX2JvZHlTaXplKSk7CisKKyAgICBnX29iamVjdF9zZXRfZGF0YShHX09C
SkVDVChkLT5tX2lucHV0U3RyZWFtLmdldCgpKSwgIndlYmtpdC1yZXNvdXJjZSIsIGhhbmRsZSk7
CisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBk
LT5tX2J1ZmZlciwgZC0+bV9ib2R5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdfUFJJT1JJVFlfREVGQVVMVCwgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYWRDYWxsYmFjaywgMCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2OGZkODAuLjdlY2QxZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTEtMDYtMTAgIEZsYXZpbyBDZW9saW4gIDxmbGF2aW8uY2VvbGlu
QHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtFRkxdIEFkZCBjdXN0b20gbmV0d29yayByZXNvdXJjZSBoYW5kbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1OQorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBoYW5kbGluZyB1c2VyLXNwZWNpZmljIHBy
b3RvY29scyAoc2NoZW1lcykuCisgICAgICAgIFRoYXQgbWVhbnMgbG9hZCBzb21lIHJlc291cmNl
IGZyb20gbm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9lZXQuCisKKyAgICAg
ICAgRUZMIHBvcnQgZG9lcyBub3QgaGF2ZSBhdXRvbWF0ZWQgdGVzdCB5ZXQsIHNvIG5vIG5ldyB0
ZXN0cy4KKworCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpzaG91bGRI
YW5kbGVTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6Omhh
bmRsZVNjaGVtZSk6CisKKyAgICAgICAgSXQncyB0aGUgcGlwZSBiZXR3ZWVuIFJlc291cmNlSGFu
ZGxlclNvdXAgYW5kIHRoZSBld2tfdmlldworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuaDoKKworICAgICAgICAqIGV3ay9ld2tfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfZGVsKToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29s
X2hhbmRsZXJfcmVnaXN0ZXIpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl91
bnJlZ2lzdGVyKToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdmFsaWRfaXMp
OgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9nZXQpOgorICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgorCisgICAgICAgIFdoZXJlIHRoZSBjdXN0b20gcmVzb3VyY2UgaGFuZGxl
ciBpcyBzdG9yZWQuCisKIDIwMTEtMDYtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAK
aW5kZXggNTI5NWU0YS4uNzQyOTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtOTIxLDQgKzky
MSwzNyBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dAogICAgIHJldHVybiBGcmFtZU5ldHdvcmtp
bmdDb250ZXh0RWZsOjpjcmVhdGUoZXdrX2ZyYW1lX2NvcmVfZ2V0KG1fZnJhbWUpKTsKIH0KIAor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkSGFuZGxlU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQoreworICAgIGlmICghbV92aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl92YWxpZF9pcyhtX3ZpZXcsIHNjaGVt
ZS51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQqIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpoYW5kbGVTY2hlbWUoY29uc3Qg
S1VSTCB1cmwsIFN0cmluZyYgbWltZSwgc2l6ZV90KiBieXRlc1JlYWQpCit7CisgICAgRXdrX1Zp
ZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBmdW5jOworICAgIEV3a19WaWV3X1Jlc291cmNlX0hhbmRs
ZXIqIGhhbmRsZXI7CisgICAgY2hhciogbWltZXR5cGUgPSAwOworICAgIHZvaWQqIGJ1ZjsKKwor
ICAgIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyICo+KGV3
a192aWV3X3Byb3RvY29sX2hhbmRsZXJfZ2V0KG1fdmlldywgdXJsLnByb3RvY29sKCkudXRmOCgp
LmRhdGEoKSkpOworICAgIGZ1bmMgPSBoYW5kbGVyLT5mdW5jOworCisgICAgaWYgKHVybC5sYXN0
UGF0aENvbXBvbmVudCgpLmlzRW1wdHkoKSkKKyAgICAgICAgYnVmID0gZnVuYyh1cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSArIHVybC5wcm90b2NvbCgpLmxlbmd0aCgpICsgMywgYnl0ZXNSZWFk
LAorICAgICAgICAgICAgICAgICAgICZtaW1ldHlwZSwgaGFuZGxlci0+Y3R4dCk7CisgICAgZWxz
ZQorICAgICAgICBidWYgPSBmdW5jKHVybC5sYXN0UGF0aENvbXBvbmVudCgpLnV0ZjgoKS5kYXRh
KCksIGJ5dGVzUmVhZCwgJm1pbWV0eXBlLCBoYW5kbGVyLT5jdHh0KTsKKworICAgIG1pbWUgPSAo
IW1pbWV0eXBlKSA/ICJ0ZXh0L2h0bWwiIDogbWltZXR5cGU7CisgICAgZnJlZShtaW1ldHlwZSk7
CisKKyAgICByZXR1cm4gYnVmOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAppbmRleCBkNTc3NWM2Li5h
ZWQyOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTIxMCw2ICsyMTAsOCBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2
b2lkIGRvd25sb2FkKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5l
dHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZEhhbmRsZVNjaGVtZShj
b25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQqIGhhbmRsZVNjaGVtZShjb25zdCBLVVJM
LCBTdHJpbmcmLCBzaXplX3QqKTsKICBwcml2YXRlOgogICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7
CiAgICAgRXZhc19PYmplY3QgKm1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
CmluZGV4IDExZjBkNjIuLjM0MDBhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5o
CkBAIC0xMTEsNiArMTExLDkgQEAgdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3Nl
dChFdmFzX09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmcKIAogdm9pZCBld2tf
dmlld19kb3dubG9hZF9yZXF1ZXN0KEV2YXNfT2JqZWN0ICpvLCBFd2tfRG93bmxvYWQgKmRvd25s
b2FkKTsKIAorRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdmFsaWRfaXMoRXZh
c19PYmplY3QgKm8sIGNvbnN0IGNoYXIgKnNjaGVtZSk7Cit2b2lkICpld2tfdmlld19wcm90b2Nv
bF9oYW5kbGVyX2dldChFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqc2NoZW1lKTsKKwogaW50
IGV3a191dGlsX2RwaV9nZXQodm9pZCk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggM2UzZTc5Ni4uNTQzOTFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICAgIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAgICAgQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwpAQCAtNDMsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5o
IgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKIAogI2luY2x1ZGUgPEVjb3JlLmg+CkBAIC03
Myw2ICs3NSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJDb3Jl
OjpGcmFtZSogbWFpbl9mcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3
cG9ydF9hcmd1bWVudHM7CiAgICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7CisgICAgRWluYV9IYXNo
KiByZXNvdXJjZV9oYW5kbGVyczsKICAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfTWVudSBtZW51
OwogICAgICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1lbnVfY2xpZW50OwpAQCAtNjMy
LDYgKzYzNSwxMiBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJp
dl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiAgICAgcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS51c2VyX3NjYWxhYmxlID0gRUlOQV9UUlVFOwogICAgIHByaXYtPnNldHRpbmdzLmRldmlj
ZV9waXhlbF9yYXRpbyA9IERFVklDRV9QSVhFTF9SQVRJTzsKIAorICAgIHByaXYtPnJlc291cmNl
X2hhbmRsZXJzID0gZWluYV9oYXNoX3N0cmluZ19zbWFsbF9uZXcoMCk7CisgICAgaWYgKCFwcml2
LT5yZXNvdXJjZV9oYW5kbGVycykgeworICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0
ZSByZXNvdXJjZSBoYW5kbGVycyBoYXNoLiIpOworICAgICAgICBnb3RvIGVycm9yX3Jlc291cmNl
X2hhbmRsZXJzOworICAgIH0KKwogICAgIHByaXYtPm1haW5fZnJhbWUgPSBfZXdrX3ZpZXdfY29y
ZV9mcmFtZV9uZXcoc2QsIHByaXYsIDApLmdldCgpOwogICAgIGlmICghcHJpdi0+bWFpbl9mcmFt
ZSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBtYWluIGZyYW1lLiIpOwpA
QCAtNjQ5LDYgKzY1OCw4IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmll
d19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKIGVycm9yX2hpc3Rvcnk6CiAgICAg
Ly8gZGVsZXRlIHByaXYtPm1haW5fZnJhbWU7IC8qIGRvIG5vdCBkZWxldGUgcHJpdi0+bWFpbl9m
cmFtZSAqLwogZXJyb3JfbWFpbl9mcmFtZToKK2Vycm9yX3Jlc291cmNlX2hhbmRsZXJzOgorICAg
IGVpbmFfaGFzaF9mcmVlKHByaXYtPnJlc291cmNlX2hhbmRsZXJzKTsKIGVycm9yX3NldHRpbmdz
OgogICAgIGRlbGV0ZSBwcml2LT5wYWdlOwogZXJyb3JfcGFnZToKQEAgLTY3Nyw2ICs2ODgsNyBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2KQogICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2VyaWYp
OwogICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHByaXYtPnNldHRpbmdzLmZvbnRfc2Fuc19zZXJp
Zik7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MubG9jYWxfc3RvcmFn
ZV9kYXRhYmFzZV9wYXRoKTsKKyAgICBlaW5hX2hhc2hfZnJlZShwcml2LT5yZXNvdXJjZV9oYW5k
bGVycyk7CiAKICAgICBpZiAocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcikKICAgICAgICAg
ZWNvcmVfYW5pbWF0b3JfZGVsKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpOwpAQCAtNDQ2
NSw3ICs0NDc3LDc3IEBAIFdlYkNvcmU6OkZsb2F0UmVjdCBld2tfdmlld19wYWdlX3JlY3RfZ2V0
KEV2YXNfT2JqZWN0ICpvKQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5fZnJhbWUgPSBwcml2
LT5wYWdlLT5tYWluRnJhbWUoKTsKICAgICByZXR1cm4gbWFpbl9mcmFtZS0+dmlldygpLT5mcmFt
ZVJlY3QoKTsKLX0gCit9CisKK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Zh
bGlkX2lzKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzY2hlbWUpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAg
ICBpZiAoZWluYV9oYXNoX2ZpbmQocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMsIHNjaGVtZSkpCisg
ICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisKKyAgICByZXR1cm4gRUlOQV9GQUxTRTsKK30KKwor
dm9pZCogZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9nZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0
IGNoYXIqIHNjaGVtZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19W
SUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIHJldHVybiBlaW5hX2hhc2hfZmluZChwcml2
LT5yZXNvdXJjZV9oYW5kbGVycywgc2NoZW1lKTsKK30KKworLyoqCisgKiBSZWdpc3RlciBhIG5l
dyBwcm90b2NvbCBoYW5kbGVyLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJv
dG9jb2wgdGhlIHByb3RvY29sIHRoYXQgd2lsbCBiZSBoYW5kbGVkLgorICogQHBhcmFtIGhhbmRs
ZXIgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBmb3IgdGhlIHByb3RvY29sCisg
KiBAcGFyYW0gY3R4dCB0aGUgaGFuZGxlciBjb250ZXh0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRWluYV9Cb29sIGV3a192
aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVnaXN0ZXIoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIq
IHByb3RvY29sLCBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGhhbmRsZXIsIHZvaWQqIGN0
eHQpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dF
VChzZCwgcHJpdik7CisKKyAgICBpZiAoIWhhbmRsZXIpCisgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOworCisgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlciogciA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1Jlc291cmNlX0hhbmRsZXIqPgorICAgICAgICAobWFsbG9jKHNpemVvZihFd2tfVmll
d19SZXNvdXJjZV9IYW5kbGVyKSkpOworCisgICAgaWYgKCFyKQorICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKworICAgIHItPmN0eHQgPSBjdHh0OworICAgIHItPmZ1bmMgPSBoYW5kbGVyOwor
ICAgIGlmICghZWluYV9oYXNoX2RpcmVjdF9hZGQocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMsIHBy
b3RvY29sLCBzdGF0aWNfY2FzdDx2b2lkICo+KHIpKSkgeworICAgICAgICBmcmVlKHIpOworICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gRUlOQV9UUlVFOwor
fQorCisvKioKKyAqIFJlbW92ZSBwcm90b2NvbCBoYW5kbGVyLgorICoKKyAqIEBwYXJhbSBvIHZp
ZXcuCisgKiBAcGFyYW0gcHJvdG9jb2wgdGhlIHByb3RvY29sIHRoYXQgd2lsbCBiZSByZW1vdmVk
LgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBu
b3QuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3VucmVnaXN0ZXIo
RXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIEVXS19WSUVXX1NE
X0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYg
KCFwcm90b2NvbCkKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisKKyAgICByZXR1cm4gZWlu
YV9oYXNoX2RlbF9ieV9rZXkocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMsIHByb3RvY29sKTsKK30K
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIGV3a192aWV3X25lZWRfdG91Y2hfZXZl
bnRzX3NldChFdmFzX09iamVjdCogbywgYm9vbCBuZWVkZWQpCkBAIC00NDgyLDQgKzQ1NjQsNSBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfZ2V0KEV2YXNfT2JqZWN0KiBv
KQogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CiAgICAgcmV0dXJuIHByaXYtPmZsYWdzLm5lZWRfdG91Y2hfZXZlbnRzOwogfQorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXggMDM2MGZlZS4uNWU5MGUwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgKQEAgLTkxLDYgKzkxLDEzIEBAIGV4dGVybiAiQyIgewogICogIC0g
InRvb2x0aXAsdGV4dCxzZXQiLCBjb25zdCBjaGFyKjogc2V0cyB0b29sdGlwIHRleHQgYW5kIGRp
c3BsYXlzIGlmIGl0IGlzIGN1cnJlbnRseSBoaWRkZW4uCiAgKi8KIAordHlwZWRlZiB2b2lkKiAo
KkV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJfQ2IpKGNvbnN0IGNoYXIgKiwgc2l6ZV90ICosIGNo
YXIgKiosIHZvaWQgKik7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxl
ciBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyOworc3RydWN0IF9Fd2tfVmlld19SZXNvdXJjZV9I
YW5kbGVyIHsKKyAgICB2b2lkICpjdHh0OworICAgIEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJf
Q2IgZnVuYzsKK307CisKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19W
aWV3X1NtYXJ0X0RhdGE7CiAKIC8qKgpAQCAtNTE1LDYgKzUyMiw5IEBAIEVBUEkgdm9pZCBld2tf
dmlld19sYXlvdXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShFd2tfVmlld19Qcml2YXRlX0RhdGEgKnBy
aXYpOwogCiBFQVBJIHZvaWQgZXdrX3ZpZXdfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkKTsKIAorRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9y
ZWdpc3RlcihFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcHJvdG9jb2wsIEV3a19WaWV3X1Jl
c291cmNlX0hhbmRsZXJfQ2IgaGFuZGxlciwgdm9pZCAqY3R4dCk7CitFQVBJIEVpbmFfQm9vbCBl
d2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3VucmVnaXN0ZXIoRXZhc19PYmplY3QgKm8sIGNvbnN0
IGNoYXIgKnByb3RvY29sKTsKKwogLyoqCiAgKiBTdHJ1Y3R1cmUgdGhhdCBrZWVwcyBwYWludCBj
b250ZXh0LgogICoKLS0gCjEuNy41LjIKCg==
</data>
<flag name="commit-queue"
          id="90558"
          type_id="3"
          status="-"
          setter="gustavo.noronha"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96789</attachid>
            <date>2011-06-10 14:28:02 -0700</date>
            <delta_ts>2011-07-08 10:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handler.patch</filename>
            <type>text/plain</type>
            <size>15348</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSA1Mzg0MTY1ZjUzOGEzZTAyMTFlOWFiYTY0MTYwNzdkMDBiMTNjMDZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBGcmksIDEwIEp1biAyMDExIDE4OjIxOjE0IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSF0gW0VGTF0gICBBZGQgY3VzdG9tIG5ldHdvcmsgcmVzb3VyY2UgaGFuZGxlciAgICAgICAg
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3NTkgICAgICAgICBU
aGlzCiBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVzZXItc3BlY2lmaWMgcHJvdG9j
b2xzCiAoc2NoZW1lcykuICAgICAgICAgVGhhdCBtZWFucyBsb2FkIHNvbWUgcmVzb3VyY2UgZnJv
bQogbm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9lZXQuCgotLS0KIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNyArKysr
CiAuLi4vcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgICB8ICAg
NjggKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDMzICsrKysrKysrCiAuLi4vZWZsL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50RWZsLmNwcCAgICB8ICAgMzMgKysrKysrKysKIC4uLi9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCAgICAgIHwgICAgMiArCiBTb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCAgICAgICAgICAgICAgICB8ICAgIDMgKwogU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCAgICAgICAgICAgICAgICAgfCAgIDg1ICsrKysr
KysrKysrKysrKysrKystCiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCAgICAgICAg
ICAgICAgICAgICB8ICAgMTAgKysrCiA4IGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRpb25zKCsp
LCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMzY2NzlkLi4yZTZkZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDYtMTAgIEZsYXZpbyBDZW9saW4gIDxmbGF2aW8u
Y2VvbGluQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtFRkxdIEFkZCBjdXN0b20gbmV0d29yayByZXNvdXJjZSBoYW5kbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1OQor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBoYW5kbGluZyB1c2VyLXNwZWNp
ZmljIHByb3RvY29scyAoc2NoZW1lcykuCisgICAgICAgIFRoYXQgbWVhbnMgbG9hZCBzb21lIHJl
c291cmNlIGZyb20gbm9uLWh0dHAvZmlsZSBzdG9yYWdlLCBsaWtlIGEgdGFyL3ppcC9lZXQuCisK
KyAgICAgICAgRUZMIHBvcnQgZG9lcyBub3QgaGF2ZSBhdXRvbWF0ZWQgdGVzdCB5ZXQsIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KTogSW4gdGhpcyBwYXJ0IGlzIGNoZWNr
ZWQgaWYgdGhlIHByb3RvY29sIHdpbGwgYmUgaGFuZGxlZCBieQorICAgICAgICBhIGN1c3RvbSBy
ZXNvdXJjZSBoYW5kbGVyLCBpZiB5ZXMsIGFzayBmb3IgdGhlIEZyYW1lTG9hZGVyQ2xpZW50RWZs
IHRoZSByZXNvdXJjZXMgZm9yCisgICAgICAgIHRoZSBwcm90b2NvbAorCiAyMDExLTA2LTEwICBM
dWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDBjODU1ZDQu
LmFmOTgyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC01NSw5ICs1NSwxNSBAQAogI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1ZXN0ZXIuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpZiBQTEFURk9STShFRkwp
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0RWZsLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVm
aW5lIFJFQURfQlVGRkVSX1NJWkUgODE5MgpAQCAtMTMxLDYgKzEzNywxMCBAQCBzdGF0aWMgdm9p
ZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyKTsKIHN0YXRp
YyB2b2lkIGNsb3NlQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCosIGdwb2ludGVyKTsK
IHN0YXRpYyBib29sIHN0YXJ0Tm9uSFRUUFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBLVVJMKTsK
IAorI2lmIFBMQVRGT1JNKEVGTCkKK3N0YXRpYyBib29sIHN0YXJ0Q3VzdG9tSGFuZGxlcihSZXNv
dXJjZUhhbmRsZSosIEtVUkwpOworI2VuZGlmCisKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5S
ZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBpZiAobV9zb3VwUmVxdWVzdCkKQEAgLTY2
Myw2ICs2NzMsMTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQpCiAgICAgLy8gVXNlZCB0byBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGRpYWxv
ZyB0b3BsZXZlbDsgbWF5IGJlIE5VTEwKICAgICBkLT5tX2NvbnRleHQgPSBjb250ZXh0OwogCisj
aWYgUExBVEZPUk0oRUZMKQorICAgIEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwqIGZyYW1lQ29u
dGV4dCA9IHN0YXRpY19jYXN0PEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwqPihjb250ZXh0KTsK
KyAgICBGcmFtZUxvYWRlckNsaWVudEVmbCogZnJhbWVMb2FkZXJDbGllbnQgPSBzdGF0aWNfY2Fz
dDxGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lQ29udGV4dC0+Y29yZUZyYW1lKCktPmxvYWRl
cigpLT5jbGllbnQoKSk7CisgICAgaWYgKGZyYW1lTG9hZGVyQ2xpZW50LT5zaG91bGRIYW5kbGVT
Y2hlbWUocHJvdG9jb2wpKSB7CisgICAgICAgIGlmIChzdGFydEN1c3RvbUhhbmRsZXIodGhpcywg
dXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cCIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KHByb3RvY29sLCAiaHR0cHMiKSkgewogICAgICAgICBpZiAoc3RhcnRIVFRQUmVxdWVzdCh0aGlz
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODUzLDQgKzg3Miw1MyBAQCBTb3VwU2Vz
c2lvbiogUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKICAgICByZXR1cm4gc2Vzc2lv
bjsKIH0KIAorI2lmIFBMQVRGT1JNKEVGTCkKK3N0YXRpYyBib29sIHN0YXJ0Q3VzdG9tSGFuZGxl
cihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBLVVJMIHVybCkKK3sKKyAgICBBU1NFUlQoaGFuZGxl
KTsKKworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgU3RyaW5nIG1pbWU7Cisg
ICAgdm9pZCogYnVmOworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIFJlc291cmNlSGFuZGxl
SW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgc2l6ZV90IGJ5dGVzUmVh
ZDsKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gaGFuZGxlLT5jbGllbnQoKTsK
KworICAgIGlmIChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiR0VUIiAm
JiBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiUE9TVCIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOworICAgIHVybC5yZW1vdmVQb3J0KCk7CisKKyAgICBG
cmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKiBmciA9IHN0YXRpY19jYXN0PEZyYW1lTmV0d29ya2lu
Z0NvbnRleHRFZmwgKj4oZC0+bV9jb250ZXh0LmdldCgpKTsKKyAgICBGcmFtZUxvYWRlckNsaWVu
dEVmbCogZnJhbWVMb2FkZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEVm
bCo+KGZyLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBidWYgPSBmcmFt
ZUxvYWRlckNsaWVudC0+aGFuZGxlU2NoZW1lKHVybCwgbWltZSwgJmJ5dGVzUmVhZCk7CisgICAg
aWYgKCFidWYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIGJhbGFuY2VkIGJ5IGEg
ZGVyZWYoKSBpbiBjbGVhbnVwR2lvT3BlcmF0aW9uLCB3aGljaCBzaG91bGQgYWx3YXlzIHJ1bgor
ICAgIGhhbmRsZS0+cmVmKCk7CisKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKyAgICByZXNw
b25zZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGJ5dGVzUmVhZCk7CisgICAgcmVz
cG9uc2Uuc2V0TGFzdE1vZGlmaWVkRGF0ZSh0di50dl9zZWMpOworICAgIHJlc3BvbnNlLnNldE1p
bWVUeXBlKG1pbWUpOworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVz
cG9uc2UpOworCisgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9u
ZXdfZnJvbV9kYXRhKGJ1ZiwgYnl0ZXNSZWFkLCBmcmVlKTsKKyAgICBkLT5tX2JvZHlTaXplID0g
Ynl0ZXNSZWFkOworICAgIGQtPm1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9j
KGQtPm1fYm9keVNpemUpKTsKKworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGQtPm1f
aW5wdXRTdHJlYW0uZ2V0KCkpLCAid2Via2l0LXJlc291cmNlIiwgaGFuZGxlKTsKKyAgICBnX2lu
cHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVy
LCBkLT5tX2JvZHlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QUklPUklU
WV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZENhbGxiYWNrLCAwKTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMjY4ZmQ4MC4uN2VjZDFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAxMS0wNi0xMCAgRmxhdmlvIENlb2xpbiAgPGZsYXZpby5jZW9saW5AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VGTF0gQWRkIGN1c3RvbSBuZXR3b3JrIHJlc291cmNlIGhhbmRsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzU5CisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVzZXItc3BlY2lmaWMgcHJvdG9jb2xzIChz
Y2hlbWVzKS4KKyAgICAgICAgVGhhdCBtZWFucyBsb2FkIHNvbWUgcmVzb3VyY2UgZnJvbSBub24t
aHR0cC9maWxlIHN0b3JhZ2UsIGxpa2UgYSB0YXIvemlwL2VldC4KKworICAgICAgICBFRkwgcG9y
dCBkb2VzIG5vdCBoYXZlIGF1dG9tYXRlZCB0ZXN0IHlldCwgc28gbm8gbmV3IHRlc3RzLgorCisK
KyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZEhhbmRsZVNjaGVt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6aGFuZGxlU2NoZW1l
KToKKworICAgICAgICBJdCdzIHRoZSBwaXBlIGJldHdlZW4gUmVzb3VyY2VIYW5kbGVyU291cCBh
bmQgdGhlIGV3a192aWV3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgorCisgICAgICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdr
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9kZWwpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9y
ZWdpc3Rlcik6CisgICAgICAgIChld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3VucmVnaXN0ZXIp
OgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl92YWxpZF9pcyk6CisgICAgICAg
IChld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3
Lmg6CisKKyAgICAgICAgV2hlcmUgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIGlzIHN0b3Jl
ZC4KKwogMjAxMS0wNi0wMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA1Mjk1
ZTRhLi43NDI5NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC05MjEsNCArOTIxLDM3IEBAIFBh
c3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0CiAgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRF
Zmw6OmNyZWF0ZShld2tfZnJhbWVfY29yZV9nZXQobV9mcmFtZSkpOwogfQogCitib29sIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpzaG91bGRIYW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit7CisgICAgaWYgKCFtX3ZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChl
d2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3ZhbGlkX2lzKG1fdmlldywgc2NoZW1lLnV0ZjgoKS5k
YXRhKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCogRnJhbWVMb2FkZXJDbGllbnRFZmw6OmhhbmRsZVNjaGVtZShjb25zdCBLVVJMIHVybCwg
U3RyaW5nJiBtaW1lLCBzaXplX3QqIGJ5dGVzUmVhZCkKK3sKKyAgICBFd2tfVmlld19SZXNvdXJj
ZV9IYW5kbGVyX0NiIGZ1bmM7CisgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlciogaGFuZGxl
cjsKKyAgICBjaGFyKiBtaW1ldHlwZSA9IDA7CisgICAgdm9pZCogYnVmOworCisgICAgaGFuZGxl
ciA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXIgKj4oZXdrX3ZpZXdfcHJv
dG9jb2xfaGFuZGxlcl9nZXQobV92aWV3LCB1cmwucHJvdG9jb2woKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgZnVuYyA9IGhhbmRsZXItPmZ1bmM7CisKKyAgICBpZiAodXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCkuaXNFbXB0eSgpKQorICAgICAgICBidWYgPSBmdW5jKHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpICsgdXJsLnByb3RvY29sKCkubGVuZ3RoKCkgKyAzLCBieXRlc1JlYWQsCisgICAgICAg
ICAgICAgICAgICAgJm1pbWV0eXBlLCBoYW5kbGVyLT5jdHh0KTsKKyAgICBlbHNlCisgICAgICAg
IGJ1ZiA9IGZ1bmModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkudXRmOCgpLmRhdGEoKSwgYnl0ZXNS
ZWFkLCAmbWltZXR5cGUsIGhhbmRsZXItPmN0eHQpOworCisgICAgbWltZSA9ICghbWltZXR5cGUp
ID8gInRleHQvaHRtbCIgOiBtaW1ldHlwZTsKKyAgICBmcmVlKG1pbWV0eXBlKTsKKworICAgIHJl
dHVybiBidWY7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IGQ1Nzc1YzYuLmFlZDI4YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaApAQCAtMjEwLDYgKzIxMCw4IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZG93bmxv
YWQoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGFuZGxlU2NoZW1lKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgdm9pZCogaGFuZGxlU2NoZW1lKGNvbnN0IEtVUkwsIFN0cmluZyYs
IHNpemVfdCopOwogIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QgKm1fdmlldzsKICAgICBFdmFz
X09iamVjdCAqbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggMTFm
MGQ2Mi4uMzQwMGE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTExMSw2
ICsxMTEsOSBAQCB2b2lkIGV3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZwogCiB2b2lkIGV3a192aWV3X2Rvd25s
b2FkX3JlcXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19Eb3dubG9hZCAqZG93bmxvYWQpOwogCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl92YWxpZF9pcyhFdmFzX09iamVjdCAq
bywgY29uc3QgY2hhciAqc2NoZW1lKTsKK3ZvaWQgKmV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJf
Z2V0KEV2YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpzY2hlbWUpOworCiBpbnQgZXdrX3V0aWxf
ZHBpX2dldCh2b2lkKTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcAppbmRleCAzZTNlNzk2Li41NDM5MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAgICBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCkBAIC00Myw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgogCiAjaW5jbHVkZSA8RWNvcmUuaD4KQEAgLTczLDYgKzc1LDcg
QEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OkZyYW1lKiBt
YWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0X2FyZ3Vt
ZW50czsKICAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKKyAgICBFaW5hX0hhc2gqIHJlc291cmNl
X2hhbmRsZXJzOwogICAgIHN0cnVjdCB7CiAgICAgICAgIEV3a19NZW51IG1lbnU7CiAgICAgICAg
IFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogbWVudV9jbGllbnQ7CkBAIC02MzIsNiArNjM1LDEy
IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCkKICAgICBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLnVzZXJf
c2NhbGFibGUgPSBFSU5BX1RSVUU7CiAgICAgcHJpdi0+c2V0dGluZ3MuZGV2aWNlX3BpeGVsX3Jh
dGlvID0gREVWSUNFX1BJWEVMX1JBVElPOwogCisgICAgcHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMg
PSBlaW5hX2hhc2hfc3RyaW5nX3NtYWxsX25ldygwKTsKKyAgICBpZiAoIXByaXYtPnJlc291cmNl
X2hhbmRsZXJzKSB7CisgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIHJlc291cmNl
IGhhbmRsZXJzIGhhc2guIik7CisgICAgICAgIGdvdG8gZXJyb3JfcmVzb3VyY2VfaGFuZGxlcnM7
CisgICAgfQorCiAgICAgcHJpdi0+bWFpbl9mcmFtZSA9IF9ld2tfdmlld19jb3JlX2ZyYW1lX25l
dyhzZCwgcHJpdiwgMCkuZ2V0KCk7CiAgICAgaWYgKCFwcml2LT5tYWluX2ZyYW1lKSB7CiAgICAg
ICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1haW4gZnJhbWUuIik7CkBAIC02NDksNiAr
NjU4LDggQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogZXJyb3JfaGlzdG9yeToKICAgICAvLyBkZWxldGUg
cHJpdi0+bWFpbl9mcmFtZTsgLyogZG8gbm90IGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lICovCiBl
cnJvcl9tYWluX2ZyYW1lOgorZXJyb3JfcmVzb3VyY2VfaGFuZGxlcnM6CisgICAgZWluYV9oYXNo
X2ZyZWUocHJpdi0+cmVzb3VyY2VfaGFuZGxlcnMpOwogZXJyb3Jfc2V0dGluZ3M6CiAgICAgZGVs
ZXRlIHByaXYtPnBhZ2U7CiBlcnJvcl9wYWdlOgpAQCAtNjc3LDYgKzY4OCw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfdmlld19wcml2X2RlbChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAgICAg
ZWluYV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MuZm9udF9zZXJpZik7CiAgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwocHJpdi0+c2V0dGluZ3MuZm9udF9zYW5zX3NlcmlmKTsKICAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChwcml2LT5zZXR0aW5ncy5sb2NhbF9zdG9yYWdlX2RhdGFiYXNl
X3BhdGgpOworICAgIGVpbmFfaGFzaF9mcmVlKHByaXYtPnJlc291cmNlX2hhbmRsZXJzKTsKIAog
ICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAgICBlY29yZV9hbmlt
YXRvcl9kZWwocHJpdi0+YW5pbWF0ZWRfem9vbS5hbmltYXRvcik7CkBAIC00NDY1LDcgKzQ0Nzcs
NzcgQEAgV2ViQ29yZTo6RmxvYXRSZWN0IGV3a192aWV3X3BhZ2VfcmVjdF9nZXQoRXZhc19PYmpl
Y3QgKm8pCiAKICAgICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZSA9IHByaXYtPnBhZ2UtPm1h
aW5GcmFtZSgpOwogICAgIHJldHVybiBtYWluX2ZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgpOwot
fSAKK30KKworRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdmFsaWRfaXMoRXZh
c19PYmplY3QqIG8sIGNvbnN0IGNoYXIqIHNjaGVtZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVQo
bywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKKworICAgIGlmIChlaW5h
X2hhc2hfZmluZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgc2NoZW1lKSkKKyAgICAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKKworICAgIHJldHVybiBFSU5BX0ZBTFNFOworfQorCit2b2lkKiBld2tf
dmlld19wcm90b2NvbF9oYW5kbGVyX2dldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogc2No
ZW1lKQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9H
RVQoc2QsIHByaXYpOworCisgICAgcmV0dXJuIGVpbmFfaGFzaF9maW5kKHByaXYtPnJlc291cmNl
X2hhbmRsZXJzLCBzY2hlbWUpOworfQorCisvKioKKyAqIFJlZ2lzdGVyIGEgbmV3IHByb3RvY29s
IGhhbmRsZXIuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBwYXJhbSBwcm90b2NvbCB0aGUg
cHJvdG9jb2wgdGhhdCB3aWxsIGJlIGhhbmRsZWQuCisgKiBAcGFyYW0gaGFuZGxlciB0aGUgZnVu
Y3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGUgcHJvdG9jb2wKKyAqIEBwYXJhbSBj
dHh0IHRoZSBoYW5kbGVyIGNvbnRleHQKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHN1Y2Nl
c3MsIEBjIEVJTkFfRkFMU0UgaWYgbm90LgorICovCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9j
b2xfaGFuZGxlcl9yZWdpc3RlcihFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogcHJvdG9jb2ws
IEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJfQ2IgaGFuZGxlciwgdm9pZCogY3R4dCkKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2
KTsKKworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisKKyAg
ICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyKiByID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUmVz
b3VyY2VfSGFuZGxlcio+CisgICAgICAgIChtYWxsb2Moc2l6ZW9mKEV3a19WaWV3X1Jlc291cmNl
X0hhbmRsZXIpKSk7CisKKyAgICBpZiAoIXIpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwor
CisgICAgci0+Y3R4dCA9IGN0eHQ7CisgICAgci0+ZnVuYyA9IGhhbmRsZXI7CisgICAgaWYgKCFl
aW5hX2hhc2hfZGlyZWN0X2FkZChwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgcHJvdG9jb2wsIHN0
YXRpY19jYXN0PHZvaWQgKj4ocikpKSB7CisgICAgICAgIGZyZWUocik7CisgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKKy8qKgor
ICogUmVtb3ZlIHByb3RvY29sIGhhbmRsZXIuCisgKgorICogQHBhcmFtIG8gdmlldy4KKyAqIEBw
YXJhbSBwcm90b2NvbCB0aGUgcHJvdG9jb2wgdGhhdCB3aWxsIGJlIHJlbW92ZWQuCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLwor
RWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5yZWdpc3RlcihFdmFzX09iamVj
dCogbywgY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNk
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBpZiAoIXByb3RvY29s
KQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHJldHVybiBlaW5hX2hhc2hfZGVs
X2J5X2tleShwcml2LT5yZXNvdXJjZV9oYW5kbGVycywgcHJvdG9jb2wpOworfQogCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKIHZvaWQgZXdrX3ZpZXdfbmVlZF90b3VjaF9ldmVudHNfc2V0KEV2
YXNfT2JqZWN0KiBvLCBib29sIG5lZWRlZCkKQEAgLTQ0ODIsNCArNDU2NCw1IEBAIEVpbmFfQm9v
bCBld2tfdmlld19uZWVkX3RvdWNoX2V2ZW50c19nZXQoRXZhc19PYmplY3QqIG8pCiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKICAgICByZXR1
cm4gcHJpdi0+ZmxhZ3MubmVlZF90b3VjaF9ldmVudHM7CiB9CisKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAppbmRleCAwMzYwZmVlLi41ZTkwZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaApAQCAtOTEsNiArOTEsMTMgQEAgZXh0ZXJuICJDIiB7CiAgKiAgLSAidG9vbHRpcCx0
ZXh0LHNldCIsIGNvbnN0IGNoYXIqOiBzZXRzIHRvb2x0aXAgdGV4dCBhbmQgZGlzcGxheXMgaWYg
aXQgaXMgY3VycmVudGx5IGhpZGRlbi4KICAqLwogCit0eXBlZGVmIHZvaWQqICgqRXdrX1ZpZXdf
UmVzb3VyY2VfSGFuZGxlcl9DYikoY29uc3QgY2hhciAqLCBzaXplX3QgKiwgY2hhciAqKiwgdm9p
ZCAqKTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyIEV3a19WaWV3
X1Jlc291cmNlX0hhbmRsZXI7CitzdHJ1Y3QgX0V3a19WaWV3X1Jlc291cmNlX0hhbmRsZXIgewor
ICAgIHZvaWQgKmN0eHQ7CisgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBmdW5jOwor
fTsKKwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRf
RGF0YTsKIAogLyoqCkBAIC01MTUsNiArNTIyLDkgQEAgRUFQSSB2b2lkIGV3a192aWV3X2xheW91
dF9pZl9uZWVkZWRfcmVjdXJzaXZlKEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdik7CiAKIEVB
UEkgdm9pZCBld2tfdmlld19zY3JvbGxzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
OwogCitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3JlZ2lzdGVyKEV2
YXNfT2JqZWN0ICpvLCBjb25zdCBjaGFyICpwcm90b2NvbCwgRXdrX1ZpZXdfUmVzb3VyY2VfSGFu
ZGxlcl9DYiBoYW5kbGVyLCB2b2lkICpjdHh0KTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3By
b3RvY29sX2hhbmRsZXJfdW5yZWdpc3RlcihFdmFzX09iamVjdCAqbywgY29uc3QgY2hhciAqcHJv
dG9jb2wpOworCiAvKioKICAqIFN0cnVjdHVyZSB0aGF0IGtlZXBzIHBhaW50IGNvbnRleHQuCiAg
KgotLSAKMS43LjUuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100128</attachid>
            <date>2011-07-08 10:03:19 -0700</date>
            <delta_ts>2011-07-08 13:29:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handler.patch</filename>
            <type>text/plain</type>
            <size>22166</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSAxYWVlMTMyNWUwOGEwNTRiNDE3ZTc1NWNlYjliYTdjZWZjNTk0ZjZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBXZWQsIDI5IEp1biAyMDExIDE4OjA1OjA5IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSCAxLzJdIFtFRkxdICBBZGQgY3VzdG9tIG5ldHdvcmsgcmVzb3VyY2UgaGFuZGxlciAgICAg
ICAKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1CgotLS0KIFNv
dXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0ICAgICAgICAgICAgICAgIHwgICAgNCAr
CiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MjMgKysrCiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNw
cCAgICAgfCAgIDU2ICsrKysrKwogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmggICAgICAgfCAgIDM4ICsrKysKIC4uLi9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9j
b2xfaGFuZGxlcl9zb3VwLmNwcCAgIHwgIDE5NSArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaCAgfCAgIDY0ICsrKysr
KysKIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgICAgICAgICAgICAgICAgIHwg
ICA2MCArKysrKysKIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQ0NiBpbnNlcnRpb25zKCspLCAwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CmluZGV4IDVhODc5Y2EuLjhjYTI0M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CkBAIC02Myw2ICs2Myw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfZnJhbWUuY3BwCiAgICAgZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAorICAgIGVmbC9ld2sv
ZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCiAg
ICAgZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jCiAgICAgZWZsL2V3ay9ld2tfdGls
ZWRfbWF0cml4LmMKQEAgLTEwNSw2ICsxMDYsNyBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICBMSVNU
KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2F1dGguY3BwCiAgICAgZWZs
L2V3ay9ld2tfYXV0aF9zb3VwLmNwcAorICAgIGVmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJf
c291cC5jcHAKICAgKQogRU5ESUYgKCkKIApAQCAtMjE2LDYgKzIxOCw4IEBAIFVOU0VUKExJQlNf
UFJJVkFURSkKIAogRklMRShHTE9CIEVXZWJLaXRfSEVBREVSUyAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svKi5oIikKIExJU1QoUkVNT1ZFX0lURU0gRVdlYktpdF9IRUFERVJT
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIikKK0xJ
U1QoUkVNT1ZFX0lURU0gRVdlYktpdF9IRUFERVJTICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5oIikKK0xJU1QoUkVNT1ZFX0lURU0gRVdl
YktpdF9IRUFERVJTICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlcl9zb3VwLmgiKQogTElTVChSRU1PVkVfSVRFTSBFV2ViS2l0X0hFQURFUlMg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmgi
KQogTElTVChSRU1PVkVfSVRFTSBFV2ViS2l0X0hFQURFUlMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgiKQogTElTVChSRU1PVkVf
SVRFTSBFV2ViS2l0X0hFQURFUlMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXguaCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTkzZGY3My4uNWM1MGMy
NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTA3LTA4ICBGbGF2aW8g
Q2VvbGluICA8ZmxhdmlvLmNlb2xpbkBwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgY3VzdG9tIG5ldHdvcmsg
cmVzb3VyY2UgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQ3NTkKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFu
ZGxpbmcgdXNlci1zcGVjaWZpYyBwcm90b2NvbHMuCisgICAgICAgIEl0IGFsbG93cyBicm93c2Vy
cyB0byBpbnRlcmNlcHQgYW5kIGhhbmRsZSBub24tc3RhbmRhcmQgdXJsIHNjaGVtZXMgKHN1Y2gg
YXMgcHJlZmVyZW5jZXM6Ly8pCisgICAgICAgIGFsbG93aW5nIHRvIGxvYWQgc29tZSByZXNvdXJj
ZSBmcm9tIG5vbi1odHRwL2ZpbGUgc3RvcmFnZSwgbGlrZSBhIHRhci96aXAvZWV0LgorCisgICAg
ICAgICogQ01ha2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5k
bGVyLmNwcDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogQWRkZWQu
CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaDogQWRkZWQuCisgICAg
ICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFu
ZGxlcl9yZXNvdXJjZV9nZXQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA2
LTI5ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKaW5kZXggMTA3NmM2Ni4uMTJmMDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKQEAgLTExMCw2ICsxMTAsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFz
X09iamVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogdm9p
ZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cyk7CiAKIHZvaWQgZXdrX3ZpZXdf
ZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCk7
Cit2b2lkKiBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChFdmFzX09iamVj
dCAqbywgc2l6ZV90ICpieXRlc1JlYWQsIGNoYXIgKiptaW1lLCBjb25zdCBjaGFyICpmaWxlKTsK
IAogdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2Nv
bF9oYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliMzI0OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5j
cHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdr
X3Byb3RvY29sX2hhbmRsZXIuaCIKKworI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgImV3a19wcm90
b2NvbF9oYW5kbGVyX3NvdXAuaCIKKyNlbmRpZgorCisvKioKKyAqIFJlZ2lzdGVyIGEgcHJvdG9j
b2wgaGFuZGxlci4KKyAqCisgKiBAcGFyYW0gcHJvdG9jb2xzIHRoZSBwcm90b2NvbHMgdGhhdCB3
aWxsIGJlIGhhbmRsZWQuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNzLCBAYyBF
SU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKK3sKKyNpZiBVU0UoU09VUCkKKyAgICBy
ZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KHByb3RvY29scyk7Cisj
ZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiBF
SU5BX0ZBTFNFOworI2VuZGlmCit9CisKKy8qKgorICogUmVtb3ZlIHByb3RvY29sIGhhbmRsZXIu
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBp
ZiBub3QuCisgKi8KK0VpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfYWxsX3Vu
c2V0KCkKK3sKKyNpZiBVU0UoU09VUCkKKyAgICByZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9o
YW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7CisjZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBp
bXBsZW1lbnRlZCIpOworICAgIHJldHVybiBFSU5BX0ZBTFNFOworI2VuZGlmCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmVmM2Q0YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaApAQCAtMCwwICsxLDM4IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfaAorI2RlZmluZSBld2tfcHJvdG9jb2xfaGFuZGxl
cl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVy
X3NldChjb25zdCBjaGFyKiogcHJvdG9jb2xzKTsKKworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1c3Rv
bV9wcm90b2NvbF9oYW5kbGVyX2FsbF91bnNldCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3Byb3RvY29sX2hhbmRsZXJfaAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdiODhhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcApAQCAt
MCwwICsxLDE5NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Byb3Rv
Y29sX2hhbmRsZXJfc291cC5oIgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIK
KyNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKworI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisK
KyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAtcmVxdWVzdGVyLmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKK3N0
cnVjdCBfRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSB7CisgICAgY2hhciogbWltZTsKKyAgICBz
aXplX3QgYnl0ZXNSZWFkOworfTsKKworR19ERUZJTkVfVFlQRShFd2tDdXN0b21Qcm90b2NvbEhh
bmRsZXIsIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlciwgU09VUF9UWVBFX1JFUVVFU1QpCisK
K3N0YXRpYyBjaGFyKiogc2NoZW1lcyA9IDA7CitzdGF0aWMgaW50IGFkZGVkX2NvdW50ID0gMDsK
Kworc3RhdGljIHZvaWQgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2luaXQoRXdrQ3VzdG9t
UHJvdG9jb2xIYW5kbGVyKiBjdXN0b21fcHJvdG9jb2xfaGFuZGxlcikKK3sKKyAgICBjdXN0b21f
cHJvdG9jb2xfaGFuZGxlci0+cHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShjdXN0
b21fcHJvdG9jb2xfaGFuZGxlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSk7CisgICAgaWYgKGN1c3RvbV9wcm90b2Nv
bF9oYW5kbGVyLT5wcml2KSB7CisgICAgICAgIGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyLT5wcml2
LT5taW1lID0gMDsKKyAgICAgICAgY3VzdG9tX3Byb3RvY29sX2hhbmRsZXItPnByaXYtPmJ5dGVz
UmVhZCA9IDA7CisgICAgfSBlbHNlCisgICAgICAgIEVJTkFfTE9HX0NSSVQoIkNvdWxkIG5vdCBp
bml0IGN1c3RvbSBwcm90b2NvbCBoYW5kbGVyLCBwcml2ID09IE5VTEwuIik7Cit9CisKK3N0YXRp
YyB2b2lkIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9maW5hbGl6ZShHT2JqZWN0KiBvYmop
Cit7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdiAgPSBHX1RZUEVfSU5TVEFO
Q0VfR0VUX1BSSVZBVEUob2JqLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUpOworICAgIGlmIChw
cml2KQorICAgICAgICBmcmVlKHByaXYtPm1pbWUpOworCisgICAgR19PQkpFQ1RfQ0xBU1MoZXdr
X2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iaik7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbiBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfY2hlY2tfdXJp
KFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBTb3VwVVJJKiB1cmksIEdFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR0lucHV0U3RyZWFtKiBld2tfY3VzdG9tX3By
b3RvY29sX2hhbmRsZXJfc2VuZChTb3VwUmVxdWVzdCogcmVxdWVzdCwgR0NhbmNlbGxhYmxlKiBj
YW5jZWxsYWJsZSwgR0Vycm9yKiogZXJyb3IpCit7CisKKyAgICB2b2lkKiBidWYgPSAwOworICAg
IGNoYXIqIG1pbWUgPSAwOworICAgIHNpemVfdCBieXRlc1JlYWQgPSAwOworICAgIFNvdXBVUkkq
IHVyaSA9IDA7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdiA9IDA7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIHJlc291cmNlID0gMDsKKyAgICBjb25zdCBXZWJDb3Jl
OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKiBmcmFtZUNvbnRleHQgPSAwOworICAgIGNvbnN0
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmcmFtZUxvYWRlckNsaWVudCA9IDA7CisK
KyAgICByZXNvdXJjZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKj4oZ19v
YmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVxdWVzdCksICJ3ZWJraXQtcmVzb3VyY2UiKSk7Cisg
ICAgaWYgKHJlc291cmNlKQorICAgICAgICBmcmFtZUNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKj4ocmVzb3VyY2UtPmdldEludGVybmFsKCkt
Pm1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKHJlc291cmNlICYmIGZyYW1lQ29udGV4dCkKKyAg
ICAgICAgZnJhbWVMb2FkZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbCo+KGZyYW1lQ29udGV4dC0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQo
KSk7CisKKyAgICB1cmkgPSBzb3VwX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KTsKKyAgICBwcml2
ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgoRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
ICopcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFV0tf
VFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKTsKKworICAgIGlmICghKHJl
c291cmNlICYmIGZyYW1lQ29udGV4dCAmJiBmcmFtZUxvYWRlckNsaWVudCAmJiBwcml2ICYmIHVy
aSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHVyaS0+cGF0aFswXSA9PSAnLycpCisg
ICAgICAgIGJ1ZiA9IGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KGZyYW1l
TG9hZGVyQ2xpZW50LT53ZWJWaWV3KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZieXRlc1JlYWQsICZtaW1lLCB1cmktPnBhdGggKyAxKTsg
Ly8gVGhlIHBhdGggYWx3YXlzIGluaXQgd2l0aCAvCisgICAgZWxzZQorICAgICAgICBidWYgPSBl
d2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChmcmFtZUxvYWRlckNsaWVudC0+
d2ViVmlldygpLCAmYnl0ZXNSZWFkLCAmbWltZSwgdXJpLT5ob3N0KTsKKworICAgIHByaXYtPmJ5
dGVzUmVhZCA9IGJ5dGVzUmVhZDsKKyAgICBpZiAobWltZSkKKyAgICAgICAgcHJpdi0+bWltZSA9
IHN0cmR1cChtaW1lKTsKKworICAgIHJldHVybiBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zy
b21fZGF0YShidWYsIGJ5dGVzUmVhZCwgZnJlZSk7Cit9CisKK3N0YXRpYyBnb2Zmc2V0IGV3a19j
dXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfY29udGVudF9sZW5ndGgoU291cFJlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdiAgPSBHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUoKEV3a0N1c3RvbVByb3RvY29sSGFuZGxlciAqKXJlcXVlc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSk7CisgICAgcmV0dXJuIChwcml2KSA/IHByaXYtPmJ5
dGVzUmVhZCA6IDA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBld2tfY3VzdG9tX3Byb3RvY29s
X2hhbmRsZXJfZ2V0X2NvbnRlbnRfdHlwZShTb3VwUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBF
d2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKiBwcml2ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURSgoRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyICopcmVxdWVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFV0tf
VFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRs
ZXJQcml2YXRlKTsKKyAgICByZXR1cm4gKHByaXYgJiYgcHJpdi0+bWltZSkgPyBwcml2LT5taW1l
IDogInRleHQvaHRtbCI7Cit9CisKK3N0YXRpYyB2b2lkIGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9jbGFzc19pbml0KEV3a0N1c3RvbVByb3RvY29sSGFuZGxlckNsYXNzKiBjdXN0b21fcHJv
dG9jb2xfaGFuZGxlcl9jbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RfY2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhjdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9jbGFzcyk7CisgICAgU291
cFJlcXVlc3RDbGFzcyogcmVxdWVzdF9jbGFzcyA9IFNPVVBfUkVRVUVTVF9DTEFTUyhjdXN0b21f
cHJvdG9jb2xfaGFuZGxlcl9jbGFzcyk7CisKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9
IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9maW5hbGl6ZTsKKyAgICByZXF1ZXN0X2NsYXNz
LT5zY2hlbWVzID0gKGNvbnN0IGNoYXIqKilzY2hlbWVzOworICAgIHJlcXVlc3RfY2xhc3MtPmNo
ZWNrX3VyaSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9jaGVja191cmk7CisgICAgcmVx
dWVzdF9jbGFzcy0+c2VuZCA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZW5kOworICAg
IHJlcXVlc3RfY2xhc3MtPmdldF9jb250ZW50X2xlbmd0aCA9IGV3a19jdXN0b21fcHJvdG9jb2xf
aGFuZGxlcl9nZXRfY29udGVudF9sZW5ndGg7CisgICAgcmVxdWVzdF9jbGFzcy0+Z2V0X2NvbnRl
bnRfdHlwZSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfY29udGVudF90eXBlOwor
CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2Ns
YXNzLCBzaXplb2YoRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSkpOworfQorCitFaW5hX0Jvb2wg
ZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2Nv
bHMpCit7CisgICAgaW50IHByb3RvY29sc19zaXplOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9u
ID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNl
c3Npb25GZWF0dXJlKiByZXF1ZXN0ZXIgPSAwOworCisgICAgcHJvdG9jb2xzX3NpemUgPSBnX3N0
cnZfbGVuZ3RoKChnY2hhcioqKXByb3RvY29scyk7CisgICAgaWYgKHByb3RvY29sc19zaXplIDw9
IDAgfHwgcHJvdG9jb2xzW3Byb3RvY29sc19zaXplXSkgLy8gbXVzdCBiZSBudWxsIHRlcm1pbmF0
ZSB0aGUgYXJyYXkKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisKKyAgICByZXF1ZXN0ZXIg
PSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1JFUVVFU1RFUik7
CisgICAgaWYgKCFyZXF1ZXN0ZXIpIHsKKyAgICAgICAgcmVxdWVzdGVyID0gU09VUF9TRVNTSU9O
X0ZFQVRVUkUoc291cF9yZXF1ZXN0ZXJfbmV3KCkpOworICAgICAgICBzb3VwX3Nlc3Npb25fYWRk
X2ZlYXR1cmUoc2Vzc2lvbiwgcmVxdWVzdGVyKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocmVx
dWVzdGVyKTsKKyAgICB9CisKKyAgICBpZiAoc291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1
cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpIHsKKyAgICAg
ICAgYWRkZWRfY291bnQrKzsKKyAgICAgICAgcmV0dXJuIEVJTkFfVFJVRTsKKyAgICB9CisKKyAg
ICBzY2hlbWVzID0gKGNoYXIqKilnX3N0cmR1cHYoKGdjaGFyKiopcHJvdG9jb2xzKTsKKyAgICBp
ZiAoIShzY2hlbWVzICYmIHNvdXBfc2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJlcXVlc3Rl
ciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKSkKKyAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CisKKyAgICBhZGRlZF9jb3VudCsrOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9
CisKK0VpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfc291cF9hbGxfdW5zZXQo
KQoreworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Npb25GZWF0dXJlKiByZXF1ZXN0ZXIgPSAw
OworCisgICAgaWYgKCFhZGRlZF9jb3VudCkKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisK
KyAgICByZXF1ZXN0ZXIgPSBzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9U
WVBFX1JFUVVFU1RFUik7CisgICAgaWYgKCFyZXF1ZXN0ZXIpCisgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOworCisgICAgaWYgKCFzb3VwX3Nlc3Npb25fZmVhdHVyZV9oYXNfZmVhdHVyZShyZXF1
ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkKKyAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisKKyAgICBpZiAoYWRkZWRfY291bnQgPT0gMSkKKyAgICAgICAgaWYgKHNv
dXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VT
VE9NX1BST1RPQ09MX0hBTkRMRVIpKQorICAgICAgICAgICAgZ19zdHJmcmVldihzY2hlbWVzKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisKKyAgICBhZGRl
ZF9jb3VudC0tOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hZjRiZjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cF9oCisjZGVmaW5lIGV3a19wcm90b2Nv
bF9oYW5kbGVyX3NvdXBfaAorCisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRsZXIuaCIKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2RlZmluZSBMSUJT
T1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1
ZXN0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2Rl
ZmluZSBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiAgICAgICAgICAgIChld2tfY3Vz
dG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEVXS19DVVNUT01fUFJP
VE9DT0xfSEFORExFUihvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
ICgob2JqZWN0KSwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsIEV3a0N1c3RvbVBy
b3RvY29sSGFuZGxlcikpCisjZGVmaW5lIEVXS19DVVNUT01fUFJPVE9DT0xfSEFORExFUl9DTEFT
UyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBFV0tfVFlQRV9D
VVNUT01fUFJPVE9DT0xfSEFORExFUiwgRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyQ2xhc3MpKQor
I2RlZmluZSBFV0tfSVNfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIob2JqZWN0KSAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iamVjdCksIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NP
TF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0lTX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEVXS19UWVBFX0NVU1RP
TV9QUk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVS
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEVXS19U
WVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSLCBFd2tDdXN0b21Qcm90b2NvbEhhbmRsZXJDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlIEV3a1Byb3Rv
Y29sSGFuZGxlclByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBTb3VwUmVxdWVzdCBw
YXJlbnQ7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSAqcHJpdjsKK30gRXdrQ3VzdG9t
UHJvdG9jb2xIYW5kbGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgU291cFJlcXVlc3RDbGFz
cyBwYXJlbnQ7Cit9IEV3a0N1c3RvbVByb3RvY29sSGFuZGxlckNsYXNzOworCisKK0dUeXBlIGV3
a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfdHlwZSgpOworCitFaW5hX0Jvb2wgZXdrX2N1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMpOwor
CitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfcHJvdG9j
b2xfaGFuZGxlcl9zb3VwX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggMzhl
NmM2MS4uZDgxYjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcm90b2NvbF9o
YW5kbGVyLmgiCiAKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEuaD4KQEAgLTc5
LDYgKzgwLDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJDb3Jl
OjpGcmFtZSogbWFpbl9mcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3
cG9ydF9hcmd1bWVudHM7CiAgICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7CisgICAgc3RydWN0ICB7
CisgICAgICAgIHZvaWQqIGN0eHQ7CisgICAgICAgIEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJf
Q2IgZnVuYzsKKyAgICB9IGN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyOwogICAgIHN0cnVjdCB7CiAg
ICAgICAgIEV3a19NZW51IG1lbnU7CiAgICAgICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCog
bWVudV9jbGllbnQ7CkBAIC00NDQ3LDYgKzQ0NTIsNjEgQEAgRWluYV9Cb29sIGV3a192aWV3X25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBvLCBFd2tfRnJhbWVfUmVzb3Vy
Y2UKIH0KIAogLyoqCisgKiBSZWdpc3RlciBhIG5ldyBwcm90b2NvbCBoYW5kbGVyIGZvciBoYW5k
bGluZyBhbiBzcGVjaWZpYyBwcm90b2NvbCAoc2NoZW1lKS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3
LgorICogQHBhcmFtIHByb3RvY29scyB0aGUgcHJvdG9jb2xzIHRoYXQgd2lsbCBiZSBoYW5kbGVk
LgorICogQHBhcmFtIGhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBm
b3IgdGhlIHByb3RvY29scworICogQHBhcmFtIGN0eHQgdGhlIGhhbmRsZXIgY29udGV4dAorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisg
Ki8KK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3NldChFdmFzX09iamVjdCog
bywgY29uc3QgY2hhcioqIHByb3RvY29scywgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBo
YW5kbGVyLCB2b2lkKiBjdHh0KQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKCFoYW5kbGVyKQorICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVy
LmZ1bmMgPSBoYW5kbGVyOworICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQg
PSBjdHh0OworCisgICAgcmV0dXJuIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZXQocHJv
dG9jb2xzKTsKK30KKworLyoqCisgKiBSZW1vdmUgdGhlIGN1c3RvbSBwcm90b2NvbCBoYW5kbGVy
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3Byb3Rv
Y29sX2hhbmRsZXJfdW5zZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
KG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAgRWluYV9Cb29s
IHJldCA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9hbGxfdW5zZXQoKTsKKworICAgIGlm
IChyZXQpIHsKKyAgICAgICAgcHJpdi0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuZnVuYyA9IDA7
CisgICAgICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQgPSAwOworICAgIH0K
KworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQqIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJf
cmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwgY2hhcioqIG1p
bWUsIGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBFd2tfVmlld19SZXNvdXJjZV9I
YW5kbGVyX0NiIGZ1bmMgPSBwcml2LT5jdXN0b21fcmVzb3VyY2VfaGFuZGxlci5mdW5jOworICAg
IGlmIChmdW5jKQorICAgICAgICByZXR1cm4gZnVuYyhmaWxlLCBieXRlc1JlYWQsIG1pbWUsIHBy
aXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQpOworCisgICAgcmV0dXJuIDA7Cit9CisK
Ky8qKgogICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoYXQgdGhlIGNvbnRlbnRzIGhhdmUgcmVz
aXplZC4gVGhlIGV3a192aWV3IGNhbGxzIGNvbnRlbnRzX3Jlc2l6ZSwKICAqIHdoaWNoIGNhbiBi
ZSByZWltcGxlbWVudGVkIGFzIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKaW5kZXgg
ZjMzYTdjYy4uZDZjNzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTkzLDYgKzkz
LDggQEAgZXh0ZXJuICJDIiB7CiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRh
IEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAKK3R5cGVkZWYgdm9pZCogKCpFd2tfVmlld19SZXNvdXJj
ZV9IYW5kbGVyX0NiKShjb25zdCBjaGFyICosIHNpemVfdCAqLCBjaGFyICoqLCB2b2lkICopOwor
CiAvKioKICAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNz
ZXMuCiAgKi8KQEAgLTU0Niw2ICs1NDgsOSBAQCBFQVBJIGZsb2F0IGV3a192aWV3X3pvb21fcmFu
Z2VfbWF4X2dldChFdmFzX09iamVjdCogbyk7CiBFQVBJIHZvaWQgZXdrX3ZpZXdfdXNlcl9zY2Fs
YWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxlKTsKIEVBUEkg
RWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKIEVB
UEkgZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChFdmFzX09iamVjdCogbyk7
CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Vuc2V0KEV2YXNfT2Jq
ZWN0KiBvKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfc2V0KEV2
YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiogcHJvdG9jb2wsIEV3a19WaWV3X1Jlc291cmNlX0hh
bmRsZXJfQ2IgaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQqIGN0eHQpOwogCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19tb2RlX3NldChF
dmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpOwogRUFQSSBFd2tfVmlld19N
b2RlIGV3a192aWV3X21vZGVfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLS0gCjEuNy42Cgo=
</data>
<flag name="review"
          id="94761"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100153</attachid>
            <date>2011-07-08 13:29:45 -0700</date>
            <delta_ts>2011-08-30 07:42:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handler.patch</filename>
            <type>text/plain</type>
            <size>22346</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSAxZWQ1YjNlZjJjNjNiZmUzNWFiNTRhNWM0ZDJhMTk5MTg2MjEyMTZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBXZWQsIDI5IEp1biAyMDExIDE4OjA1OjA5IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSCAxLzJdIFtFRkxdICBBZGQgY3VzdG9tIG5ldHdvcmsgcmVzb3VyY2UgaGFuZGxlciAgICAg
ICAKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1CgotLS0KIFNv
dXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0ICAgICAgICAgICAgICAgIHwgICAgNCAr
CiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MjMgKysrCiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNw
cCAgICAgfCAgIDU2ICsrKysrKwogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmggICAgICAgfCAgIDM4ICsrKysKIC4uLi9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9j
b2xfaGFuZGxlcl9zb3VwLmNwcCAgIHwgIDE5MiArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaCAgfCAgIDY0ICsrKysr
KysKIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgICAgICAgICAgICAgICAgIHwg
ICA2MCArKysrKysKIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQ0MyBpbnNlcnRpb25zKCspLCAwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmgK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CmluZGV4IDVhODc5Y2EuLjhjYTI0M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CkBAIC02Myw2ICs2Myw3IEBAIExJU1QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgZWZsL2V3ay9ld2tfZnJhbWUuY3BwCiAgICAgZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAorICAgIGVmbC9ld2sv
ZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCiAg
ICAgZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jCiAgICAgZWZsL2V3ay9ld2tfdGls
ZWRfbWF0cml4LmMKQEAgLTEwNSw2ICsxMDYsNyBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICBMSVNU
KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2F1dGguY3BwCiAgICAgZWZs
L2V3ay9ld2tfYXV0aF9zb3VwLmNwcAorICAgIGVmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJf
c291cC5jcHAKICAgKQogRU5ESUYgKCkKIApAQCAtMjE2LDYgKzIxOCw4IEBAIFVOU0VUKExJQlNf
UFJJVkFURSkKIAogRklMRShHTE9CIEVXZWJLaXRfSEVBREVSUyAiJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svKi5oIikKIExJU1QoUkVNT1ZFX0lURU0gRVdlYktpdF9IRUFERVJT
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIikKK0xJ
U1QoUkVNT1ZFX0lURU0gRVdlYktpdF9IRUFERVJTICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5oIikKK0xJU1QoUkVNT1ZFX0lURU0gRVdl
YktpdF9IRUFERVJTICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlcl9zb3VwLmgiKQogTElTVChSRU1PVkVfSVRFTSBFV2ViS2l0X0hFQURFUlMg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmgi
KQogTElTVChSRU1PVkVfSVRFTSBFV2ViS2l0X0hFQURFUlMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmgiKQogTElTVChSRU1PVkVf
SVRFTSBFV2ViS2l0X0hFQURFUlMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a190aWxlZF9tYXRyaXguaCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTkzZGY3My4uNWM1MGMy
NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTA3LTA4ICBGbGF2aW8g
Q2VvbGluICA8ZmxhdmlvLmNlb2xpbkBwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgY3VzdG9tIG5ldHdvcmsg
cmVzb3VyY2UgaGFuZGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQ3NTkKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFu
ZGxpbmcgdXNlci1zcGVjaWZpYyBwcm90b2NvbHMuCisgICAgICAgIEl0IGFsbG93cyBicm93c2Vy
cyB0byBpbnRlcmNlcHQgYW5kIGhhbmRsZSBub24tc3RhbmRhcmQgdXJsIHNjaGVtZXMgKHN1Y2gg
YXMgcHJlZmVyZW5jZXM6Ly8pCisgICAgICAgIGFsbG93aW5nIHRvIGxvYWQgc29tZSByZXNvdXJj
ZSBmcm9tIG5vbi1odHRwL2ZpbGUgc3RvcmFnZSwgbGlrZSBhIHRhci96aXAvZWV0LgorCisgICAg
ICAgICogQ01ha2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5k
bGVyLmNwcDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIGV3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogQWRkZWQu
CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaDogQWRkZWQuCisgICAg
ICAgICogZXdrL2V3a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFu
ZGxlcl9yZXNvdXJjZV9nZXQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA2
LTI5ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKaW5kZXggMTA3NmM2Ni4uNDhlOGRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cml2YXRlLmgKQEAgLTExMCw2ICsxMTAsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFz
X09iamVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogdm9p
ZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCAqbywgY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cyk7CiAKIHZvaWQgZXdrX3ZpZXdf
ZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCk7
Cit2b2lkICpld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChFdmFzX09iamVj
dCAqbywgc2l6ZV90ICpieXRlc1JlYWQsIGNoYXIgKiptaW1lLCBjb25zdCBjaGFyICpmaWxlKTsK
IAogdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBvKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2Nv
bF9oYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliMzI0OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5j
cHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9O
IGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdr
X3Byb3RvY29sX2hhbmRsZXIuaCIKKworI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgImV3a19wcm90
b2NvbF9oYW5kbGVyX3NvdXAuaCIKKyNlbmRpZgorCisvKioKKyAqIFJlZ2lzdGVyIGEgcHJvdG9j
b2wgaGFuZGxlci4KKyAqCisgKiBAcGFyYW0gcHJvdG9jb2xzIHRoZSBwcm90b2NvbHMgdGhhdCB3
aWxsIGJlIGhhbmRsZWQuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNzLCBAYyBF
SU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKK3sKKyNpZiBVU0UoU09VUCkKKyAgICBy
ZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KHByb3RvY29scyk7Cisj
ZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiBF
SU5BX0ZBTFNFOworI2VuZGlmCit9CisKKy8qKgorICogUmVtb3ZlIHByb3RvY29sIGhhbmRsZXIu
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBp
ZiBub3QuCisgKi8KK0VpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfYWxsX3Vu
c2V0KCkKK3sKKyNpZiBVU0UoU09VUCkKKyAgICByZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9o
YW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7CisjZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBp
bXBsZW1lbnRlZCIpOworICAgIHJldHVybiBFSU5BX0ZBTFNFOworI2VuZGlmCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmVmM2Q0YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaApAQCAtMCwwICsxLDM4IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfaAorI2RlZmluZSBld2tfcHJvdG9jb2xfaGFuZGxl
cl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVy
X3NldChjb25zdCBjaGFyKiogcHJvdG9jb2xzKTsKKworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1c3Rv
bV9wcm90b2NvbF9oYW5kbGVyX2FsbF91bnNldCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3Byb3RvY29sX2hhbmRsZXJfaAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxN2RhZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcApAQCAt
MCwwICsxLDE5MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Byb3Rv
Y29sX2hhbmRsZXJfc291cC5oIgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwuaCIK
KyNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC1yZXF1ZXN0ZXIuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKworc3RydWN0
IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlIHsKKyAgICBjaGFyKiBtaW1lOworICAgIHNpemVf
dCBieXRlc1JlYWQ7Cit9OworCitHX0RFRklORV9UWVBFKEV3a0N1c3RvbVByb3RvY29sSGFuZGxl
ciwgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyLCBTT1VQX1RZUEVfUkVRVUVTVCkKKworc3Rh
dGljIGNoYXIqKiBzY2hlbWVzID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBjdXN0b21fcHJvdG9jb2xf
YWRkZWRfY291bnQgPSAwOworCitzdGF0aWMgdm9pZCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRs
ZXJfaW5pdChFd2tDdXN0b21Qcm90b2NvbEhhbmRsZXIqIGN1c3RvbV9wcm90b2NvbF9oYW5kbGVy
KQoreworICAgIGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyLT5wcml2ID0gR19UWVBFX0lOU1RBTkNF
X0dFVF9QUklWQVRFKGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyLCBFV0tfVFlQRV9DVVNUT01fUFJP
VE9DT0xfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKTsKKyAgICBp
ZiAoY3VzdG9tX3Byb3RvY29sX2hhbmRsZXItPnByaXYpIHsKKyAgICAgICAgY3VzdG9tX3Byb3Rv
Y29sX2hhbmRsZXItPnByaXYtPm1pbWUgPSAwOworICAgICAgICBjdXN0b21fcHJvdG9jb2xfaGFu
ZGxlci0+cHJpdi0+Ynl0ZXNSZWFkID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgRUlOQV9MT0df
Q1JJVCgiQ291bGQgbm90IGluaXQgY3VzdG9tIHByb3RvY29sIGhhbmRsZXIsIHByaXYgPT0gTlVM
TC4iKTsKK30KKworc3RhdGljIHZvaWQgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2ZpbmFs
aXplKEdPYmplY3QqIG9iaikKK3sKKyAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKiBwcml2
ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIEVXS19UWVBFX0NVU1RPTV9QUk9U
T0NPTF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJp
dmF0ZSk7CisgICAgaWYgKHByaXYpCisgICAgICAgIGZyZWUocHJpdi0+bWltZSk7CisKKyAgICBH
X09CSkVDVF9DTEFTUyhld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfcGFyZW50X2NsYXNzKS0+
ZmluYWxpemUob2JqKTsKK30KKworc3RhdGljIGdib29sZWFuIGV3a19jdXN0b21fcHJvdG9jb2xf
aGFuZGxlcl9jaGVja191cmkoU291cFJlcXVlc3QqIHJlcXVlc3QsIFNvdXBVUkkqIHVyaSwgR0Vy
cm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHSW5wdXRTdHJl
YW0qIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZW5kKFNvdXBSZXF1ZXN0KiByZXF1ZXN0
LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICB2b2lk
KiBidWYgPSAwOworICAgIGNoYXIqIG1pbWUgPSAwOworICAgIHNpemVfdCBieXRlc1JlYWQgPSAw
OworICAgIFNvdXBVUkkqIHVyaSA9IDA7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSog
cHJpdiA9IDA7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIHJlc291cmNlID0gMDsKKyAg
ICBjb25zdCBXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKiBmcmFtZUNvbnRleHQg
PSAwOworICAgIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmcmFtZUxvYWRl
ckNsaWVudCA9IDA7CisKKyAgICByZXNvdXJjZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QocmVxdWVzdCksICJ3ZWJraXQt
cmVzb3VyY2UiKSk7CisgICAgaWYgKHJlc291cmNlKQorICAgICAgICBmcmFtZUNvbnRleHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsKj4ocmVzb3VyY2Ut
PmdldEludGVybmFsKCktPm1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKHJlc291cmNlICYmIGZy
YW1lQ29udGV4dCkKKyAgICAgICAgZnJhbWVMb2FkZXJDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lQ29udGV4dC0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLT5jbGllbnQoKSk7CisKKyAgICB1cmkgPSBzb3VwX3JlcXVlc3RfZ2V0X3VyaShyZXF1
ZXN0KTsKKyAgICBwcml2ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZWludGVycHJl
dF9jYXN0PEV3a0N1c3RvbVByb3RvY29sSGFuZGxlcio+KHJlcXVlc3QpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5E
TEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV3a1Byb3RvY29s
SGFuZGxlclByaXZhdGUpOworCisgICAgaWYgKCEocmVzb3VyY2UgJiYgZnJhbWVDb250ZXh0ICYm
IGZyYW1lTG9hZGVyQ2xpZW50ICYmIHByaXYgJiYgdXJpKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAodXJpLT5wYXRoWzBdID09ICcvJykKKyAgICAgICAgYnVmID0gZXdrX3ZpZXdfcHJv
dG9jb2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQoZnJhbWVMb2FkZXJDbGllbnQtPndlYlZpZXcoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5
dGVzUmVhZCwgJm1pbWUsIHVyaS0+cGF0aCArIDEpOyAvLyBUaGUgcGF0aCBpcyBhbHdheXMgaW5p
dGlhbGl6ZWQgd2l0aCAvLgorICAgIGVsc2UKKyAgICAgICAgYnVmID0gZXdrX3ZpZXdfcHJvdG9j
b2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQoZnJhbWVMb2FkZXJDbGllbnQtPndlYlZpZXcoKSwgJmJ5
dGVzUmVhZCwgJm1pbWUsIHVyaS0+aG9zdCk7CisKKyAgICBwcml2LT5ieXRlc1JlYWQgPSBieXRl
c1JlYWQ7CisgICAgaWYgKG1pbWUpCisgICAgICAgIHByaXYtPm1pbWUgPSBzdHJkdXAobWltZSk7
CisKKyAgICByZXR1cm4gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEoYnVmLCBi
eXRlc1JlYWQsIGZyZWUpOworfQorCitzdGF0aWMgZ29mZnNldCBld2tfY3VzdG9tX3Byb3RvY29s
X2hhbmRsZXJfZ2V0X2NvbnRlbnRfbGVuZ3RoKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUqIHByaXYgID0gR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKHJlaW50ZXJwcmV0X2Nhc3Q8RXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyKj4ocmVxdWVz
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSk7CisgICAgcmV0dXJuIChwcml2KSA/IHByaXYt
PmJ5dGVzUmVhZCA6IDA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBld2tfY3VzdG9tX3Byb3Rv
Y29sX2hhbmRsZXJfZ2V0X2NvbnRlbnRfdHlwZShTb3VwUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKiBwcml2ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRf
UFJJVkFURShyZWludGVycHJldF9jYXN0PEV3a0N1c3RvbVByb3RvY29sSGFuZGxlcio+KHJlcXVl
c3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUpOworICAgIHJldHVybiAocHJpdiAmJiBwcml2
LT5taW1lKSA/IHByaXYtPm1pbWUgOiAidGV4dC9odG1sIjsKK30KKworc3RhdGljIHZvaWQgZXdr
X2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2NsYXNzX2luaXQoRXdrQ3VzdG9tUHJvdG9jb2xIYW5k
bGVyQ2xhc3MqIGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2NsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoY3VzdG9tX3Byb3RvY29sX2hhbmRs
ZXJfY2xhc3MpOworICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcyA9IFNPVVBfUkVR
VUVTVF9DTEFTUyhjdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9jbGFzcyk7CisKKyAgICBnb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2ZpbmFsaXplOwor
ICAgIHJlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihzY2hl
bWVzKTsKKyAgICByZXF1ZXN0Q2xhc3MtPmNoZWNrX3VyaSA9IGV3a19jdXN0b21fcHJvdG9jb2xf
aGFuZGxlcl9jaGVja191cmk7CisgICAgcmVxdWVzdENsYXNzLT5zZW5kID0gZXdrX2N1c3RvbV9w
cm90b2NvbF9oYW5kbGVyX3NlbmQ7CisgICAgcmVxdWVzdENsYXNzLT5nZXRfY29udGVudF9sZW5n
dGggPSBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X2NvbnRlbnRfbGVuZ3RoOworICAg
IHJlcXVlc3RDbGFzcy0+Z2V0X2NvbnRlbnRfdHlwZSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9nZXRfY29udGVudF90eXBlOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGN1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX2NsYXNzLCBzaXplb2YoRXdrUHJvdG9jb2xIYW5kbGVyUHJp
dmF0ZSkpOworfQorCitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBf
c2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMpCit7CisgICAgaW50IHByb3RvY29sc19zaXplOwor
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1
bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Npb25GZWF0dXJlKiByZXF1ZXN0ZXIgPSAwOworCisg
ICAgcHJvdG9jb2xzX3NpemUgPSBnX3N0cnZfbGVuZ3RoKGNvbnN0X2Nhc3Q8Z2NoYXIqKj4ocHJv
dG9jb2xzKSk7CisgICAgaWYgKHByb3RvY29sc19zaXplIDw9IDAgfHwgcHJvdG9jb2xzW3Byb3Rv
Y29sc19zaXplXSkgLy8gVGhpcyBhcnJheSBtdXN0IGJlIG51bGwgdGVybWluYXRlZC4KKyAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CisKKyAgICByZXF1ZXN0ZXIgPSBzb3VwX3Nlc3Npb25fZ2V0
X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1JFUVVFU1RFUik7CisgICAgaWYgKCFyZXF1ZXN0
ZXIpIHsKKyAgICAgICAgcmVxdWVzdGVyID0gU09VUF9TRVNTSU9OX0ZFQVRVUkUoc291cF9yZXF1
ZXN0ZXJfbmV3KCkpOworICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwg
cmVxdWVzdGVyKTsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYocmVxdWVzdGVyKTsKKyAgICB9CisK
KyAgICBpZiAoc291cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tf
VFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpIHsKKyAgICAgICAgY3VzdG9tX3Byb3RvY29s
X2FkZGVkX2NvdW50Kys7CisgICAgICAgIHJldHVybiBFSU5BX1RSVUU7CisgICAgfQorCisgICAg
c2NoZW1lcyA9IGdfc3RyZHVwdihjb25zdF9jYXN0PGdjaGFyKio+KHByb3RvY29scykpOworICAg
IGlmICghKHNjaGVtZXMgJiYgc291cF9zZXNzaW9uX2ZlYXR1cmVfYWRkX2ZlYXR1cmUocmVxdWVz
dGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikpKQorICAgICAgICByZXR1cm4g
RUlOQV9GQUxTRTsKKworICAgIGN1c3RvbV9wcm90b2NvbF9hZGRlZF9jb3VudCsrOworICAgIHJl
dHVybiBFSU5BX1RSVUU7Cit9CisKK0VpbmFfQm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRs
ZXJfc291cF9hbGxfdW5zZXQoKQoreworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgU291cFNlc3Npb25GZWF0
dXJlKiByZXF1ZXN0ZXIgPSAwOworCisgICAgaWYgKCFjdXN0b21fcHJvdG9jb2xfYWRkZWRfY291
bnQpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcmVxdWVzdGVyID0gc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOworICAgIGlm
ICghcmVxdWVzdGVyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIGlmICghc291
cF9zZXNzaW9uX2ZlYXR1cmVfaGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01f
UFJPVE9DT0xfSEFORExFUikpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgaWYg
KGN1c3RvbV9wcm90b2NvbF9hZGRlZF9jb3VudCA9PSAxKQorICAgICAgICBpZiAoc291cF9zZXNz
aW9uX2ZlYXR1cmVfcmVtb3ZlX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJP
VE9DT0xfSEFORExFUikpCisgICAgICAgICAgICBnX3N0cmZyZWV2KHNjaGVtZXMpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIGN1c3RvbV9wcm90
b2NvbF9hZGRlZF9jb3VudC0tOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjRiZjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpZm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cF9oCisjZGVmaW5lIGV3
a19wcm90b2NvbF9oYW5kbGVyX3NvdXBfaAorCisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRs
ZXIuaCIKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2Rl
ZmluZSBMSUJTT1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQorI2luY2x1ZGUgPGxpYnNvdXAv
c291cC1yZXF1ZXN0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworI2RlZmluZSBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiAgICAgICAgICAg
IChld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEVXS19D
VVNUT01fUFJPVE9DT0xfSEFORExFUihvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUICgob2JqZWN0KSwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsIEV3
a0N1c3RvbVByb3RvY29sSGFuZGxlcikpCisjZGVmaW5lIEVXS19DVVNUT01fUFJPVE9DT0xfSEFO
RExFUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBF
V0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwgRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
Q2xhc3MpKQorI2RlZmluZSBFV0tfSVNfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIob2JqZWN0KSAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iamVjdCksIEVXS19UWVBFX0NVU1RP
TV9QUk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0lTX0NVU1RPTV9QUk9UT0NPTF9IQU5E
TEVSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEVXS19U
WVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0NVU1RPTV9QUk9UT0NP
TF9IQU5ETEVSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9i
aiksIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSLCBFd2tDdXN0b21Qcm90b2NvbEhh
bmRsZXJDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRl
IEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBTb3Vw
UmVxdWVzdCBwYXJlbnQ7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSAqcHJpdjsKK30g
RXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgU291cFJl
cXVlc3RDbGFzcyBwYXJlbnQ7Cit9IEV3a0N1c3RvbVByb3RvY29sSGFuZGxlckNsYXNzOworCisK
K0dUeXBlIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfdHlwZSgpOworCitFaW5hX0Jv
b2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90
b2NvbHMpOworCitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxs
X3Vuc2V0KCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBl
d2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAK
aW5kZXggMzhlNmM2MS4uZDgxYjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19w
cm90b2NvbF9oYW5kbGVyLmgiCiAKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVpbmEu
aD4KQEAgLTc5LDYgKzgwLDEwIEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAg
ICBXZWJDb3JlOjpGcmFtZSogbWFpbl9mcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cyB2aWV3cG9ydF9hcmd1bWVudHM7CiAgICAgRXdrX0hpc3RvcnkqIGhpc3Rvcnk7CisgICAg
c3RydWN0ICB7CisgICAgICAgIHZvaWQqIGN0eHQ7CisgICAgICAgIEV3a19WaWV3X1Jlc291cmNl
X0hhbmRsZXJfQ2IgZnVuYzsKKyAgICB9IGN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyOwogICAgIHN0
cnVjdCB7CiAgICAgICAgIEV3a19NZW51IG1lbnU7CiAgICAgICAgIFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCogbWVudV9jbGllbnQ7CkBAIC00NDQ3LDYgKzQ0NTIsNjEgQEAgRWluYV9Cb29sIGV3
a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBvLCBFd2tfRnJh
bWVfUmVzb3VyY2UKIH0KIAogLyoqCisgKiBSZWdpc3RlciBhIG5ldyBwcm90b2NvbCBoYW5kbGVy
IGZvciBoYW5kbGluZyBhbiBzcGVjaWZpYyBwcm90b2NvbCAoc2NoZW1lKS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3LgorICogQHBhcmFtIHByb3RvY29scyB0aGUgcHJvdG9jb2xzIHRoYXQgd2lsbCBi
ZSBoYW5kbGVkLgorICogQHBhcmFtIGhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBl
eGVjdXRlZCBmb3IgdGhlIHByb3RvY29scworICogQHBhcmFtIGN0eHQgdGhlIGhhbmRsZXIgY29u
dGV4dAorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBp
ZiBub3QuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3NldChFdmFz
X09iamVjdCogbywgY29uc3QgY2hhcioqIHByb3RvY29scywgRXdrX1ZpZXdfUmVzb3VyY2VfSGFu
ZGxlcl9DYiBoYW5kbGVyLCB2b2lkKiBjdHh0KQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBz
ZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOworCisgICAgaWYgKCFoYW5kbGVy
KQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIHByaXYtPmN1c3RvbV9yZXNvdXJj
ZV9oYW5kbGVyLmZ1bmMgPSBoYW5kbGVyOworICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5k
bGVyLmN0eHQgPSBjdHh0OworCisgICAgcmV0dXJuIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxl
cl9zZXQocHJvdG9jb2xzKTsKK30KKworLyoqCisgKiBSZW1vdmUgdGhlIGN1c3RvbSBwcm90b2Nv
bCBoYW5kbGVyLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBpZiBzdWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRWluYV9Cb29sIGV3a192
aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQoRXZhc19PYmplY3QqIG8pCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisgICAg
RWluYV9Cb29sIHJldCA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9hbGxfdW5zZXQoKTsK
KworICAgIGlmIChyZXQpIHsKKyAgICAgICAgcHJpdi0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIu
ZnVuYyA9IDA7CisgICAgICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQgPSAw
OworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQqIGV3a192aWV3X3Byb3RvY29s
X2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwg
Y2hhcioqIG1pbWUsIGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8s
IHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAgICBFd2tfVmlld19S
ZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmMgPSBwcml2LT5jdXN0b21fcmVzb3VyY2VfaGFuZGxlci5m
dW5jOworICAgIGlmIChmdW5jKQorICAgICAgICByZXR1cm4gZnVuYyhmaWxlLCBieXRlc1JlYWQs
IG1pbWUsIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQpOworCisgICAgcmV0dXJu
IDA7Cit9CisKKy8qKgogICogQGludGVybmFsCiAgKiBSZXBvcnRzIHRoYXQgdGhlIGNvbnRlbnRz
IGhhdmUgcmVzaXplZC4gVGhlIGV3a192aWV3IGNhbGxzIGNvbnRlbnRzX3Jlc2l6ZSwKICAqIHdo
aWNoIGNhbiBiZSByZWltcGxlbWVudGVkIGFzIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmgKaW5kZXggZjMzYTdjYy4uZDZjNzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTkzLDYgKzkzLDggQEAgZXh0ZXJuICJDIiB7CiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19T
bWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiAKK3R5cGVkZWYgdm9pZCogKCpFd2tfVmll
d19SZXNvdXJjZV9IYW5kbGVyX0NiKShjb25zdCBjaGFyICosIHNpemVfdCAqLCBjaGFyICoqLCB2
b2lkICopOworCiAvKioKICAqIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkg
c3ViLWNsYXNzZXMuCiAgKi8KQEAgLTU0Niw2ICs1NDgsOSBAQCBFQVBJIGZsb2F0IGV3a192aWV3
X3pvb21fcmFuZ2VfbWF4X2dldChFdmFzX09iamVjdCogbyk7CiBFQVBJIHZvaWQgZXdrX3ZpZXdf
dXNlcl9zY2FsYWJsZV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCB1c2VyX3NjYWxhYmxl
KTsKIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X3VzZXJfc2NhbGFibGVfZ2V0KEV2YXNfT2JqZWN0
KiBvKTsKIEVBUEkgZmxvYXQgZXdrX3ZpZXdfZGV2aWNlX3BpeGVsX3JhdGlvX2dldChFdmFzX09i
amVjdCogbyk7CitFQVBJIEVpbmFfQm9vbCBld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Vuc2V0
KEV2YXNfT2JqZWN0KiBvKTsKK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRs
ZXJfc2V0KEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiogcHJvdG9jb2wsIEV3a19WaWV3X1Jl
c291cmNlX0hhbmRsZXJfQ2IgaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQqIGN0eHQpOwogCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19t
b2RlX3NldChFdmFzX09iamVjdCogbywgRXdrX1ZpZXdfTW9kZSB2aWV3X21vZGUpOwogRUFQSSBF
d2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KEV2YXNfT2JqZWN0KiBvKTsKLS0gCjEuNy42
Cgo=
</data>
<flag name="review"
          id="94796"
          type_id="1"
          status="-"
          setter="lucas.de.marchi"
    />
    <flag name="commit-queue"
          id="101671"
          type_id="3"
          status="-"
          setter="lucas.de.marchi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105627</attachid>
            <date>2011-08-30 07:42:38 -0700</date>
            <delta_ts>2011-09-12 09:44:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handle.patch</filename>
            <type>text/plain</type>
            <size>22233</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSA2MzQzMWU3OTNlNDJhZjk0OWUxZTk5MWVhZGRhZjg0MzhkNDFmNGM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBNb24sIDI5IEF1ZyAyMDExIDE3OjA2OjQ0IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSF0gW0VGTF0gIEFkZCBjdXN0b20gbmV0d29yayByZXNvdXJjZSBoYW5kbGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1CgotLS0KIFNvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0ICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrCiBTb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCAgICAgICAgICAgICAgICB8ICAgIDEgKwog
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcCAgICAgfCAgIDQ1
ICsrKysrCiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaCAgICAg
ICB8ICAgNTQgKysrKysrCiAuLi4vV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJf
c291cC5jcHAgICB8ICAxOTcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmggIHwgICA2NCArKysrKysrCiBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysK
IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oICAgICAgICAgICAgICAgICAgIHwgICAy
NCArKysKIDkgZmlsZXMgY2hhbmdlZCwgNDU1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9l
ZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMjZlZjBhMC4uOGEyMDg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTczLDYgKzczLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9ld2svZXdrX25ldHdv
cmsuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisgICAgZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlci5jcHAKICAgICBlZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmMK
ICAgICBlZmwvZXdrL2V3a190aWxlZF9tYXRyaXguYwogICAgIGVmbC9ld2svZXdrX3RpbGVkX21v
ZGVsLmMKQEAgLTExNSw2ICsxMTYsNyBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICBMSVNUKEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2F1dGguY3BwCiAgICAgZWZsL2V3ay9l
d2tfYXV0aF9zb3VwLmNwcAorICAgIGVmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5j
cHAKICAgKQogRU5ESUYgKCkKIApAQCAtMjM1LDYgKzIzNyw3IEBAIFNFVChFV2ViS2l0X0hFQURF
UlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbG9nZ2luZy5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX21haW4uaAogICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19uZXR3b3JrLmgKKyAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NldHRpbmdzLmgK
ICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfdmlldy5oCiAgICAg
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggNmYzMjIxMi4uMzY0YjRmNCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDExLTA4LTMwICBGbGF2aW8gQ2VvbGluICA8ZmxhdmlvLmNlb2xp
bkBwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbRUZMXSBBZGQgY3VzdG9tIG5ldHdvcmsgcmVzb3VyY2UgaGFuZGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3NTkKKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFuZGxpbmcgdXNlci1zcGVjaWZpYyBw
cm90b2NvbHMuCisgICAgICAgIEl0IGFsbG93cyBicm93c2VycyB0byBpbnRlcmNlcHQgYW5kIGhh
bmRsZSBub24tc3RhbmRhcmQgdXJsIHNjaGVtZXMgKHN1Y2ggYXMgcHJlZmVyZW5jZXM6Ly8pCisg
ICAgICAgIGFsbG93aW5nIHRvIGxvYWQgc29tZSByZXNvdXJjZSBmcm9tIG5vbi1odHRwL2ZpbGUg
c3RvcmFnZSwgbGlrZSBhIHRhci96aXAvZWV0LgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcDogQWRkZWQuCisgICAg
ICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9l
d2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19w
cm90b2NvbF9oYW5kbGVyX3NvdXAuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3Byb3Rv
Y29sX2hhbmRsZXJfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQpOgor
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA4LTMwICBHcnplZ29yeiBDemFqa293
c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBjb25z
dCBtb2RpZmllciB0byBwYXNzZWQgb2JqZWN0cyB3aGVyZSBpdCdzIHJlY29tbWVuZGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCmluZGV4IDljYjVhODUuLjM0MzMzODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBld2tfdmll
d19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCAqY2xp
ZW50LCBpbnQgc2UKIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19zZXQoRXZhc19P
YmplY3QgKm8sIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzICZhcmd1bWVudHMpOwog
CiB2b2lkIGV3a192aWV3X2Rvd25sb2FkX3JlcXVlc3QoRXZhc19PYmplY3QgKm8sIEV3a19Eb3du
bG9hZCAqZG93bmxvYWQpOwordm9pZCAqZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNvdXJj
ZV9nZXQoRXZhc19PYmplY3QgKm8sIHNpemVfdCAqYnl0ZXNSZWFkLCBjaGFyICoqbWltZSwgY29u
c3QgY2hhciAqZmlsZSk7CiAKIHZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9jb250ZW50c19j
aGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsKIHZvaWQgZXdrX3ZpZXdfZWRpdG9yX2NsaWVudF9zZWxl
Y3Rpb25fY2hhbmdlZChFdmFzX09iamVjdCAqbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kZWI4NzM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19wcm90b2NvbF9oYW5kbGVyLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJld2tfcHJvdG9jb2xfaGFuZGxlci5oIgorCisjaWYgVVNFKFNPVVAp
CisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oIgorI2VuZGlmCisKK0VpbmFf
Qm9vbCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2Nv
bHMpCit7CisjaWYgVVNFKFNPVVApCisgICAgcmV0dXJuIGV3a19jdXN0b21fcHJvdG9jb2xfaGFu
ZGxlcl9zb3VwX3NldChwcm90b2NvbHMpOworI2Vsc2UKKyAgICBFSU5BX0xPR19DUklUKCJOb3Qg
aW1wbGVtZW50ZWQiKTsKKyAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyNlbmRpZgorfQorCitFaW5h
X0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2FsbF91bnNldCgpCit7CisjaWYgVVNF
KFNPVVApCisgICAgcmV0dXJuIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zb3VwX2FsbF91
bnNldCgpOworI2Vsc2UKKyAgICBFSU5BX0xPR19DUklUKCJOb3QgaW1wbGVtZW50ZWQiKTsKKyAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3Byb3RvY29sX2hhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wYjdkN2FmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19w
cm90b2NvbF9oYW5kbGVyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3
a19wcm90b2NvbF9oYW5kbGVyLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgY3VzdG9tIHBy
b3RvY29sIGhhbmRsZXIgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJf
aAorI2RlZmluZSBld2tfcHJvdG9jb2xfaGFuZGxlcl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBSZWdp
c3RlciBhIHByb3RvY29sIGhhbmRsZXIuCisgKgorICogQHBhcmFtIHByb3RvY29scyB0aGUgcHJv
dG9jb2xzIHRoYXQgd2lsbCBiZSBoYW5kbGVkLgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYg
c3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19j
dXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scyk7CisKKy8q
KgorICogUmVtb3ZlIHByb3RvY29sIGhhbmRsZXIuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9hbGxfdW5zZXQoKTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wcm90b2NvbF9oYW5kbGVyX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYmQ1NTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291
cC5jcHAKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImV3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaCIKKworI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmgiCisjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbC5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAtcmVxdWVzdGVyLmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisKK3N0cnVjdCBfRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSB7CisgICAgY2hhciogbWltZTsK
KyAgICBzaXplX3QgYnl0ZXNSZWFkOworfTsKKworR19ERUZJTkVfVFlQRShFd2tDdXN0b21Qcm90
b2NvbEhhbmRsZXIsIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlciwgU09VUF9UWVBFX1JFUVVF
U1QpCisKK3N0YXRpYyBjaGFyKiogc2NoZW1lcyA9IDA7CitzdGF0aWMgdW5zaWduZWQgY3VzdG9t
X3Byb3RvY29sX2FkZGVkX2NvdW50ID0gMDsKKworc3RhdGljIHZvaWQgZXdrX2N1c3RvbV9wcm90
b2NvbF9oYW5kbGVyX2luaXQoRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyKiBjdXN0b21fcHJvdG9j
b2xfaGFuZGxlcikKK3sKKyAgICBjdXN0b21fcHJvdG9jb2xfaGFuZGxlci0+cHJpdiA9IEdfVFlQ
RV9JTlNUQU5DRV9HRVRfUFJJVkFURShjdXN0b21fcHJvdG9jb2xfaGFuZGxlciwgRVdLX1RZUEVf
Q1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY3VzdG9tX3Byb3RvY29sX2hhbmRs
ZXItPnByaXYpOworCisgICAgY3VzdG9tX3Byb3RvY29sX2hhbmRsZXItPnByaXYtPm1pbWUgPSAw
OworICAgIGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyLT5wcml2LT5ieXRlc1JlYWQgPSAwOworfQor
CitzdGF0aWMgdm9pZCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZmluYWxpemUoR09iamVj
dCogb2JqKQoreworICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUqIHByaXYgID0gR19UWVBF
X0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRM
RVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKTsKKyAg
ICBpZiAocHJpdikKKyAgICAgICAgZnJlZShwcml2LT5taW1lKTsKKworICAgIEdfT0JKRUNUX0NM
QVNTKGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmopOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2No
ZWNrX3VyaShTb3VwUmVxdWVzdCogcmVxdWVzdCwgU291cFVSSSogdXJpLCBHRXJyb3IqKiBlcnJv
cikKK3sKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdJbnB1dFN0cmVhbSogZXdrX2N1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NlbmQoU291cFJlcXVlc3QqIHJlcXVlc3QsIEdDYW5jZWxs
YWJsZSogY2FuY2VsbGFibGUsIEdFcnJvcioqIGVycm9yKQoreworICAgIHZvaWQqIGJ1ZjsKKyAg
ICBjaGFyKiBtaW1lID0gMDsKKyAgICBzaXplX3QgYnl0ZXNSZWFkID0gMDsKKworICAgIFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiByZXNvdXJjZSA9IHN0YXRpY19jYXN0PAorICAgICAgICBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHJlcXVlc3Qp
LCAid2Via2l0LXJlc291cmNlIikpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChyZXNvdXJjZSwgMCk7CisKKyAgICBjb25zdCBXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250
ZXh0RWZsKiBmcmFtZUNvbnRleHQgPSBzdGF0aWNfY2FzdDwKKyAgICAgICAgV2ViQ29yZTo6RnJh
bWVOZXR3b3JraW5nQ29udGV4dEVmbCo+KHJlc291cmNlLT5nZXRJbnRlcm5hbCgpLT5tX2NvbnRl
eHQuZ2V0KCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmcmFtZUNvbnRl
eHQsIDApOworCisgICAgY29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZyYW1l
TG9hZGVyQ2xpZW50ID0gc3RhdGljX2Nhc3Q8CisgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50RWZsKj4oZnJhbWVDb250ZXh0LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgp
KTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZnJhbWVMb2FkZXJDbGllbnQs
IDApOworCisgICAgU291cFVSSSogdXJpID0gc291cF9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCk7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVyaSwgMCk7CisKKyAgICBFd2tQ
cm90b2NvbEhhbmRsZXJQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRF
KAorICAgICAgICByZWludGVycHJldF9jYXN0PEV3a0N1c3RvbVByb3RvY29sSGFuZGxlcio+KHJl
cXVlc3QpLAorICAgICAgICBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwKKyAgICAg
ICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSk7CisKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwocHJpdiwgMCk7CisKKworICAgIGlmICh1cmktPnBhdGhbMF0gPT0gJy8nKSB7
CisgICAgICAgIGJ1ZiA9IGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KGZy
YW1lTG9hZGVyQ2xpZW50LT53ZWJWaWV3KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZieXRlc1JlYWQsICZtaW1lLCB1cmktPnBhdGggKyAx
KTsgLy8gVGhlIHBhdGggaXMgYWx3YXlzIGluaXRpYWxpemVkIHdpdGggLy4KKyAgICB9IGVsc2UK
KyAgICAgICAgYnVmID0gZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQoZnJh
bWVMb2FkZXJDbGllbnQtPndlYlZpZXcoKSwgJmJ5dGVzUmVhZCwgJm1pbWUsIHVyaS0+aG9zdCk7
CisKKyAgICBwcml2LT5ieXRlc1JlYWQgPSBieXRlc1JlYWQ7CisgICAgaWYgKG1pbWUpCisgICAg
ICAgIHByaXYtPm1pbWUgPSBzdHJkdXAobWltZSk7CisKKyAgICByZXR1cm4gZ19tZW1vcnlfaW5w
dXRfc3RyZWFtX25ld19mcm9tX2RhdGEoYnVmLCBieXRlc1JlYWQsIGZyZWUpOworfQorCitzdGF0
aWMgZ29mZnNldCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X2NvbnRlbnRfbGVuZ3Ro
KFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUq
IHByaXYgID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlaW50ZXJwcmV0X2Nhc3Q8RXdr
Q3VzdG9tUHJvdG9jb2xIYW5kbGVyKj4ocmVxdWVzdCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVdLX1RZUEVfQ1VT
VE9NX1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0
ZSk7CisgICAgcmV0dXJuIChwcml2KSA/IHByaXYtPmJ5dGVzUmVhZCA6IDA7Cit9CisKK3N0YXRp
YyBjb25zdCBjaGFyKiBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X2NvbnRlbnRfdHlw
ZShTb3VwUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRl
KiBwcml2ICA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShyZWludGVycHJldF9jYXN0PEV3
a0N1c3RvbVByb3RvY29sSGFuZGxlcio+KHJlcXVlc3QpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVXS19UWVBFX0NV
U1RPTV9QUk9UT0NPTF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZh
dGUpOworICAgIHJldHVybiAocHJpdiAmJiBwcml2LT5taW1lKSA/IHByaXYtPm1pbWUgOiAidGV4
dC9odG1sIjsKK30KKworc3RhdGljIHZvaWQgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2Ns
YXNzX2luaXQoRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyQ2xhc3MqIGN1c3RvbV9wcm90b2NvbF9o
YW5kbGVyX2NsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1MoY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfY2xhc3MpOworICAgIFNvdXBSZXF1ZXN0
Q2xhc3MqIHJlcXVlc3RDbGFzcyA9IFNPVVBfUkVRVUVTVF9DTEFTUyhjdXN0b21fcHJvdG9jb2xf
aGFuZGxlcl9jbGFzcyk7CisKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gZXdrX2N1c3Rv
bV9wcm90b2NvbF9oYW5kbGVyX2ZpbmFsaXplOworICAgIHJlcXVlc3RDbGFzcy0+c2NoZW1lcyA9
IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPihzY2hlbWVzKTsKKyAgICByZXF1ZXN0Q2xhc3MtPmNo
ZWNrX3VyaSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9jaGVja191cmk7CisgICAgcmVx
dWVzdENsYXNzLT5zZW5kID0gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NlbmQ7CisgICAg
cmVxdWVzdENsYXNzLT5nZXRfY29udGVudF9sZW5ndGggPSBld2tfY3VzdG9tX3Byb3RvY29sX2hh
bmRsZXJfZ2V0X2NvbnRlbnRfbGVuZ3RoOworICAgIHJlcXVlc3RDbGFzcy0+Z2V0X2NvbnRlbnRf
dHlwZSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfY29udGVudF90eXBlOworCisg
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGN1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2NsYXNz
LCBzaXplb2YoRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSkpOworfQorCitFaW5hX0Jvb2wgZXdr
X2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMp
Cit7CisgICAgZ3VpbnQgcHJvdG9jb2xzX3NpemU7CisgICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBTb3VwU2Vz
c2lvbkZlYXR1cmUqIHJlcXVlc3RlcjsKKworICAgIHByb3RvY29sc19zaXplID0gZ19zdHJ2X2xl
bmd0aChjb25zdF9jYXN0PGdjaGFyKio+KHByb3RvY29scykpOworCisgICAgLy8gVGhpcyBhcnJh
eSBtdXN0IGJlIG51bGwgdGVybWluYXRlZC4KKyAgICBFSU5BX1NBRkVUWV9PTl9UUlVFX1JFVFVS
Tl9WQUwoIXByb3RvY29sc19zaXplIHx8IHByb3RvY29sc1twcm90b2NvbHNfc2l6ZV0sIEVJTkFf
RkFMU0UpOworCisgICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Np
b24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOworICAgIGlmICghcmVxdWVzdGVyKSB7CisgICAgICAg
IHJlcXVlc3RlciA9IFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNvdXBfcmVxdWVzdGVyX25ldygpKTsK
KyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIHJlcXVlc3Rlcik7Cisg
ICAgICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3Rlcik7CisgICAgfQorCisgICAgaWYgKHNvdXBf
c2Vzc2lvbl9mZWF0dXJlX2hhc19mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BS
T1RPQ09MX0hBTkRMRVIpKSB7CisgICAgICAgIGN1c3RvbV9wcm90b2NvbF9hZGRlZF9jb3VudCsr
OworICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIH0KKworICAgIHNjaGVtZXMgPSBnX3N0
cmR1cHYoY29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsKKyAgICBpZiAoIShzY2hlbWVz
ICYmIHNvdXBfc2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJlcXVlc3RlciwgRVdLX1RZUEVf
Q1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKSkKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisK
KyAgICBjdXN0b21fcHJvdG9jb2xfYWRkZWRfY291bnQrKzsKKyAgICByZXR1cm4gRUlOQV9UUlVF
OworfQorCitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vu
c2V0KCkKK3sKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uRmVhdHVyZSogcmVxdWVzdGVy
OworCisgICAgaWYgKCFjdXN0b21fcHJvdG9jb2xfYWRkZWRfY291bnQpCisgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOworCisgICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9uX2dldF9mZWF0dXJl
KHNlc3Npb24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOworICAgIGlmICghcmVxdWVzdGVyKQorICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIGlmICghc291cF9zZXNzaW9uX2ZlYXR1cmVf
aGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUikp
CisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgaWYgKGN1c3RvbV9wcm90b2NvbF9h
ZGRlZF9jb3VudCA9PSAxKSB7CisgICAgICAgIGlmIChzb3VwX3Nlc3Npb25fZmVhdHVyZV9yZW1v
dmVfZmVhdHVyZShyZXF1ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkK
KyAgICAgICAgICAgIGdfc3RyZnJlZXYoc2NoZW1lcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIGN1c3RvbV9wcm90b2NvbF9hZGRl
ZF9jb3VudC0tOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hZjRiZjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApAQCAtMCwwICsxLDY0IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpZm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cF9oCisjZGVmaW5lIGV3a19wcm90b2Nv
bF9oYW5kbGVyX3NvdXBfaAorCisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRsZXIuaCIKKwor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2RlZmluZSBMSUJT
T1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1
ZXN0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2Rl
ZmluZSBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiAgICAgICAgICAgIChld2tfY3Vz
dG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEVXS19DVVNUT01fUFJP
VE9DT0xfSEFORExFUihvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
ICgob2JqZWN0KSwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsIEV3a0N1c3RvbVBy
b3RvY29sSGFuZGxlcikpCisjZGVmaW5lIEVXS19DVVNUT01fUFJPVE9DT0xfSEFORExFUl9DTEFT
UyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBFV0tfVFlQRV9D
VVNUT01fUFJPVE9DT0xfSEFORExFUiwgRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyQ2xhc3MpKQor
I2RlZmluZSBFV0tfSVNfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIob2JqZWN0KSAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iamVjdCksIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NP
TF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0lTX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEVXS19UWVBFX0NVU1RP
TV9QUk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVS
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEVXS19U
WVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSLCBFd2tDdXN0b21Qcm90b2NvbEhhbmRsZXJDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlIEV3a1Byb3Rv
Y29sSGFuZGxlclByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBTb3VwUmVxdWVzdCBw
YXJlbnQ7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSAqcHJpdjsKK30gRXdrQ3VzdG9t
UHJvdG9jb2xIYW5kbGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgU291cFJlcXVlc3RDbGFz
cyBwYXJlbnQ7Cit9IEV3a0N1c3RvbVByb3RvY29sSGFuZGxlckNsYXNzOworCisKK0dUeXBlIGV3
a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfdHlwZSgpOworCitFaW5hX0Jvb2wgZXdrX2N1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2NvbHMpOwor
CitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfcHJvdG9j
b2xfaGFuZGxlcl9zb3VwX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNjMx
NDY4MWQuLjdlNjQ4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtNTAsNiAr
NTAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiY19pbnN0YW5jZS5o
IgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRs
ZXIuaCIKIAogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWluYS5oPgpAQCAtOTAsNiAr
OTEsMTAgQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIFdlYkNvcmU6OkZy
YW1lICptYWluX2ZyYW1lOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0
X2FyZ3VtZW50czsKICAgICBFd2tfSGlzdG9yeSAqaGlzdG9yeTsKKyAgICBzdHJ1Y3QgIHsKKyAg
ICAgICAgdm9pZCogY3R4dDsKKyAgICAgICAgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBm
dW5jOworICAgIH0gY3VzdG9tX3Jlc291cmNlX2hhbmRsZXI7CiAgICAgc3RydWN0IHsKICAgICAg
ICAgRXdrX01lbnUgbWVudTsKICAgICAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICptZW51
X2NsaWVudDsKQEAgLTM2MTAsNiArMzYxNSw0NSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfanNfb2Jq
ZWN0X2FkZChFdmFzX09iamVjdCAqbywgRXdrX0pTX09iamVjdCAqb2JqLCBjb25zdCBjaGFyCiAj
ZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB9CiAKK0VpbmFfQm9vbCBld2tf
dmlld19wcm90b2NvbF9oYW5kbGVyX3NldChFdmFzX09iamVjdCogbywgY29uc3QgY2hhcioqIHBy
b3RvY29scywgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBoYW5kbGVyLCB2b2lkKiBjdHh0
KQoreworICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVQo
c2QsIHByaXYpOworCisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKKworICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmZ1bmMgPSBoYW5kbGVyOwor
ICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQgPSBjdHh0OworCisgICAgcmV0
dXJuIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZXQocHJvdG9jb2xzKTsKK30KKworRWlu
YV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQoRXZhc19PYmplY3QqIG8pCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CisgICAgRWluYV9Cb29sIHJldCA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9h
bGxfdW5zZXQoKTsKKworICAgIGlmIChyZXQpIHsKKyAgICAgICAgcHJpdi0+Y3VzdG9tX3Jlc291
cmNlX2hhbmRsZXIuZnVuYyA9IDA7CisgICAgICAgIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5k
bGVyLmN0eHQgPSAwOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQqIGV3a192
aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0KiBvLCBzaXplX3Qq
IGJ5dGVzUmVhZCwgY2hhcioqIG1pbWUsIGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgRVdLX1ZJ
RVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CisKKyAg
ICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmMgPSBwcml2LT5jdXN0b21fcmVzb3Vy
Y2VfaGFuZGxlci5mdW5jOworICAgIGlmIChmdW5jKQorICAgICAgICByZXR1cm4gZnVuYyhmaWxl
LCBieXRlc1JlYWQsIG1pbWUsIHByaXYtPmN1c3RvbV9yZXNvdXJjZV9oYW5kbGVyLmN0eHQpOwor
CisgICAgcmV0dXJuIDA7Cit9CiAKIC8qKgogICogQGludGVybmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5oCmluZGV4IGY4YjNlM2QuLmUxOWM5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CkBAIC05OSw2ICs5OSw5IEBAIGV4dGVybiAiQyIgewogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIEBhIF9Fd2tfVmlld19TbWFydF9EYXRhLgogdHlwZWRlZiBzdHJ1Y3QgX0V3a19WaWV3X1Nt
YXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIAorLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIGEgUmVzb3VyY2UgSGFuZGxlciBDYWxsYmFjawordHlwZWRlZiB2b2lkKiAoKkV3a19WaWV3
X1Jlc291cmNlX0hhbmRsZXJfQ2IpKGNvbnN0IGNoYXIgKiwgc2l6ZV90ICosIGNoYXIgKiosIHZv
aWQgKik7CisKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfU21hcnRf
Q2xhc3MuCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdfU21h
cnRfQ2xhc3M7CiAvLy8gRXdrIHZpZXcncyBjbGFzcywgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWIt
Y2xhc3Nlcy4KQEAgLTIyMTAsNiArMjIxMywyNyBAQCBFQVBJIEV3a19WaWV3X01vZGUgZXdrX3Zp
ZXdfbW9kZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgb2JqZWN0IHdhcyBhZGRlZCwgQGMgRUlOQV9GQUxTRSBpZiBub3QuCiAgKi8KIEVBUEkg
RWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQoRXZhc19PYmplY3QgKm8sIEV3a19KU19P
YmplY3QgKm9iaiwgY29uc3QgY2hhciAqb2JqX25hbWUpOworCisvKioKKyAqIFJlZ2lzdGVyIGEg
bmV3IHByb3RvY29sIGhhbmRsZXIgZm9yIGhhbmRsaW5nIGFuIHNwZWNpZmljIHByb3RvY29sIChz
Y2hlbWUpLgorICoKKyAqIEBwYXJhbSBvIHZpZXcuCisgKiBAcGFyYW0gcHJvdG9jb2xzIHRoZSBw
cm90b2NvbHMgdGhhdCB3aWxsIGJlIGhhbmRsZWQuCisgKiBAcGFyYW0gaGFuZGxlciB0aGUgZnVu
Y3Rpb24gdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGZvciB0aGUgcHJvdG9jb2xzCisgKiBAcGFyYW0g
Y3R4dCB0aGUgaGFuZGxlciBjb250ZXh0CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNj
ZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
cHJvdG9jb2xfaGFuZGxlcl9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqKiBwcm90b2Nv
bCwgRXdrX1ZpZXdfUmVzb3VyY2VfSGFuZGxlcl9DYiBoYW5kbGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogY3R4dCk7CisKKy8qKgorICogUmVt
b3ZlIHRoZSBjdXN0b20gcHJvdG9jb2wgaGFuZGxlci4KKyAqCisgKiBAcGFyYW0gbyB2aWV3Lgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3Qu
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQoRXZh
c19PYmplY3QqIG8pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotLSAKMS43LjYu
MQoK
</data>
<flag name="review"
          id="101843"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107055</attachid>
            <date>2011-09-12 09:44:59 -0700</date>
            <delta_ts>2011-09-12 10:53:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-EFL-Add-custom-network-resource-handle.patch</filename>
            <type>text/plain</type>
            <size>22161</size>
            <attacher name="Flavio Ceolin">flavio.ceolin</attacher>
            
              <data encoding="base64">RnJvbSBlZTNiZGZkZTIxNWE4NTUwOTk5MjY5M2E0ZGJhZmU5NzRlMzczNzEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGbGF2aW8gQ2VvbGluIDxmbGF2aW8uY2VvbGluQHByb2Z1c2lv
bi5tb2JpPgpEYXRlOiBNb24sIDI5IEF1ZyAyMDExIDE3OjA2OjQ0IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSF0gW0VGTF0gIEFkZCBjdXN0b20gbmV0d29yayByZXNvdXJjZSBoYW5kbGUKIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc1CgotLS0KIFNvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0ICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrCiBTb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCAgICAgICAgICAgICAgICB8ICAgIDEgKwog
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcCAgICAgfCAgIDQ1
ICsrKysrCiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaCAgICAg
ICB8ICAgNTQgKysrKysrCiAuLi4vV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJf
c291cC5jcHAgICB8ICAxOTcgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmggIHwgICA2NCArKysrKysrCiBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysK
IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oICAgICAgICAgICAgICAgICAgIHwgICAy
MyArKysKIDkgZmlsZXMgY2hhbmdlZCwgNDU0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0p
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9o
YW5kbGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
cHJvdG9jb2xfaGFuZGxlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9l
ZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggY2FkNTQ2MC4uYTI2NjBiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTczLDYgKzczLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0
X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9ld2svZXdrX25ldHdv
cmsuY3BwCiAgICAgZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisgICAgZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlci5jcHAKICAgICBlZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmMK
ICAgICBlZmwvZXdrL2V3a190aWxlZF9tYXRyaXguYwogICAgIGVmbC9ld2svZXdrX3RpbGVkX21v
ZGVsLmMKQEAgLTExNSw2ICsxMTYsNyBAQCBJRiAoV1RGX1VTRV9TT1VQKQogICBMSVNUKEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2F1dGguY3BwCiAgICAgZWZsL2V3ay9l
d2tfYXV0aF9zb3VwLmNwcAorICAgIGVmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5j
cHAKICAgKQogRU5ESUYgKCkKIApAQCAtMjM1LDYgKzIzNyw3IEBAIFNFVChFV2ViS2l0X0hFQURF
UlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbG9nZ2luZy5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX21haW4uaAogICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19uZXR3b3JrLmgKKyAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3NldHRpbmdzLmgK
ICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfdmlldy5oCiAgICAg
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTBiODMwMC4uMGQ2MzgxZSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDExLTA5LTEyICBGbGF2aW8gQ2VvbGluICA8ZmxhdmlvLmNlb2xp
bkBwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbRUZMXSBBZGQgY3VzdG9tIG5ldHdvcmsgcmVzb3VyY2UgaGFuZGxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3NTkKKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgaGFuZGxpbmcgdXNlci1zcGVjaWZpYyBw
cm90b2NvbHMuCisgICAgICAgIEl0IGFsbG93cyBicm93c2VycyB0byBpbnRlcmNlcHQgYW5kIGhh
bmRsZSBub24tc3RhbmRhcmQgdXJsIHNjaGVtZXMgKHN1Y2ggYXMgcHJlZmVyZW5jZXM6Ly8pCisg
ICAgICAgIGFsbG93aW5nIHRvIGxvYWQgc29tZSByZXNvdXJjZSBmcm9tIG5vbi1odHRwL2ZpbGUg
c3RvcmFnZSwgbGlrZSBhIHRhci96aXAvZWV0LgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50
eHQ6CisgICAgICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmNwcDogQWRkZWQuCisgICAg
ICAgICogZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9l
d2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19w
cm90b2NvbF9oYW5kbGVyX3NvdXAuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19wcml2YXRl
Lmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X3Byb3Rv
Y29sX2hhbmRsZXJfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl9yZXNvdXJjZV9nZXQpOgor
ICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorCiAyMDExLTA5LTA0ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBSZW5hbWUgZXdrX3ZpZXdfKHNp
bmdsZXx0aWxlZCkuYyB0byBld2tfdmlld18oc2luZ2xlfHRpbGVkKS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmgKaW5kZXggOWNiNWE4NS4uMzQzMzM4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19wcml2YXRlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVw
X25ldyhFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50ICpjbGllbnQsIGlu
dCBzZQogdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChFdmFzX09iamVjdCAq
bywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgJmFyZ3VtZW50cyk7CiAKIHZvaWQg
ZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25sb2FkICpk
b3dubG9hZCk7Cit2b2lkICpld2tfdmlld19wcm90b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChF
dmFzX09iamVjdCAqbywgc2l6ZV90ICpieXRlc1JlYWQsIGNoYXIgKiptaW1lLCBjb25zdCBjaGFy
ICpmaWxlKTsKIAogdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQo
RXZhc19PYmplY3QgKm8pOwogdm9pZCBld2tfdmlld19lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9j
aGFuZ2VkKEV2YXNfT2JqZWN0ICpvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfcHJvdG9jb2xfaGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3By
b3RvY29sX2hhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRl
Yjg3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3Rv
Y29sX2hhbmRsZXIuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgImV3a19wcm90b2NvbF9oYW5kbGVyLmgiCisKKyNpZiBVU0UoU09VUCkKKyNpbmNs
dWRlICJld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmgiCisjZW5kaWYKKworRWluYV9Cb29sIGV3
a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZXQoY29uc3QgY2hhcioqIHByb3RvY29scykKK3sK
KyNpZiBVU0UoU09VUCkKKyAgICByZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3Nv
dXBfc2V0KHByb3RvY29scyk7CisjZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBpbXBsZW1l
bnRlZCIpOworICAgIHJldHVybiBFSU5BX0ZBTFNFOworI2VuZGlmCit9CisKK0VpbmFfQm9vbCBl
d2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfYWxsX3Vuc2V0KCkKK3sKKyNpZiBVU0UoU09VUCkK
KyAgICByZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vuc2V0KCk7
CisjZWxzZQorICAgIEVJTkFfTE9HX0NSSVQoIk5vdCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVy
biBFSU5BX0ZBTFNFOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3Byb3RvY29sX2hhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJv
dG9jb2xfaGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiN2Q3
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29s
X2hhbmRsZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3Byb3Rv
Y29sX2hhbmRsZXIuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBjdXN0b20gcHJvdG9jb2wg
aGFuZGxlciBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfcHJvdG9jb2xfaGFuZGxlcl9oCisjZGVm
aW5lIGV3a19wcm90b2NvbF9oYW5kbGVyX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIFJlZ2lzdGVyIGEg
cHJvdG9jb2wgaGFuZGxlci4KKyAqCisgKiBAcGFyYW0gcHJvdG9jb2xzIHRoZSBwcm90b2NvbHMg
dGhhdCB3aWxsIGJlIGhhbmRsZWQuCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNz
LCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1c3RvbV9w
cm90b2NvbF9oYW5kbGVyX3NldChjb25zdCBjaGFyKiogcHJvdG9jb2xzKTsKKworLyoqCisgKiBS
ZW1vdmUgcHJvdG9jb2wgaGFuZGxlci4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBz
dWNjZXNzLCBAYyBFSU5BX0ZBTFNFIGlmIG5vdC4KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2N1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX2FsbF91bnNldCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3Byb3RvY29sX2hhbmRsZXJfaAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQzZjkyMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJvdG9jb2xfaGFuZGxlcl9zb3VwLmNwcApA
QCAtMCwwICsxLDE5NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3By
b3RvY29sX2hhbmRsZXJfc291cC5oIgorCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRFZmwu
aCIKKyNpbmNsdWRlICJGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgor
I2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGxp
YnNvdXAvc291cC1yZXF1ZXN0ZXIuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKworc3Ry
dWN0IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlIHsKKyAgICBjaGFyKiBtaW1lOworICAgIHNp
emVfdCBieXRlc1JlYWQ7Cit9OworCitHX0RFRklORV9UWVBFKEV3a0N1c3RvbVByb3RvY29sSGFu
ZGxlciwgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyLCBTT1VQX1RZUEVfUkVRVUVTVCkKKwor
c3RhdGljIGNoYXIqKiBzY2hlbWVzID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBjdXN0b21Qcm90b2Nv
bEFkZGVkQ291bnQgPSAwOworCitzdGF0aWMgdm9pZCBld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRs
ZXJfaW5pdChFd2tDdXN0b21Qcm90b2NvbEhhbmRsZXIqIGN1c3RvbVByb3RvY29sSGFuZGxlcikK
K3sKKyAgICBjdXN0b21Qcm90b2NvbEhhbmRsZXItPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VU
X1BSSVZBVEUoY3VzdG9tUHJvdG9jb2xIYW5kbGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xf
SEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSk7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oY3VzdG9tUHJvdG9jb2xIYW5kbGVyLT5wcml2KTsKKworICAgIGN1
c3RvbVByb3RvY29sSGFuZGxlci0+cHJpdi0+bWltZSA9IDA7CisgICAgY3VzdG9tUHJvdG9jb2xI
YW5kbGVyLT5wcml2LT5ieXRlc1JlYWQgPSAwOworfQorCitzdGF0aWMgdm9pZCBld2tfY3VzdG9t
X3Byb3RvY29sX2hhbmRsZXJfZmluYWxpemUoR09iamVjdCogb2JqKQoreworICAgIEV3a1Byb3Rv
Y29sSGFuZGxlclByaXZhdGUqIHByaXYgID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9i
aiwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrUHJvdG9j
b2xIYW5kbGVyUHJpdmF0ZSk7CisgICAgaWYgKHByaXYpCisgICAgICAgIGZyZWUocHJpdi0+bWlt
ZSk7CisKKyAgICBHX09CSkVDVF9DTEFTUyhld2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqKTsKK30KKworc3RhdGljIGdib29sZWFuIGV3a19jdXN0
b21fcHJvdG9jb2xfaGFuZGxlcl9jaGVja191cmkoU291cFJlcXVlc3QqIHJlcXVlc3QsIFNvdXBV
UkkqIHVyaSwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRp
YyBHSW5wdXRTdHJlYW0qIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zZW5kKFNvdXBSZXF1
ZXN0KiByZXF1ZXN0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHRXJyb3IqKiBlcnJvcikK
K3sKKyAgICB2b2lkKiBidWZmZXI7CisgICAgY2hhciogbWltZSA9IDA7CisgICAgc2l6ZV90IGJ5
dGVzUmVhZCA9IDA7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogcmVzb3VyY2UgPSBz
dGF0aWNfY2FzdDwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9n
ZXRfZGF0YShHX09CSkVDVChyZXF1ZXN0KSwgIndlYmtpdC1yZXNvdXJjZSIpKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzb3VyY2UsIDApOworCisgICAgY29uc3QgV2Vi
Q29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbCogZnJhbWVDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8CisgICAgICAgIFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmwqPihyZXNvdXJj
ZS0+Z2V0SW50ZXJuYWwoKS0+bV9jb250ZXh0LmdldCgpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoZnJhbWVDb250ZXh0LCAwKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsKiBmcmFtZUxvYWRlckNsaWVudCA9IHN0YXRpY19jYXN0PAorICAg
ICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCo+KGZyYW1lQ29udGV4dC0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGZyYW1lTG9hZGVyQ2xpZW50LCAwKTsKKworICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTCh1cmksIDApOworCisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdiA9IEdf
VFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxFd2tD
dXN0b21Qcm90b2NvbEhhbmRsZXIqPihyZXF1ZXN0KSwKKyAgICAgICAgRVdLX1RZUEVfQ1VTVE9N
X1BST1RPQ09MX0hBTkRMRVIsCisgICAgICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUpOwor
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYsIDApOworCisKKyAgICBp
ZiAodXJpLT5wYXRoWzBdID09ICcvJykgeworICAgICAgICBidWZmZXIgPSBld2tfdmlld19wcm90
b2NvbF9oYW5kbGVyX3Jlc291cmNlX2dldChmcmFtZUxvYWRlckNsaWVudC0+d2ViVmlldygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Ynl0ZXNSZWFkLCAmbWltZSwgdXJpLT5wYXRoICsgMSk7IC8vIFRoZSBwYXRoIGlzIGFsd2F5cyBp
bml0aWFsaXplZCB3aXRoIC8uCisgICAgfSBlbHNlCisgICAgICAgIGJ1ZmZlciA9IGV3a192aWV3
X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KGZyYW1lTG9hZGVyQ2xpZW50LT53ZWJWaWV3
KCksICZieXRlc1JlYWQsICZtaW1lLCB1cmktPmhvc3QpOworCisgICAgcHJpdi0+Ynl0ZXNSZWFk
ID0gYnl0ZXNSZWFkOworICAgIGlmIChtaW1lKQorICAgICAgICBwcml2LT5taW1lID0gc3RyZHVw
KG1pbWUpOworCisgICAgcmV0dXJuIGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRh
KGJ1ZmZlciwgYnl0ZXNSZWFkLCBmcmVlKTsKK30KKworc3RhdGljIGdvZmZzZXQgZXdrX2N1c3Rv
bV9wcm90b2NvbF9oYW5kbGVyX2dldF9jb250ZW50X2xlbmd0aChTb3VwUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKiBwcml2ICA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShyZWludGVycHJldF9jYXN0PEV3a0N1c3RvbVByb3RvY29sSGFuZGxl
cio+KHJlcXVlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV3a1Byb3RvY29sSGFuZGxlclByaXZhdGUpOworICAgIHJldHVybiAocHJp
dikgPyBwcml2LT5ieXRlc1JlYWQgOiAwOworfQorCitzdGF0aWMgY29uc3QgY2hhciogZXdrX2N1
c3RvbV9wcm90b2NvbF9oYW5kbGVyX2dldF9jb250ZW50X3R5cGUoU291cFJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSogcHJpdiAgPSBHX1RZUEVfSU5T
VEFOQ0VfR0VUX1BSSVZBVEUocmVpbnRlcnByZXRfY2FzdDxFd2tDdXN0b21Qcm90b2NvbEhhbmRs
ZXIqPihyZXF1ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlKTsKKyAgICByZXR1cm4gKHBy
aXYgJiYgcHJpdi0+bWltZSkgPyBwcml2LT5taW1lIDogInRleHQvaHRtbCI7Cit9CisKK3N0YXRp
YyB2b2lkIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9jbGFzc19pbml0KEV3a0N1c3RvbVBy
b3RvY29sSGFuZGxlckNsYXNzKiBjdXN0b21Qcm90b2NvbEhhbmRsZXJDbGFzcykKK3sKKyAgICBH
T2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGN1c3RvbVByb3RvY29s
SGFuZGxlckNsYXNzKTsKKyAgICBTb3VwUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MgPSBTT1VQ
X1JFUVVFU1RfQ0xBU1MoY3VzdG9tUHJvdG9jb2xIYW5kbGVyQ2xhc3MpOworCisgICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9maW5hbGl6ZTsK
KyAgICByZXF1ZXN0Q2xhc3MtPnNjaGVtZXMgPSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4oc2No
ZW1lcyk7CisgICAgcmVxdWVzdENsYXNzLT5jaGVja191cmkgPSBld2tfY3VzdG9tX3Byb3RvY29s
X2hhbmRsZXJfY2hlY2tfdXJpOworICAgIHJlcXVlc3RDbGFzcy0+c2VuZCA9IGV3a19jdXN0b21f
cHJvdG9jb2xfaGFuZGxlcl9zZW5kOworICAgIHJlcXVlc3RDbGFzcy0+Z2V0X2NvbnRlbnRfbGVu
Z3RoID0gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX2dldF9jb250ZW50X2xlbmd0aDsKKyAg
ICByZXF1ZXN0Q2xhc3MtPmdldF9jb250ZW50X3R5cGUgPSBld2tfY3VzdG9tX3Byb3RvY29sX2hh
bmRsZXJfZ2V0X2NvbnRlbnRfdHlwZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShj
dXN0b21Qcm90b2NvbEhhbmRsZXJDbGFzcywgc2l6ZW9mKEV3a1Byb3RvY29sSGFuZGxlclByaXZh
dGUpKTsKK30KKworRWluYV9Cb29sIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9zb3VwX3Nl
dChjb25zdCBjaGFyKiogcHJvdG9jb2xzKQoreworICAgIGd1aW50IHByb3RvY29sc1NpemU7Cisg
ICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVs
dFNlc3Npb24oKTsKKyAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIHJlcXVlc3RlcjsKKworICAgIHBy
b3RvY29sc1NpemUgPSBnX3N0cnZfbGVuZ3RoKGNvbnN0X2Nhc3Q8Z2NoYXIqKj4ocHJvdG9jb2xz
KSk7CisKKyAgICAvLyBUaGlzIGFycmF5IG11c3QgYmUgbnVsbCB0ZXJtaW5hdGVkLgorICAgIEVJ
TkFfU0FGRVRZX09OX1RSVUVfUkVUVVJOX1ZBTCghcHJvdG9jb2xzU2l6ZSB8fCBwcm90b2NvbHNb
cHJvdG9jb2xzU2l6ZV0sIEVJTkFfRkFMU0UpOworCisgICAgcmVxdWVzdGVyID0gc291cF9zZXNz
aW9uX2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOworICAgIGlmICgh
cmVxdWVzdGVyKSB7CisgICAgICAgIHJlcXVlc3RlciA9IFNPVVBfU0VTU0lPTl9GRUFUVVJFKHNv
dXBfcmVxdWVzdGVyX25ldygpKTsKKyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNl
c3Npb24sIHJlcXVlc3Rlcik7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHJlcXVlc3Rlcik7Cisg
ICAgfQorCisgICAgaWYgKHNvdXBfc2Vzc2lvbl9mZWF0dXJlX2hhc19mZWF0dXJlKHJlcXVlc3Rl
ciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKSB7CisgICAgICAgIGN1c3RvbVBy
b3RvY29sQWRkZWRDb3VudCsrOworICAgICAgICByZXR1cm4gRUlOQV9UUlVFOworICAgIH0KKwor
ICAgIHNjaGVtZXMgPSBnX3N0cmR1cHYoY29uc3RfY2FzdDxnY2hhcioqPihwcm90b2NvbHMpKTsK
KyAgICBpZiAoIShzY2hlbWVzICYmIHNvdXBfc2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKHJl
cXVlc3RlciwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIpKSkKKyAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CisKKyAgICBjdXN0b21Qcm90b2NvbEFkZGVkQ291bnQrKzsKKyAgICBy
ZXR1cm4gRUlOQV9UUlVFOworfQorCitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5k
bGVyX3NvdXBfYWxsX3Vuc2V0KCkKK3sKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIFNvdXBTZXNzaW9uRmVh
dHVyZSogcmVxdWVzdGVyOworCisgICAgaWYgKCFjdXN0b21Qcm90b2NvbEFkZGVkQ291bnQpCisg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgcmVxdWVzdGVyID0gc291cF9zZXNzaW9u
X2dldF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9SRVFVRVNURVIpOworICAgIGlmICghcmVx
dWVzdGVyKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKworICAgIGlmICghc291cF9zZXNz
aW9uX2ZlYXR1cmVfaGFzX2ZlYXR1cmUocmVxdWVzdGVyLCBFV0tfVFlQRV9DVVNUT01fUFJPVE9D
T0xfSEFORExFUikpCisgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworCisgICAgaWYgKGN1c3Rv
bVByb3RvY29sQWRkZWRDb3VudCA9PSAxKSB7CisgICAgICAgIGlmIChzb3VwX3Nlc3Npb25fZmVh
dHVyZV9yZW1vdmVfZmVhdHVyZShyZXF1ZXN0ZXIsIEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9I
QU5ETEVSKSkKKyAgICAgICAgICAgIGdfc3RyZnJlZXYoc2NoZW1lcyk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOworICAgIH0KKworICAgIGN1c3RvbVByb3Rv
Y29sQWRkZWRDb3VudC0tOworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cC5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjRiZjYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19wcm90b2NvbF9oYW5kbGVyX3NvdXAuaApAQCAtMCwwICsxLDY0
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNpZm5kZWYgZXdrX3Byb3RvY29sX2hhbmRsZXJfc291cF9oCisjZGVmaW5lIGV3a19w
cm90b2NvbF9oYW5kbGVyX3NvdXBfaAorCisjaW5jbHVkZSAiZXdrX3Byb3RvY29sX2hhbmRsZXIu
aCIKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2RlZmlu
ZSBMSUJTT1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQorI2luY2x1ZGUgPGxpYnNvdXAvc291
cC1yZXF1ZXN0Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworI2RlZmluZSBFV0tfVFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiAgICAgICAgICAgIChl
d2tfY3VzdG9tX3Byb3RvY29sX2hhbmRsZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEVXS19DVVNU
T01fUFJPVE9DT0xfSEFORExFUihvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUICgob2JqZWN0KSwgRVdLX1RZUEVfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIsIEV3a0N1
c3RvbVByb3RvY29sSGFuZGxlcikpCisjZGVmaW5lIEVXS19DVVNUT01fUFJPVE9DT0xfSEFORExF
Ul9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBFV0tf
VFlQRV9DVVNUT01fUFJPVE9DT0xfSEFORExFUiwgRXdrQ3VzdG9tUHJvdG9jb2xIYW5kbGVyQ2xh
c3MpKQorI2RlZmluZSBFV0tfSVNfQ1VTVE9NX1BST1RPQ09MX0hBTkRMRVIob2JqZWN0KSAgICAg
IChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iamVjdCksIEVXS19UWVBFX0NVU1RPTV9Q
Uk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0lTX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVS
X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEVXS19UWVBF
X0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSKSkKKyNkZWZpbmUgRVdLX0NVU1RPTV9QUk9UT0NPTF9I
QU5ETEVSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiks
IEVXS19UWVBFX0NVU1RPTV9QUk9UT0NPTF9IQU5ETEVSLCBFd2tDdXN0b21Qcm90b2NvbEhhbmRs
ZXJDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tQcm90b2NvbEhhbmRsZXJQcml2YXRlIEV3
a1Byb3RvY29sSGFuZGxlclByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBTb3VwUmVx
dWVzdCBwYXJlbnQ7CisgICAgRXdrUHJvdG9jb2xIYW5kbGVyUHJpdmF0ZSAqcHJpdjsKK30gRXdr
Q3VzdG9tUHJvdG9jb2xIYW5kbGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgU291cFJlcXVl
c3RDbGFzcyBwYXJlbnQ7Cit9IEV3a0N1c3RvbVByb3RvY29sSGFuZGxlckNsYXNzOworCisKK0dU
eXBlIGV3a19jdXN0b21fcHJvdG9jb2xfaGFuZGxlcl9nZXRfdHlwZSgpOworCitFaW5hX0Jvb2wg
ZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfc2V0KGNvbnN0IGNoYXIqKiBwcm90b2Nv
bHMpOworCitFaW5hX0Jvb2wgZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NvdXBfYWxsX3Vu
c2V0KCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tf
cHJvdG9jb2xfaGFuZGxlcl9zb3VwX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5k
ZXggMjZhZWFmOS4uMzIyNWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJjX2luc3Rh
bmNlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfcHJvdG9jb2xf
aGFuZGxlci5oIgogCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDxFaW5hLmg+CkBAIC05
Myw2ICs5NCwxMCBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgV2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRfYXJndW1lbnRzOwogICAgIEV3a19IaXN0b3J5
ICpoaXN0b3J5OwogICAgIHN0cnVjdCB7CisgICAgICAgIHZvaWQqIGNvbnRleHQ7CisgICAgICAg
IEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJfQ2IgZnVuY3Rpb247CisgICAgfSBjdXN0b21fcmVz
b3VyY2VfaGFuZGxlcjsKKyAgICBzdHJ1Y3QgewogICAgICAgICBFd2tfTWVudSBtZW51OwogICAg
ICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQgKm1lbnVfY2xpZW50OwogICAgIH0gcG9wdXA7
CkBAIC0zNTk2LDYgKzM2MDEsNDUgQEAgRWluYV9Cb29sIGV3a192aWV3X2pzX29iamVjdF9hZGQo
RXZhc19PYmplY3QgKm8sIEV3a19KU19PYmplY3QgKm9iaiwgY29uc3QgY2hhcgogI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogfQogCitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJv
dG9jb2xfaGFuZGxlcl9zZXQoRXZhc19PYmplY3QqIG8sIGNvbnN0IGNoYXIqKiBwcm90b2NvbHMs
IEV3a19WaWV3X1Jlc291cmNlX0hhbmRsZXJfQ2IgaGFuZGxlciwgdm9pZCogY29udGV4dCkKK3sK
KyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBw
cml2KTsKKworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CisK
KyAgICBwcml2LT5jdXN0b21fcmVzb3VyY2VfaGFuZGxlci5mdW5jdGlvbiA9IGhhbmRsZXI7Cisg
ICAgcHJpdi0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuY29udGV4dCA9IGNvbnRleHQ7CisKKyAg
ICByZXR1cm4gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5kbGVyX3NldChwcm90b2NvbHMpOworfQor
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJvdG9jb2xfaGFuZGxlcl91bnNldChFdmFzX09iamVjdCog
bykKK3sKKyAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOworICAgIEVXS19WSUVXX1BSSVZfR0VU
KHNkLCBwcml2KTsKKyAgICBFaW5hX0Jvb2wgcmV0ID0gZXdrX2N1c3RvbV9wcm90b2NvbF9oYW5k
bGVyX2FsbF91bnNldCgpOworCisgICAgaWYgKHJldCkgeworICAgICAgICBwcml2LT5jdXN0b21f
cmVzb3VyY2VfaGFuZGxlci5mdW5jdGlvbiA9IDA7CisgICAgICAgIHByaXYtPmN1c3RvbV9yZXNv
dXJjZV9oYW5kbGVyLmNvbnRleHQgPSAwOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisK
K3ZvaWQqIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfcmVzb3VyY2VfZ2V0KEV2YXNfT2JqZWN0
KiBvLCBzaXplX3QqIGJ5dGVzUmVhZCwgY2hhcioqIG1pbWUsIGNvbnN0IGNoYXIqIGZpbGUpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKKyAgICBFV0tfVklFV19QUklWX0dFVChzZCwg
cHJpdik7CisKKyAgICBFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiIGZ1bmN0aW9uID0gcHJp
di0+Y3VzdG9tX3Jlc291cmNlX2hhbmRsZXIuZnVuY3Rpb247CisgICAgaWYgKGZ1bmN0aW9uKQor
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oZmlsZSwgYnl0ZXNSZWFkLCBtaW1lLCBwcml2LT5jdXN0
b21fcmVzb3VyY2VfaGFuZGxlci5jb250ZXh0KTsKKworICAgIHJldHVybiAwOworfQogCiAvKioK
ICAqIEBpbnRlcm5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCBjZWY3NDMzLi5lZGFj
OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAtOTksNiArOTksOSBAQCBleHRlcm4g
IkMiIHsKIC8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBAYSBfRXdrX1ZpZXdfU21hcnRfRGF0
YS4KIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1NtYXJ0X0Rh
dGE7CiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBhIFJlc291cmNlIEhhbmRsZXIgQ2Fs
bGJhY2sKK3R5cGVkZWYgdm9pZCogKCpFd2tfVmlld19SZXNvdXJjZV9IYW5kbGVyX0NiKShjb25z
dCBjaGFyICosIHNpemVfdCAqLCBjaGFyICoqLCB2b2lkICopOworCiAvLy8gQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgQGEgX0V3a19WaWV3X1NtYXJ0X0NsYXNzLgogdHlwZWRlZiBzdHJ1Y3QgX0V3
a19WaWV3X1NtYXJ0X0NsYXNzIEV3a19WaWV3X1NtYXJ0X0NsYXNzOwogLy8vIEV3ayB2aWV3J3Mg
Y2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCkBAIC0yMTQ0LDYgKzIxNDcs
MjYgQEAgRUFQSSBFd2tfVmlld19Nb2RlIGV3a192aWV3X21vZGVfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIG9iamVjdCB3YXMgYWRkZWQsIEBj
IEVJTkFfRkFMU0UgaWYgbm90LgogICovCiBFQVBJIEVpbmFfQm9vbCBld2tfdmlld19qc19vYmpl
Y3RfYWRkKEV2YXNfT2JqZWN0ICpvLCBFd2tfSlNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm9i
al9uYW1lKTsKKworLyoqCisgKiBSZWdpc3RlciBhIG5ldyBwcm90b2NvbCBoYW5kbGVyIGZvciBo
YW5kbGluZyBhbiBzcGVjaWZpYyBwcm90b2NvbCAoc2NoZW1lKS4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3LgorICogQHBhcmFtIHByb3RvY29scyB0aGUgcHJvdG9jb2xzIHRoYXQgd2lsbCBiZSBoYW5k
bGVkLgorICogQHBhcmFtIGhhbmRsZXIgdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRl
ZCBmb3IgdGhlIHByb3RvY29scworICogQHBhcmFtIGN0eHQgdGhlIGhhbmRsZXIgY29udGV4dAor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3Qu
CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfc2V0KEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBjaGFyKiogcHJvdG9jb2wsIEV3a19WaWV3X1Jlc291cmNlX0hhbmRs
ZXJfQ2IgaGFuZGxlciwgdm9pZCogY3R4dCk7CisKKy8qKgorICogUmVtb3ZlIHRoZSBjdXN0b20g
cHJvdG9jb2wgaGFuZGxlci4KKyAqCisgKiBAcGFyYW0gbyB2aWV3LgorICogQHJldHVybiBAYyBF
SU5BX1RSVUUgaWYgc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBpZiBub3QuCisgKi8KK0VBUEkgRWlu
YV9Cb29sIGV3a192aWV3X3Byb3RvY29sX2hhbmRsZXJfdW5zZXQoRXZhc19PYmplY3QqIG8pOwor
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotLSAKMS43LjYuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>