<?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>48429</bug_id>
          
          <creation_ts>2010-10-27 07:38:44 -0700</creation_ts>
          <short_desc>[Gtk] Populate DumpRenderTreeSupportGtk</short_desc>
          <delta_ts>2010-12-09 11:01:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>49877</dependson>
          <blocked>48199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>gustavo</cc>
    
    <cc>joone</cc>
    
    <cc>mrobinson</cc>
    
    <cc>robert</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>300210</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-27 07:38:44 -0700</bug_when>
    <thetext>Bug 48199 added DumpRenderTreeSupport, so we extend test coverage in GTK&apos;s DRT without needing new API addition. It landed with preliminary structs for now. This bug is about populating it.

There is a bunch of private API&apos;s declared in webkitprivate.h. That might be a good start point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306162</commentid>
    <comment_count>1</comment_count>
      <attachid>73245</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-08 09:28:39 -0800</bug_when>
    <thetext>Created attachment 73245
part I - moved webkit_web_frame* method in webkitprivat.h to DRTSupportGtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306164</commentid>
    <comment_count>2</comment_count>
      <attachid>73245</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-11-08 09:39:23 -0800</bug_when>
    <thetext>Comment on attachment 73245
part I - moved webkit_web_frame* method in webkitprivat.h to DRTSupportGtk.

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

Great patch. One general comment is that I would like to avoid using gchar, gint, etc in DumpRenderTreeSupport API. Our guidelines indicate that we want to avoid using GLib types, unless we are dealing with GLib-style APIs.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:106
&gt; +gchar* DumpRenderTreeSupportGtk::getInnerText(WebKitWebFrame* frame)

I think that since this is a private API we can return a CString here and relieve the burden of memory management from DumpRenderTree.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:108
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);

NULL should be 0 in new code.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:133
&gt; +gchar* DumpRenderTreeSupportGtk::dumpRenderTree(WebKitWebFrame* frame)
&gt; +{
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);
&gt; +

Same comments as above.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:156
&gt; +gchar* DumpRenderTreeSupportGtk::counterValueForElementById(WebKitWebFrame* frame, const gchar* id)
&gt; +{
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);

Ditto.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:180
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);

NULL -&gt; 0.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:202
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);

Ditto.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:242
&gt; +bool DumpRenderTreeSupportGtk::pauseSvgAnimation(WebKitWebFrame* frame, const gchar* animationId, double time, const gchar* elementId)

Svg should be SVG as per the style rules.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:258
&gt; +gchar* DumpRenderTreeSupportGtk::markerTextForListItem(WebKitWebFrame* frame, JSContextRef context, JSValueRef nodeObject)

CString here as well.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:304
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);

NULL -&gt; 0 throughout this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307883</commentid>
    <comment_count>3</comment_count>
      <attachid>73606</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-11 06:45:43 -0800</bug_when>
    <thetext>Created attachment 73606
patch v2

Fixed Martin&apos;s requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307886</commentid>
    <comment_count>4</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-11 06:47:30 -0800</bug_when>
    <thetext>Surprisingly enough it runs fine on Debug builds, but I am crashing on release:

Program received signal SIGSEGV, Segmentation fault.
0x08060d83 in WTF::fastFree(void*) ()
(gdb) bt
#0  0x08060d83 in WTF::fastFree(void*) ()
#1  0x080594b7 in dumpFramesAsText(_WebKitWebFrame*) ()
#2  0x08059784 in dump() ()
#3  0x0805d4e6 in LayoutTestController::notifyDone() ()
#4  0x0805155d in notifyDoneCallback(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned int, OpaqueJSValue const* const*, OpaqueJSValue const**) ()
#5  0xb7ca7908 in JSC::JSCallbackFunction::call(JSC::ExecState*) () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#6  0xb7d38281 in cti_op_call_NotJSFunction () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#7  0xadd476d2 in ?? ()
#8  0xb7cfa49d in JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) ()
   from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#9  0xb7d86c3f in JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) ()
   from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#10 0xb70c562f in WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext*) ()
   from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#11 0xb70c655c in WebCore::ScheduledAction::execute(WebCore::Document*) () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#12 0xb70c661b in WebCore::ScheduledAction::execute(WebCore::ScriptExecutionContext*) () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#13 0xb744cf3e in WebCore::DOMTimer::fired() () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#14 0xb750831d in WebCore::ThreadTimers::sharedTimerFiredInternal() () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#15 0xb7508395 in WebCore::ThreadTimers::sharedTimerFired() () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#16 0xb777a1be in WebCore::timeout_cb(void*) () from /home/agomes/Devel/webkit/webkit/WebKitBuild/Gtk/Release/.libs/libwebkitgtk-1.0.so.0
#17 0xb54fffcc in ?? () from /lib/libglib-2.0.so.0
#18 0xb54ff855 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#19 0xb5503668 in ?? () from /lib/libglib-2.0.so.0
#20 0xb5503ba7 in g_main_loop_run () from /lib/libglib-2.0.so.0
#21 0xb59c31d9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#22 0x08059b5f in runTest(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;) ()
#23 0x0805a337 in main ()

It crashes in dumpFramesAsText if I call DRTSupportGtk::getInnerText() . Ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309068</commentid>
    <comment_count>5</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-14 07:00:06 -0800</bug_when>
    <thetext>I&apos;ve trying to get this crash reproducible on debug build without success so far.

As per Martin&apos;s suggestion on IRC, I tried enabling fast malloc (which is disable for debug build) as following, and results are ok.


diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h
index 3eda2da..982d18a 100644
--- a/JavaScriptCore/wtf/Platform.h
+++ b/JavaScriptCore/wtf/Platform.h
@@ -674,6 +674,9 @@
 #define WTF_USE_PTHREADS 1
 #define HAVE_PTHREAD_RWLOCK 1
 #endif
+#define ENABLE_FAST_MALLOC 1
+#define USE_SYSTEM_MALLOC 0
+#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
 #endif


I am enabling it correctly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309069</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-14 07:01:03 -0800</bug_when>
    <thetext>
&gt; diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h
&gt; index 3eda2da..982d18a 100644
&gt; --- a/JavaScriptCore/wtf/Platform.h
&gt; +++ b/JavaScriptCore/wtf/Platform.h
&gt; @@ -674,6 +674,9 @@
&gt;  #define WTF_USE_PTHREADS 1
&gt;  #define HAVE_PTHREAD_RWLOCK 1
&gt;  #endif
&gt; +#define ENABLE_FAST_MALLOC 1
&gt; +#define USE_SYSTEM_MALLOC 0
&gt; +#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
&gt;  #endif

As a side note, if I enable ENABLE_FAST_MALLOC_MATCH_VALIDATION manually, I get many more crashes, making DRT impossible to run...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309740</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-11-16 08:42:11 -0800</bug_when>
    <thetext>Sorry for the late response. I tried to test this locally, but the patch no longer applies cleanly. :( Another way to test enabling fast malloc for the debug build is to remove the special logic from configure.ac at line 675 and then do a clean rebuild. The final line will look something like this:

[],[enable_fast_malloc=&quot;yes&quot;])</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310323</commentid>
    <comment_count>8</comment_count>
      <attachid>74123</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-17 09:01:47 -0800</bug_when>
    <thetext>Created attachment 74123
v2.1 - rebase against trunk

There we go, Martin :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311957</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-20 10:42:27 -0800</bug_when>
    <thetext>Right, was I able to build debug with FAST_MALLOC enabled, but the crash is still not reproducible in debug builds.

 259     CString innerText = DumpRenderTreeSupportGtk::getInnerText(frame);
 261     if (isMainFrame)
 263         result = g_strdup_printf(&quot;%s\n&quot;, &quot;oi&quot; /*innerText.data()*/);
 265     else {
 266         const gchar* frameName = webkit_web_frame_get_name(frame);
 267         result = g_strdup_printf(&quot;\n--------\nFrame: &apos;%s&apos;\n--------\n%s\n&quot;, frameName, innerText.data());
 268     }
 269     
 271     if (gLayoutTestController-&gt;dumpChildFramesAsText()) {
 272         GSList* children = DumpRenderTreeSupportGtk::getChildren(frame);
 273         for (GSList* child = children; child; child = g_slist_next(child))
 274             appendString(result, dumpFramesAsText(static_cast&lt;WebKitWebFrame* &gt;(child-&gt;data)));
 275         g_slist_free(children);
 276     }
 277 
 279     return result;

&apos;innerText&apos; is refcount&apos;ed and it crashes as soon as the method ends, i.e. innerText is going to be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312039</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-11-20 21:33:55 -0800</bug_when>
    <thetext>It seems the issue here is that there are two copies of JSC in DumpRenderTree (bad news!) and the fastAlloc is happening in one copy and the fastFree in another (even badder news!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316965</commentid>
    <comment_count>11</comment_count>
      <attachid>75526</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-03 12:36:27 -0800</bug_when>
    <thetext>Created attachment 75526
(committed r73325 - r=mrobinson) patch v2.3 - rebased to ToT

Working patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316984</commentid>
    <comment_count>12</comment_count>
      <attachid>75526</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-03 13:03:16 -0800</bug_when>
    <thetext>Comment on attachment 75526
(committed r73325 - r=mrobinson) patch v2.3 - rebased to ToT

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

Looks good! Some of the methods are named slightly differently than others. It&apos;s not a huge deal though.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:106
&gt; +GSList* DumpRenderTreeSupportGtk::getChildren(WebKitWebFrame* frame)

It might make sense to call this getFrameChildren, since it&apos;s no longer a method of the frame.

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:223
&gt; +int DumpRenderTreeSupportGtk::numberOfPages(WebKitWebFrame* frame, float pageWidth, float pageHeight)

Maybe numberOfPagesForFrame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317230</commentid>
    <comment_count>13</comment_count>
      <attachid>75526</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-03 21:28:20 -0800</bug_when>
    <thetext>Comment on attachment 75526
(committed r73325 - r=mrobinson) patch v2.3 - rebased to ToT

Clearing flags on attachment: 75526

Committed r73325: &lt;http://trac.webkit.org/changeset/73325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317272</commentid>
    <comment_count>14</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-04 07:09:20 -0800</bug_when>
    <thetext>Lets keep it opened as a centralized for related patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317275</commentid>
    <comment_count>15</comment_count>
      <attachid>75609</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-04 07:43:25 -0800</bug_when>
    <thetext>Created attachment 75609
(committed r73348, r=mrobinson) patch 2 - v1

Moving more methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317276</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-04 07:43:40 -0800</bug_when>
    <thetext>
Note: as a followup I will try to fix stuff like:

276     gchar* sourceOriginGChar = JSStringCopyUTF8CString(sourceOrigin);
277     gchar* protocolGChar = JSStringCopyUTF8CString(protocol);
278     gchar* hostGChar = JSStringCopyUTF8CString(host);
279     DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(sourceOriginGChar, protocolGChar, hostGChar, includeSubdomains);
280     g_free(sourceOriginGChar);
281     g_free(protocolGChar);
282     g_free(hostGChar);

We do not need all this gchar&apos;s and g_free&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317392</commentid>
    <comment_count>17</comment_count>
      <attachid>75609</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-05 10:03:33 -0800</bug_when>
    <thetext>Comment on attachment 75609
(committed r73348, r=mrobinson) patch 2 - v1

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317432</commentid>
    <comment_count>18</comment_count>
      <attachid>75609</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-05 19:06:19 -0800</bug_when>
    <thetext>Comment on attachment 75609
(committed r73348, r=mrobinson) patch 2 - v1

Clearing flags on attachment: 75609

Committed r73348: &lt;http://trac.webkit.org/changeset/73348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318789</commentid>
    <comment_count>19</comment_count>
      <attachid>75905</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-08 08:01:48 -0800</bug_when>
    <thetext>Created attachment 75905
(committed r73527 - r=mrobinson) patch 3 - v1

A few more methods moved, and I think I am done here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318820</commentid>
    <comment_count>20</comment_count>
      <attachid>75905</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-08 09:15:09 -0800</bug_when>
    <thetext>Comment on attachment 75905
(committed r73527 - r=mrobinson) patch 3 - v1

Awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318836</commentid>
    <comment_count>21</comment_count>
      <attachid>75905</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-08 09:48:48 -0800</bug_when>
    <thetext>Comment on attachment 75905
(committed r73527 - r=mrobinson) patch 3 - v1

Clearing flags on attachment: 75905

Committed r73527: &lt;http://trac.webkit.org/changeset/73527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318839</commentid>
    <comment_count>22</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-08 09:50:55 -0800</bug_when>
    <thetext>I am wondering about 

356     WEBKIT_API unsigned int
357     webkit_worker_thread_count();

in webkitprivate. It has a WebKit/gtk/webkit/webkitworkers.cpp just to implement this method, and it just used by DRT.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318855</commentid>
    <comment_count>23</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-08 10:08:04 -0800</bug_when>
    <thetext>I think this should also move to DRTSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319442</commentid>
    <comment_count>24</comment_count>
      <attachid>76057</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-09 06:54:29 -0800</bug_when>
    <thetext>Created attachment 76057
patch 4 - v1

As you wish...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319519</commentid>
    <comment_count>25</comment_count>
      <attachid>76076</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-09 09:48:49 -0800</bug_when>
    <thetext>Created attachment 76076
(committed r73628, r=mrobinson) patch 4 - v2

unbitrotted patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319529</commentid>
    <comment_count>26</comment_count>
      <attachid>76076</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-09 09:57:54 -0800</bug_when>
    <thetext>Comment on attachment 76076
(committed r73628, r=mrobinson) patch 4 - v2

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

Yay!

&gt; WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp:7
&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD
&gt;   *  Copyright (C) 2010 Joone Hur &lt;joone@kldp.org&gt;
&gt; +=======
&gt; + *  Copyright (C) 2009 Google Inc. All rights reserved.
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2010-12-09  Antonio Gomes  &lt;agomes@rim.com&gt;

Please resolve these changes before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319595</commentid>
    <comment_count>27</comment_count>
      <attachid>76076</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-09 11:00:26 -0800</bug_when>
    <thetext>Comment on attachment 76076
(committed r73628, r=mrobinson) patch 4 - v2

Clearing flags on attachment: 76076

Committed r73628: &lt;http://trac.webkit.org/changeset/73628&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73245</attachid>
            <date>2010-11-08 09:28:39 -0800</date>
            <delta_ts>2010-11-11 06:45:43 -0800</delta_ts>
            <desc>part I - moved webkit_web_frame* method in webkitprivat.h to DRTSupportGtk.</desc>
            <filename>0001-Gtk-Populate-DumpRenderTreeSupportGtk.patch</filename>
            <type>text/plain</type>
            <size>39406</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA4ZmYxYjBlZjczMjBlZDBjZDYyMDMwNzU2OTUwYWMwZWQ5ZDk2ODVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
TW9uLCA4IE5vdiAyMDEwIDEyOjIzOjE4IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gW0d0a10gUG9w
dWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDg0MjkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpQYXRjaCBi
eSBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KCldlYktpdC9ndGs6CgpNb3ZlZCBtb3N0
IG9mIHRoZSB3ZWJraXRfd2ViX2ZyYW1lKiBtZXRob2RzIGRlZmluZWQgaW4gd2Via2l0cHJpdmF0
ZS5oCmFuZCBieSBub3cgb25seSB1c2VkIGJ5IERSVCB0byBEUlRTdXBwb3J0R3RrLgoKSSB0cmll
ZCB0byBrZWVwIHRoZSBlc3NlbmNlIG9yaWdpbmFsIG5hbWVzLiBGb3IgZXhhbXBsZQp3ZWJraXRf
d2ViX2ZyYW1lX2dldF9jaGlsZHJlbiBnb3QgcmVuYW1lZCB0byBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmdldENoaWxkcmVuKFdlYmtpdFdlYkZyYW1lKiwgLi4uKSwKYW5kIHNvIG9uIC4uLgoK
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgooRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbik6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OmdldElubmVyVGV4dCk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVl
KToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQp
OgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgoo
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzKToKKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgooRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbik6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBh
dXNlVHJhbnNpdGlvbik6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlU3ZnQW5pbWF0
aW9uKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToK
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMpOgooRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpyZXN1bWVBbmltYXRpb25zKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6Y2xlYXJNYWluRnJhbWVOYW1lKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9j
dXNlZEFjY2Vzc2libGVFbGVtZW50KToKKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuaDoKKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgoqIHdlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHA6CgpXZWJLaXRUb29sczoKCk1hZGUgdGhlIHByZXZpb3VzIGNhbGxzIHRvIHdlYmtp
dF93ZWJfZnJhbWUqIGZ1bmN0aW9ucyBkZWZpbmVkIGFzIHByaXZhdGUKQVBJcyBpbiB3ZWJraXRw
cml2YXRlLmggZ28gdGhyb3VnaCBEUlRTdXBwb3J0R3RrLgoKKiBEdW1wUmVuZGVyVHJlZS9ndGsv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwOgooQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmZvY3VzZWRFbGVtZW50KToKKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3Bw
OgooZHVtcEZyYW1lc0FzVGV4dCk6CihyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToK
KGR1bXApOgood2ViVmlld0RvY3VtZW50TG9hZEZpbmlzaGVkKToKKiBEdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNv
dW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVt
YmVyRm9yRWxlbWVudEJ5SWQpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMp
OgooTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKToKKExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1l
bnRXaXRoSWQpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVs
ZW1lbnRBdFRpbWUpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyk6CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgooTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6
Om1hcmtlclRleHRGb3JMaXN0SXRlbSk6Ci0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM1ICsrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgICAgfCAgMjcxICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oICB8ICAg
MjIgKysKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAgICAgICAgICAgICAgICAg
IHwgICA0OCAtLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgICAgICAg
ICAgICAgICB8ICAyNTcgLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsrCiAuLi4vZ3RrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyR3RrLmNwcCAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgIHwgICAxNSArLQogLi4uL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgIDMwICstLQog
OSBmaWxlcyBjaGFuZ2VkLCAzNzQgaW5zZXJ0aW9ucygrKSwgMzQwIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggNTZkNjZhMy4uNmIzMzYwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0wOCAgQW50
b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIFBvcHVsYXRlIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0
MjkKKworICAgICAgICBNb3ZlZCBtb3N0IG9mIHRoZSB3ZWJraXRfd2ViX2ZyYW1lKiBtZXRob2Rz
IGRlZmluZWQgaW4gd2Via2l0cHJpdmF0ZS5oCisgICAgICAgIGFuZCBieSBub3cgb25seSB1c2Vk
IGJ5IERSVCB0byBEUlRTdXBwb3J0R3RrLgorCisgICAgICAgIEkgdHJpZWQgdG8ga2VlcCB0aGUg
ZXNzZW5jZSBvcmlnaW5hbCBuYW1lcy4gRm9yIGV4YW1wbGUKKyAgICAgICAgd2Via2l0X3dlYl9m
cmFtZV9nZXRfY2hpbGRyZW4gZ290IHJlbmFtZWQgdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpnZXRDaGlsZHJlbihXZWJraXRXZWJGcmFtZSosIC4uLiksCisgICAgICAgIGFuZCBzbyBvbiAu
Li4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldENoaWxkcmVuKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0SW5uZXJUZXh0KToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXMpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRQZW5kaW5nVW5sb2FkRXZlbnRDb3Vu
dCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlQW5pbWF0aW9uKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9uKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VTdmdBbmltYXRpb24pOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzdXNwZW5kQW5pbWF0aW9u
cyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc3VtZUFuaW1hdGlvbnMp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVhck1haW5GcmFtZU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKwogMjAxMC0xMS0wOCAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCmluZGV4IDgyOTYyMDYuLmI5M2FiMWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTE5LDEwICsx
OSwyOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oIgogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaCIK
KyNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiSlNFbGVtZW50LmgiCisjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCisj
aW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZH
U01JTEVsZW1lbnQuaCIKKyNlbmRpZgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNs
dWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnNfZHJ0UnVuID0gZmFsc2U7CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19s
aW5rc0luY2x1ZGVkSW5UYWJDaGFpbiA9IHRydWU7CkBAIC01NCwzICs3MiwyNTYgQEAgYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmxpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4oKQogICAg
IHJldHVybiBzX2xpbmtzSW5jbHVkZWRJblRhYkNoYWluOwogfQogCisvKioKKyAqIGdldENoaWxk
cmVuOgorICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQorICoKKyAqIFJldHVybiB2YWx1ZTog
Y2hpbGQgZnJhbWVzIG9mIEBmcmFtZQorICovCitHU0xpc3QqIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6Z2V0Q2hpbGRyZW4oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKKworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIE5VTEw7CisKKyAgICBHU0xpc3QqIGNoaWxkcmVuID0gTlVMTDsKKyAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IGNvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgRnJhbWVMb2Fk
ZXIqIGxvYWRlciA9IGNoaWxkLT5sb2FkZXIoKTsKKyAgICAgICAgV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCo+
KGxvYWRlci0+Y2xpZW50KCkpOworICAgICAgICBpZiAoY2xpZW50KQorICAgICAgICAgIGNoaWxk
cmVuID0gZ19zbGlzdF9hcHBlbmQoY2hpbGRyZW4sIGNsaWVudC0+d2ViRnJhbWUoKSk7CisgICAg
fQorCisgICAgcmV0dXJuIGNoaWxkcmVuOworfQorCisvKioKKyAqIGdldElubmVyVGV4dDoKKyAq
IEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqCisgKiBSZXR1cm4gdmFsdWU6IGlubmVyIHRl
eHQgb2YgQGZyYW1lCisgKi8KK2djaGFyKiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldElu
bmVyVGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOworCisgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4g
Z19zdHJkdXAoIiIpOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7
CisKKyAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAgIHZpZXct
PmxheW91dCgpOworCisgICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gY29yZUZyYW1lLT5k
b2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gIGRvY3Vt
ZW50RWxlbWVudC0+aW5uZXJUZXh0KCk7CisgICAgcmV0dXJuIGdfc3RyZHVwKHN0cmluZy51dGY4
KCkuZGF0YSgpKTsKK30KKworLyoqCisgKiBkdW1wUmVuZGVyVHJlZToKKyAqIEBmcmFtZTogYSAj
V2ViS2l0V2ViRnJhbWUKKyAqCisgKiBSZXR1cm4gdmFsdWU6IE5vbi1yZWN1cnNpdmUgcmVuZGVy
IHRyZWUgZHVtcCBvZiBAZnJhbWUKKyAqLworZ2NoYXIqIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6ZHVtcFJlbmRlclRyZWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKKworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKKworICAgIEZyYW1lVmlldyogdmlldyA9IGNvcmVGcmFt
ZS0+dmlldygpOworCisgICAgaWYgKHZpZXcgJiYgdmlldy0+bGF5b3V0UGVuZGluZygpKQorICAg
ICAgICB2aWV3LT5sYXlvdXQoKTsKKworICAgIFN0cmluZyBzdHJpbmcgPSBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKGNvcmVGcmFtZSk7CisgICAgcmV0dXJuIGdfc3RyZHVwKHN0cmluZy51dGY4KCku
ZGF0YSgpKTsKK30KKworLyoqCisgKiBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZDoKKyAqIEBm
cmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqIEBpZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKKyAq
CisgKiBSZXR1cm4gdmFsdWU6IFRoZSBjb3VudGVyIHZhbHVlIG9mIGVsZW1lbnQgQGlkIGluIEBm
cmFtZQorICovCitnY2hhciogRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjb3VudGVyVmFsdWVG
b3JFbGVtZW50QnlJZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVM
TCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3Jl
RnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBj
b3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOwor
ICAgIGlmICghY29yZUVsZW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAgIFN0cmluZyBjb3Vu
dGVyVmFsdWUgPSBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGNvcmVFbGVtZW50KTsKKyAgICByZXR1
cm4gZ19zdHJkdXAoY291bnRlclZhbHVlLnV0ZjgoKS5kYXRhKCkpOworfQorCisvKioKKyAqIG51
bWJlckZvckVsZW1lbnRCeUlkCisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKiBAaWQ6
IGFuIGVsZW1lbnQgSUQgc3RyaW5nCisgKiBAcGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKKyAq
IEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2YgYSBwYWdlCisgKgorICogUmV0dXJuIHZhbHVlOiBUaGUg
bnVtYmVyIG9mIHBhZ2Ugd2hlcmUgdGhlIHNwZWNpZmllZCBlbGVtZW50IHdpbGwgYmUgcHV0Cisg
Ki8KK2ludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCwgZmxvYXQgcGFnZVdpZHRo
LCBmbG9hdCBwYWdlSGVpZ2h0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAg
RWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRC
eUlkKEF0b21pY1N0cmluZyhpZCkpOworICAgIGlmICghY29yZUVsZW1lbnQpCisgICAgICAgIHJl
dHVybiAtMTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChj
b3JlRWxlbWVudCwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworfQorCisvKioK
KyAqIG51bWJlck9mUGFnZXMKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqIEBwYWdl
V2lkdGg6IHdpZHRoIG9mIGEgcGFnZQorICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBvZiBhIHBhZ2UK
KyAqCisgKiBSZXR1cm4gdmFsdWU6IFRoZSBudW1iZXIgb2YgcGFnZXMgdG8gYmUgcHJpbnRlZC4K
KyAqLworaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZQYWdlcyhXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7
CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJh
bWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJl
ck9mUGFnZXMoY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7Cit9
CisKKy8qKgorICogZ2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQ6CisgKiBAZnJhbWU6IGEgI1dl
YktpdFdlYkZyYW1lCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2YgcGVuZGluZyB1bmxv
YWQgZXZlbnRzCisgKi8KK2d1aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGlu
Z1VubG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCAwKTsKKworICAgIHJldHVy
biBjb3JlKGZyYW1lKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygp
OworfQorCitib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VBbmltYXRpb24oV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0
IGdjaGFyKiBlbGVtZW50KQoreworICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7CisgICAgRWxlbWVu
dCogY29yZUVsZW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
QXRvbWljU3RyaW5nKGVsZW1lbnQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxl
bWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb3Jl
KGZyYW1lKS0+YW5pbWF0aW9uKCktPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVFbGVtZW50LT5y
ZW5kZXJlcigpLCBBdG9taWNTdHJpbmcobmFtZSksIHRpbWUpOworfQorCitib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBnY2hhciogZWxlbWVudCkKK3sK
KyAgICBBU1NFUlQoY29yZShmcmFtZSkpOworICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29y
ZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhlbGVtZW50
KSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVsZW1lbnQtPnJlbmRlcmVyKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29yZShmcmFtZSktPmFuaW1hdGlvbigp
LT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZUVsZW1lbnQtPnJlbmRlcmVyKCksIEF0b21pY1N0
cmluZyhuYW1lKSwgdGltZSk7Cit9CisKK2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpw
YXVzZVN2Z0FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmlt
YXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50SWQpCit7CisgICAgQVNT
RVJUKGNvcmUoZnJhbWUpKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3Vt
ZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBFbGVtZW50
KiBjb3JlRWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoYW5p
bWF0aW9uSWQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFTVkdTTUlMRWxlbWVudDo6aXNT
TUlMRWxlbWVudChjb3JlRWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1l
KGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlRWxlbWVudCksIHRp
bWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworZ2NoYXIqIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkKK3sK
KyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgRWxlbWVudCog
ZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmplY3QpKTsKKyAgICBpZiAoIWVs
ZW1lbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGdfc3RyZHVwKFdlYkNvcmU6
Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KS51dGY4KCkuZGF0YSgpKTsKK30KKwordW5z
aWduZWQgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAg
Y29yZUZyYW1lLT5hbmltYXRpb24oKS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisK
K3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzdXNwZW5kQW5pbWF0aW9ucyhXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwor
ICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBjb3JlRnJhbWUtPmFu
aW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucygpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cmVzdW1lQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7Cisg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmlt
YXRpb25zKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVhck1haW5G
cmFtZU5hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOworCisgICAgY29yZShmcmFtZSktPnRyZWUoKS0+
Y2xlYXJOYW1lKCk7Cit9CisKK0F0a09iamVjdCogRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpn
ZXRGb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsK
KworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpCisgICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2li
aWxpdHkoKTsKKworICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2
OworICAgIGlmICghcHJpdi0+Y29yZUZyYW1lIHx8ICFwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVu
ZGVyVmlldyhwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOworICAgIGlm
ICghcm9vdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBdGtPYmplY3QqIHdyYXBwZXIg
PSAgcHJpdi0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKHJvb3QpLT53cmFwcGVyKCk7CisgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIHJldHVybiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZm9jdXNlZF9lbGVtZW50
KFdFQktJVF9BQ0NFU1NJQkxFKHdyYXBwZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7Cisj
ZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmgKaW5kZXggNWI0OTRmZi4uOWI3NmI0ZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC0x
OSw2ICsxOSwxMCBAQAogI2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGtfaAogI2RlZmlu
ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGtfaAogCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdl
YmZyYW1lLmg+CisjaW5jbHVkZSA8YXRrL2F0ay5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKwogY2xh
c3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrIHsKIAogcHVibGljOgpAQCAtMzEsNiArMzUsMjQg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldExpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4o
Ym9vbCk7CiAgICAgc3RhdGljIGJvb2wgbGlua3NJbmNsdWRlZEluRm9jdXNDaGFpbigpOwogCisg
ICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQ
SSBoYXMgYmVlbiBkaXNjdXNzZWQuCisgICAgc3RhdGljIEdTTGlzdCogZ2V0Q2hpbGRyZW4oV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgZ2NoYXIqIGdldElubmVyVGV4dChXZWJL
aXRXZWJGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBnY2hhciogZHVtcFJlbmRlclRyZWUoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgZ2NoYXIqIGNvdW50ZXJWYWx1ZUZvckVs
ZW1lbnRCeUlkIChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCk7CisgICAg
c3RhdGljIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7Cisg
ICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgZmxvYXQg
cGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKKyAgICBzdGF0aWMgZ3VpbnQgZ2V0UGVuZGlu
Z1VubG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBwYXVzZUFuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1l
LCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOworICAgIHN0YXRpYyBib29sIHBh
dXNlVHJhbnNpdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOworICAgIHN0YXRpYyBib29sIHBhdXNl
U3ZnQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGFuaW1hdGlv
bklkLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnRJZCk7CisgICAgc3RhdGljIGdj
aGFyKiBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KTsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwor
ICAgIHN0YXRpYyB2b2lkIHN1c3BlbmRBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7
CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUp
OworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWFpbkZyYW1lTmFtZShXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOworICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNfZHJ0
UnVuOwogICAgIHN0YXRpYyBib29sIHNfbGlua3NJbmNsdWRlZEluVGFiQ2hhaW47CmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgKaW5kZXggM2FjMzU2My4uYzQ3OGYzOSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHByaXZhdGUuaApAQCAtMzM2LDU0ICszMzYsNiBAQCBleHRlcm4gIkMiIHsKIAogICAgIC8v
IEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVpciBBUEkgaGFz
IGJlZW4gZGlzY3Vzc2VkLgogCi0gICAgV0VCS0lUX0FQSSBHU0xpc3QqCi0gICAgd2Via2l0X3dl
Yl9mcmFtZV9nZXRfY2hpbGRyZW4gKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJL
SVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3RleHQgKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93
ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZSAoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAg
IFdFQktJVF9BUEkgZ2NoYXIqCi0gICAgd2Via2l0X3dlYl9mcmFtZV9jb3VudGVyX3ZhbHVlX2Zv
cl9lbGVtZW50X2J5X2lkIChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCk7
Ci0KLSAgICBXRUJLSVRfQVBJIGludAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1iZXJf
Zm9yX2VsZW1lbnRfYnlfaWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogaWQs
IGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7Ci0KLSAgICBXRUJLSVRfQVBJIGlu
dAotICAgIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX3BhZ2VzKFdlYktpdFdlYkZyYW1lKiBm
cmFtZSwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKLQotICAgIFdFQktJVF9B
UEkgZ3VpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5nX3VubG9hZF9ldmVudF9j
b3VudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBib29sCi0gICAg
d2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLQot
ICAgIFdFQktJVF9BUEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJhbnNpdGlv
bihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwg
Y29uc3QgZ2NoYXIqIGVsZW1lbnQpOwotCi0gICAgV0VCS0lUX0FQSSBib29sCi0gICAgd2Via2l0
X3dlYl9mcmFtZV9wYXVzZV9zdmdfYW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgZ2NoYXIqIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnRJ
ZCk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJhbWVfbWFya2Vy
X3RleHRfZm9yX2xpc3RfaXRlbShXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpOwotCi0gICAgV0VCS0lUX0FQSSB1bnNpZ25l
ZCBpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5pbWF0aW9ucyhX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSB2b2lkCi0gICAgd2Via2l0
X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQot
ICAgIFdFQktJVF9BUEkgdm9pZAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlv
bnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdFQktJVF9BUEkgdm9pZAotICAgIHdl
YmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7Ci0KLSAgICBXRUJLSVRfQVBJIEF0a09iamVjdCoKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9mb2N1c2VkX2FjY2Vzc2libGVfZWxlbWVudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCiAg
ICAgV0VCS0lUX0FQSSBnY2hhcioKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NlbGVjdGVkX3Rl
eHQgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwCmluZGV4IDYzYTI0MTMuLmViYjNkYzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAKQEAgLTczNywxNTUgKzczNyw2IEBAIFdlYktpdFdlYkRhdGFTb3VyY2UqIHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3Byb3Zpc2lvbmFsX2RhdGFfc291cmNlKFdlYktpdFdlYkZyYW1lCiAg
ICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2RhdGFfc291cmNlX2Zyb21fY29yZV9sb2Fk
ZXIoY29yZUZyYW1lLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKTsKIH0K
IAotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbjoKLSAqIEBmcmFtZTogYSAj
V2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IGNoaWxkIGZyYW1lcyBvZiBAZnJh
bWUKLSAqLwotR1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbihXZWJLaXRXZWJG
cmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9G
UkFNRShmcmFtZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUp
OwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEdTTGlz
dCogY2hpbGRyZW4gPSBOVUxMOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkgewotICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gY2hpbGQtPmxvYWRlcigp
OwotICAgICAgICBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2Fz
dDxXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Kj4obG9hZGVyLT5jbGllbnQoKSk7Ci0gICAgICAg
IGlmIChjbGllbnQpCi0gICAgICAgICAgY2hpbGRyZW4gPSBnX3NsaXN0X2FwcGVuZChjaGlsZHJl
biwgY2xpZW50LT53ZWJGcmFtZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2hpbGRyZW47Ci19
Ci0KLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9nZXRfaW5uZXJfdGV4dDoKLSAqIEBmcmFtZTog
YSAjV2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IGlubmVyIHRleHQgb2YgQGZy
YW1lCi0gKi8KLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9pbm5lcl90ZXh0KFdlYktpdFdl
YkZyYW1lKiBmcmFtZSkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFt
ZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBnX3N0cmR1cCgiIik7Ci0K
LSAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKLQotICAgIGlmICh2aWV3
ICYmIHZpZXctPmxheW91dFBlbmRpbmcoKSkKLSAgICAgICAgdmlldy0+bGF5b3V0KCk7Ci0KLSAg
ICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3Vt
ZW50RWxlbWVudCgpOwotICAgIFN0cmluZyBzdHJpbmcgPSAgZG9jdW1lbnRFbGVtZW50LT5pbm5l
clRleHQoKTsKLSAgICByZXR1cm4gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQot
Ci0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZToKLSAqIEBmcmFtZTog
YSAjV2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IE5vbi1yZWN1cnNpdmUgcmVu
ZGVyIHRyZWUgZHVtcCBvZiBAZnJhbWUKLSAqLwotZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZHVt
cF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0gICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gZ19zdHJkdXAoIiIpOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCk7Ci0KLSAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCi0gICAgICAg
IHZpZXctPmxheW91dCgpOwotCi0gICAgU3RyaW5nIHN0cmluZyA9IGV4dGVybmFsUmVwcmVzZW50
YXRpb24oY29yZUZyYW1lKTsKLSAgICByZXR1cm4gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRh
KCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfY291bnRlcl92YWx1ZV9mb3JfZWxl
bWVudF9ieV9pZDoKLSAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqIEBpZDogYW4gZWxl
bWVudCBJRCBzdHJpbmcKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IFRoZSBjb3VudGVyIHZhbHVlIG9m
IGVsZW1lbnQgQGlkIGluIEBmcmFtZQotICovCi1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9jb3Vu
dGVyX3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Z2NoYXIqIGlkKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJB
TUUoZnJhbWUpLCBOVUxMKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
LSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBFbGVtZW50KiBj
b3JlRWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWlj
U3RyaW5nKGlkKSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgU3RyaW5nIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoY29yZUVsZW1l
bnQpOwotICAgIHJldHVybiBnX3N0cmR1cChjb3VudGVyVmFsdWUudXRmOCgpLmRhdGEoKSk7Ci19
Ci0KLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9mb3JfZWxlbWVudF9ieV9p
ZAotICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQotICogQGlkOiBhbiBlbGVtZW50IElEIHN0
cmluZwotICogQHBhZ2VXaWR0aDogd2lkdGggb2YgYSBwYWdlCi0gKiBAcGFnZUhlaWdodDogaGVp
Z2h0IG9mIGEgcGFnZQotICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBvZiBwYWdlIHdo
ZXJlIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB3aWxsIGJlIHB1dAotICovCi1pbnQgd2Via2l0X3dl
Yl9mcmFtZV9wYWdlX251bWJlcl9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IGdjaGFyKiBpZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQot
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBO
VUxMKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogY29yZUVsZW1lbnQg
PSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkp
OwotICAgIGlmICghY29yZUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4g
UHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChjb3JlRWxlbWVudCwgRmxvYXRTaXpl
KHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVf
bnVtYmVyX29mX3BhZ2VzCi0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKiBAcGFnZVdp
ZHRoOiB3aWR0aCBvZiBhIHBhZ2UKLSAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2YgYSBwYWdlCi0g
KgotICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGJlIHByaW50ZWQuCi0g
Ki8KLWludCB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdlcyhXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAg
ICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMo
Y29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7Ci19Ci0KLS8qKgot
ICogd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVuZGluZ191bmxvYWRfZXZlbnRfY291bnQ6Ci0gKiBA
ZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2Yg
cGVuZGluZyB1bmxvYWQgZXZlbnRzCi0gKi8KLWd1aW50IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Bl
bmRpbmdfdW5sb2FkX2V2ZW50X2NvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7Ci0KLSAg
ICByZXR1cm4gY29yZShmcmFtZSktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0
ZW5lcnMoKTsKLX0KLQogc3RhdGljIHZvaWQgYmVnaW5fcHJpbnRfY2FsbGJhY2soR3RrUHJpbnRP
cGVyYXRpb24qIG9wLCBHdGtQcmludENvbnRleHQqIGNvbnRleHQsIGdwb2ludGVyIHVzZXJfZGF0
YSkKIHsKICAgICBQcmludENvbnRleHQqIHByaW50Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UHJpbnRDb250ZXh0Kj4odXNlcl9kYXRhKTsKQEAgLTk5Niw4MSArODQ3LDYgQEAgdm9pZCB3ZWJr
aXRfd2ViX2ZyYW1lX3ByaW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICB9CiB9CiAKLWJv
b2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KQot
ewotICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBj
b3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGVsZW1l
bnQpKTsKLSAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JlKGZyYW1lKS0+YW5pbWF0aW9u
KCktPnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvcmVFbGVtZW50LT5yZW5kZXJlcigpLCBBdG9taWNT
dHJpbmcobmFtZSksIHRpbWUpOwotfQotCi1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJh
bnNpdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsK
LSAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxlbWVudCkpOwotICAgIGlmICghY29yZUVsZW1lbnQg
fHwgIWNvcmVFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGNvcmUoZnJhbWUpLT5hbmltYXRpb24oKS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGNv
cmVFbGVtZW50LT5yZW5kZXJlcigpLCBBdG9taWNTdHJpbmcobmFtZSksIHRpbWUpOwotfQotCi1i
b29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFy
KiBlbGVtZW50SWQpCi17Ci0gICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpOwotICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVt
ZW50QnlJZChBdG9taWNTdHJpbmcoYW5pbWF0aW9uSWQpKTsKLSAgICBpZiAoIWNvcmVFbGVtZW50
IHx8ICFTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudChjb3JlRWxlbWVudCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+c2FtcGxlQW5pbWF0aW9uQXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVs
ZW1lbnQqPihjb3JlRWxlbWVudCksIHRpbWUpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLX0KLQotZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfbWFya2VyX3RleHRfZm9yX2xpc3Rf
aXRlbShXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QpCi17Ci0gICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRl
eHQpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2Jq
ZWN0KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVy
biBnX3N0cmR1cChtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oZWxlbWVudCkudXRmOCgpLmRhdGEoKSk7
Ci19Ci0KLXVuc2lnbmVkIGludCB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlv
bigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gY29udHJvbGxlci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgd2Vi
a2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQot
ewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFt
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29yZUZyYW1lLT5hbmltYXRpb24oKS0+c3VzcGVu
ZEFuaW1hdGlvbnMoKTsKLX0KLQotdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRp
b25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNv
cmVGcmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoKTsKLX0KLQogZ2NoYXIqIHdl
YmtpdF93ZWJfZnJhbWVfZ2V0X3Jlc3BvbnNlX21pbWVfdHlwZShXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwpAQCAtMTA5NSwxMyAr
ODcxLDYgQEAgV2ViS2l0TG9hZFN0YXR1cyB3ZWJraXRfd2ViX2ZyYW1lX2dldF9sb2FkX3N0YXR1
cyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHByaXYtPmxvYWRTdGF0dXM7CiB9
CiAKLXZvaWQgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9tYWluX2ZyYW1lX25hbWUoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFN
RShmcmFtZSkpOwotCi0gICAgY29yZShmcmFtZSktPnRyZWUoKS0+Y2xlYXJOYW1lKCk7Ci19Ci0K
IHZvaWQgd2Via2l0X2djX2NvbGxlY3RfamF2YXNjcmlwdF9vYmplY3RzKCkKIHsKICAgICBnY0Nv
bnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5vdygpOwpAQCAtMTExOSwzMiArODg4LDYgQEAgZ3Np
emUgd2Via2l0X2djX2NvdW50X2phdmFzY3JpcHRfb2JqZWN0cygpCiAKIH0KIAotQXRrT2JqZWN0
KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9mb2N1c2VkX2FjY2Vzc2libGVfZWxlbWVudChXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0jaWYgSEFWRShBQ0NFU1NJQklMSVRZKQotICAgIGlm
ICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgQVhPYmpl
Y3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwotCi0gICAgV2ViS2l0V2ViRnJhbWVQcml2
YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7Ci0gICAgaWYgKCFwcml2LT5jb3JlRnJhbWUgfHwgIXBy
aXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBS
ZW5kZXJWaWV3KiByb290ID0gdG9SZW5kZXJWaWV3KHByaXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4gTlVMTDsKLQot
ICAgIEF0a09iamVjdCogd3JhcHBlciA9ICBwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocm9vdCktPndyYXBwZXIoKTsKLSAgICBpZiAoIXdy
YXBwZXIpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHdlYmtpdF9hY2Nlc3Np
YmxlX2dldF9mb2N1c2VkX2VsZW1lbnQoV0VCS0lUX0FDQ0VTU0lCTEUod3JhcHBlcikpOwotI2Vs
c2UKLSAgICByZXR1cm4gTlVMTDsKLSNlbmRpZgotfQotCiBHdGtQb2xpY3lUeXBlIHdlYmtpdF93
ZWJfZnJhbWVfZ2V0X2hvcml6b250YWxfc2Nyb2xsYmFyX3BvbGljeShXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShm
cmFtZSksIEdUS19QT0xJQ1lfQVVUT01BVElDKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAyMjgyZTc1Li44NDUwYmQwIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMTEtMDggIEFudG9uaW8gR29tZXMgIDxhZ29tZXNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbR3RrXSBQb3B1bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDI5CisKKyAgICAgICAgTWFkZSB0
aGUgcHJldmlvdXMgY2FsbHMgdG8gd2Via2l0X3dlYl9mcmFtZSogZnVuY3Rpb25zIGRlZmluZWQg
YXMgcHJpdmF0ZQorICAgICAgICBBUElzIGluIHdlYmtpdHByaXZhdGUuaCBnbyB0aHJvdWdoIERS
VFN1cHBvcnRHdGsuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRy
ZWUuY3BwOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgIChyZXNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAod2ViVmll
d0RvY3VtZW50TG9hZEZpbmlzaGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om51bWJlck9mUGFnZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
dXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRp
bWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk6CisKIDIw
MTAtMTEtMDggIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckBpbmYudS1zemVnZWQuaHU+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IGFiOWYwMjEuLjU4OWU1M2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcApAQCAtMjks
MTUgKzI5LDEyIEBACiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKKyNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaCIKIAogI2luY2x1ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5oPgogCi1leHRlcm4gIkMiIHsKLWV4
dGVybiBBdGtPYmplY3QqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2ZvY3VzZWRfYWNjZXNzaWJsZV9l
bGVtZW50KFdlYktpdFdlYkZyYW1lKik7Ci19Ci0KIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCiB7CiB9CkBAIC01NCw3ICs1MSw3IEBAIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmVsZW1lbnRBdFBvaW50KGlu
dCB4LCBpbnQgeSkKIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQogewotICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSA9ICB3
ZWJraXRfd2ViX2ZyYW1lX2dldF9mb2N1c2VkX2FjY2Vzc2libGVfZWxlbWVudChtYWluRnJhbWUp
OworICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSA9ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OmdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChtYWluRnJhbWUpOwogICAgIGlmICghYWNjZXNz
aWJsZSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDU0YWNjNDkuLmRkNTE4NjUgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApA
QCAtNjIsMTMgKzYyLDggQEAgZXh0ZXJuICJDIiB7CiBleHRlcm4gR19DT05TVF9SRVRVUk4gZ2No
YXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQoV2ViS2l0V2ViSGlzdG9yeUl0
ZW0qKTsKIGV4dGVybiBnYm9vbGVhbiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9pc190YXJnZXRf
aXRlbShXZWJLaXRXZWJIaXN0b3J5SXRlbSopOwogZXh0ZXJuIEdMaXN0KiB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfY2hpbGRyZW4oV2ViS2l0V2ViSGlzdG9yeUl0ZW0qKTsKLWV4dGVybiBH
U0xpc3QqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7Ci1leHRlcm4gZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3RleHQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKTsKLWV4dGVybiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9kdW1wX3Jl
bmRlcl90cmVlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci1leHRlcm4gZ3VpbnQgd2Via2l0X3dl
Yl9mcmFtZV9nZXRfcGVuZGluZ191bmxvYWRfZXZlbnRfY291bnQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKTsKIGV4dGVybiB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9k
aXJlY3RvcnkoV2ViS2l0V2ViVmlldyogdmlldywgY29uc3QgZ2NoYXIqIGRpcmVjdG9yeSk7CiBl
eHRlcm4gZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Jlc3BvbnNlX21pbWVfdHlwZShXZWJL
aXRXZWJGcmFtZSogZnJhbWUpOwotZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9t
YWluX2ZyYW1lX25hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIGV4dGVybiB2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXRfZ3JvdXBfbmFtZShXZWJLaXRXZWJWaWV3KiB2aWV3LCBjb25zdCBnY2hh
ciogZ3JvdXBOYW1lKTsKIGV4dGVybiB2b2lkIHdlYmtpdF9yZXNldF9vcmlnaW5fYWNjZXNzX3do
aXRlX2xpc3RzKCk7CiB9CkBAIC0yNTEsNyArMjQ2LDcgQEAgc3RhdGljIGdjaGFyKiBkdW1wRnJh
bWVzQXNUZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICAvLyBBZGQgaGVhZGVyIGZvciBh
bGwgYnV0IHRoZSBtYWluIGZyYW1lLgogICAgIGJvb2wgaXNNYWluRnJhbWUgPSAod2Via2l0X3dl
Yl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpID09IGZyYW1lKTsKIAotICAgIGdjaGFyKiBp
bm5lclRleHQgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9pbm5lcl90ZXh0KGZyYW1lKTsKKyAgICBn
Y2hhciogaW5uZXJUZXh0ID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRJbm5lclRleHQo
ZnJhbWUpOwogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBf
cHJpbnRmKCIlc1xuIiwgaW5uZXJUZXh0KTsKICAgICBlbHNlIHsKQEAgLTI2MSw3ICsyNTYsNyBA
QCBzdGF0aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQog
ICAgIGdfZnJlZShpbm5lclRleHQpOwogCiAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKLSAgICAgICAgR1NMaXN0KiBjaGlsZHJlbiA9IHdl
YmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKGZyYW1lKTsKKyAgICAgICAgR1NMaXN0KiBjaGls
ZHJlbiA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Q2hpbGRyZW4oZnJhbWUpOwogICAg
ICAgICBmb3IgKEdTTGlzdCogY2hpbGQgPSBjaGlsZHJlbjsgY2hpbGQ7IGNoaWxkID0gZ19zbGlz
dF9uZXh0KGNoaWxkKSkKICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhyZXN1bHQsIGR1bXBGcmFt
ZXNBc1RleHQoc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRnJhbWUqID4oY2hpbGQtPmRhdGEpKSk7CiAg
ICAgICAgIGdfc2xpc3RfZnJlZShjaGlsZHJlbik7CkBAIC00MjAsNyArNDE1LDcgQEAgc3RhdGlj
IHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgICAgICAgICAgICAg
ICJlZGl0aW5nLWJlaGF2aW9yIiwgV0VCS0lUX0VESVRJTkdfQkVIQVZJT1JfTUFDLAogICAgICAg
ICAgICAgICAgICBOVUxMKTsKIAotICAgIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFt
ZV9uYW1lKG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVhck1h
aW5GcmFtZU5hbWUobWFpbkZyYW1lKTsKIAogICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVj
dG9yID0gd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3Iod2ViVmlldyk7CiAgICAgZ19vYmpl
Y3Rfc2V0KEdfT0JKRUNUKGluc3BlY3RvciksICJqYXZhc2NyaXB0LXByb2ZpbGluZy1lbmFibGVk
IiwgRkFMU0UsIE5VTEwpOwpAQCAtNTIxLDcgKzUxNiw3IEBAIHZvaWQgZHVtcCgpCiAgICAgICAg
ICAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCiAgICAgICAgICAgICAgICAgZ3RrX21h
aW5faXRlcmF0aW9uKCk7CiAKLSAgICAgICAgICAgIHJlc3VsdCA9IHdlYmtpdF93ZWJfZnJhbWVf
ZHVtcF9yZW5kZXJfdHJlZShtYWluRnJhbWUpOworICAgICAgICAgICAgcmVzdWx0ID0gRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZShtYWluRnJhbWUpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKQEAgLTc0OSw3ICs3NDQsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJWaWV3RG9jdW1lbnRMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0
V2ViRnJhbWUqIGZyYQogICAgICAgICBwcmludGYoIiVzIC0gZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWVcbiIsIGZyYW1lTmFtZSk7CiAgICAgICAgIGdfZnJlZShmcmFtZU5hbWUpOwogICAg
IH0gZWxzZSBpZiAoIWRvbmUpIHsKLSAgICAgICAgZ3VpbnQgcGVuZGluZ0ZyYW1lVW5sb2FkRXZl
bnRzID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVuZGluZ191bmxvYWRfZXZlbnRfY291bnQoZnJh
bWUpOworICAgICAgICBndWludCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMgPSBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50KGZyYW1lKTsKICAgICAg
ICAgaWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykgewogICAgICAgICAgICAgY2hhciogZnJh
bWVOYW1lID0gZ2V0RnJhbWVOYW1lU3VpdGFibGVGb3JUZXN0UmVzdWx0KHZpZXcsIGZyYW1lKTsK
ICAgICAgICAgICAgIHByaW50ZigiJXMgLSBoYXMgJXUgb251bmxvYWQgaGFuZGxlcihzKVxuIiwg
ZnJhbWVOYW1lLCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
aW5kZXggYWI3MGEzZS4uMTNkMzk5MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC00OSwyMCAr
NDksMTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIGV4dGVybiAiQyIg
ewotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1l
bnQpOwotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBl
bGVtZW50KTsKLWJvb2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9zdmdfYW5pbWF0aW9uKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBn
Y2hhciogZWxlbWVudCk7Ci11bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2Zf
YWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLXZvaWQgd2Via2l0X3dl
Yl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLXZvaWQg
d2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUp
Owogdm9pZCB3ZWJraXRfYXBwbGljYXRpb25fY2FjaGVfc2V0X21heGltdW1fc2l6ZSh1bnNpZ25l
ZCBsb25nIGxvbmcgc2l6ZSk7CiB1bnNpZ25lZCBpbnQgd2Via2l0X3dvcmtlcl90aHJlYWRfY291
bnQodm9pZCk7CiB2b2lkIHdlYmtpdF93aGl0ZV9saXN0X2FjY2Vzc19mcm9tX29yaWdpbihjb25z
dCBnY2hhciogc291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7Ci1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9jb3VudGVyX3ZhbHVlX2Zvcl9lbGVtZW50
X2J5X2lkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGlkKTsKLWludCB3ZWJr
aXRfd2ViX2ZyYW1lX3BhZ2VfbnVtYmVyX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgZ2NoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWln
aHQpOwotaW50IHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX3BhZ2VzKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKIHZvaWQgd2Via2l0
X3dlYl9pbnNwZWN0b3JfZXhlY3V0ZV9zY3JpcHQoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0
b3IsIGxvbmcgY2FsbElkLCBjb25zdCBnY2hhciogc2NyaXB0KTsKLWdjaGFyKiB3ZWJraXRfd2Vi
X2ZyYW1lX21hcmtlcl90ZXh0X2Zvcl9saXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KTsKIHZvaWQgd2Via2l0
X3dlYl92aWV3X2V4ZWN1dGVfY29yZV9jb21tYW5kX2J5X25hbWUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2NoYXIqIG5hbWUsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CiBnYm9vbGVhbiB3
ZWJraXRfd2ViX3ZpZXdfaXNfY29tbWFuZF9lbmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IGdjaGFyKiBuYW1lKTsKIH0KQEAgLTExOSw3ICsxMDksNyBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpkaXNwbGF5KCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQp
CiB7CiAgICAgZ2NoYXIqIGlkR0NoYXIgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhpZCk7Ci0g
ICAgZ2NoYXIqIGNvdW50ZXJWYWx1ZUdDaGFyID0gd2Via2l0X3dlYl9mcmFtZV9jb3VudGVyX3Zh
bHVlX2Zvcl9lbGVtZW50X2J5X2lkKG1haW5GcmFtZSwgaWRHQ2hhcik7CisgICAgZ2NoYXIqIGNv
dW50ZXJWYWx1ZUdDaGFyID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjb3VudGVyVmFsdWVG
b3JFbGVtZW50QnlJZChtYWluRnJhbWUsIGlkR0NoYXIpOwogICAgIGdfZnJlZShpZEdDaGFyKTsK
ICAgICBpZiAoIWNvdW50ZXJWYWx1ZUdDaGFyKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE1NCwx
NCArMTQ0LDE0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZs
b2F0IHBhZ2VIZWlnaHQpCiB7CiAgICAgZ2NoYXIqIGlkR0NoYXIgPSBKU1N0cmluZ0NvcHlVVEY4
Q1N0cmluZyhpZCk7Ci0gICAgaW50IHBhZ2VOdW1iZXIgPSB3ZWJraXRfd2ViX2ZyYW1lX3BhZ2Vf
bnVtYmVyX2Zvcl9lbGVtZW50X2J5X2lkKG1haW5GcmFtZSwgaWRHQ2hhciwgcGFnZVdpZHRoLCBw
YWdlSGVpZ2h0KTsKKyAgICBpbnQgcGFnZU51bWJlciA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKG1haW5GcmFtZSwgaWRHQ2hhciwgcGFnZVdpZHRo
LCBwYWdlSGVpZ2h0KTsKICAgICBnX2ZyZWUoaWRHQ2hhcik7CiAgICAgcmV0dXJuIHBhZ2VOdW1i
ZXI7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBw
YWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCiB7Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJh
bWVfbnVtYmVyX29mX3BhZ2VzKG1haW5GcmFtZSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKKyAg
ICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzKG1haW5GcmFt
ZSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3QKQEAgLTYyMiw3ICs2MTIsNyBAQCBib29sIExheW91
dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0
cmluZ1JlZiBhbmltYQogeyAgICAKICAgICBnY2hhciogbmFtZSA9IEpTU3RyaW5nQ29weVVURjhD
U3RyaW5nKGFuaW1hdGlvbk5hbWUpOwogICAgIGdjaGFyKiBlbGVtZW50ID0gSlNTdHJpbmdDb3B5
VVRGOENTdHJpbmcoZWxlbWVudElkKTsKLSAgICBib29sIHJldHVyblZhbHVlID0gd2Via2l0X3dl
Yl9mcmFtZV9wYXVzZV9hbmltYXRpb24obWFpbkZyYW1lLCBuYW1lLCB0aW1lLCBlbGVtZW50KTsK
KyAgICBib29sIHJldHVyblZhbHVlID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZUFu
aW1hdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQpOwogICAgIGdfZnJlZShuYW1l
KTsKICAgICBnX2ZyZWUoZWxlbWVudCk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwpAQCAtNjMy
LDcgKzYyMiw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0
VGltZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wCiB7ICAgIAogICAgIGdjaGFyKiBu
YW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcocHJvcGVydHlOYW1lKTsKICAgICBnY2hhciog
ZWxlbWVudCA9IEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGVsZW1lbnRJZCk7Ci0gICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJhbnNpdGlvbihtYWluRnJhbWUs
IG5hbWUsIHRpbWUsIGVsZW1lbnQpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVs
ZW1lbnQpOwogICAgIGdfZnJlZShuYW1lKTsKICAgICBnX2ZyZWUoZWxlbWVudCk7CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwpAQCAtNjQyLDcgKzYzMiw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoSlNTdHJpbmdSZWYgYW5p
bWF0CiB7ICAgIAogICAgIGdjaGFyKiBuYW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoYW5p
bWF0aW9uSWQpOwogICAgIGdjaGFyKiBlbGVtZW50ID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
ZWxlbWVudElkKTsKLSAgICBib29sIHJldHVyblZhbHVlID0gd2Via2l0X3dlYl9mcmFtZV9wYXVz
ZV9zdmdfYW5pbWF0aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwgZWxlbWVudCk7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VTdmdBbmltYXRp
b24obWFpbkZyYW1lLCBuYW1lLCB0aW1lLCBlbGVtZW50KTsKICAgICBnX2ZyZWUobmFtZSk7CiAg
ICAgZ19mcmVlKGVsZW1lbnQpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKQEAgLTY1MCwxNyAr
NjQwLDE3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZv
ckVsZW1lbnRBdFRpbWUoSlNTdHJpbmdSZWYgYW5pbWF0CiAKIHVuc2lnbmVkIExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdAogewotICAgIHJldHVy
biB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5pbWF0aW9ucyhtYWluRnJhbWUp
OworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucyhtYWluRnJhbWUpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdXNw
ZW5kQW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2Fu
aW1hdGlvbnMobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnN1c3Bl
bmRBbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAogewotICAgIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1l
X2FuaW1hdGlvbnMobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJl
c3VtZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUp
CkBAIC03OTMsNyArNzgzLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmll
d0VkaXRhYmxlKGJvb2wpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIG5vZGVPYmplY3QpIGNvbnN0CiB7Ci0gICAgZ2NoYXIqIG1hcmtlclRleHRHQ2hhciA9
IHdlYmtpdF93ZWJfZnJhbWVfbWFya2VyX3RleHRfZm9yX2xpc3RfaXRlbShtYWluRnJhbWUsIGNv
bnRleHQsIG5vZGVPYmplY3QpOworICAgIGdjaGFyKiBtYXJrZXJUZXh0R0NoYXIgPSBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6Om1hcmtlclRleHRGb3JMaXN0SXRlbShtYWluRnJhbWUsIGNvbnRl
eHQsIG5vZGVPYmplY3QpOwogICAgIGlmICghbWFya2VyVGV4dEdDaGFyKQogICAgICAgICByZXR1
cm4gMDsKIAotLSAKMS43LjEKCg==
</data>
<flag name="review"
          id="63640"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73606</attachid>
            <date>2010-11-11 06:45:43 -0800</date>
            <delta_ts>2010-11-17 09:01:47 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>0001-Gtk-Populate-DumpRenderTreeSupportGtk.patch</filename>
            <type>text/plain</type>
            <size>40813</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA0N2E2Yjc4OTkxMzZmNmIxOTM4YTU5OThjMDgwYTA5NjdlY2NlOGQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
TW9uLCA4IE5vdiAyMDEwIDEyOjIzOjE4IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gW0d0a10gUG9w
dWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDg0MjkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpQYXRjaCBi
eSBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KCldlYktpdC9ndGs6CgpNb3ZlZCBtb3N0
IG9mIHRoZSB3ZWJraXRfd2ViX2ZyYW1lKiBtZXRob2RzIGRlZmluZWQgYXMgcHJpdmF0ZSBBUElz
IGluIHdlYmtpdHByaXZhdGUuaAp0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGssIGFzIHN0YXRp
YyBjbGFzcyBtZXRob2RzLiBUaGVzZSBtZXRob2RzIGhhZApub3QgZ29uZSB0aHJvdWdodCB0aGUg
Zm9ybWFsIEFQSSByZXZpZXcgcHJvY2VzcyBhbmQgd2VyZSBvbmx5IGJlaW5nIHVzZWQgYnkgRFJU
IGZvciBub3cuCgpUaGUgZXNzZW5jZSBvZiBlYWNoIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHdlcmUg
a2VwdC4gRm9yIGV4YW1wbGUKd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oLi4uKSB3YXMg
cmVuYW1lZCB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldENoaWxkcmVuKC4uLiksCmFu
ZCBzbyBvbi4KCkFsc28gc29tZSBvZiB0aGUgbWV0aG9kIGJvZGllcyB3ZXJlIGNoYW5nZWQgdG8g
cmV0dXJuIG5vbi1nbGliIHR5cGVzIChnY2hhciogLT4gQ1N0cmluZykuCgoqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmdldENoaWxkcmVuKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0SW5uZXJUZXh0
KToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWUpOgooRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CihEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CihEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXMpOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpn
ZXRQZW5kaW5nVW5sb2FkRXZlbnRDb3VudCk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBh
dXNlQW5pbWF0aW9uKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9u
KToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VTdmdBbmltYXRpb24pOgooRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgooRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgooRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzdXNwZW5kQW5pbWF0aW9ucyk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OnJlc3VtZUFuaW1hdGlvbnMpOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVhck1haW5G
cmFtZU5hbWUpOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRGb2N1c2VkQWNjZXNzaWJs
ZUVsZW1lbnQpOgoqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgoq
IHdlYmtpdC93ZWJraXRwcml2YXRlLmg6Ciogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKCldl
YktpdFRvb2xzOgoKTWFkZSB0aGUgcHJldmlvdXMgY2FsbHMgdG8gd2Via2l0X3dlYl9mcmFtZSog
ZnVuY3Rpb25zIGRlZmluZWQgYXMgcHJpdmF0ZQpBUElzIGluIHdlYmtpdHByaXZhdGUuaCBnbyB0
aHJvdWdoIERSVFN1cHBvcnRHdGsuCgoqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckd0ay5jcHA6CihBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1l
bnQpOgoqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CihkdW1wRnJhbWVz
QXNUZXh0KToKKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgooZHVtcCk6Cih3ZWJW
aWV3RG9jdW1lbnRMb2FkRmluaXNoZWQpOgoqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHA6CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50
QnlJZCk6CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQYWdlcyk6CihMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgooTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6CihM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZSk6
CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKExheW91
dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk6CihMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cmVzdW1lQW5pbWF0aW9ucyk6CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZv
ckxpc3RJdGVtKToKLS0tCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzggKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCAgICB8ICAyNzUgKysrKysrKysrKysrKysrKysrKysKIC4uLi9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwgICAyNSArKwogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAgICAgICAgICAgICAgfCAgIDQ4IC0tLS0K
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCAgICAgICAgICAgICAgIHwgIDI1
NyAtLS0tLS0tLS0tLS0tLS0tLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyOSArKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckd0ay5jcHAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwICB8ICAgMjEgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAzOSArLS0KIDkgZmlsZXMgY2hhbmdl
ZCwgMzkxIGluc2VydGlvbnMoKyksIDM0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDZkOWE2NTIuLjJk
MTIzMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAtMTEtMDggIEFudG9uaW8gR29tZXMgIDxh
Z29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR3RrXSBQb3B1bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDI5CisKKyAgICAgICAg
TW92ZWQgbW9zdCBvZiB0aGUgd2Via2l0X3dlYl9mcmFtZSogbWV0aG9kcyBkZWZpbmVkIGFzIHBy
aXZhdGUgQVBJcyBpbiB3ZWJraXRwcml2YXRlLmgKKyAgICAgICAgdG8gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLCBhcyBzdGF0aWMgY2xhc3MgbWV0aG9kcy4gVGhlc2UgbWV0aG9kcyBoYWQKKyAg
ICAgICAgbm90IGdvbmUgdGhyb3VnaHQgdGhlIGZvcm1hbCBBUEkgcmV2aWV3IHByb2Nlc3MgYW5k
IHdlcmUgb25seSBiZWluZyB1c2VkIGJ5IERSVCBmb3Igbm93LgorCisgICAgICAgIFRoZSBlc3Nl
bmNlIG9mIGVhY2ggb3JpZ2luYWwgbWV0aG9kIG5hbWUgd2VyZSBrZXB0LiBGb3IgZXhhbXBsZQor
ICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbiguLi4pIHdhcyByZW5hbWVkIHRv
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Q2hpbGRyZW4oLi4uKSwKKyAgICAgICAgYW5k
IHNvIG9uLgorCisgICAgICAgIEFsc28gc29tZSBvZiB0aGUgbWV0aG9kIGJvZGllcyB3ZXJlIGNo
YW5nZWQgdG8gcmV0dXJuIG5vbi1nbGliIHR5cGVzIChnY2hhciogLT4gQ1N0cmluZykuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldElubmVyVGV4dCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlU3ZnQW5pbWF0aW9uKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y2xlYXJNYWluRnJhbWVOYW1lKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHA6CisKIDIwMTAtMTEtMDggIE5pY29sYXMgRHVmcmVzbmUgIDxuaWNvbGFz
LmR1ZnJlc25lQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4g
Um9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggODI5NjIwNi4uYTgxNzc0YiAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cApAQCAtMTksMTAgKzE5LDI5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmgiCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0ay5oIgorI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJKU0VsZW1lbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgorI2luY2x1ZGUgIlJlbmRl
ckxpc3RJdGVtLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlJlbmRlclRy
ZWVBc1RleHQuaCIKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50Lmgi
CisjZW5kaWYKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCisjaW5jbHVkZSAid2Via2l0d2Vi
ZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQVBJQ2FzdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2RydFJ1biA9
IGZhbHNlOwogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfbGlua3NJbmNsdWRlZElu
VGFiQ2hhaW4gPSB0cnVlOwpAQCAtNTQsMyArNzMsMjU5IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpsaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluKCkKICAgICByZXR1cm4gc19saW5r
c0luY2x1ZGVkSW5UYWJDaGFpbjsKIH0KIAorLyoqCisgKiBnZXRDaGlsZHJlbjoKKyAqIEBmcmFt
ZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqCisgKiBSZXR1cm4gdmFsdWU6IGNoaWxkIGZyYW1lcyBv
ZiBAZnJhbWUKKyAqLworR1NMaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldENoaWxk
cmVuKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgR1NMaXN0KiBjaGlsZHJlbiA9IDA7CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBjb3JlRnJh
bWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBjaGlsZC0+bG9h
ZGVyKCk7CisgICAgICAgIFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCA9IHN0YXRp
Y19jYXN0PFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqPihsb2FkZXItPmNsaWVudCgpKTsKKyAg
ICAgICAgaWYgKGNsaWVudCkKKyAgICAgICAgICBjaGlsZHJlbiA9IGdfc2xpc3RfYXBwZW5kKGNo
aWxkcmVuLCBjbGllbnQtPndlYkZyYW1lKCkpOworICAgIH0KKworICAgIHJldHVybiBjaGlsZHJl
bjsKK30KKworLyoqCisgKiBnZXRJbm5lclRleHQ6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZy
YW1lCisgKgorICogUmV0dXJuIHZhbHVlOiBpbm5lciB0ZXh0IG9mIEBmcmFtZQorICovCitDU3Ry
aW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0SW5uZXJUZXh0KFdlYktpdFdlYkZyYW1l
KiBmcmFtZSkKK3sKKyNpZiAxCisgICAgcmV0dXJuIENTdHJpbmcoInRlc3QiKTsKKyNlbHNlCisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIENTdHJp
bmcoIiIpKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAo
IWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIpOworCisgICAgRnJhbWVWaWV3
KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisKKyAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlv
dXRQZW5kaW5nKCkpCisgICAgICAgIHZpZXctPmxheW91dCgpOworCisgICAgRWxlbWVudCogZG9j
dW1lbnRFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsK
KyAgICAvL3JldHVybiBkb2N1bWVudEVsZW1lbnQtPmlubmVyVGV4dCgpLnV0ZjgoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCJ0ZXN0IikudXRmOCgpOworI2VuZGlmCit9CisKKy8qKgorICogZHVtcFJl
bmRlclRyZWU6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKgorICogUmV0dXJuIHZh
bHVlOiBOb24tcmVjdXJzaXZlIHJlbmRlciB0cmVlIGR1bXAgb2YgQGZyYW1lCisgKi8KK0NTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZShXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFN
RShmcmFtZSksIENTdHJpbmcoIiIpKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZy
YW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIpOwor
CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisKKyAgICBpZiAodmll
dyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAgIHZpZXctPmxheW91dCgpOworCisg
ICAgcmV0dXJuIGV4dGVybmFsUmVwcmVzZW50YXRpb24oY29yZUZyYW1lKS51dGY4KCk7Cit9CisK
Ky8qKgorICogY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQ6CisgKiBAZnJhbWU6IGEgI1dlYktp
dFdlYkZyYW1lCisgKiBAaWQ6IGFuIGVsZW1lbnQgSUQgc3RyaW5nCisgKgorICogUmV0dXJuIHZh
bHVlOiBUaGUgY291bnRlciB2YWx1ZSBvZiBlbGVtZW50IEBpZCBpbiBAZnJhbWUKKyAqLworQ1N0
cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlk
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogaWQpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIENTdHJpbmcoKSk7CisKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGlkKSk7Cisg
ICAgaWYgKCFjb3JlRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIHJl
dHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGNvcmVFbGVtZW50KS51dGY4KCk7Cit9CisKKy8q
KgorICogbnVtYmVyRm9yRWxlbWVudEJ5SWQKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUK
KyAqIEBpZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKKyAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEg
cGFnZQorICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBvZiBhIHBhZ2UKKyAqCisgKiBSZXR1cm4gdmFs
dWU6IFRoZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBi
ZSBwdXQKKyAqLworaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGFnZU51bWJlckZvckVs
ZW1lbnRCeUlkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogaWQsIGZsb2F0IHBh
Z2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAtMTsKKwor
ICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVt
ZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50KQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1l
bnQoY29yZUVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKK30KKwor
LyoqCisgKiBudW1iZXJPZlBhZ2VzCisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKiBA
cGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKKyAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2YgYSBw
YWdlCisgKgorICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGJlIHByaW50
ZWQuCisgKi8KK2ludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIDAp
OworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZy
YW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1i
ZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwor
fQorCisvKioKKyAqIGdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50OgorICogQGZyYW1lOiBhICNX
ZWJLaXRXZWJGcmFtZQorICoKKyAqIFJldHVybiB2YWx1ZTogbnVtYmVyIG9mIHBlbmRpbmcgdW5s
b2FkIGV2ZW50cworICovCitndWludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldFBlbmRp
bmdVbmxvYWRFdmVudENvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7CisKKyAgICByZXR1
cm4gY29yZShmcmFtZSktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMo
KTsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlQW5pbWF0aW9uKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0
IGNoYXIqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKKyAgICBFbGVtZW50
KiBjb3JlRWxlbWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChB
dG9taWNTdHJpbmcoZWxlbWVudCkpOworICAgIGlmICghY29yZUVsZW1lbnQgfHwgIWNvcmVFbGVt
ZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvcmUo
ZnJhbWUpLT5hbmltYXRpb24oKS0+cGF1c2VBbmltYXRpb25BdFRpbWUoY29yZUVsZW1lbnQtPnJl
bmRlcmVyKCksIEF0b21pY1N0cmluZyhuYW1lKSwgdGltZSk7Cit9CisKK2Jvb2wgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCkKK3sKKyAg
ICBBU1NFUlQoY29yZShmcmFtZSkpOworICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZShm
cmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhlbGVtZW50KSk7
CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29yZShmcmFtZSktPmFuaW1hdGlvbigpLT5w
YXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZUVsZW1lbnQtPnJlbmRlcmVyKCksIEF0b21pY1N0cmlu
ZyhuYW1lKSwgdGltZSk7Cit9CisKK2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVz
ZVNWR0FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIGFuaW1hdGlv
bklkLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudElkKQoreworICAgIEFTU0VSVChj
b3JlKGZyYW1lKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBj
b3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+
c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRWxlbWVudCogY29y
ZUVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGFuaW1hdGlv
bklkKSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVs
ZW1lbnQoY29yZUVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGRv
Y3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVt
ZW50SWQsIHN0YXRpY19jYXN0PFNWR1NNSUxFbGVtZW50Kj4oY29yZUVsZW1lbnQpLCB0aW1lKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK0NTdHJpbmcgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZy
YW1lLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQoreworICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBFbGVtZW50KiBlbGVt
ZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOworICAgIGlmICghZWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIHJldHVybiBXZWJDb3JlOjptYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0oZWxlbWVudCkudXRmOCgpOworfQorCit1bnNpZ25lZCBpbnQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAg
ICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29yZUZy
YW1lLT5hbmltYXRpb24oKS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzdXNwZW5kQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlm
ICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gY29yZUZyYW1lLT5h
bmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQorewor
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIGNvcmVGcmFtZS0+YW5pbWF0aW9uKCktPnJl
c3VtZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNs
ZWFyTWFpbkZyYW1lTmFtZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7CisKKyAgICBjb3JlKGZyYW1lKS0+
dHJlZSgpLT5jbGVhck5hbWUoKTsKK30KKworQXRrT2JqZWN0KiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChXZWJLaXRXZWJGcmFtZSogZnJhbWUp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSks
IDApOworCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorICAgIGlmICghQVhPYmplY3RDYWNoZTo6
YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNj
ZXNzaWJpbGl0eSgpOworCisgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gZnJhbWUt
PnByaXY7CisgICAgaWYgKCFwcml2LT5jb3JlRnJhbWUgfHwgIXByaXYtPmNvcmVGcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJWaWV3KiByb290ID0gdG9S
ZW5kZXJWaWV3KHByaXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CisgICAg
aWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEF0a09iamVjdCogd3JhcHBlciA9
ICBwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUocm9vdCktPndyYXBwZXIoKTsKKyAgICBpZiAoIXdyYXBwZXIpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9mb2N1c2VkX2VsZW1lbnQoV0VC
S0lUX0FDQ0VTU0lCTEUod3JhcHBlcikpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuaAppbmRleCA1YjQ5NGZmLi4yNWJiMmJlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTE5LDYgKzE5
LDEzIEBACiAjaWZuZGVmIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0a19oCiAjZGVmaW5lIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0a19oCiAKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5lcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisK
IGNsYXNzIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayB7CiAKIHB1YmxpYzoKQEAgLTMxLDYgKzM4
LDI0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRMaW5rc0luY2x1ZGVkSW5Gb2N1c0No
YWluKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGxpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4oKTsK
IAorICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVp
ciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgorICAgIHN0YXRpYyBHU0xpc3QqIGdldENoaWxkcmVu
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIFdURjo6Q1N0cmluZyBnZXRJbm5l
clRleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpDU3RyaW5nIGR1
bXBSZW5kZXJUcmVlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIFdURjo6Q1N0
cmluZyBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IGNoYXIqIGlkKTsKKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZs
b2F0IHBhZ2VIZWlnaHQpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7CisgICAgc3Rh
dGljIGd1aW50IGdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgcGF1c2VBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7Cisg
ICAgc3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQpOworICAgIHN0
YXRpYyBib29sIHBhdXNlU1ZHQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Y2hhciogYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50SWQpOwor
ICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7
CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhXZWJL
aXRXZWJGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1haW5GcmFtZU5hbWUo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2Vk
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBzX2RydFJ1bjsKICAgICBzdGF0aWMgYm9vbCBzX2xpbmtzSW5jbHVkZWRJ
blRhYkNoYWluOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDczODU2NzcuLjRiZWFm
NzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTMzNiw1NCArMzM2LDYgQEAgZXh0
ZXJuICJDIiB7CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5o
IG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAotICAgIFdFQktJVF9BUEkgR1NM
aXN0KgotICAgIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuIChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBnY2hhcioKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9pbm5lcl90ZXh0IChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBn
Y2hhcioKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVyX3RyZWUgKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJh
bWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZCAoV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogaWQpOwotCi0gICAgV0VCS0lUX0FQSSBpbnQKLSAgICB3ZWJraXRfd2Vi
X2ZyYW1lX3BhZ2VfbnVtYmVyX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgZ2NoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpOwot
Ci0gICAgV0VCS0lUX0FQSSBpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdl
cyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdo
dCk7Ci0KLSAgICBXRUJLSVRfQVBJIGd1aW50Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVu
ZGluZ191bmxvYWRfZXZlbnRfY291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdF
QktJVF9BUEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5pbWF0aW9uKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBn
Y2hhciogZWxlbWVudCk7Ci0KLSAgICBXRUJLSVRfQVBJIGJvb2wKLSAgICB3ZWJraXRfd2ViX2Zy
YW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciog
bmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLQotICAgIFdFQktJVF9B
UEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNv
bnN0IGdjaGFyKiBlbGVtZW50SWQpOwotCi0gICAgV0VCS0lUX0FQSSBnY2hhcioKLSAgICB3ZWJr
aXRfd2ViX2ZyYW1lX21hcmtlcl90ZXh0X2Zvcl9saXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZy
YW1lLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KTsKLQotICAg
IFdFQktJVF9BUEkgdW5zaWduZWQgaW50Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2Zf
YWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdFQktJVF9B
UEkgdm9pZAotICAgIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIHZvaWQKLSAgICB3ZWJraXRfd2ViX2Zy
YW1lX3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJL
SVRfQVBJIHZvaWQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2NsZWFyX21haW5fZnJhbWVfbmFtZShX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBBdGtPYmplY3QqCi0gICAg
d2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3NpYmxlX2VsZW1lbnQoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKTsKLQogICAgIFdFQktJVF9BUEkgZ2NoYXIqCiAgICAgd2Via2l0X3dlYl92
aWV3X2dldF9zZWxlY3RlZF90ZXh0IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCA2M2EyNDEzLi5lYmIzZGMzIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC03MzcsMTU1ICs3MzcsNiBAQCBXZWJLaXRX
ZWJEYXRhU291cmNlKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm92aXNpb25hbF9kYXRhX3NvdXJj
ZShXZWJLaXRXZWJGcmFtZQogICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9kYXRhX3Nv
dXJjZV9mcm9tX2NvcmVfbG9hZGVyKGNvcmVGcmFtZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKSk7CiB9CiAKLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRy
ZW46Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVlOiBj
aGlsZCBmcmFtZXMgb2YgQGZyYW1lCi0gKi8KLUdTTGlzdCogd2Via2l0X3dlYl9mcmFtZV9nZXRf
Y2hpbGRyZW4oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJu
IE5VTEw7Ci0KLSAgICBHU0xpc3QqIGNoaWxkcmVuID0gTlVMTDsKLSAgICBmb3IgKEZyYW1lKiBj
aGlsZCA9IGNvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGNoaWxkLT5sb2FkZXIoKTsKLSAgICAgICAgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCog
Y2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCo+KGxvYWRlci0+
Y2xpZW50KCkpOwotICAgICAgICBpZiAoY2xpZW50KQotICAgICAgICAgIGNoaWxkcmVuID0gZ19z
bGlzdF9hcHBlbmQoY2hpbGRyZW4sIGNsaWVudC0+d2ViRnJhbWUoKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNoaWxkcmVuOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVy
X3RleHQ6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVl
OiBpbm5lciB0ZXh0IG9mIEBmcmFtZQotICovCi1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRf
aW5uZXJfdGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gZ19zdHJkdXAoIiIpOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3
KCk7Ci0KLSAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCi0gICAgICAgIHZp
ZXctPmxheW91dCgpOwotCi0gICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gIGRv
Y3VtZW50RWxlbWVudC0+aW5uZXJUZXh0KCk7Ci0gICAgcmV0dXJuIGdfc3RyZHVwKHN0cmluZy51
dGY4KCkuZGF0YSgpKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVy
X3RyZWU6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVl
OiBOb24tcmVjdXJzaXZlIHJlbmRlciB0cmVlIGR1bXAgb2YgQGZyYW1lCi0gKi8KLWdjaGFyKiB3
ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVyX3RyZWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQot
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBO
VUxMKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKLQotICAgIEZyYW1lVmlldyog
dmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwotCi0gICAgaWYgKHZpZXcgJiYgdmlldy0+bGF5b3V0
UGVuZGluZygpKQotICAgICAgICB2aWV3LT5sYXlvdXQoKTsKLQotICAgIFN0cmluZyBzdHJpbmcg
PSBleHRlcm5hbFJlcHJlc2VudGF0aW9uKGNvcmVGcmFtZSk7Ci0gICAgcmV0dXJuIGdfc3RyZHVw
KHN0cmluZy51dGY4KCkuZGF0YSgpKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2Nv
dW50ZXJfdmFsdWVfZm9yX2VsZW1lbnRfYnlfaWQ6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZy
YW1lCi0gKiBAaWQ6IGFuIGVsZW1lbnQgSUQgc3RyaW5nCi0gKgotICogUmV0dXJuIHZhbHVlOiBU
aGUgY291bnRlciB2YWx1ZSBvZiBlbGVtZW50IEBpZCBpbiBAZnJhbWUKLSAqLwotZ2NoYXIqIHdl
YmtpdF93ZWJfZnJhbWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdl
dEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOwotICAgIGlmICghY29yZUVsZW1lbnQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIFN0cmluZyBjb3VudGVyVmFsdWUgPSBjb3VudGVyVmFsdWVG
b3JFbGVtZW50KGNvcmVFbGVtZW50KTsKLSAgICByZXR1cm4gZ19zdHJkdXAoY291bnRlclZhbHVl
LnV0ZjgoKS5kYXRhKCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1i
ZXJfZm9yX2VsZW1lbnRfYnlfaWQKLSAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqIEBp
ZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKLSAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEgcGFnZQot
ICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBvZiBhIHBhZ2UKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IFRo
ZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQK
LSAqLwotaW50IHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1iZXJfZm9yX2VsZW1lbnRfYnlfaWQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVs
ZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJ
ZChBdG9taWNTdHJpbmcoaWQpKTsKLSAgICBpZiAoIWNvcmVFbGVtZW50KQotICAgICAgICByZXR1
cm4gLTE7Ci0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29y
ZUVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKLX0KLQotLyoqCi0g
KiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdlcwotICogQGZyYW1lOiBhICNXZWJLaXRX
ZWJGcmFtZQotICogQHBhZ2VXaWR0aDogd2lkdGggb2YgYSBwYWdlCi0gKiBAcGFnZUhlaWdodDog
aGVpZ2h0IG9mIGEgcGFnZQotICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBvZiBwYWdl
cyB0byBiZSBwcmludGVkLgotICovCi1pbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFn
ZXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWln
aHQpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFt
ZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlm
ICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gUHJpbnRDb250
ZXh0OjpudW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhl
aWdodCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BlbmRpbmdfdW5sb2Fk
X2V2ZW50X2NvdW50OgotICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQotICoKLSAqIFJldHVy
biB2YWx1ZTogbnVtYmVyIG9mIHBlbmRpbmcgdW5sb2FkIGV2ZW50cwotICovCi1ndWludCB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5nX3VubG9hZF9ldmVudF9jb3VudChXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFN
RShmcmFtZSksIDApOwotCi0gICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5kb21XaW5kb3coKS0+cGVu
ZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGJlZ2luX3ByaW50
X2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBjb250ZXh0
LCBncG9pbnRlciB1c2VyX2RhdGEpCiB7CiAgICAgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQg
PSByZWludGVycHJldF9jYXN0PFByaW50Q29udGV4dCo+KHVzZXJfZGF0YSk7CkBAIC05OTYsODEg
Kzg0Nyw2IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCiAgICAgfQogfQogCi1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5pbWF0aW9uKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBnY2hhciogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoY29yZShmcmFtZSkpOwotICAgIEVsZW1l
bnQqIGNvcmVFbGVtZW50ID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlk
KEF0b21pY1N0cmluZyhlbGVtZW50KSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVs
ZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29y
ZShmcmFtZSktPmFuaW1hdGlvbigpLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlRWxlbWVudC0+
cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKLX0KLQotYm9vbCB3ZWJraXRf
d2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KQotewotICAgIEFT
U0VSVChjb3JlKGZyYW1lKSk7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGZyYW1l
KS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGVsZW1lbnQpKTsKLSAg
ICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JlKGZyYW1lKS0+YW5pbWF0aW9uKCktPnBhdXNl
VHJhbnNpdGlvbkF0VGltZShjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5h
bWUpLCB0aW1lKTsKLX0KLQotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3N2Z19hbmltYXRp
b24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogYW5pbWF0aW9uSWQsIGRvdWJs
ZSB0aW1lLCBjb25zdCBnY2hhciogZWxlbWVudElkKQotewotICAgIEFTU0VSVChjb3JlKGZyYW1l
KSk7Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlKGZyYW1l
KS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c3ZnRXh0ZW5z
aW9ucygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQg
PSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGFuaW1hdGlvbklkKSk7Ci0g
ICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29y
ZUVsZW1lbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0
YXRpY19jYXN0PFNWR1NNSUxFbGVtZW50Kj4oY29yZUVsZW1lbnQpLCB0aW1lKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX21h
cmtlcl90ZXh0X2Zvcl9saXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50
KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICByZXR1cm4gZ19zdHJkdXAobWFya2VyVGV4dEZvckxpc3RJdGVtKGVsZW1l
bnQpLnV0ZjgoKS5kYXRhKCkpOwotfQotCi11bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9mcmFtZV9u
dW1iZXJfb2ZfYWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
Y29yZUZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpOwotfQotCi12b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7
Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvcmVGcmFtZS0+
YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgd2Via2l0X3dlYl9m
cmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25z
KCk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9yZXNwb25zZV9taW1lX3R5cGUo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZy
YW1lKTsKQEAgLTEwOTUsMTMgKzg3MSw2IEBAIFdlYktpdExvYWRTdGF0dXMgd2Via2l0X3dlYl9m
cmFtZV9nZXRfbG9hZF9zdGF0dXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBw
cml2LT5sb2FkU3RhdHVzOwogfQogCi12b2lkIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9m
cmFtZV9uYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpKTsKLQotICAgIGNvcmUoZnJhbWUpLT50cmVlKCkt
PmNsZWFyTmFtZSgpOwotfQotCiB2b2lkIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2Jq
ZWN0cygpCiB7CiAgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKQEAgLTEx
MTksMzIgKzg4OCw2IEBAIGdzaXplIHdlYmtpdF9nY19jb3VudF9qYXZhc2NyaXB0X29iamVjdHMo
KQogCiB9CiAKLUF0a09iamVjdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3Np
YmxlX2VsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkKLSAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVk
KCkpCi0gICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKLQotICAg
IFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIGlmICghcHJp
di0+Y29yZUZyYW1lIHx8ICFwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBOVUxMOwotCi0gICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhwcml2LT5j
b3JlRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIGlmICghcm9vdCkKLSAgICAg
ICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSAgcHJpdi0+Y29yZUZy
YW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJvb3QpLT53cmFw
cGVyKCk7Ci0gICAgaWYgKCF3cmFwcGVyKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJl
dHVybiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZm9jdXNlZF9lbGVtZW50KFdFQktJVF9BQ0NFU1NJ
QkxFKHdyYXBwZXIpKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKLX0KLQogR3Rr
UG9saWN5VHlwZSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9ob3Jpem9udGFsX3Njcm9sbGJhcl9wb2xp
Y3koV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
ZmM2NjdlZi4uMDRmOTI3YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTExLTA4ICBBbnRv
bmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQy
OQorCisgICAgICAgIE1hZGUgdGhlIHByZXZpb3VzIGNhbGxzIHRvIHdlYmtpdF93ZWJfZnJhbWUq
IGZ1bmN0aW9ucyBkZWZpbmVkIGFzIHByaXZhdGUKKyAgICAgICAgQVBJcyBpbiB3ZWJraXRwcml2
YXRlLmggZ28gdGhyb3VnaCBEUlRTdXBwb3J0R3RrLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgor
ICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChkdW1w
KToKKyAgICAgICAgKHdlYlZpZXdEb2N1bWVudExvYWRGaW5pc2hlZCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmlt
YXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1
bWVBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0pOgorCiAyMDEwLTExLTEwICBDaHJpcyBHdWlsbG9yeSAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyR3RrLmNwcAppbmRleCBhYjlmMDIxLi41ODllNTNjIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckd0ay5jcHAKQEAgLTI5LDE1ICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW5jbHVk
ZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgiCiAKICNpbmNsdWRl
IDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJr
aXQuaD4KIAotZXh0ZXJuICJDIiB7Ci1leHRlcm4gQXRrT2JqZWN0KiB3ZWJraXRfd2ViX2ZyYW1l
X2dldF9mb2N1c2VkX2FjY2Vzc2libGVfZWxlbWVudChXZWJLaXRXZWJGcmFtZSopOwotfQotCiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQogewogfQpA
QCAtNTQsNyArNTEsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCiAKIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKIHsKLSAgICBB
dGtPYmplY3QqIGFjY2Vzc2libGUgPSAgd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nl
c3NpYmxlX2VsZW1lbnQobWFpbkZyYW1lKTsKKyAgICBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRGb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQobWFp
bkZyYW1lKTsKICAgICBpZiAoIWFjY2Vzc2libGUpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRl
eCA1YWE2MWUzLi4yZmQ2YWQ2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTYyLDEzICs2Miw5IEBAIGV4dGVybiAiQyIgewog
ZXh0ZXJuIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRf
dGFyZ2V0KFdlYktpdFdlYkhpc3RvcnlJdGVtKik7CiBleHRlcm4gZ2Jvb2xlYW4gd2Via2l0X3dl
Yl9oaXN0b3J5X2l0ZW1faXNfdGFyZ2V0X2l0ZW0oV2ViS2l0V2ViSGlzdG9yeUl0ZW0qKTsKIGV4
dGVybiBHTGlzdCogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2NoaWxkcmVuKFdlYktpdFdl
Ykhpc3RvcnlJdGVtKik7Ci1leHRlcm4gR1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGls
ZHJlbihXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotZXh0ZXJuIGdjaGFyKiB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9pbm5lcl90ZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci1leHRlcm4gZ2NoYXIq
IHdlYmtpdF93ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUp
OwotZXh0ZXJuIGd1aW50IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BlbmRpbmdfdW5sb2FkX2V2ZW50
X2NvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CiBleHRlcm4gdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2FkZF9leHRyYV9wbHVnaW5fZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqIHZpZXcsIGNv
bnN0IGdjaGFyKiBkaXJlY3RvcnkpOwogZXh0ZXJuIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9yZXNwb25zZV9taW1lX3R5cGUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLWV4dGVybiB2b2lk
IHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKFdlYktpdFdlYkZyYW1lKiBm
cmFtZSk7CitleHRlcm4gdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2dyb3VwX25hbWUoV2ViS2l0
V2ViVmlldyogdmlldywgY29uc3QgZ2NoYXIqIGdyb3VwTmFtZSk7CiBleHRlcm4gdm9pZCB3ZWJr
aXRfcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZV9saXN0cygpOwogfQogCkBAIC0yNTAsMTcgKzI0
NiwxNiBAQCBzdGF0aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKQogICAgIC8vIEFkZCBoZWFkZXIgZm9yIGFsbCBidXQgdGhlIG1haW4gZnJhbWUuCiAgICAg
Ym9vbCBpc01haW5GcmFtZSA9ICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmll
dykgPT0gZnJhbWUpOwogCi0gICAgZ2NoYXIqIGlubmVyVGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVf
Z2V0X2lubmVyX3RleHQoZnJhbWUpOworICAgIENTdHJpbmcgaW5uZXJUZXh0ID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpnZXRJbm5lclRleHQoZnJhbWUpOwogICAgIGlmIChpc01haW5GcmFt
ZSkKLSAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xuIiwgaW5uZXJUZXh0KTsK
KyAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xuIiwgaW5uZXJUZXh0LmRhdGEo
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IGdjaGFyKiBmcmFtZU5hbWUgPSB3ZWJraXRf
d2ViX2ZyYW1lX2dldF9uYW1lKGZyYW1lKTsKLSAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBfcHJp
bnRmKCJcbi0tLS0tLS0tXG5GcmFtZTogJyVzJ1xuLS0tLS0tLS1cbiVzXG4iLCBmcmFtZU5hbWUs
IGlubmVyVGV4dCk7CisgICAgICAgIHJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigiXG4tLS0tLS0t
LVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4lc1xuIiwgZnJhbWVOYW1lLCBpbm5lclRleHQuZGF0
YSgpKTsKICAgICB9Ci0gICAgZ19mcmVlKGlubmVyVGV4dCk7CiAKICAgICBpZiAoZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgewotICAgICAgICBHU0xpc3Qq
IGNoaWxkcmVuID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oZnJhbWUpOworICAgICAg
ICBHU0xpc3QqIGNoaWxkcmVuID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJl
bihmcmFtZSk7CiAgICAgICAgIGZvciAoR1NMaXN0KiBjaGlsZCA9IGNoaWxkcmVuOyBjaGlsZDsg
Y2hpbGQgPSBnX3NsaXN0X25leHQoY2hpbGQpKQogICAgICAgICAgICAgYXBwZW5kU3RyaW5nKHJl
c3VsdCwgZHVtcEZyYW1lc0FzVGV4dChzdGF0aWNfY2FzdDxXZWJLaXRXZWJGcmFtZSogPihjaGls
ZC0+ZGF0YSkpKTsKICAgICAgICAgZ19zbGlzdF9mcmVlKGNoaWxkcmVuKTsKQEAgLTQxOSw3ICs0
MTQsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAg
ICAgICAgICAgICAgICAgImVkaXRpbmctYmVoYXZpb3IiLCBXRUJLSVRfRURJVElOR19CRUhBVklP
Ul9NQUMsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCi0gICAgd2Via2l0X3dlYl9mcmFtZV9j
bGVhcl9tYWluX2ZyYW1lX25hbWUobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmNsZWFyTWFpbkZyYW1lTmFtZShtYWluRnJhbWUpOwogCiAgICAgV2ViS2l0V2ViSW5z
cGVjdG9yKiBpbnNwZWN0b3IgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcih3ZWJWaWV3
KTsKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1QoaW5zcGVjdG9yKSwgImphdmFzY3JpcHQtcHJv
ZmlsaW5nLWVuYWJsZWQiLCBGQUxTRSwgTlVMTCk7CkBAIC01MjAsNyArNTE1LDcgQEAgdm9pZCBk
dW1wKCkKICAgICAgICAgICAgIHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKICAgICAgICAg
ICAgICAgICBndGtfbWFpbl9pdGVyYXRpb24oKTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gd2Vi
a2l0X3dlYl9mcmFtZV9kdW1wX3JlbmRlcl90cmVlKG1haW5GcmFtZSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBnX3N0cmR1cChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVl
KG1haW5GcmFtZSkuZGF0YSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVzdWx0KSB7
CkBAIC03NDgsNyArNzQzLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld0RvY3VtZW50TG9hZEZpbmlz
aGVkKFdlYktpdFdlYlZpZXcqIHZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmEKICAgICAgICAgcHJp
bnRmKCIlcyAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lXG4iLCBmcmFtZU5hbWUpOwog
ICAgICAgICBnX2ZyZWUoZnJhbWVOYW1lKTsKICAgICB9IGVsc2UgaWYgKCFkb25lKSB7Ci0gICAg
ICAgIGd1aW50IHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3BlbmRpbmdfdW5sb2FkX2V2ZW50X2NvdW50KGZyYW1lKTsKKyAgICAgICAgZ3VpbnQgcGVuZGlu
Z0ZyYW1lVW5sb2FkRXZlbnRzID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRQZW5kaW5n
VW5sb2FkRXZlbnRDb3VudChmcmFtZSk7CiAgICAgICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRF
dmVudHMpIHsKICAgICAgICAgICAgIGNoYXIqIGZyYW1lTmFtZSA9IGdldEZyYW1lTmFtZVN1aXRh
YmxlRm9yVGVzdFJlc3VsdCh2aWV3LCBmcmFtZSk7CiAgICAgICAgICAgICBwcmludGYoIiVzIC0g
aGFzICV1IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIGZyYW1lTmFtZSwgcGVuZGluZ0ZyYW1lVW5s
b2FkRXZlbnRzKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGFiNzBhM2UuLjNkYmI4OGMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDksMjAgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogCiBleHRlcm4gIkMiIHsKLWJvb2wgd2Via2l0X3dlYl9mcmFtZV9w
YXVzZV9hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwg
ZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLWJvb2wgd2Via2l0X3dlYl9mcmFt
ZV9wYXVzZV90cmFuc2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5h
bWUsIGRvdWJsZSB0aW1lLCBjb25zdCBnY2hhciogZWxlbWVudCk7Ci1ib29sIHdlYmtpdF93ZWJf
ZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdj
aGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOwotdW5zaWduZWQg
aW50IHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSk7Ci12b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25z
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci12b2lkIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2Fu
aW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIHZvaWQgd2Via2l0X2FwcGxpY2F0aW9u
X2NhY2hlX3NldF9tYXhpbXVtX3NpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpOwogdW5zaWdu
ZWQgaW50IHdlYmtpdF93b3JrZXJfdGhyZWFkX2NvdW50KHZvaWQpOwogdm9pZCB3ZWJraXRfd2hp
dGVfbGlzdF9hY2Nlc3NfZnJvbV9vcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29u
c3QgZ2NoYXIqIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhv
c3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotZ2NoYXIqIHdlYmtpdF93ZWJf
ZnJhbWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IGdjaGFyKiBpZCk7Ci1pbnQgd2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9m
b3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCwg
ZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKLWludCB3ZWJraXRfd2ViX2ZyYW1l
X251bWJlcl9vZl9wYWdlcyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCk7CiB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2V4ZWN1dGVfc2Ny
aXB0KFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yLCBsb25nIGNhbGxJZCwgY29uc3QgZ2No
YXIqIHNjcmlwdCk7Ci1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9tYXJrZXJfdGV4dF9mb3JfbGlz
dF9pdGVtKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgbm9kZU9iamVjdCk7CiB2b2lkIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2NvcmVfY29t
bWFuZF9ieV9uYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBuYW1lLCBj
b25zdCBnY2hhciogdmFsdWUpOwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2lzX2NvbW1hbmRf
ZW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSk7CiB9CkBA
IC0xMTksMTEgKzEwOSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNwbGF5KCkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZh
bHVlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCiB7CiAgICAgZ2NoYXIqIGlkR0NoYXIg
PSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhpZCk7Ci0gICAgZ2NoYXIqIGNvdW50ZXJWYWx1ZUdD
aGFyID0gd2Via2l0X3dlYl9mcmFtZV9jb3VudGVyX3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkKG1h
aW5GcmFtZSwgaWRHQ2hhcik7CisgICAgQ1N0cmluZyBjb3VudGVyVmFsdWVHQ2hhciA9IER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQobWFpbkZyYW1l
LCBpZEdDaGFyKTsKICAgICBnX2ZyZWUoaWRHQ2hhcik7Ci0gICAgaWYgKCFjb3VudGVyVmFsdWVH
Q2hhcikKKyAgICBpZiAoY291bnRlclZhbHVlR0NoYXIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb3VudGVyVmFsdWUoQWRvcHQsIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvdW50ZXJWYWx1ZUdDaGFyKSk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvdW50ZXJWYWx1ZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoY291bnRlclZhbHVlR0NoYXIuZGF0YSgpKSk7CiAgICAgcmV0dXJuIGNv
dW50ZXJWYWx1ZTsKIH0KIApAQCAtMTU0LDE0ICsxNDQsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKICAgICBnY2hhciog
aWRHQ2hhciA9IEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGlkKTsKLSAgICBpbnQgcGFnZU51bWJl
ciA9IHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1iZXJfZm9yX2VsZW1lbnRfYnlfaWQobWFpbkZy
YW1lLCBpZEdDaGFyLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOworICAgIGludCBwYWdlTnVtYmVy
ID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobWFp
bkZyYW1lLCBpZEdDaGFyLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwogICAgIGdfZnJlZShpZEdD
aGFyKTsKICAgICByZXR1cm4gcGFnZU51bWJlcjsKIH0KIAogaW50IExheW91dFRlc3RDb250cm9s
bGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsK
LSAgICByZXR1cm4gd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFnZXMobWFpbkZyYW1lLCBw
YWdlV2lkdGgsIHBhZ2VIZWlnaHQpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6Om51bWJlck9mUGFnZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9w
ZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdApAQCAt
NjIyLDcgKzYxMiw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hCiB7ICAgIAogICAgIGdjaGFy
KiBuYW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoYW5pbWF0aW9uTmFtZSk7CiAgICAgZ2No
YXIqIGVsZW1lbnQgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhlbGVtZW50SWQpOwotICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX2FuaW1hdGlvbihtYWluRnJh
bWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlQW5pbWF0aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwg
ZWxlbWVudCk7CiAgICAgZ19mcmVlKG5hbWUpOwogICAgIGdfZnJlZShlbGVtZW50KTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CkBAIC02MzIsNyArNjIyLDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVm
IHByb3AKIHsgICAgCiAgICAgZ2NoYXIqIG5hbWUgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwogICAgIGdjaGFyKiBlbGVtZW50ID0gSlNTdHJpbmdDb3B5VVRGOENTdHJp
bmcoZWxlbWVudElkKTsKLSAgICBib29sIHJldHVyblZhbHVlID0gd2Via2l0X3dlYl9mcmFtZV9w
YXVzZV90cmFuc2l0aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwgZWxlbWVudCk7CisgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9u
KG1haW5GcmFtZSwgbmFtZSwgdGltZSwgZWxlbWVudCk7CiAgICAgZ19mcmVlKG5hbWUpOwogICAg
IGdfZnJlZShlbGVtZW50KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CkBAIC02NDIsNyArNjMy
LDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxl
bWVudEF0VGltZShKU1N0cmluZ1JlZiBhbmltYXQKIHsgICAgCiAgICAgZ2NoYXIqIG5hbWUgPSBK
U1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhhbmltYXRpb25JZCk7CiAgICAgZ2NoYXIqIGVsZW1lbnQg
PSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhlbGVtZW50SWQpOwotICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3N2Z19hbmltYXRpb24obWFpbkZyYW1lLCBuYW1l
LCB0aW1lLCBlbGVtZW50KTsKKyAgICBib29sIHJldHVyblZhbHVlID0gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpwYXVzZVNWR0FuaW1hdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVsZW1l
bnQpOwogICAgIGdfZnJlZShuYW1lKTsKICAgICBnX2ZyZWUoZWxlbWVudCk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwpAQCAtNjUwLDE3ICs2NDAsMTcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShKU1N0cmluZ1JlZiBhbmlt
YXQKIAogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2Fj
dGl2ZV9hbmltYXRpb25zKG1haW5GcmFtZSk7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QKIHsKLSAgICB3
ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyhtYWluRnJhbWUpOworICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMobWFpbkZyYW1lKTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0g
ICAgd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhtYWluRnJhbWUpOworICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzdW1lQW5pbWF0aW9ucyhtYWluRnJhbWUpOwogfQog
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdS
ZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTc5MywxMiArNzgzLDExIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQogCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRl
bShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAogewot
ICAgIGdjaGFyKiBtYXJrZXJUZXh0R0NoYXIgPSB3ZWJraXRfd2ViX2ZyYW1lX21hcmtlcl90ZXh0
X2Zvcl9saXN0X2l0ZW0obWFpbkZyYW1lLCBjb250ZXh0LCBub2RlT2JqZWN0KTsKLSAgICBpZiAo
IW1hcmtlclRleHRHQ2hhcikKKyAgICBDU3RyaW5nIG1hcmtlclRleHRHQ2hhciA9IER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKG1haW5GcmFtZSwgY29udGV4
dCwgbm9kZU9iamVjdCk7CisgICAgaWYgKG1hcmtlclRleHRHQ2hhci5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWFya2VyVGV4dChB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWFya2VyVGV4dEdDaGFyKSk7Ci0g
ICAgZ19mcmVlKG1hcmtlclRleHRHQ2hhcik7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IG1hcmtlclRleHQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1hcmtlclRl
eHRHQ2hhci5kYXRhKCkpKTsKICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAotLSAKMS43LjEK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74123</attachid>
            <date>2010-11-17 09:01:47 -0800</date>
            <delta_ts>2010-12-03 12:36:27 -0800</delta_ts>
            <desc>v2.1 - rebase against trunk</desc>
            <filename>0001-Gtk-Populate-DumpRenderTreeSupportGtk.patch</filename>
            <type>text/plain</type>
            <size>41204</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA5ZGY2NjAzNGZkNTRiOGU0NDdmNmRiZjNkZGVmNzFiNWRkOTc1NTI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
TW9uLCA4IE5vdiAyMDEwIDEyOjIzOjE4IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gR3RrXSBQb3B1
bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODQyOQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ5
IEFudG9uaW8gR29tZXMgPGFnb21lc0ByaW0uY29tPgoKV2ViS2l0L2d0azoKCk1vdmVkIG1vc3Qg
b2YgdGhlIHdlYmtpdF93ZWJfZnJhbWUqIG1ldGhvZHMgZGVmaW5lZCBhcyBwcml2YXRlIEFQSXMg
aW4gd2Via2l0cHJpdmF0ZS5oCnRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0aywgYXMgc3RhdGlj
IGNsYXNzIG1ldGhvZHMuIFRoZXNlIG1ldGhvZHMgaGFkCm5vdCBnb25lIHRocm91Z2h0IHRoZSBm
b3JtYWwgQVBJIHJldmlldyBwcm9jZXNzIGFuZCB3ZXJlIG9ubHkgYmVpbmcgdXNlZCBieSBEUlQg
Zm9yIG5vdy4KClRoZSBlc3NlbmNlIG9mIGVhY2ggb3JpZ2luYWwgbWV0aG9kIG5hbWUgd2VyZSBr
ZXB0LiBGb3IgZXhhbXBsZQp3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbiguLi4pIHdhcyBy
ZW5hbWVkIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Q2hpbGRyZW4oLi4uKSwKYW5k
IHNvIG9uLgoKQWxzbyBzb21lIG9mIHRoZSBtZXRob2QgYm9kaWVzIHdlcmUgY2hhbmdlZCB0byBy
ZXR1cm4gbm9uLWdsaWIgdHlwZXMgKGdjaGFyKiAtPiBDU3RyaW5nKS4KCiogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6Z2V0Q2hpbGRyZW4pOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRJbm5lclRleHQp
OgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZSk6CihEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6bnVtYmVyT2ZQYWdlcyk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Omdl
dFBlbmRpbmdVbmxvYWRFdmVudENvdW50KToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1
c2VBbmltYXRpb24pOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZVRyYW5zaXRpb24p
OgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZVN2Z0FuaW1hdGlvbik6CihEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk6CihEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CihEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnN1c3BlbmRBbmltYXRpb25zKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
cmVzdW1lQW5pbWF0aW9ucyk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNsZWFyTWFpbkZy
YW1lTmFtZSk6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldEZvY3VzZWRBY2Nlc3NpYmxl
RWxlbWVudCk6CiogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6Ciog
d2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKiB3ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgoKV2Vi
S2l0VG9vbHM6CgpNYWRlIHRoZSBwcmV2aW91cyBjYWxscyB0byB3ZWJraXRfd2ViX2ZyYW1lKiBm
dW5jdGlvbnMgZGVmaW5lZCBhcyBwcml2YXRlCkFQSXMgaW4gd2Via2l0cHJpdmF0ZS5oIGdvIHRo
cm91Z2ggRFJUU3VwcG9ydEd0ay4KCiogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcDoKKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVu
dCk6CiogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKGR1bXBGcmFtZXNB
c1RleHQpOgoocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CihkdW1wKToKKHdlYlZp
ZXdEb2N1bWVudExvYWRGaW5pc2hlZCk6CiogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcDoKKExheW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JF
bGVtZW50QnlJZCk6CihMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKToKKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKToKKExheW91dFRlc3RD
b250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6CihMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKExh
eW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lKToK
KExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgooTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKExheW91dFRlc3RDb250cm9sbGVy
OjpyZXN1bWVBbmltYXRpb25zKToKKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0pOgotLS0KIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAzOCArKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwICAgIHwgIDI3MSArKysrKysrKysrKysrKysrKysrKwogLi4uL2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCAgfCAgIDI1ICsrCiBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAgICAgICAgICB8ICAgNDggLS0tLQog
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwICAgICAgICAgICAgICAgfCAgMjU3
IC0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyOSArKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckd0ay5jcHAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwICB8ICAgMjEgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAzOSArLS0KIDkgZmlsZXMgY2hhbmdl
ZCwgMzg3IGluc2VydGlvbnMoKyksIDM0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQ2MTE3NzUuLjk3
ZDEwMzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAtMTEtMDggIEFudG9uaW8gR29tZXMgIDxh
Z29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR3RrXSBQb3B1bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDI5CisKKyAgICAgICAg
TW92ZWQgbW9zdCBvZiB0aGUgd2Via2l0X3dlYl9mcmFtZSogbWV0aG9kcyBkZWZpbmVkIGFzIHBy
aXZhdGUgQVBJcyBpbiB3ZWJraXRwcml2YXRlLmgKKyAgICAgICAgdG8gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLCBhcyBzdGF0aWMgY2xhc3MgbWV0aG9kcy4gVGhlc2UgbWV0aG9kcyBoYWQKKyAg
ICAgICAgbm90IGdvbmUgdGhyb3VnaHQgdGhlIGZvcm1hbCBBUEkgcmV2aWV3IHByb2Nlc3MgYW5k
IHdlcmUgb25seSBiZWluZyB1c2VkIGJ5IERSVCBmb3Igbm93LgorCisgICAgICAgIFRoZSBlc3Nl
bmNlIG9mIGVhY2ggb3JpZ2luYWwgbWV0aG9kIG5hbWUgd2VyZSBrZXB0LiBGb3IgZXhhbXBsZQor
ICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbiguLi4pIHdhcyByZW5hbWVkIHRv
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Q2hpbGRyZW4oLi4uKSwKKyAgICAgICAgYW5k
IHNvIG9uLgorCisgICAgICAgIEFsc28gc29tZSBvZiB0aGUgbWV0aG9kIGJvZGllcyB3ZXJlIGNo
YW5nZWQgdG8gcmV0dXJuIG5vbi1nbGliIHR5cGVzIChnY2hhciogLT4gQ1N0cmluZykuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldElubmVyVGV4dCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlU3ZnQW5pbWF0aW9uKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y2xlYXJNYWluRnJhbWVOYW1lKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHA6CisKIDIwMTAtMTEtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcAppbmRleCBmMjM3ZTlkLi44MTNmZjNmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0xOSwx
OCArMTksMzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuaCIKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkFQSUNhc3Qu
aCIKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEd0ay5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkZyYW1lVHJlZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkpTRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0VsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0xvY2suaCIKICNpbmNsdWRlICJKU05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJQcmludENvbnRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaWYgRU5B
QkxFKFNWRykKKyNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
d2Via2l0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3
ZWJraXR3ZWJmcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZHJ0UnVu
ID0gZmFsc2U7CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19saW5rc0luY2x1ZGVk
SW5UYWJDaGFpbiA9IHRydWU7CkBAIC03NywzICs5NiwyNTUgQEAgSlNWYWx1ZVJlZiBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6Om5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWUKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJl
Y3QoeCwgeSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBpZ25vcmVDbGlwcGluZyk7CiAgICAg
cmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywganNEb2N1bWVudC0+Z2xvYmFsT2JqZWN0KCks
IG5vZGVzLmdldCgpKSk7CiB9CisKKy8qKgorICogZ2V0Q2hpbGRyZW46CisgKiBAZnJhbWU6IGEg
I1dlYktpdFdlYkZyYW1lCisgKgorICogUmV0dXJuIHZhbHVlOiBjaGlsZCBmcmFtZXMgb2YgQGZy
YW1lCisgKi8KK0dTTGlzdCogRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbihX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9GUkFNRShmcmFtZSksIDApOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
ZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdT
TGlzdCogY2hpbGRyZW4gPSAwOworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gY2hpbGQtPmxvYWRlcigp
OworICAgICAgICBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2Fz
dDxXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Kj4obG9hZGVyLT5jbGllbnQoKSk7CisgICAgICAg
IGlmIChjbGllbnQpCisgICAgICAgICAgY2hpbGRyZW4gPSBnX3NsaXN0X2FwcGVuZChjaGlsZHJl
biwgY2xpZW50LT53ZWJGcmFtZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2hpbGRyZW47Cit9
CisKKy8qKgorICogZ2V0SW5uZXJUZXh0OgorICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQor
ICoKKyAqIFJldHVybiB2YWx1ZTogaW5uZXIgdGV4dCBvZiBAZnJhbWUKKyAqLworQ1N0cmluZyBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldElubmVyVGV4dChXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFt
ZSksIENTdHJpbmcoIiIpKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIpOworCisgICAg
RnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisKKyAgICBpZiAodmlldyAmJiB2
aWV3LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAgIHZpZXctPmxheW91dCgpOworCisgICAgRWxl
bWVudCogZG9jdW1lbnRFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50LT5pbm5lclRleHQoKS51dGY4KCk7
Cit9CisKKy8qKgorICogZHVtcFJlbmRlclRyZWU6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZy
YW1lCisgKgorICogUmV0dXJuIHZhbHVlOiBOb24tcmVjdXJzaXZlIHJlbmRlciB0cmVlIGR1bXAg
b2YgQGZyYW1lCisgKi8KK0NTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVu
ZGVyVHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIENTdHJpbmcoIiIpKTsKKworICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAg
cmV0dXJuIENTdHJpbmcoIiIpOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCk7CisKKyAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAg
IHZpZXctPmxheW91dCgpOworCisgICAgcmV0dXJuIGV4dGVybmFsUmVwcmVzZW50YXRpb24oY29y
ZUZyYW1lKS51dGY4KCk7Cit9CisKKy8qKgorICogY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQ6
CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKiBAaWQ6IGFuIGVsZW1lbnQgSUQgc3Ry
aW5nCisgKgorICogUmV0dXJuIHZhbHVlOiBUaGUgY291bnRlciB2YWx1ZSBvZiBlbGVtZW50IEBp
ZCBpbiBAZnJhbWUKKyAqLworQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvdW50
ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciog
aWQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFt
ZSksIENTdHJpbmcoKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Cisg
ICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICBFbGVt
ZW50KiBjb3JlRWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
QXRvbWljU3RyaW5nKGlkKSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKKworICAgIHJldHVybiBjb3VudGVyVmFsdWVGb3JFbGVtZW50KGNvcmVFbGVt
ZW50KS51dGY4KCk7Cit9CisKKy8qKgorICogbnVtYmVyRm9yRWxlbWVudEJ5SWQKKyAqIEBmcmFt
ZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqIEBpZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKKyAqIEBw
YWdlV2lkdGg6IHdpZHRoIG9mIGEgcGFnZQorICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBvZiBhIHBh
Z2UKKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRoZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0aGUgc3Bl
Y2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQKKyAqLworaW50IER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7CisKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiAtMTsKKworICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoaWQpKTsKKyAgICBpZiAo
IWNvcmVFbGVtZW50KQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFByaW50Q29udGV4
dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZUVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgs
IHBhZ2VIZWlnaHQpKTsKK30KKworLyoqCisgKiBudW1iZXJPZlBhZ2VzCisgKiBAZnJhbWU6IGEg
I1dlYktpdFdlYkZyYW1lCisgKiBAcGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKKyAqIEBwYWdl
SGVpZ2h0OiBoZWlnaHQgb2YgYSBwYWdlCisgKgorICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVy
IG9mIHBhZ2VzIHRvIGJlIHByaW50ZWQuCisgKi8KK2ludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6Om51bWJlck9mUGFnZXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgs
IGZsb2F0IHBhZ2VIZWlnaHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9GUkFNRShmcmFtZSksIDApOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJh
bWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1
cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VX
aWR0aCwgcGFnZUhlaWdodCkpOworfQorCisvKioKKyAqIGdldFBlbmRpbmdVbmxvYWRFdmVudENv
dW50OgorICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQorICoKKyAqIFJldHVybiB2YWx1ZTog
bnVtYmVyIG9mIHBlbmRpbmcgdW5sb2FkIGV2ZW50cworICovCitndWludCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OmdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50KFdlYktpdFdlYkZyYW1lKiBm
cmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZy
YW1lKSwgMCk7CisKKyAgICByZXR1cm4gY29yZShmcmFtZSktPmRvbVdpbmRvdygpLT5wZW5kaW5n
VW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnBhdXNlQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogbmFt
ZSwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGNvcmUo
ZnJhbWUpKTsKKyAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxlbWVudCkpOworICAgIGlmICghY29y
ZUVsZW1lbnQgfHwgIWNvcmVFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5hbmltYXRpb24oKS0+cGF1c2VBbmltYXRpb25B
dFRpbWUoY29yZUVsZW1lbnQtPnJlbmRlcmVyKCksIEF0b21pY1N0cmluZyhuYW1lKSwgdGltZSk7
Cit9CisKK2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVzZVRyYW5zaXRpb24oV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3Qg
Y2hhciogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29yZShmcmFtZSkpOworICAgIEVsZW1lbnQq
IGNvcmVFbGVtZW50ID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0
b21pY1N0cmluZyhlbGVtZW50KSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVsZW1l
bnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29yZShm
cmFtZSktPmFuaW1hdGlvbigpLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZUVsZW1lbnQtPnJl
bmRlcmVyKCksIEF0b21pY1N0cmluZyhuYW1lKSwgdGltZSk7Cit9CisKK2Jvb2wgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpwYXVzZVNWR0FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IGNoYXIqIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVu
dElkKQoreworICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+c3ZnRXh0ZW5zaW9ucygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQo
QXRvbWljU3RyaW5nKGFuaW1hdGlvbklkKSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZH
U01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZUVsZW1lbnQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNhbXBs
ZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NNSUxFbGVtZW50Kj4o
Y29yZUVsZW1lbnQpLCB0aW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK0NTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0KQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0
KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVj
dCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAg
IHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oZWxlbWVudCkudXRmOCgpOwor
fQorCit1bnNpZ25lZCBpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gY29yZUZyYW1lLT5hbmltYXRpb24oKS0+bnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzdXNwZW5kQW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZXR1cm4gY29yZUZyYW1lLT5hbmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKK30K
Kwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIGNvcmVG
cmFtZS0+YW5pbWF0aW9uKCktPnJlc3VtZUFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmNsZWFyTWFpbkZyYW1lTmFtZShXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSk7
CisKKyAgICBjb3JlKGZyYW1lKS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKK30KKworQXRrT2JqZWN0
KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9GUkFNRShmcmFtZSksIDApOworCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorICAg
IGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgQVhP
YmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgV2ViS2l0V2ViRnJhbWVQ
cml2YXRlKiBwcml2ID0gZnJhbWUtPnByaXY7CisgICAgaWYgKCFwcml2LT5jb3JlRnJhbWUgfHwg
IXByaXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBS
ZW5kZXJWaWV3KiByb290ID0gdG9SZW5kZXJWaWV3KHByaXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKworICAg
IEF0a09iamVjdCogd3JhcHBlciA9ICBwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocm9vdCktPndyYXBwZXIoKTsKKyAgICBpZiAoIXdyYXBw
ZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHdlYmtpdF9hY2Nlc3NpYmxlX2dl
dF9mb2N1c2VkX2VsZW1lbnQoV0VCS0lUX0FDQ0VTU0lCTEUod3JhcHBlcikpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCAxN2U5ZjZkLi45YWRiMDFmIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmgKQEAgLTE5LDggKzE5LDE1IEBACiAjaWZuZGVmIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0a19oCiAjZGVmaW5lIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0a19oCiAKKwogI2luY2x1ZGUg
IkpTU3RyaW5nUmVmLmgiCiAKKyNpbmNsdWRlIDxhdGsvYXRrLmg+CisjaW5jbHVkZSA8Z2xpYi5o
PgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdHdlYmZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCiBjbGFzcyBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgewogCiBwdWJsaWM6CkBAIC0zNCw2ICs0MSwyNCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbGlua3NJbmNsdWRlZEluRm9jdXNDaGFpbigpOwogICAg
IHN0YXRpYyBKU1ZhbHVlUmVmIG5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdo
dCwgdW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKTsK
IAorICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVp
ciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgorICAgIHN0YXRpYyBHU0xpc3QqIGdldENoaWxkcmVu
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIFdURjo6Q1N0cmluZyBnZXRJbm5l
clRleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpDU3RyaW5nIGR1
bXBSZW5kZXJUcmVlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIFdURjo6Q1N0
cmluZyBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IGNoYXIqIGlkKTsKKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZs
b2F0IHBhZ2VIZWlnaHQpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7CisgICAgc3Rh
dGljIGd1aW50IGdldFBlbmRpbmdVbmxvYWRFdmVudENvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7CisgICAgc3RhdGljIGJvb2wgcGF1c2VBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7Cisg
ICAgc3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQpOworICAgIHN0
YXRpYyBib29sIHBhdXNlU1ZHQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Y2hhciogYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50SWQpOwor
ICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7
CisgICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhXZWJL
aXRXZWJGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1haW5GcmFtZU5hbWUo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2Vk
QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKwogcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBzX2RydFJ1bjsKICAgICBzdGF0aWMgYm9vbCBzX2xpbmtzSW5jbHVkZWRJ
blRhYkNoYWluOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5o
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDczODU2NzcuLjRiZWFm
NzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTMzNiw1NCArMzM2LDYgQEAgZXh0
ZXJuICJDIiB7CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3ZWJraXR3ZWJmcmFtZS5o
IG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIAotICAgIFdFQktJVF9BUEkgR1NM
aXN0KgotICAgIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuIChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBnY2hhcioKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9pbm5lcl90ZXh0IChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBn
Y2hhcioKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVyX3RyZWUgKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJh
bWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZCAoV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBnY2hhciogaWQpOwotCi0gICAgV0VCS0lUX0FQSSBpbnQKLSAgICB3ZWJraXRfd2Vi
X2ZyYW1lX3BhZ2VfbnVtYmVyX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgZ2NoYXIqIGlkLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpOwot
Ci0gICAgV0VCS0lUX0FQSSBpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdl
cyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdo
dCk7Ci0KLSAgICBXRUJLSVRfQVBJIGd1aW50Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVu
ZGluZ191bmxvYWRfZXZlbnRfY291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdF
QktJVF9BUEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5pbWF0aW9uKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBn
Y2hhciogZWxlbWVudCk7Ci0KLSAgICBXRUJLSVRfQVBJIGJvb2wKLSAgICB3ZWJraXRfd2ViX2Zy
YW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciog
bmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLQotICAgIFdFQktJVF9B
UEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vfc3ZnX2FuaW1hdGlvbihXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNv
bnN0IGdjaGFyKiBlbGVtZW50SWQpOwotCi0gICAgV0VCS0lUX0FQSSBnY2hhcioKLSAgICB3ZWJr
aXRfd2ViX2ZyYW1lX21hcmtlcl90ZXh0X2Zvcl9saXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZy
YW1lLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KTsKLQotICAg
IFdFQktJVF9BUEkgdW5zaWduZWQgaW50Ci0gICAgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2Zf
YWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdFQktJVF9B
UEkgdm9pZAotICAgIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIHZvaWQKLSAgICB3ZWJraXRfd2ViX2Zy
YW1lX3Jlc3VtZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJL
SVRfQVBJIHZvaWQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2NsZWFyX21haW5fZnJhbWVfbmFtZShX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBBdGtPYmplY3QqCi0gICAg
d2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3NpYmxlX2VsZW1lbnQoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKTsKLQogICAgIFdFQktJVF9BUEkgZ2NoYXIqCiAgICAgd2Via2l0X3dlYl92
aWV3X2dldF9zZWxlY3RlZF90ZXh0IChXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCA2M2EyNDEzLi5lYmIzZGMzIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC03MzcsMTU1ICs3MzcsNiBAQCBXZWJLaXRX
ZWJEYXRhU291cmNlKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wcm92aXNpb25hbF9kYXRhX3NvdXJj
ZShXZWJLaXRXZWJGcmFtZQogICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9kYXRhX3Nv
dXJjZV9mcm9tX2NvcmVfbG9hZGVyKGNvcmVGcmFtZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKSk7CiB9CiAKLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRy
ZW46Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVlOiBj
aGlsZCBmcmFtZXMgb2YgQGZyYW1lCi0gKi8KLUdTTGlzdCogd2Via2l0X3dlYl9mcmFtZV9nZXRf
Y2hpbGRyZW4oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJu
IE5VTEw7Ci0KLSAgICBHU0xpc3QqIGNoaWxkcmVuID0gTlVMTDsKLSAgICBmb3IgKEZyYW1lKiBj
aGlsZCA9IGNvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGNoaWxkLT5sb2FkZXIoKTsKLSAgICAgICAgV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCog
Y2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudCo+KGxvYWRlci0+
Y2xpZW50KCkpOwotICAgICAgICBpZiAoY2xpZW50KQotICAgICAgICAgIGNoaWxkcmVuID0gZ19z
bGlzdF9hcHBlbmQoY2hpbGRyZW4sIGNsaWVudC0+d2ViRnJhbWUoKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNoaWxkcmVuOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVy
X3RleHQ6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVl
OiBpbm5lciB0ZXh0IG9mIEBmcmFtZQotICovCi1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRf
aW5uZXJfdGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gZ19zdHJkdXAoIiIpOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3
KCk7Ci0KLSAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkpCi0gICAgICAgIHZp
ZXctPmxheW91dCgpOwotCi0gICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBTdHJpbmcgc3RyaW5nID0gIGRv
Y3VtZW50RWxlbWVudC0+aW5uZXJUZXh0KCk7Ci0gICAgcmV0dXJuIGdfc3RyZHVwKHN0cmluZy51
dGY4KCkuZGF0YSgpKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVy
X3RyZWU6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVl
OiBOb24tcmVjdXJzaXZlIHJlbmRlciB0cmVlIGR1bXAgb2YgQGZyYW1lCi0gKi8KLWdjaGFyKiB3
ZWJraXRfd2ViX2ZyYW1lX2R1bXBfcmVuZGVyX3RyZWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQot
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBO
VUxMKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKLQotICAgIEZyYW1lVmlldyog
dmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwotCi0gICAgaWYgKHZpZXcgJiYgdmlldy0+bGF5b3V0
UGVuZGluZygpKQotICAgICAgICB2aWV3LT5sYXlvdXQoKTsKLQotICAgIFN0cmluZyBzdHJpbmcg
PSBleHRlcm5hbFJlcHJlc2VudGF0aW9uKGNvcmVGcmFtZSk7Ci0gICAgcmV0dXJuIGdfc3RyZHVw
KHN0cmluZy51dGY4KCkuZGF0YSgpKTsKLX0KLQotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2Nv
dW50ZXJfdmFsdWVfZm9yX2VsZW1lbnRfYnlfaWQ6Ci0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZy
YW1lCi0gKiBAaWQ6IGFuIGVsZW1lbnQgSUQgc3RyaW5nCi0gKgotICogUmV0dXJuIHZhbHVlOiBU
aGUgY291bnRlciB2YWx1ZSBvZiBlbGVtZW50IEBpZCBpbiBAZnJhbWUKLSAqLwotZ2NoYXIqIHdl
YmtpdF93ZWJfZnJhbWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdl
dEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOwotICAgIGlmICghY29yZUVsZW1lbnQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIFN0cmluZyBjb3VudGVyVmFsdWUgPSBjb3VudGVyVmFsdWVG
b3JFbGVtZW50KGNvcmVFbGVtZW50KTsKLSAgICByZXR1cm4gZ19zdHJkdXAoY291bnRlclZhbHVl
LnV0ZjgoKS5kYXRhKCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1i
ZXJfZm9yX2VsZW1lbnRfYnlfaWQKLSAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqIEBp
ZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKLSAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEgcGFnZQot
ICogQHBhZ2VIZWlnaHQ6IGhlaWdodCBvZiBhIHBhZ2UKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IFRo
ZSBudW1iZXIgb2YgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgd2lsbCBiZSBwdXQK
LSAqLwotaW50IHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1iZXJfZm9yX2VsZW1lbnRfYnlfaWQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwg
ZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEVs
ZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJ
ZChBdG9taWNTdHJpbmcoaWQpKTsKLSAgICBpZiAoIWNvcmVFbGVtZW50KQotICAgICAgICByZXR1
cm4gLTE7Ci0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29y
ZUVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKLX0KLQotLyoqCi0g
KiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdlcwotICogQGZyYW1lOiBhICNXZWJLaXRX
ZWJGcmFtZQotICogQHBhZ2VXaWR0aDogd2lkdGggb2YgYSBwYWdlCi0gKiBAcGFnZUhlaWdodDog
aGVpZ2h0IG9mIGEgcGFnZQotICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBvZiBwYWdl
cyB0byBiZSBwcmludGVkLgotICovCi1pbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFn
ZXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWln
aHQpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFt
ZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlm
ICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gUHJpbnRDb250
ZXh0OjpudW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhl
aWdodCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BlbmRpbmdfdW5sb2Fk
X2V2ZW50X2NvdW50OgotICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQotICoKLSAqIFJldHVy
biB2YWx1ZTogbnVtYmVyIG9mIHBlbmRpbmcgdW5sb2FkIGV2ZW50cwotICovCi1ndWludCB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5nX3VubG9hZF9ldmVudF9jb3VudChXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFN
RShmcmFtZSksIDApOwotCi0gICAgcmV0dXJuIGNvcmUoZnJhbWUpLT5kb21XaW5kb3coKS0+cGVu
ZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGJlZ2luX3ByaW50
X2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBjb250ZXh0
LCBncG9pbnRlciB1c2VyX2RhdGEpCiB7CiAgICAgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQg
PSByZWludGVycHJldF9jYXN0PFByaW50Q29udGV4dCo+KHVzZXJfZGF0YSk7CkBAIC05OTYsODEg
Kzg0Nyw2IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCiAgICAgfQogfQogCi1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5pbWF0aW9uKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBnY2hhciogZWxlbWVudCkKLXsKLSAgICBBU1NFUlQoY29yZShmcmFtZSkpOwotICAgIEVsZW1l
bnQqIGNvcmVFbGVtZW50ID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlk
KEF0b21pY1N0cmluZyhlbGVtZW50KSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVs
ZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29y
ZShmcmFtZSktPmFuaW1hdGlvbigpLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlRWxlbWVudC0+
cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKLX0KLQotYm9vbCB3ZWJraXRf
d2ViX2ZyYW1lX3BhdXNlX3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KQotewotICAgIEFT
U0VSVChjb3JlKGZyYW1lKSk7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGZyYW1l
KS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGVsZW1lbnQpKTsKLSAg
ICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3JlKGZyYW1lKS0+YW5pbWF0aW9uKCktPnBhdXNl
VHJhbnNpdGlvbkF0VGltZShjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5h
bWUpLCB0aW1lKTsKLX0KLQotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3N2Z19hbmltYXRp
b24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogYW5pbWF0aW9uSWQsIGRvdWJs
ZSB0aW1lLCBjb25zdCBnY2hhciogZWxlbWVudElkKQotewotICAgIEFTU0VSVChjb3JlKGZyYW1l
KSk7Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlKGZyYW1l
KS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c3ZnRXh0ZW5z
aW9ucygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQg
PSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGFuaW1hdGlvbklkKSk7Ci0g
ICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29y
ZUVsZW1lbnQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0
YXRpY19jYXN0PFNWR1NNSUxFbGVtZW50Kj4oY29yZUVsZW1lbnQpLCB0aW1lKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX21h
cmtlcl90ZXh0X2Zvcl9saXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50
KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICByZXR1cm4gZ19zdHJkdXAobWFya2VyVGV4dEZvckxpc3RJdGVtKGVsZW1l
bnQpLnV0ZjgoKS5kYXRhKCkpOwotfQotCi11bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9mcmFtZV9u
dW1iZXJfb2ZfYWN0aXZlX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0g
Y29yZUZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpOwotfQotCi12b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7
Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvcmVGcmFtZS0+
YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgd2Via2l0X3dlYl9m
cmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25z
KCk7Ci19Ci0KIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9yZXNwb25zZV9taW1lX3R5cGUo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZy
YW1lKTsKQEAgLTEwOTUsMTMgKzg3MSw2IEBAIFdlYktpdExvYWRTdGF0dXMgd2Via2l0X3dlYl9m
cmFtZV9nZXRfbG9hZF9zdGF0dXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBw
cml2LT5sb2FkU3RhdHVzOwogfQogCi12b2lkIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9m
cmFtZV9uYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpKTsKLQotICAgIGNvcmUoZnJhbWUpLT50cmVlKCkt
PmNsZWFyTmFtZSgpOwotfQotCiB2b2lkIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2Jq
ZWN0cygpCiB7CiAgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKQEAgLTEx
MTksMzIgKzg4OCw2IEBAIGdzaXplIHdlYmtpdF9nY19jb3VudF9qYXZhc2NyaXB0X29iamVjdHMo
KQogCiB9CiAKLUF0a09iamVjdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3Np
YmxlX2VsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotI2lmIEhBVkUoQUND
RVNTSUJJTElUWSkKLSAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVk
KCkpCi0gICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKLQotICAg
IFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIGlmICghcHJp
di0+Y29yZUZyYW1lIHx8ICFwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiBOVUxMOwotCi0gICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhwcml2LT5j
b3JlRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCkpOwotICAgIGlmICghcm9vdCkKLSAgICAg
ICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSAgcHJpdi0+Y29yZUZy
YW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJvb3QpLT53cmFw
cGVyKCk7Ci0gICAgaWYgKCF3cmFwcGVyKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJl
dHVybiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZm9jdXNlZF9lbGVtZW50KFdFQktJVF9BQ0NFU1NJ
QkxFKHdyYXBwZXIpKTsKLSNlbHNlCi0gICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKLX0KLQogR3Rr
UG9saWN5VHlwZSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9ob3Jpem9udGFsX3Njcm9sbGJhcl9wb2xp
Y3koV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
NjYzOTM4OC4uYmMyMGExOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTExLTA4ICBBbnRv
bmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQy
OQorCisgICAgICAgIE1hZGUgdGhlIHByZXZpb3VzIGNhbGxzIHRvIHdlYmtpdF93ZWJfZnJhbWUq
IGZ1bmN0aW9ucyBkZWZpbmVkIGFzIHByaXZhdGUKKyAgICAgICAgQVBJcyBpbiB3ZWJraXRwcml2
YXRlLmggZ28gdGhyb3VnaCBEUlRTdXBwb3J0R3RrLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgor
ICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChkdW1w
KToKKyAgICAgICAgKHdlYlZpZXdEb2N1bWVudExvYWRGaW5pc2hlZCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmlt
YXRpb25Gb3JFbGVtZW50QXRUaW1lKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1
bWVBbmltYXRpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0pOgorCiAyMDEwLTExLTE3ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlzaEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
R3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckd0ay5jcHAKaW5kZXggYWI5ZjAyMS4uNTg5ZTUzYyAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJHdGsuY3BwCkBAIC0yOSwxNSArMjksMTIgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgorI2luY2x1ZGUgIldlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgogCiAjaW5jbHVkZSA8YXRrL2F0
ay5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CiAK
LWV4dGVybiAiQyIgewotZXh0ZXJuIEF0a09iamVjdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9j
dXNlZF9hY2Nlc3NpYmxlX2VsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKLX0KLQogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKIHsKIH0KQEAgLTU0LDcg
KzUxLDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCiB7Ci0gICAgQXRrT2JqZWN0
KiBhY2Nlc3NpYmxlID0gIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2ZvY3VzZWRfYWNjZXNzaWJsZV9l
bGVtZW50KG1haW5GcmFtZSk7CisgICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KG1haW5GcmFtZSk7
CiAgICAgaWYgKCFhY2Nlc3NpYmxlKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggNWFhNjFl
My4uMmZkNmFkNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1
bXBSZW5kZXJUcmVlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC02MiwxMyArNjIsOSBAQCBleHRlcm4gIkMiIHsKIGV4dGVybiBH
X0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RhcmdldChX
ZWJLaXRXZWJIaXN0b3J5SXRlbSopOwogZXh0ZXJuIGdib29sZWFuIHdlYmtpdF93ZWJfaGlzdG9y
eV9pdGVtX2lzX3RhcmdldF9pdGVtKFdlYktpdFdlYkhpc3RvcnlJdGVtKik7CiBleHRlcm4gR0xp
c3QqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9jaGlsZHJlbihXZWJLaXRXZWJIaXN0b3J5
SXRlbSopOwotZXh0ZXJuIEdTTGlzdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKLWV4dGVybiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRf
aW5uZXJfdGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotZXh0ZXJuIGdjaGFyKiB3ZWJraXRf
d2ViX2ZyYW1lX2R1bXBfcmVuZGVyX3RyZWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLWV4dGVy
biBndWludCB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5nX3VubG9hZF9ldmVudF9jb3VudChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwogZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19h
ZGRfZXh0cmFfcGx1Z2luX2RpcmVjdG9yeShXZWJLaXRXZWJWaWV3KiB2aWV3LCBjb25zdCBnY2hh
ciogZGlyZWN0b3J5KTsKIGV4dGVybiBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9u
c2VfbWltZV90eXBlKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci1leHRlcm4gdm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX2NsZWFyX21haW5fZnJhbWVfbmFtZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwor
ZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9ncm91cF9uYW1lKFdlYktpdFdlYlZpZXcq
IHZpZXcsIGNvbnN0IGdjaGFyKiBncm91cE5hbWUpOwogZXh0ZXJuIHZvaWQgd2Via2l0X3Jlc2V0
X29yaWdpbl9hY2Nlc3Nfd2hpdGVfbGlzdHMoKTsKIH0KIApAQCAtMjUwLDE3ICsyNDYsMTYgQEAg
c3RhdGljIGdjaGFyKiBkdW1wRnJhbWVzQXNUZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAg
ICAvLyBBZGQgaGVhZGVyIGZvciBhbGwgYnV0IHRoZSBtYWluIGZyYW1lLgogICAgIGJvb2wgaXNN
YWluRnJhbWUgPSAod2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKHdlYlZpZXcpID09IGZy
YW1lKTsKIAotICAgIGdjaGFyKiBpbm5lclRleHQgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9pbm5l
cl90ZXh0KGZyYW1lKTsKKyAgICBDU3RyaW5nIGlubmVyVGV4dCA9IER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Z2V0SW5uZXJUZXh0KGZyYW1lKTsKICAgICBpZiAoaXNNYWluRnJhbWUpCi0gICAg
ICAgIHJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiIsIGlubmVyVGV4dCk7CisgICAgICAg
IHJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiIsIGlubmVyVGV4dC5kYXRhKCkpOwogICAg
IGVsc2UgewogICAgICAgICBjb25zdCBnY2hhciogZnJhbWVOYW1lID0gd2Via2l0X3dlYl9mcmFt
ZV9nZXRfbmFtZShmcmFtZSk7Ci0gICAgICAgIHJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigiXG4t
LS0tLS0tLVxuRnJhbWU6ICclcydcbi0tLS0tLS0tXG4lc1xuIiwgZnJhbWVOYW1lLCBpbm5lclRl
eHQpOworICAgICAgICByZXN1bHQgPSBnX3N0cmR1cF9wcmludGYoIlxuLS0tLS0tLS1cbkZyYW1l
OiAnJXMnXG4tLS0tLS0tLVxuJXNcbiIsIGZyYW1lTmFtZSwgaW5uZXJUZXh0LmRhdGEoKSk7CiAg
ICAgfQotICAgIGdfZnJlZShpbm5lclRleHQpOwogCiAgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKLSAgICAgICAgR1NMaXN0KiBjaGlsZHJl
biA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKGZyYW1lKTsKKyAgICAgICAgR1NMaXN0
KiBjaGlsZHJlbiA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Q2hpbGRyZW4oZnJhbWUp
OwogICAgICAgICBmb3IgKEdTTGlzdCogY2hpbGQgPSBjaGlsZHJlbjsgY2hpbGQ7IGNoaWxkID0g
Z19zbGlzdF9uZXh0KGNoaWxkKSkKICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhyZXN1bHQsIGR1
bXBGcmFtZXNBc1RleHQoc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRnJhbWUqID4oY2hpbGQtPmRhdGEp
KSk7CiAgICAgICAgIGdfc2xpc3RfZnJlZShjaGlsZHJlbik7CkBAIC00MTksNyArNDE0LDcgQEAg
c3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgICAgICAg
ICAgICAgICJlZGl0aW5nLWJlaGF2aW9yIiwgV0VCS0lUX0VESVRJTkdfQkVIQVZJT1JfTUFDLAog
ICAgICAgICAgICAgICAgICBOVUxMKTsKIAotICAgIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFp
bl9mcmFtZV9uYW1lKG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpj
bGVhck1haW5GcmFtZU5hbWUobWFpbkZyYW1lKTsKIAogICAgIFdlYktpdFdlYkluc3BlY3Rvciog
aW5zcGVjdG9yID0gd2Via2l0X3dlYl92aWV3X2dldF9pbnNwZWN0b3Iod2ViVmlldyk7CiAgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKGluc3BlY3RvciksICJqYXZhc2NyaXB0LXByb2ZpbGluZy1l
bmFibGVkIiwgRkFMU0UsIE5VTEwpOwpAQCAtNTIwLDcgKzUxNSw3IEBAIHZvaWQgZHVtcCgpCiAg
ICAgICAgICAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCiAgICAgICAgICAgICAgICAg
Z3RrX21haW5faXRlcmF0aW9uKCk7CiAKLSAgICAgICAgICAgIHJlc3VsdCA9IHdlYmtpdF93ZWJf
ZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShtYWluRnJhbWUpOworICAgICAgICAgICAgcmVzdWx0ID0g
Z19zdHJkdXAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZShtYWluRnJh
bWUpLmRhdGEoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXJlc3VsdCkgewpAQCAtNzQ4
LDcgKzc0Myw3IEBAIHN0YXRpYyB2b2lkIHdlYlZpZXdEb2N1bWVudExvYWRGaW5pc2hlZChXZWJL
aXRXZWJWaWV3KiB2aWV3LCBXZWJLaXRXZWJGcmFtZSogZnJhCiAgICAgICAgIHByaW50ZigiJXMg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIiwgZnJhbWVOYW1lKTsKICAgICAgICAg
Z19mcmVlKGZyYW1lTmFtZSk7CiAgICAgfSBlbHNlIGlmICghZG9uZSkgewotICAgICAgICBndWlu
dCBwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5n
X3VubG9hZF9ldmVudF9jb3VudChmcmFtZSk7CisgICAgICAgIGd1aW50IHBlbmRpbmdGcmFtZVVu
bG9hZEV2ZW50cyA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0UGVuZGluZ1VubG9hZEV2
ZW50Q291bnQoZnJhbWUpOwogICAgICAgICBpZiAocGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKSB7
CiAgICAgICAgICAgICBjaGFyKiBmcmFtZU5hbWUgPSBnZXRGcmFtZU5hbWVTdWl0YWJsZUZvclRl
c3RSZXN1bHQodmlldywgZnJhbWUpOwogICAgICAgICAgICAgcHJpbnRmKCIlcyAtIGhhcyAldSBv
bnVubG9hZCBoYW5kbGVyKHMpXG4iLCBmcmFtZU5hbWUsIHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50
cyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAzOWZiMTE2Li4zNTY0YTBjIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKQEAgLTQ5LDIwICs0OSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dP
d25QdHIuaD4KIAogZXh0ZXJuICJDIiB7Ci1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5p
bWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0
aW1lLCBjb25zdCBnY2hhciogZWxlbWVudCk7Ci1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vf
dHJhbnNpdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBkb3Vi
bGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOwotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3Bh
dXNlX3N2Z19hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFt
ZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLXVuc2lnbmVkIGludCB3ZWJr
aXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpOwotdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3N1c3BlbmRfYW5pbWF0aW9ucyhXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpOwotdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3Jlc3VtZV9hbmltYXRpb25z
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CiB2b2lkIHdlYmtpdF9hcHBsaWNhdGlvbl9jYWNoZV9z
ZXRfbWF4aW11bV9zaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKIHVuc2lnbmVkIGludCB3
ZWJraXRfd29ya2VyX3RocmVhZF9jb3VudCh2b2lkKTsKIHZvaWQgd2Via2l0X3doaXRlX2xpc3Rf
YWNjZXNzX2Zyb21fb3JpZ2luKGNvbnN0IGdjaGFyKiBzb3VyY2VPcmlnaW4sIGNvbnN0IGdjaGFy
KiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Ib3N0LCBib29s
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2Nv
dW50ZXJfdmFsdWVfZm9yX2VsZW1lbnRfYnlfaWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBnY2hhciogaWQpOwotaW50IHdlYmtpdF93ZWJfZnJhbWVfcGFnZV9udW1iZXJfZm9yX2VsZW1l
bnRfYnlfaWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogaWQsIGZsb2F0IHBh
Z2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7Ci1pbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJf
b2ZfcGFnZXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBh
Z2VIZWlnaHQpOwogdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdChXZWJL
aXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvciwgbG9uZyBjYWxsSWQsIGNvbnN0IGdjaGFyKiBzY3Jp
cHQpOwotZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfbWFya2VyX3RleHRfZm9yX2xpc3RfaXRlbShX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5v
ZGVPYmplY3QpOwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9jb3JlX2NvbW1hbmRfYnlf
bmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSwgY29uc3QgZ2No
YXIqIHZhbHVlKTsKIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19pc19jb21tYW5kX2VuYWJsZWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUpOwogfQpAQCAtMTE5LDEx
ICsxMDksMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzcGxheSgpCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvdW50ZXJWYWx1ZUZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQogewogICAgIGdjaGFyKiBpZEdDaGFyID0gSlNTdHJp
bmdDb3B5VVRGOENTdHJpbmcoaWQpOwotICAgIGdjaGFyKiBjb3VudGVyVmFsdWVHQ2hhciA9IHdl
YmtpdF93ZWJfZnJhbWVfY291bnRlcl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZChtYWluRnJhbWUs
IGlkR0NoYXIpOworICAgIENTdHJpbmcgY291bnRlclZhbHVlR0NoYXIgPSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKG1haW5GcmFtZSwgaWRHQ2hh
cik7CiAgICAgZ19mcmVlKGlkR0NoYXIpOwotICAgIGlmICghY291bnRlclZhbHVlR0NoYXIpCisg
ICAgaWYgKGNvdW50ZXJWYWx1ZUdDaGFyLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gY291bnRlclZhbHVlKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb3VudGVyVmFsdWVHQ2hhcikpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBjb3VudGVyVmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGNvdW50ZXJWYWx1ZUdDaGFyLmRhdGEoKSkpOwogICAgIHJldHVybiBjb3VudGVyVmFs
dWU7CiB9CiAKQEAgLTE1MywxNCArMTQzLDE0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIGludCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBm
bG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCiB7CiAgICAgZ2NoYXIqIGlkR0NoYXIg
PSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhpZCk7Ci0gICAgaW50IHBhZ2VOdW1iZXIgPSB3ZWJr
aXRfd2ViX2ZyYW1lX3BhZ2VfbnVtYmVyX2Zvcl9lbGVtZW50X2J5X2lkKG1haW5GcmFtZSwgaWRH
Q2hhciwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKKyAgICBpbnQgcGFnZU51bWJlciA9IER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKG1haW5GcmFtZSwg
aWRHQ2hhciwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKICAgICBnX2ZyZWUoaWRHQ2hhcik7CiAg
ICAgcmV0dXJuIHBhZ2VOdW1iZXI7CiB9CiAKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVt
YmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VIZWlnaHQpCiB7Ci0gICAgcmV0
dXJuIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX3BhZ2VzKG1haW5GcmFtZSwgcGFnZVdpZHRo
LCBwYWdlSGVpZ2h0KTsKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1i
ZXJPZlBhZ2VzKG1haW5GcmFtZSwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0KTsKIH0KIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3QKQEAgLTYyMSw3ICs2
MTEsNyBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9u
RWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBhbmltYQogeyAgICAKICAgICBnY2hhciogbmFtZSA9
IEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGFuaW1hdGlvbk5hbWUpOwogICAgIGdjaGFyKiBlbGVt
ZW50ID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoZWxlbWVudElkKTsKLSAgICBib29sIHJldHVy
blZhbHVlID0gd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24obWFpbkZyYW1lLCBuYW1l
LCB0aW1lLCBlbGVtZW50KTsKKyAgICBib29sIHJldHVyblZhbHVlID0gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpwYXVzZUFuaW1hdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQp
OwogICAgIGdfZnJlZShuYW1lKTsKICAgICBnX2ZyZWUoZWxlbWVudCk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwpAQCAtNjMxLDcgKzYyMSw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wCiB7
ICAgIAogICAgIGdjaGFyKiBuYW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcocHJvcGVydHlO
YW1lKTsKICAgICBnY2hhciogZWxlbWVudCA9IEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGVsZW1l
bnRJZCk7Ci0gICAgYm9vbCByZXR1cm5WYWx1ZSA9IHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfdHJh
bnNpdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQpOworICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbihtYWluRnJh
bWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQpOwogICAgIGdfZnJlZShuYW1lKTsKICAgICBnX2ZyZWUo
ZWxlbWVudCk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwpAQCAtNjQxLDcgKzYzMSw3IEBAIGJv
b2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRp
bWUoSlNTdHJpbmdSZWYgYW5pbWF0CiB7ICAgIAogICAgIGdjaGFyKiBuYW1lID0gSlNTdHJpbmdD
b3B5VVRGOENTdHJpbmcoYW5pbWF0aW9uSWQpOwogICAgIGdjaGFyKiBlbGVtZW50ID0gSlNTdHJp
bmdDb3B5VVRGOENTdHJpbmcoZWxlbWVudElkKTsKLSAgICBib29sIHJldHVyblZhbHVlID0gd2Vi
a2l0X3dlYl9mcmFtZV9wYXVzZV9zdmdfYW5pbWF0aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwg
ZWxlbWVudCk7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6cGF1c2VTVkdBbmltYXRpb24obWFpbkZyYW1lLCBuYW1lLCB0aW1lLCBlbGVtZW50KTsKICAg
ICBnX2ZyZWUobmFtZSk7CiAgICAgZ19mcmVlKGVsZW1lbnQpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKQEAgLTY0OSwxNyArNjM5LDE3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNh
bXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUoSlNTdHJpbmdSZWYgYW5pbWF0CiAKIHVu
c2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBj
b25zdAogewotICAgIHJldHVybiB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5p
bWF0aW9ucyhtYWluRnJhbWUpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhtYWluRnJhbWUpOwogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0gICAgd2Via2l0X3dl
Yl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnN1c3BlbmRBbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAogewotICAgIHdlYmtp
dF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnJlc3VtZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKIH0KIAogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwg
SlNTdHJpbmdSZWYgdmFsdWUpCkBAIC03OTIsMTIgKzc4MiwxMSBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIAogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QKIHsKLSAgICBnY2hh
ciogbWFya2VyVGV4dEdDaGFyID0gd2Via2l0X3dlYl9mcmFtZV9tYXJrZXJfdGV4dF9mb3JfbGlz
dF9pdGVtKG1haW5GcmFtZSwgY29udGV4dCwgbm9kZU9iamVjdCk7Ci0gICAgaWYgKCFtYXJrZXJU
ZXh0R0NoYXIpCisgICAgQ1N0cmluZyBtYXJrZXJUZXh0R0NoYXIgPSBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6Om1hcmtlclRleHRGb3JMaXN0SXRlbShtYWluRnJhbWUsIGNvbnRleHQsIG5vZGVP
YmplY3QpOworICAgIGlmIChtYXJrZXJUZXh0R0NoYXIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1hcmtlclRleHQoQWRvcHQsIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1hcmtlclRleHRHQ2hhcikpOwotICAgIGdfZnJl
ZShtYXJrZXJUZXh0R0NoYXIpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJU
ZXh0KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtYXJrZXJUZXh0R0NoYXIu
ZGF0YSgpKSk7CiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKLS0gCjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75526</attachid>
            <date>2010-12-03 12:36:27 -0800</date>
            <delta_ts>2010-12-03 21:28:20 -0800</delta_ts>
            <desc>(committed r73325 - r=mrobinson) patch v2.3 - rebased to ToT</desc>
            <filename>0001-Gtk-Populate-DumpRenderTreeSupportGtk-https-bugs.web.patch</filename>
            <type>text/plain</type>
            <size>41200</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmZTA3YzRiOWI0ODFjMGYwMWQ5NDhkNGZmNGYwOTNjOWUzZDQ5ZWNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
TW9uLCA4IE5vdiAyMDEwIDEyOjIzOjE4IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gR3RrXSBQb3B1
bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4NDI5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KUGF0Y2ggYnkg
QW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgpXZWJLaXQvZ3RrOgoKTW92ZWQgbW9zdCBv
ZiB0aGUgd2Via2l0X3dlYl9mcmFtZSogbWV0aG9kcyBkZWZpbmVkIGFzIHByaXZhdGUgQVBJcyBp
biB3ZWJraXRwcml2YXRlLmgKdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLCBhcyBzdGF0aWMg
Y2xhc3MgbWV0aG9kcy4gVGhlc2UgbWV0aG9kcyBoYWQKbm90IGdvbmUgdGhyb3VnaHQgdGhlIGZv
cm1hbCBBUEkgcmV2aWV3IHByb2Nlc3MgYW5kIHdlcmUgb25seSBiZWluZyB1c2VkIGJ5IERSVCBm
b3Igbm93LgoKVGhlIGVzc2VuY2Ugb2YgZWFjaCBvcmlnaW5hbCBtZXRob2QgbmFtZSB3ZXJlIGtl
cHQuIEZvciBleGFtcGxlCndlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKC4uLikgd2FzIHJl
bmFtZWQgdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbiguLi4pLAphbmQg
c28gb24uCgpBbHNvIHNvbWUgb2YgdGhlIG1ldGhvZCBib2RpZXMgd2VyZSBjaGFuZ2VkIHRvIHJl
dHVybiBub24tZ2xpYiB0eXBlcyAoZ2NoYXIqIC0+IENTdHJpbmcpLgoKKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpnZXRDaGlsZHJlbik6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldElubmVyVGV4dCk6
CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlKToKKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOgooRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgooRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0
UGVuZGluZ1VubG9hZEV2ZW50Q291bnQpOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYXVz
ZUFuaW1hdGlvbik6CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbik6
CihEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlU3ZnQW5pbWF0aW9uKToKKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKToKKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMpOgooRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpy
ZXN1bWVBbmltYXRpb25zKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y2xlYXJNYWluRnJh
bWVOYW1lKToKKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9jdXNlZEFjY2Vzc2libGVF
bGVtZW50KToKKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKiB3
ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgoqIHdlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CgpXZWJL
aXRUb29sczoKCk1hZGUgdGhlIHByZXZpb3VzIGNhbGxzIHRvIHdlYmtpdF93ZWJfZnJhbWUqIGZ1
bmN0aW9ucyBkZWZpbmVkIGFzIHByaXZhdGUKQVBJcyBpbiB3ZWJraXRwcml2YXRlLmggZ28gdGhy
b3VnaCBEUlRTdXBwb3J0R3RrLgoKKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJHdGsuY3BwOgooQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50
KToKKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgooZHVtcEZyYW1lc0Fz
VGV4dCk6CihyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKGR1bXApOgood2ViVmll
d0RvY3VtZW50TG9hZEZpbmlzaGVkKToKKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvdW50ZXJWYWx1ZUZvckVs
ZW1lbnRCeUlkKToKKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMpOgooTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKExheW91dFRl
c3RDb250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOgooTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNhbXBsZVNWR0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUpOgoo
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CihMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnJlc3VtZUFuaW1hdGlvbnMpOgooTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JM
aXN0SXRlbSk6Ci0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDM4ICsrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAgICAgfCAgMjcxICsrKysrKysrKysrKysrKysrKysrCiAuLi4vZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oICB8ICAgMjUgKysKIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAgICAgICAgICAgICAgICAgIHwgICA0OCAtLS0tCiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgICAgICAgICAgICAgICB8ICAyNTcg
LS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI5ICsrCiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
R3RrLmNwcCAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgIHwgICAyMSArLQogLi4uL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgIDM5ICstLQogOSBmaWxlcyBjaGFuZ2Vk
LCAzODcgaW5zZXJ0aW9ucygrKSwgMzQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNzQ2MTNkZS4uYWMz
MjM5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0xMS0wOCAgQW50b25pbyBHb21lcyAgPGFn
b21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtHdGtdIFBvcHVsYXRlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0aworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MjkKKworICAgICAgICBN
b3ZlZCBtb3N0IG9mIHRoZSB3ZWJraXRfd2ViX2ZyYW1lKiBtZXRob2RzIGRlZmluZWQgYXMgcHJp
dmF0ZSBBUElzIGluIHdlYmtpdHByaXZhdGUuaAorICAgICAgICB0byBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGssIGFzIHN0YXRpYyBjbGFzcyBtZXRob2RzLiBUaGVzZSBtZXRob2RzIGhhZAorICAg
ICAgICBub3QgZ29uZSB0aHJvdWdodCB0aGUgZm9ybWFsIEFQSSByZXZpZXcgcHJvY2VzcyBhbmQg
d2VyZSBvbmx5IGJlaW5nIHVzZWQgYnkgRFJUIGZvciBub3cuCisKKyAgICAgICAgVGhlIGVzc2Vu
Y2Ugb2YgZWFjaCBvcmlnaW5hbCBtZXRob2QgbmFtZSB3ZXJlIGtlcHQuIEZvciBleGFtcGxlCisg
ICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuKC4uLikgd2FzIHJlbmFtZWQgdG8g
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbiguLi4pLAorICAgICAgICBhbmQg
c28gb24uCisKKyAgICAgICAgQWxzbyBzb21lIG9mIHRoZSBtZXRob2QgYm9kaWVzIHdlcmUgY2hh
bmdlZCB0byByZXR1cm4gbm9uLWdsaWIgdHlwZXMgKGdjaGFyKiAtPiBDU3RyaW5nKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldENoaWxkcmVuKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0SW5uZXJUZXh0KToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWUpOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXMpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRQZW5kaW5nVW5sb2FkRXZlbnRDb3VudCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9uKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VTdmdBbmltYXRpb24pOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVhck1haW5GcmFtZU5hbWUpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRGb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgor
ICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcDoKKwogMjAxMC0xMi0wMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
CmluZGV4IGYyMzdlOWQuLjgxM2ZmM2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTE5LDE4ICsxOSwzNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oIgogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaCIKKyNpbmNs
dWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlByaW50
Q29udGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCisjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgorI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKKyNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCisjZW5kaWYKICNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgorI2luY2x1ZGUgIndlYmtpdHdlYmZy
YW1lLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19kcnRSdW4gPSBmYWxzZTsK
IGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2xpbmtzSW5jbHVkZWRJblRhYkNoYWlu
ID0gdHJ1ZTsKQEAgLTc3LDMgKzk2LDI1NSBAQCBKU1ZhbHVlUmVmIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6bm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZQogICAg
IFJlZlB0cjxOb2RlTGlzdD4gbm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9yZUNsaXBwaW5nKTsKICAgICByZXR1cm4gdG9S
ZWYoZXhlYywgdG9KUyhleGVjLCBqc0RvY3VtZW50LT5nbG9iYWxPYmplY3QoKSwgbm9kZXMuZ2V0
KCkpKTsKIH0KKworLyoqCisgKiBnZXRDaGlsZHJlbjoKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2Vi
RnJhbWUKKyAqCisgKiBSZXR1cm4gdmFsdWU6IGNoaWxkIGZyYW1lcyBvZiBAZnJhbWUKKyAqLwor
R1NMaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldENoaWxkcmVuKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZS
QU1FKGZyYW1lKSwgMCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Cisg
ICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgR1NMaXN0KiBjaGls
ZHJlbiA9IDA7CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBjb3JlRnJhbWUtPnRyZWUoKS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBjaGlsZC0+bG9hZGVyKCk7CisgICAgICAg
IFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQqPihsb2FkZXItPmNsaWVudCgpKTsKKyAgICAgICAgaWYgKGNsaWVu
dCkKKyAgICAgICAgICBjaGlsZHJlbiA9IGdfc2xpc3RfYXBwZW5kKGNoaWxkcmVuLCBjbGllbnQt
PndlYkZyYW1lKCkpOworICAgIH0KKworICAgIHJldHVybiBjaGlsZHJlbjsKK30KKworLyoqCisg
KiBnZXRJbm5lclRleHQ6CisgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKgorICogUmV0
dXJuIHZhbHVlOiBpbm5lciB0ZXh0IG9mIEBmcmFtZQorICovCitDU3RyaW5nIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6Z2V0SW5uZXJUZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgQ1N0cmlu
ZygiIikpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICgh
Y29yZUZyYW1lKQorICAgICAgICByZXR1cm4gQ1N0cmluZygiIik7CisKKyAgICBGcmFtZVZpZXcq
IHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKKworICAgIGlmICh2aWV3ICYmIHZpZXctPmxheW91
dFBlbmRpbmcoKSkKKyAgICAgICAgdmlldy0+bGF5b3V0KCk7CisKKyAgICBFbGVtZW50KiBkb2N1
bWVudEVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwor
ICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQtPmlubmVyVGV4dCgpLnV0ZjgoKTsKK30KKworLyoq
CisgKiBkdW1wUmVuZGVyVHJlZToKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqCisg
KiBSZXR1cm4gdmFsdWU6IE5vbi1yZWN1cnNpdmUgcmVuZGVyIHRyZWUgZHVtcCBvZiBAZnJhbWUK
KyAqLworQ1N0cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0ZSQU1FKGZyYW1lKSwgQ1N0cmluZygiIikpOworCisgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gQ1N0
cmluZygiIik7CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKKwor
ICAgIGlmICh2aWV3ICYmIHZpZXctPmxheW91dFBlbmRpbmcoKSkKKyAgICAgICAgdmlldy0+bGF5
b3V0KCk7CisKKyAgICByZXR1cm4gZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjb3JlRnJhbWUpLnV0
ZjgoKTsKK30KKworLyoqCisgKiBjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZDoKKyAqIEBmcmFt
ZTogYSAjV2ViS2l0V2ViRnJhbWUKKyAqIEBpZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKKyAqCisg
KiBSZXR1cm4gdmFsdWU6IFRoZSBjb3VudGVyIHZhbHVlIG9mIGVsZW1lbnQgQGlkIGluIEBmcmFt
ZQorICovCitDU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y291bnRlclZhbHVlRm9y
RWxlbWVudEJ5SWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBpZCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgQ1N0cmlu
ZygpKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIEVsZW1lbnQqIGNvcmVF
bGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJp
bmcoaWQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50KQorICAgICAgICByZXR1cm4gQ1N0cmluZygp
OworCisgICAgcmV0dXJuIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQoY29yZUVsZW1lbnQpLnV0Zjgo
KTsKK30KKworLyoqCisgKiBudW1iZXJGb3JFbGVtZW50QnlJZAorICogQGZyYW1lOiBhICNXZWJL
aXRXZWJGcmFtZQorICogQGlkOiBhbiBlbGVtZW50IElEIHN0cmluZworICogQHBhZ2VXaWR0aDog
d2lkdGggb2YgYSBwYWdlCisgKiBAcGFnZUhlaWdodDogaGVpZ2h0IG9mIGEgcGFnZQorICoKKyAq
IFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBvZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxl
bWVudCB3aWxsIGJlIHB1dAorICovCitpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBp
ZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCAwKTsKKworICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50
KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhpZCkpOworICAgIGlmICghY29yZUVsZW1l
bnQpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVt
YmVyRm9yRWxlbWVudChjb3JlRWxlbWVudCwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdo
dCkpOworfQorCisvKioKKyAqIG51bWJlck9mUGFnZXMKKyAqIEBmcmFtZTogYSAjV2ViS2l0V2Vi
RnJhbWUKKyAqIEBwYWdlV2lkdGg6IHdpZHRoIG9mIGEgcGFnZQorICogQHBhZ2VIZWlnaHQ6IGhl
aWdodCBvZiBhIHBhZ2UKKyAqCisgKiBSZXR1cm4gdmFsdWU6IFRoZSBudW1iZXIgb2YgcGFnZXMg
dG8gYmUgcHJpbnRlZC4KKyAqLworaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVy
T2ZQYWdlcyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFn
ZUhlaWdodCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1F
KGZyYW1lKSwgMCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CisgICAg
aWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBQcmludENv
bnRleHQ6Om51bWJlck9mUGFnZXMoY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdl
SGVpZ2h0KSk7Cit9CisKKy8qKgorICogZ2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQ6CisgKiBA
ZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCisgKgorICogUmV0dXJuIHZhbHVlOiBudW1iZXIgb2Yg
cGVuZGluZyB1bmxvYWQgZXZlbnRzCisgKi8KK2d1aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpLCAwKTsK
KworICAgIHJldHVybiBjb3JlKGZyYW1lKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVu
dExpc3RlbmVycygpOworfQorCitib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VB
bmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgY2hhciogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoY29yZShmcmFtZSkpOwor
ICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVs
ZW1lbnRCeUlkKEF0b21pY1N0cmluZyhlbGVtZW50KSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8
fCAhY29yZUVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gY29yZShmcmFtZSktPmFuaW1hdGlvbigpLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3Jl
RWxlbWVudC0+cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKK30KKworYm9v
bCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhdXNlVHJhbnNpdGlvbihXZWJLaXRXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVt
ZW50KQoreworICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7CisgICAgRWxlbWVudCogY29yZUVsZW1l
bnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5n
KGVsZW1lbnQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb3JlKGZyYW1lKS0+YW5p
bWF0aW9uKCktPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSwg
QXRvbWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnBhdXNlU1ZHQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hh
ciogYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50SWQpCit7Cisg
ICAgQVNTRVJUKGNvcmUoZnJhbWUpKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwg
IWRvY3VtZW50LT5zdmdFeHRlbnNpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBF
bGVtZW50KiBjb3JlRWxlbWVudCA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJp
bmcoYW5pbWF0aW9uSWQpKTsKKyAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFTVkdTTUlMRWxlbWVu
dDo6aXNTTUlMRWxlbWVudChjb3JlRWxlbWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+c2FtcGxlQW5pbWF0aW9u
QXRUaW1lKGVsZW1lbnRJZCwgc3RhdGljX2Nhc3Q8U1ZHU01JTEVsZW1lbnQqPihjb3JlRWxlbWVu
dCksIHRpbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworQ1N0cmlu
ZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om1hcmtlclRleHRGb3JMaXN0SXRlbShXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmpl
Y3QpCit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQodG9KUyhleGVjLCBub2RlT2JqZWN0KSk7CisgICAg
aWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gQ1N0cmluZygpOworCisgICAgcmV0dXJuIFdl
YkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KS51dGY4KCk7Cit9CisKK3Vuc2ln
bmVkIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
ZnJhbWUpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsK
K30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnN1c3BlbmRBbmltYXRpb25zKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFt
ZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHJldHVybiBj
b3JlRnJhbWUtPmFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9ucygpOworfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzdW1lQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOworICAgIGlmICgh
Y29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gY29yZUZyYW1lLT5hbmlt
YXRpb24oKS0+cmVzdW1lQW5pbWF0aW9ucygpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Y2xlYXJNYWluRnJhbWVOYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpKTsKKworICAgIGNv
cmUoZnJhbWUpLT50cmVlKCktPmNsZWFyTmFtZSgpOworfQorCitBdGtPYmplY3QqIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6Z2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZy
YW1lKiBmcmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZS
QU1FKGZyYW1lKSwgMCk7CisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCisgICAgaWYgKCFBWE9i
amVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAgICAgICBBWE9iamVjdENhY2hl
OjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIHBy
aXYgPSBmcmFtZS0+cHJpdjsKKyAgICBpZiAoIXByaXYtPmNvcmVGcmFtZSB8fCAhcHJpdi0+Y29y
ZUZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlclZpZXcq
IHJvb3QgPSB0b1JlbmRlclZpZXcocHJpdi0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJl
cigpKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgQXRrT2JqZWN0
KiB3cmFwcGVyID0gIHByaXYtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgp
LT5nZXRPckNyZWF0ZShyb290KS0+d3JhcHBlcigpOworICAgIGlmICghd3JhcHBlcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2ZvY3VzZWRf
ZWxlbWVudChXRUJLSVRfQUNDRVNTSUJMRSh3cmFwcGVyKSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IDE3ZTlmNmQuLjlhZGIwMWYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysr
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApA
QCAtMTksOCArMTksMTUgQEAKICNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrX2gKICNk
ZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrX2gKIAorCiAjaW5jbHVkZSAiSlNTdHJpbmdS
ZWYuaCIKIAorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2ViZnJh
bWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKIGNsYXNzIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ayB7CiAKIHB1YmxpYzoKQEAgLTM0LDYgKzQxLDI0IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBsaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluKCk7CiAgICAgc3RhdGljIEpT
VmFsdWVSZWYgbm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2
YWx1ZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2lnbmVkIHJpZ2h0LCB1bnNpZ25l
ZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcpOwogCisgICAgLy8g
RklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMg
YmVlbiBkaXNjdXNzZWQuCisgICAgc3RhdGljIEdTTGlzdCogZ2V0Q2hpbGRyZW4oV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpDU3RyaW5nIGdldElubmVyVGV4dChXZWJL
aXRXZWJGcmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgZHVtcFJlbmRlclRy
ZWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpDU3RyaW5nIGNvdW50
ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciog
aWQpOworICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgY2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhl
aWdodCk7CisgICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKKyAgICBzdGF0aWMgZ3VpbnQg
Z2V0UGVuZGluZ1VubG9hZEV2ZW50Q291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKyAgICBz
dGF0aWMgYm9vbCBwYXVzZUFuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50KTsKKyAgICBzdGF0aWMg
Ym9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBu
YW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7CisgICAgc3RhdGljIGJvb2wg
cGF1c2VTVkdBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBhbmlt
YXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnRJZCk7CisgICAgc3RhdGlj
IFdURjo6Q1N0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KTsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpOworICAgIHN0YXRpYyB2b2lkIHN1c3BlbmRBbmltYXRpb25zKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSk7CisgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWFpbkZyYW1lTmFtZShXZWJLaXRXZWJG
cmFtZSogZnJhbWUpOworICAgIHN0YXRpYyBBdGtPYmplY3QqIGdldEZvY3VzZWRBY2Nlc3NpYmxl
RWxlbWVudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIHNfZHJ0UnVuOwogICAgIHN0YXRpYyBib29sIHNfbGlua3NJbmNsdWRlZEluVGFiQ2hhaW47
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggZTA5MGVkNC4uYzdlNzFlNiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtMzM4LDU0ICszMzgsNiBAQCBleHRlcm4gIkMiIHsK
IAogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVp
ciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgogCi0gICAgV0VCS0lUX0FQSSBHU0xpc3QqCi0gICAg
d2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4gKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci0K
LSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3Rl
eHQgKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAg
IHdlYmtpdF93ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZSAoV2ViS2l0V2ViRnJhbWUqIGZyYW1l
KTsKLQotICAgIFdFQktJVF9BUEkgZ2NoYXIqCi0gICAgd2Via2l0X3dlYl9mcmFtZV9jb3VudGVy
X3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkIChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdj
aGFyKiBpZCk7Ci0KLSAgICBXRUJLSVRfQVBJIGludAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGFn
ZV9udW1iZXJfZm9yX2VsZW1lbnRfYnlfaWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogaWQsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCk7Ci0KLSAgICBXRUJL
SVRfQVBJIGludAotICAgIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX3BhZ2VzKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKLQotICAg
IFdFQktJVF9BUEkgZ3VpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wZW5kaW5nX3VubG9h
ZF9ldmVudF9jb3VudChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSBi
b29sCi0gICAgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRpb24oV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVt
ZW50KTsKLQotICAgIFdFQktJVF9BUEkgYm9vbAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vf
dHJhbnNpdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBkb3Vi
bGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOwotCi0gICAgV0VCS0lUX0FQSSBib29sCi0g
ICAgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9zdmdfYW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgZ2NoYXIqIGFuaW1hdGlvbklkLCBkb3VibGUgdGltZSwgY29uc3QgZ2NoYXIq
IGVsZW1lbnRJZCk7Ci0KLSAgICBXRUJLSVRfQVBJIGdjaGFyKgotICAgIHdlYmtpdF93ZWJfZnJh
bWVfbWFya2VyX3RleHRfZm9yX2xpc3RfaXRlbShXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpOwotCi0gICAgV0VCS0lUX0FQ
SSB1bnNpZ25lZCBpbnQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9hY3RpdmVfYW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCi0gICAgV0VCS0lUX0FQSSB2b2lkCi0g
ICAgd2Via2l0X3dlYl9mcmFtZV9zdXNwZW5kX2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKTsKLQotICAgIFdFQktJVF9BUEkgdm9pZAotICAgIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1l
X2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLQotICAgIFdFQktJVF9BUEkgdm9p
ZAotICAgIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSk7Ci0KLSAgICBXRUJLSVRfQVBJIEF0a09iamVjdCoKLSAgICB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF9mb2N1c2VkX2FjY2Vzc2libGVfZWxlbWVudChXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOwotCiAgICAgV0VCS0lUX0FQSSBnY2hhcioKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
bGVjdGVkX3RleHQgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuY3BwCmluZGV4IDBlMGMzYzYuLmVkMTBlNDggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTc0MiwxNTUgKzc0Miw2IEBAIFdlYktpdFdlYkRhdGFTb3Vy
Y2UqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Byb3Zpc2lvbmFsX2RhdGFfc291cmNlKFdlYktpdFdl
YkZyYW1lCiAgICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2RhdGFfc291cmNlX2Zyb21f
Y29yZV9sb2FkZXIoY29yZUZyYW1lLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpKTsKIH0KIAotLyoqCi0gKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbjoKLSAqIEBm
cmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IGNoaWxkIGZyYW1l
cyBvZiBAZnJhbWUKLSAqLwotR1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbihX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gTlVMTDsKLQot
ICAgIEdTTGlzdCogY2hpbGRyZW4gPSBOVUxMOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29y
ZUZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gY2hpbGQt
PmxvYWRlcigpOwotICAgICAgICBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBz
dGF0aWNfY2FzdDxXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Kj4obG9hZGVyLT5jbGllbnQoKSk7
Ci0gICAgICAgIGlmIChjbGllbnQpCi0gICAgICAgICAgY2hpbGRyZW4gPSBnX3NsaXN0X2FwcGVu
ZChjaGlsZHJlbiwgY2xpZW50LT53ZWJGcmFtZSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2hp
bGRyZW47Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9nZXRfaW5uZXJfdGV4dDoKLSAq
IEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IGlubmVyIHRl
eHQgb2YgQGZyYW1lCi0gKi8KLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9pbm5lcl90ZXh0
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJL
SVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgTlVMTCk7Ci0KLSAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBnX3N0cmR1
cCgiIik7Ci0KLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKLQotICAg
IGlmICh2aWV3ICYmIHZpZXctPmxheW91dFBlbmRpbmcoKSkKLSAgICAgICAgdmlldy0+bGF5b3V0
KCk7Ci0KLSAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIFN0cmluZyBzdHJpbmcgPSAgZG9jdW1lbnRFbGVt
ZW50LT5pbm5lclRleHQoKTsKLSAgICByZXR1cm4gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRh
KCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZToKLSAq
IEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IE5vbi1yZWN1
cnNpdmUgcmVuZGVyIHRyZWUgZHVtcCBvZiBAZnJhbWUKLSAqLwotZ2NoYXIqIHdlYmtpdF93ZWJf
ZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSksIE5VTEwpOwotCi0g
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQot
ICAgICAgICByZXR1cm4gZ19zdHJkdXAoIiIpOwotCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gY29y
ZUZyYW1lLT52aWV3KCk7Ci0KLSAgICBpZiAodmlldyAmJiB2aWV3LT5sYXlvdXRQZW5kaW5nKCkp
Ci0gICAgICAgIHZpZXctPmxheW91dCgpOwotCi0gICAgU3RyaW5nIHN0cmluZyA9IGV4dGVybmFs
UmVwcmVzZW50YXRpb24oY29yZUZyYW1lKTsKLSAgICByZXR1cm4gZ19zdHJkdXAoc3RyaW5nLnV0
ZjgoKS5kYXRhKCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJfZnJhbWVfY291bnRlcl92YWx1
ZV9mb3JfZWxlbWVudF9ieV9pZDoKLSAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKLSAqIEBp
ZDogYW4gZWxlbWVudCBJRCBzdHJpbmcKLSAqCi0gKiBSZXR1cm4gdmFsdWU6IFRoZSBjb3VudGVy
IHZhbHVlIG9mIGVsZW1lbnQgQGlkIGluIEBmcmFtZQotICovCi1nY2hhciogd2Via2l0X3dlYl9m
cmFtZV9jb3VudGVyX3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgZ2NoYXIqIGlkKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBF
bGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5
SWQoQXRvbWljU3RyaW5nKGlkKSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgU3RyaW5nIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJWYWx1ZUZvckVsZW1lbnQo
Y29yZUVsZW1lbnQpOwotICAgIHJldHVybiBnX3N0cmR1cChjb3VudGVyVmFsdWUudXRmOCgpLmRh
dGEoKSk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9mb3JfZWxl
bWVudF9ieV9pZAotICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQotICogQGlkOiBhbiBlbGVt
ZW50IElEIHN0cmluZwotICogQHBhZ2VXaWR0aDogd2lkdGggb2YgYSBwYWdlCi0gKiBAcGFnZUhl
aWdodDogaGVpZ2h0IG9mIGEgcGFnZQotICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIG51bWJlciBv
ZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxlbWVudCB3aWxsIGJlIHB1dAotICovCi1pbnQg
d2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdl
SGVpZ2h0KQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUo
ZnJhbWUpLCAwKTsKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBp
ZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgRWxlbWVudCogY29yZUVs
ZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmlu
ZyhpZCkpOwotICAgIGlmICghY29yZUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBy
ZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChjb3JlRWxlbWVudCwgRmxv
YXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwotfQotCi0vKioKLSAqIHdlYmtpdF93ZWJf
ZnJhbWVfbnVtYmVyX29mX3BhZ2VzCi0gKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKiBA
cGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKLSAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2YgYSBw
YWdlCi0gKgotICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGJlIHByaW50
ZWQuCi0gKi8KLWludCB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9wYWdlcyhXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKLXsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7Ci0KLSAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0g
ICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFn
ZXMoY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7Ci19Ci0KLS8q
KgotICogd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVuZGluZ191bmxvYWRfZXZlbnRfY291bnQ6Ci0g
KiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCi0gKgotICogUmV0dXJuIHZhbHVlOiBudW1iZXIg
b2YgcGVuZGluZyB1bmxvYWQgZXZlbnRzCi0gKi8KLWd1aW50IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3BlbmRpbmdfdW5sb2FkX2V2ZW50X2NvdW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgMCk7Ci0K
LSAgICByZXR1cm4gY29yZShmcmFtZSktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRM
aXN0ZW5lcnMoKTsKLX0KLQogc3RhdGljIHZvaWQgYmVnaW5fcHJpbnRfY2FsbGJhY2soR3RrUHJp
bnRPcGVyYXRpb24qIG9wLCBHdGtQcmludENvbnRleHQqIGNvbnRleHQsIGdwb2ludGVyIHVzZXJf
ZGF0YSkKIHsKICAgICBQcmludENvbnRleHQqIHByaW50Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UHJpbnRDb250ZXh0Kj4odXNlcl9kYXRhKTsKQEAgLTEwMDEsODEgKzg1Miw2IEBAIHZvaWQg
d2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgfQogfQog
Ci1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2VfYW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBnY2hhciogZWxlbWVu
dCkKLXsKLSAgICBBU1NFUlQoY29yZShmcmFtZSkpOwotICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50
ID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhl
bGVtZW50KSk7Ci0gICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVsZW1lbnQtPnJlbmRlcmVy
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gY29yZShmcmFtZSktPmFuaW1h
dGlvbigpLT5wYXVzZUFuaW1hdGlvbkF0VGltZShjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSwgQXRv
bWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKLX0KLQotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNl
X3RyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91
YmxlIHRpbWUsIGNvbnN0IGdjaGFyKiBlbGVtZW50KQotewotICAgIEFTU0VSVChjb3JlKGZyYW1l
KSk7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+
Z2V0RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGVsZW1lbnQpKTsKLSAgICBpZiAoIWNvcmVFbGVt
ZW50IHx8ICFjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBjb3JlKGZyYW1lKS0+YW5pbWF0aW9uKCktPnBhdXNlVHJhbnNpdGlvbkF0VGlt
ZShjb3JlRWxlbWVudC0+cmVuZGVyZXIoKSwgQXRvbWljU3RyaW5nKG5hbWUpLCB0aW1lKTsKLX0K
LQotYm9vbCB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX3N2Z19hbmltYXRpb24oV2ViS2l0V2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBnY2hhciogYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lLCBjb25zdCBn
Y2hhciogZWxlbWVudElkKQotewotICAgIEFTU0VSVChjb3JlKGZyYW1lKSk7Ci0jaWYgRU5BQkxF
KFNWRykKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKTsK
LSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+c3ZnRXh0ZW5zaW9ucygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBkb2N1bWVudC0+Z2V0
RWxlbWVudEJ5SWQoQXRvbWljU3RyaW5nKGFuaW1hdGlvbklkKSk7Ci0gICAgaWYgKCFjb3JlRWxl
bWVudCB8fCAhU1ZHU01JTEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29yZUVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPnNhbXBsZUFuaW1hdGlvbkF0VGltZShlbGVtZW50SWQsIHN0YXRpY19jYXN0PFNWR1NN
SUxFbGVtZW50Kj4oY29yZUVsZW1lbnQpLCB0aW1lKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi19Ci0KLWdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX21hcmtlcl90ZXh0X2Zvcl9s
aXN0X2l0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNW
YWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
b250ZXh0KTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9k
ZU9iamVjdCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBy
ZXR1cm4gZ19zdHJkdXAobWFya2VyVGV4dEZvckxpc3RJdGVtKGVsZW1lbnQpLnV0ZjgoKS5kYXRh
KCkpOwotfQotCi11bnNpZ25lZCBpbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfYWN0aXZl
X2FuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gY29yZUZyYW1lLT5hbmlt
YXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
cmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwotfQotCi12b2lk
IHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSkKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3Jl
RnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvcmVGcmFtZS0+YW5pbWF0aW9uKCktPnN1
c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgd2Via2l0X3dlYl9mcmFtZV9yZXN1bWVfYW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKCk7Ci19Ci0KIGdjaGFy
KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9yZXNwb25zZV9taW1lX3R5cGUoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKQEAgLTExMDAs
MTMgKzg3Niw2IEBAIFdlYktpdExvYWRTdGF0dXMgd2Via2l0X3dlYl9mcmFtZV9nZXRfbG9hZF9z
dGF0dXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBwcml2LT5sb2FkU3RhdHVz
OwogfQogCi12b2lkIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
RlJBTUUoZnJhbWUpKTsKLQotICAgIGNvcmUoZnJhbWUpLT50cmVlKCktPmNsZWFyTmFtZSgpOwot
fQotCiB2b2lkIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0cygpCiB7CiAgICAg
Z2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKQEAgLTExMjQsMzIgKzg5Myw2IEBA
IGdzaXplIHdlYmtpdF9nY19jb3VudF9qYXZhc2NyaXB0X29iamVjdHMoKQogCiB9CiAKLUF0a09i
amVjdCogd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3NpYmxlX2VsZW1lbnQoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19XRUJfRlJBTUUoZnJhbWUpLCBOVUxMKTsKLQotI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKLSAg
ICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgIEFY
T2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxpdHkoKTsKLQotICAgIFdlYktpdFdlYkZyYW1l
UHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIGlmICghcHJpdi0+Y29yZUZyYW1lIHx8
ICFwcml2LT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0g
ICAgUmVuZGVyVmlldyogcm9vdCA9IHRvUmVuZGVyVmlldyhwcml2LT5jb3JlRnJhbWUtPmRvY3Vt
ZW50KCktPnJlbmRlcmVyKCkpOwotICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIE5VTEw7
Ci0KLSAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSAgcHJpdi0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJvb3QpLT53cmFwcGVyKCk7Ci0gICAgaWYg
KCF3cmFwcGVyKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiB3ZWJraXRfYWNj
ZXNzaWJsZV9nZXRfZm9jdXNlZF9lbGVtZW50KFdFQktJVF9BQ0NFU1NJQkxFKHdyYXBwZXIpKTsK
LSNlbHNlCi0gICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKLX0KLQogR3RrUG9saWN5VHlwZSB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF9ob3Jpem9udGFsX3Njcm9sbGJhcl9wb2xpY3koV2ViS2l0V2ViRnJh
bWUqIGZyYW1lKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJB
TUUoZnJhbWUpLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggY2Y5NGY3Ni4uNzBkN2Qw
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTExLTA4ICBBbnRvbmlvIEdvbWVzICA8YWdv
bWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQyOQorCisgICAgICAgIE1h
ZGUgdGhlIHByZXZpb3VzIGNhbGxzIHRvIHdlYmtpdF93ZWJfZnJhbWUqIGZ1bmN0aW9ucyBkZWZp
bmVkIGFzIHByaXZhdGUKKyAgICAgICAgQVBJcyBpbiB3ZWJraXRwcml2YXRlLmggZ28gdGhyb3Vn
aCBEUlRTdXBwb3J0R3RrLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLmNwcDoKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAocmVzZXRE
ZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChkdW1wKToKKyAgICAgICAgKHdl
YlZpZXdEb2N1bWVudExvYWRGaW5pc2hlZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50
QXRUaW1lKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRp
b25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgor
CiAyMDEwLTEyLTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzMyMTEuCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyR3RrLmNwcAppbmRleCBhYjlmMDIxLi41ODllNTNjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0
ay5jcHAKQEAgLTI5LDE1ICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW5jbHVkZSAiV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgiCiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KIAotZXh0
ZXJuICJDIiB7Ci1leHRlcm4gQXRrT2JqZWN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9mb2N1c2Vk
X2FjY2Vzc2libGVfZWxlbWVudChXZWJLaXRXZWJGcmFtZSopOwotfQotCiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQogewogfQpAQCAtNTQsNyArNTEs
NyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVt
ZW50QXRQb2ludChpbnQgeCwgaW50IHkpCiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKIHsKLSAgICBBdGtPYmplY3QqIGFj
Y2Vzc2libGUgPSAgd2Via2l0X3dlYl9mcmFtZV9nZXRfZm9jdXNlZF9hY2Nlc3NpYmxlX2VsZW1l
bnQobWFpbkZyYW1lKTsKKyAgICBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpnZXRGb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQobWFpbkZyYW1lKTsKICAg
ICBpZiAoIWFjY2Vzc2libGUpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMWZjYmM4Li45
ZjU1YzlhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAKQEAgLTYzLDEzICs2Myw5IEBAIGV4dGVybiAiQyIgewogZXh0ZXJuIEdfQ09O
U1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFyZ2V0KFdlYktp
dFdlYkhpc3RvcnlJdGVtKik7CiBleHRlcm4gZ2Jvb2xlYW4gd2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1faXNfdGFyZ2V0X2l0ZW0oV2ViS2l0V2ViSGlzdG9yeUl0ZW0qKTsKIGV4dGVybiBHTGlzdCog
d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2NoaWxkcmVuKFdlYktpdFdlYkhpc3RvcnlJdGVt
Kik7Ci1leHRlcm4gR1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbihXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpOwotZXh0ZXJuIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9pbm5l
cl90ZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7Ci1leHRlcm4gZ2NoYXIqIHdlYmtpdF93ZWJf
ZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotZXh0ZXJuIGd1
aW50IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BlbmRpbmdfdW5sb2FkX2V2ZW50X2NvdW50KFdlYktp
dFdlYkZyYW1lKiBmcmFtZSk7CiBleHRlcm4gdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2FkZF9l
eHRyYV9wbHVnaW5fZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqIHZpZXcsIGNvbnN0IGdjaGFyKiBk
aXJlY3RvcnkpOwogZXh0ZXJuIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9yZXNwb25zZV9t
aW1lX3R5cGUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKLWV4dGVybiB2b2lkIHdlYmtpdF93ZWJf
ZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CitleHRl
cm4gdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2dyb3VwX25hbWUoV2ViS2l0V2ViVmlldyogdmll
dywgY29uc3QgZ2NoYXIqIGdyb3VwTmFtZSk7CiBleHRlcm4gdm9pZCB3ZWJraXRfcmVzZXRfb3Jp
Z2luX2FjY2Vzc193aGl0ZV9saXN0cygpOwogfQogCkBAIC0yNTEsMTcgKzI0NywxNiBAQCBzdGF0
aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIC8v
IEFkZCBoZWFkZXIgZm9yIGFsbCBidXQgdGhlIG1haW4gZnJhbWUuCiAgICAgYm9vbCBpc01haW5G
cmFtZSA9ICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldykgPT0gZnJhbWUp
OwogCi0gICAgZ2NoYXIqIGlubmVyVGV4dCA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVyX3Rl
eHQoZnJhbWUpOworICAgIENTdHJpbmcgaW5uZXJUZXh0ID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpnZXRJbm5lclRleHQoZnJhbWUpOwogICAgIGlmIChpc01haW5GcmFtZSkKLSAgICAgICAg
cmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xuIiwgaW5uZXJUZXh0KTsKKyAgICAgICAgcmVz
dWx0ID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xuIiwgaW5uZXJUZXh0LmRhdGEoKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGNvbnN0IGdjaGFyKiBmcmFtZU5hbWUgPSB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF9uYW1lKGZyYW1lKTsKLSAgICAgICAgcmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCJcbi0tLS0t
LS0tXG5GcmFtZTogJyVzJ1xuLS0tLS0tLS1cbiVzXG4iLCBmcmFtZU5hbWUsIGlubmVyVGV4dCk7
CisgICAgICAgIHJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigiXG4tLS0tLS0tLVxuRnJhbWU6ICcl
cydcbi0tLS0tLS0tXG4lc1xuIiwgZnJhbWVOYW1lLCBpbm5lclRleHQuZGF0YSgpKTsKICAgICB9
Ci0gICAgZ19mcmVlKGlubmVyVGV4dCk7CiAKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgewotICAgICAgICBHU0xpc3QqIGNoaWxkcmVuID0g
d2Via2l0X3dlYl9mcmFtZV9nZXRfY2hpbGRyZW4oZnJhbWUpOworICAgICAgICBHU0xpc3QqIGNo
aWxkcmVuID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRDaGlsZHJlbihmcmFtZSk7CiAg
ICAgICAgIGZvciAoR1NMaXN0KiBjaGlsZCA9IGNoaWxkcmVuOyBjaGlsZDsgY2hpbGQgPSBnX3Ns
aXN0X25leHQoY2hpbGQpKQogICAgICAgICAgICAgYXBwZW5kU3RyaW5nKHJlc3VsdCwgZHVtcEZy
YW1lc0FzVGV4dChzdGF0aWNfY2FzdDxXZWJLaXRXZWJGcmFtZSogPihjaGlsZC0+ZGF0YSkpKTsK
ICAgICAgICAgZ19zbGlzdF9mcmVlKGNoaWxkcmVuKTsKQEAgLTQyMCw3ICs0MTUsNyBAQCBzdGF0
aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICAgICAgICAgICAg
ICAgImVkaXRpbmctYmVoYXZpb3IiLCBXRUJLSVRfRURJVElOR19CRUhBVklPUl9NQUMsCiAgICAg
ICAgICAgICAgICAgIE5VTEwpOwogCi0gICAgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9tYWluX2Zy
YW1lX25hbWUobWFpbkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNsZWFy
TWFpbkZyYW1lTmFtZShtYWluRnJhbWUpOwogCiAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNw
ZWN0b3IgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2luc3BlY3Rvcih3ZWJWaWV3KTsKICAgICBnX29i
amVjdF9zZXQoR19PQkpFQ1QoaW5zcGVjdG9yKSwgImphdmFzY3JpcHQtcHJvZmlsaW5nLWVuYWJs
ZWQiLCBGQUxTRSwgTlVMTCk7CkBAIC01MTcsNyArNTEyLDcgQEAgdm9pZCBkdW1wKCkKICAgICAg
ICAgICAgIHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKICAgICAgICAgICAgICAgICBndGtf
bWFpbl9pdGVyYXRpb24oKTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gd2Via2l0X3dlYl9mcmFt
ZV9kdW1wX3JlbmRlcl90cmVlKG1haW5GcmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSBnX3N0
cmR1cChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlKG1haW5GcmFtZSku
ZGF0YSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVzdWx0KSB7CkBAIC03NDUsNyAr
NzQwLDcgQEAgc3RhdGljIHZvaWQgd2ViVmlld0RvY3VtZW50TG9hZEZpbmlzaGVkKFdlYktpdFdl
YlZpZXcqIHZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmEKICAgICAgICAgcHJpbnRmKCIlcyAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lXG4iLCBmcmFtZU5hbWUpOwogICAgICAgICBnX2Zy
ZWUoZnJhbWVOYW1lKTsKICAgICB9IGVsc2UgaWYgKCFkb25lKSB7Ci0gICAgICAgIGd1aW50IHBl
bmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BlbmRpbmdfdW5s
b2FkX2V2ZW50X2NvdW50KGZyYW1lKTsKKyAgICAgICAgZ3VpbnQgcGVuZGluZ0ZyYW1lVW5sb2Fk
RXZlbnRzID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnZXRQZW5kaW5nVW5sb2FkRXZlbnRD
b3VudChmcmFtZSk7CiAgICAgICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpIHsKICAg
ICAgICAgICAgIGNoYXIqIGZyYW1lTmFtZSA9IGdldEZyYW1lTmFtZVN1aXRhYmxlRm9yVGVzdFJl
c3VsdCh2aWV3LCBmcmFtZSk7CiAgICAgICAgICAgICBwcmludGYoIiVzIC0gaGFzICV1IG9udW5s
b2FkIGhhbmRsZXIocylcbiIsIGZyYW1lTmFtZSwgcGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRzKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDRhZDc4MzMuLmM1MWViOTYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcApAQCAtNDksMjAgKzQ5LDEwIEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogCiBleHRlcm4gIkMiIHsKLWJvb2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV9hbmltYXRp
b24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogbmFtZSwgZG91YmxlIHRpbWUs
IGNvbnN0IGdjaGFyKiBlbGVtZW50KTsKLWJvb2wgd2Via2l0X3dlYl9mcmFtZV9wYXVzZV90cmFu
c2l0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG5hbWUsIGRvdWJsZSB0
aW1lLCBjb25zdCBnY2hhciogZWxlbWVudCk7Ci1ib29sIHdlYmtpdF93ZWJfZnJhbWVfcGF1c2Vf
c3ZnX2FuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgZ2NoYXIqIGVsZW1lbnQpOwotdW5zaWduZWQgaW50IHdlYmtpdF93
ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7Ci12b2lkIHdlYmtpdF93ZWJfZnJhbWVfc3VzcGVuZF9hbmltYXRpb25zKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSk7Ci12b2lkIHdlYmtpdF93ZWJfZnJhbWVfcmVzdW1lX2FuaW1hdGlvbnMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKIHZvaWQgd2Via2l0X2FwcGxpY2F0aW9uX2NhY2hlX3NldF9t
YXhpbXVtX3NpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpOwogdW5zaWduZWQgaW50IHdlYmtp
dF93b3JrZXJfdGhyZWFkX2NvdW50KHZvaWQpOwogdm9pZCB3ZWJraXRfd2hpdGVfbGlzdF9hY2Nl
c3NfZnJvbV9vcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIqIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwotZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfY291bnRl
cl92YWx1ZV9mb3JfZWxlbWVudF9ieV9pZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdj
aGFyKiBpZCk7Ci1pbnQgd2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9mb3JfZWxlbWVudF9i
eV9pZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCwgZmxvYXQgcGFnZVdp
ZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KTsKLWludCB3ZWJraXRfd2ViX2ZyYW1lX251bWJlcl9vZl9w
YWdlcyhXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhl
aWdodCk7CiB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2V4ZWN1dGVfc2NyaXB0KFdlYktpdFdl
Ykluc3BlY3RvciogaW5zcGVjdG9yLCBsb25nIGNhbGxJZCwgY29uc3QgZ2NoYXIqIHNjcmlwdCk7
Ci1nY2hhciogd2Via2l0X3dlYl9mcmFtZV9tYXJrZXJfdGV4dF9mb3JfbGlzdF9pdGVtKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9i
amVjdCk7CiB2b2lkIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2NvcmVfY29tbWFuZF9ieV9uYW1l
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBuYW1lLCBjb25zdCBnY2hhciog
dmFsdWUpOwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2lzX2NvbW1hbmRfZW5hYmxlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSk7CiB9CkBAIC0xMTksMTEgKzEw
OSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNwbGF5KCkKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVu
dEJ5SWQoSlNTdHJpbmdSZWYgaWQpCiB7CiAgICAgZ2NoYXIqIGlkR0NoYXIgPSBKU1N0cmluZ0Nv
cHlVVEY4Q1N0cmluZyhpZCk7Ci0gICAgZ2NoYXIqIGNvdW50ZXJWYWx1ZUdDaGFyID0gd2Via2l0
X3dlYl9mcmFtZV9jb3VudGVyX3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkKG1haW5GcmFtZSwgaWRH
Q2hhcik7CisgICAgQ1N0cmluZyBjb3VudGVyVmFsdWVHQ2hhciA9IER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQobWFpbkZyYW1lLCBpZEdDaGFyKTsK
ICAgICBnX2ZyZWUoaWRHQ2hhcik7Ci0gICAgaWYgKCFjb3VudGVyVmFsdWVHQ2hhcikKKyAgICBp
ZiAoY291bnRlclZhbHVlR0NoYXIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb3VudGVyVmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGNvdW50ZXJWYWx1ZUdDaGFyKSk7CisgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGNvdW50ZXJWYWx1ZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoY291bnRlclZhbHVlR0NoYXIuZGF0YSgpKSk7CiAgICAgcmV0dXJuIGNvdW50ZXJWYWx1ZTsK
IH0KIApAQCAtMTUzLDE0ICsxNDMsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogaW50IExheW91dFRlc3RD
b250cm9sbGVyOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0
IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKICAgICBnY2hhciogaWRHQ2hhciA9IEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKGlkKTsKLSAgICBpbnQgcGFnZU51bWJlciA9IHdlYmtpdF93
ZWJfZnJhbWVfcGFnZV9udW1iZXJfZm9yX2VsZW1lbnRfYnlfaWQobWFpbkZyYW1lLCBpZEdDaGFy
LCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOworICAgIGludCBwYWdlTnVtYmVyID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQobWFpbkZyYW1lLCBpZEdD
aGFyLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwogICAgIGdfZnJlZShpZEdDaGFyKTsKICAgICBy
ZXR1cm4gcGFnZU51bWJlcjsKIH0KIAogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJP
ZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aCwgZmxvYXQgcGFnZUhlaWdodCkKIHsKLSAgICByZXR1cm4g
d2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2ZfcGFnZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBh
Z2VIZWlnaHQpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9m
UGFnZXMobWFpbkZyYW1lLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpOwogfQogCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdApAQCAtNjI3LDcgKzYxNyw3
IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hCiB7ICAgIAogICAgIGdjaGFyKiBuYW1lID0gSlNT
dHJpbmdDb3B5VVRGOENTdHJpbmcoYW5pbWF0aW9uTmFtZSk7CiAgICAgZ2NoYXIqIGVsZW1lbnQg
PSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhlbGVtZW50SWQpOwotICAgIGJvb2wgcmV0dXJuVmFs
dWUgPSB3ZWJraXRfd2ViX2ZyYW1lX3BhdXNlX2FuaW1hdGlvbihtYWluRnJhbWUsIG5hbWUsIHRp
bWUsIGVsZW1lbnQpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnBhdXNlQW5pbWF0aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwgZWxlbWVudCk7CiAg
ICAgZ19mcmVlKG5hbWUpOwogICAgIGdfZnJlZShlbGVtZW50KTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CkBAIC02MzcsNyArNjI3LDcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3AKIHsgICAg
CiAgICAgZ2NoYXIqIG5hbWUgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhwcm9wZXJ0eU5hbWUp
OwogICAgIGdjaGFyKiBlbGVtZW50ID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoZWxlbWVudElk
KTsKLSAgICBib29sIHJldHVyblZhbHVlID0gd2Via2l0X3dlYl9mcmFtZV9wYXVzZV90cmFuc2l0
aW9uKG1haW5GcmFtZSwgbmFtZSwgdGltZSwgZWxlbWVudCk7CisgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGF1c2VUcmFuc2l0aW9uKG1haW5GcmFtZSwg
bmFtZSwgdGltZSwgZWxlbWVudCk7CiAgICAgZ19mcmVlKG5hbWUpOwogICAgIGdfZnJlZShlbGVt
ZW50KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CkBAIC02NDcsNyArNjM3LDcgQEAgYm9vbCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShK
U1N0cmluZ1JlZiBhbmltYXQKIHsgICAgCiAgICAgZ2NoYXIqIG5hbWUgPSBKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhhbmltYXRpb25JZCk7CiAgICAgZ2NoYXIqIGVsZW1lbnQgPSBKU1N0cmluZ0Nv
cHlVVEY4Q1N0cmluZyhlbGVtZW50SWQpOwotICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB3ZWJraXRf
d2ViX2ZyYW1lX3BhdXNlX3N2Z19hbmltYXRpb24obWFpbkZyYW1lLCBuYW1lLCB0aW1lLCBlbGVt
ZW50KTsKKyAgICBib29sIHJldHVyblZhbHVlID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpw
YXVzZVNWR0FuaW1hdGlvbihtYWluRnJhbWUsIG5hbWUsIHRpbWUsIGVsZW1lbnQpOwogICAgIGdf
ZnJlZShuYW1lKTsKICAgICBnX2ZyZWUoZWxlbWVudCk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwpAQCAtNjU1LDE3ICs2NDUsMTcgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxl
U1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZShKU1N0cmluZ1JlZiBhbmltYXQKIAogdW5zaWdu
ZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfZnJhbWVfbnVtYmVyX29mX2FjdGl2ZV9hbmltYXRp
b25zKG1haW5GcmFtZSk7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKG1haW5GcmFtZSk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKCkgY29uc3QKIHsKLSAgICB3ZWJraXRfd2ViX2Zy
YW1lX3N1c3BlbmRfYW5pbWF0aW9ucyhtYWluRnJhbWUpOworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6c3VzcGVuZEFuaW1hdGlvbnMobWFpbkZyYW1lKTsKIH0KIAogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpIGNvbnN0CiB7Ci0gICAgd2Via2l0X3dl
Yl9mcmFtZV9yZXN1bWVfYW5pbWF0aW9ucyhtYWluRnJhbWUpOworICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cmVzdW1lQW5pbWF0aW9ucyhtYWluRnJhbWUpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0
cmluZ1JlZiB2YWx1ZSkKQEAgLTc5OCwxMiArNzg4LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAogewotICAgIGdjaGFyKiBt
YXJrZXJUZXh0R0NoYXIgPSB3ZWJraXRfd2ViX2ZyYW1lX21hcmtlcl90ZXh0X2Zvcl9saXN0X2l0
ZW0obWFpbkZyYW1lLCBjb250ZXh0LCBub2RlT2JqZWN0KTsKLSAgICBpZiAoIW1hcmtlclRleHRH
Q2hhcikKKyAgICBDU3RyaW5nIG1hcmtlclRleHRHQ2hhciA9IER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVtKG1haW5GcmFtZSwgY29udGV4dCwgbm9kZU9iamVj
dCk7CisgICAgaWYgKG1hcmtlclRleHRHQ2hhci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWFya2VyVGV4dChBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWFya2VyVGV4dEdDaGFyKSk7Ci0gICAgZ19mcmVlKG1h
cmtlclRleHRHQ2hhcik7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1hcmtlclRleHQo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1hcmtlclRleHRHQ2hhci5kYXRh
KCkpKTsKICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75609</attachid>
            <date>2010-12-04 07:43:25 -0800</date>
            <delta_ts>2010-12-05 19:06:41 -0800</delta_ts>
            <desc>(committed r73348, r=mrobinson) patch 2 - v1</desc>
            <filename>0001-2010-12-04-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>13738</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwMWM3ZDdkNDlmMDcyOWIxYzA3MGE2MGMyZDQ3NTk4NzYwNDFiZTEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U2F0LCA0IERlYyAyMDEwIDEwOjM5OjU3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMi0w
NCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrIChQYXJ0IElJKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQyOQoKICAgICAgICBNb3ZlZCBtb3JlIHByaXZhdGUgbWV0aG9kIGRlY2xhcmVk
IHdpdGggV0VCS0lUX0FQSSB0bwogICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0aywgc2lu
Y2UgdGhleSB3ZXJlIG9ubHkgYmVpbmcgdXNlZCBieSBEUlQuCgogICAgICAgIFdlYktpdDoKCiAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgogICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6
CiAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZCk6CiAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdp
bik6CiAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3RzKToKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oOgogICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgogICAgICAgICogd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaDoKICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoK
CiAgICAgICAgV2ViS2l0VG9vbHM6CgogICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcDoKICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6
CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
OgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgogICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZXhlY0NvbW1hbmQpOgogICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNDb21tYW5kRW5hYmxlZCk6Ci0tLQogV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysr
KysrKysrKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
ICAgIHwgICAyOSArKysrKysrKysrKysrKysrKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCAgfCAgICA3ICsrKysrCiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcCAgICAgICAgICAgICAgICB8ICAgMTIgLS0tLS0tLS0KIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAgICAgICAgICAgICAgICAgIHwgICAxMiAtLS0t
LS0tLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAg
fCAgIDE3IC0tLS0tLS0tLS0tCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgIHwgICAgMyArLQogLi4uL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICA5ICsrLS0tLQogOSBmaWxlcyBj
aGFuZ2VkLCA3NyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGNiMmEwYjEu
LmM0MjRlZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMDQgIEFudG9uaW8gR29tZXMg
IDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR3RrXSBQb3B1bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgKFBhcnQg
SUkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQy
OQorCisgICAgICAgIE1vdmVkIG1vcmUgcHJpdmF0ZSBtZXRob2QgZGVjbGFyZWQgd2l0aCBXRUJL
SVRfQVBJIHRvCisgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0aywgc2luY2UgdGhleSB3
ZXJlIG9ubHkgYmVpbmcgdXNlZCBieSBEUlQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRl
Lmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDEwLTExLTA4ICBB
bnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDg2M2NlYjkuLjEwNjk0ZDAgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRm9jdXND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKQEAgLTM5LDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAjZW5kaWYKQEAg
LTM0OCwzICszNTAsMzAgQEAgQXRrT2JqZWN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Omdl
dEZvY3VzZWRBY2Nlc3NpYmxlRWxlbWVudChXZWJLaXRXZWJGcmFtZSoKICNlbmRpZgogfQogCit2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBuYW1lLCBjb25zdCBnY2hhciogdmFs
dWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1
ZSk7CisKKyAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworfQorCiti
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CisKKyAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChu
YW1lKS5pc0VuYWJsZWQoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Ondo
aXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3Qg
Z2NoYXIqIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3Qs
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit7CisgICAgU2VjdXJpdHlPcmlnaW46
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCit7CisgICAgU2VjdXJp
dHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworfQorCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRl
eCAyYTQ5OTRkLi5lZjU3YjE0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTU5LDYgKzU5LDEzIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBjbGVhck1haW5GcmFtZU5hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1l
KTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRGb2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKTsKIAorICAgIC8vIFdlYktpdFdlYlZpZXcKKyAgICBzdGF0aWMg
dm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29u
c3QgZ2NoYXIqIG5hbWUsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgaXND
b21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSk7
CisKKyAgICBzdGF0aWMgdm9pZCB3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IGdjaGFy
KiBzb3VyY2VPcmlnaW4sIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBn
Y2hhciogZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBzdGF0aWMgdm9pZCByZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKKwogcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBzX2RydFJ1bjsKICAgICBzdGF0aWMgYm9vbCBzX2xpbmtzSW5j
bHVkZWRJblRhYkNoYWluOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAppbmRleCA0ZWM2
MzYyLi4yMTJmMzMzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcApAQCAtNDMsNyAr
NDMsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgogI2luY2x1ZGUgIndlYmtpdG5ldHdv
cmtyZXNwb25zZS5oIgpAQCAtMzIzLDE3ICszMjIsNiBAQCB2b2lkIHdlYmtpdF9pbml0KCkKICAg
ICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09O
VEVOVF9ERUNPREVSKTsKIH0KIAotdm9pZCB3ZWJraXRfd2hpdGVfbGlzdF9hY2Nlc3NfZnJvbV9v
cmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpCi17Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmln
aW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKLX0KLQotdm9pZCB3ZWJraXRfcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0
ZV9saXN0cygpCi17Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpOwotfQotCi0KIHZvaWQgd2Via2l0V2ViVmlld0VudGVyRnVsbHNjcmVlbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCBj
N2U3MWU2Li4wYjU5NzQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0zMDEsMTIg
KzMwMSw2IEBAIGV4dGVybiAiQyIgewogICAgIEd0a01lbnUqCiAgICAgd2Via2l0X3dlYl92aWV3
X2dldF9jb250ZXh0X21lbnUoV2ViS2l0V2ViVmlldyopOwogCi0gICAgV0VCS0lUX0FQSSB2b2lk
Ci0gICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfY29yZV9jb21tYW5kX2J5X25hbWUoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7
Ci0KLSAgICBXRUJLSVRfQVBJIGdib29sZWFuCi0gICAgd2Via2l0X3dlYl92aWV3X2lzX2NvbW1h
bmRfZW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSk7Ci0K
ICAgICBXZWJLaXREb3dubG9hZCoKICAgICB3ZWJraXRfZG93bmxvYWRfbmV3X3dpdGhfaGFuZGxl
KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CiAKQEAg
LTM2OCwxMiArMzYyLDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBp
bnQKICAgICB3ZWJraXRfd29ya2VyX3RocmVhZF9jb3VudCgpOwogICAgIAotICAgIFdFQktJVF9B
UEkgdm9pZAotICAgIHdlYmtpdF93aGl0ZV9saXN0X2FjY2Vzc19mcm9tX29yaWdpbihjb25zdCBn
Y2hhciogc291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwgY29u
c3QgZ2NoYXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7Ci0gICAgCi0gICAgV0VCS0lUX0FQSSB2b2lkCi0gICAgd2Via2l0X3Jlc2V0X29yaWdpbl9h
Y2Nlc3Nfd2hpdGVfbGlzdHMoKTsKLQogICAgIC8vIFdlYktpdFdlYkRhdGFTb3VyY2UgcHJpdmF0
ZQogICAgIFdlYktpdFdlYkRhdGFTb3VyY2UqCiAgICAgd2Via2l0X3dlYl9kYXRhX3NvdXJjZV9u
ZXdfd2l0aF9sb2FkZXIoUGFzc1JlZlB0cjxXZWJLaXQ6OkRvY3VtZW50TG9hZGVyPik7CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDkwYmU5MzUuLjllN2YzYzEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC01MDI3LDIzICs1MDI3LDYgQEAgV2ViS2l0Q2Fj
aGVNb2RlbCB3ZWJraXRfZ2V0X2NhY2hlX21vZGVsKCkKICAgICByZXR1cm4gY2FjaGVNb2RlbDsK
IH0KIAotdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9jb3JlX2NvbW1hbmRfYnlfbmFtZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSwgY29uc3QgZ2NoYXIqIHZh
bHVlKQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKLSAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFs
dWUpOwotCi0gICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKLX0KLQot
Z2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2lzX2NvbW1hbmRfZW5hYmxlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChuYW1lLCBGQUxTRSk7Ci0KLSAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1l
KS5pc0VuYWJsZWQoKTsKLX0KLQogR3RrTWVudSogd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0
X21lbnUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkYThhMDkuLmNhNjk0
OGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTIsNiArMiwyMyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCisgICAgICAgIFtHdGtdIFBvcHVsYXRlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ayAoUGFydCBJSSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ4NDI5CisKKyAgICAgICAgTW92ZWQgbW9yZSBwcml2YXRlIG1ldGhvZCBkZWNsYXJlZCB3
aXRoIFdFQktJVF9BUEkgdG8KKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLCBzaW5j
ZSB0aGV5IHdlcmUgb25seSBiZWluZyB1c2VkIGJ5IERSVC4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChyZXNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNDb21tYW5k
RW5hYmxlZCk6CisKKzIwMTAtMTItMDQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZW1vdmVk
IGV4dGVybiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2dyb3VwX25hbWUgZnJvbSBndGsvRHVtcFJlbmRl
clRyZWUuY3BwCiAKICAgICAgICAgTWV0aG9kIHdhcyByZW1vdmVkIGJ5IGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzcxNjA0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA2MmJiMmQxLi44ZGZiZWNkIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAg
LTY1LDcgKzY1LDYgQEAgZXh0ZXJuIGdib29sZWFuIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2lz
X3RhcmdldF9pdGVtKFdlYktpdFdlYkhpc3RvcnlJdGVtKik7CiBleHRlcm4gR0xpc3QqIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX2dldF9jaGlsZHJlbihXZWJLaXRXZWJIaXN0b3J5SXRlbSopOwog
ZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19hZGRfZXh0cmFfcGx1Z2luX2RpcmVjdG9y
eShXZWJLaXRXZWJWaWV3KiB2aWV3LCBjb25zdCBnY2hhciogZGlyZWN0b3J5KTsKIGV4dGVybiBn
Y2hhciogd2Via2l0X3dlYl9mcmFtZV9nZXRfcmVzcG9uc2VfbWltZV90eXBlKFdlYktpdFdlYkZy
YW1lKiBmcmFtZSk7Ci1leHRlcm4gdm9pZCB3ZWJraXRfcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0
ZV9saXN0cygpOwogfQogCiB2b2xhdGlsZSBib29sIGRvbmU7CkBAIC00MjEsNyArNDIwLDcgQEAg
c3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpCiAKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgMS4wKTsKIAotICAgIHdlYmtpdF9y
ZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlX2xpc3RzKCk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKTsKIAogICAgIFdlYktpdFdlYkJh
Y2tGb3J3YXJkTGlzdCogbGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xp
c3Qod2ViVmlldyk7CiAgICAgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jbGVhcihsaXN0
KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkNjFjNjAuLjgzODc0ZjQgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcApAQCAtNTEsMTAgKzUxLDcgQEAKIGV4dGVybiAiQyIgewogdm9pZCB3ZWJraXRf
YXBwbGljYXRpb25fY2FjaGVfc2V0X21heGltdW1fc2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6
ZSk7CiB1bnNpZ25lZCBpbnQgd2Via2l0X3dvcmtlcl90aHJlYWRfY291bnQodm9pZCk7Ci12b2lk
IHdlYmtpdF93aGl0ZV9saXN0X2FjY2Vzc19mcm9tX29yaWdpbihjb25zdCBnY2hhciogc291cmNl
T3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgZ2NoYXIqIGRl
c3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB2b2lkIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX2V4ZWN1dGVfc2NyaXB0KFdlYktpdFdlYkluc3BlY3RvciogaW5z
cGVjdG9yLCBsb25nIGNhbGxJZCwgY29uc3QgZ2NoYXIqIHNjcmlwdCk7Ci12b2lkIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2NvcmVfY29tbWFuZF9ieV9uYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGNvbnN0IGdjaGFyKiBuYW1lLCBjb25zdCBnY2hhciogdmFsdWUpOwotZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2lzX2NvbW1hbmRfZW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnY2hhciogbmFtZSk7CiB9CiAKIExheW91dFRlc3RDb250cm9sbGVyOjp+TGF5b3V0VGVz
dENvbnRyb2xsZXIoKQpAQCAtMjc5LDcgKzI3Niw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdp
CiAgICAgZ2NoYXIqIHNvdXJjZU9yaWdpbkdDaGFyID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
c291cmNlT3JpZ2luKTsKICAgICBnY2hhciogcHJvdG9jb2xHQ2hhciA9IEpTU3RyaW5nQ29weVVU
RjhDU3RyaW5nKHByb3RvY29sKTsKICAgICBnY2hhciogaG9zdEdDaGFyID0gSlNTdHJpbmdDb3B5
VVRGOENTdHJpbmcoaG9zdCk7Ci0gICAgd2Via2l0X3doaXRlX2xpc3RfYWNjZXNzX2Zyb21fb3Jp
Z2luKHNvdXJjZU9yaWdpbkdDaGFyLCBwcm90b2NvbEdDaGFyLCBob3N0R0NoYXIsIGluY2x1ZGVT
dWJkb21haW5zKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OndoaXRlTGlzdEFjY2Vz
c0Zyb21PcmlnaW4oc291cmNlT3JpZ2luR0NoYXIsIHByb3RvY29sR0NoYXIsIGhvc3RHQ2hhciwg
aW5jbHVkZVN1YmRvbWFpbnMpOwogICAgIGdfZnJlZShzb3VyY2VPcmlnaW5HQ2hhcik7CiAgICAg
Z19mcmVlKHByb3RvY29sR0NoYXIpOwogICAgIGdfZnJlZShob3N0R0NoYXIpOwpAQCAtNTQ1LDcg
KzU0Miw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5n
UmVmIG5hbWUsIEpTU3RyaW5nUmVmIHZhbHVlKQogCiAgICAgZ2NoYXIqIGNOYW1lID0gSlNTdHJp
bmdDb3B5VVRGOENTdHJpbmcobmFtZSk7CiAgICAgZ2NoYXIqIGNWYWx1ZSA9IEpTU3RyaW5nQ29w
eVVURjhDU3RyaW5nKHZhbHVlKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9jb3JlX2Nv
bW1hbmRfYnlfbmFtZSh2aWV3LCBjTmFtZSwgY1ZhbHVlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSh2aWV3LCBjTmFtZSwgY1ZhbHVlKTsK
ICAgICBnX2ZyZWUoY05hbWUpOwogICAgIGdfZnJlZShjVmFsdWUpOwogfQpAQCAtNTYyLDcgKzU1
OSw3IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJp
bmdSZWYgbmFtZSkKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBnY2hhciogY05hbWUgPSBKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyhuYW1lKTsKLSAgICBnYm9vbGVhbiByZXN1bHQgPSB3ZWJraXRf
d2ViX3ZpZXdfaXNfY29tbWFuZF9lbmFibGVkKHZpZXcsIGNOYW1lKTsKKyAgICBib29sIHJlc3Vs
dCA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZCh2aWV3LCBjTmFt
ZSk7CiAgICAgZ19mcmVlKGNOYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotLSAKMS43LjEK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75905</attachid>
            <date>2010-12-08 08:01:48 -0800</date>
            <delta_ts>2010-12-08 09:49:18 -0800</delta_ts>
            <desc>(committed r73527 - r=mrobinson) patch 3 - v1</desc>
            <filename>0001-2010-12-08-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>11776</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA0MGVkNzhlZTA3MjNkNjQ1ZTYxOTE4ZGRhNzE5YjUyZTY3MmZhZDE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCA4IERlYyAyMDEwIDEwOjU4OjE5IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMi0w
OCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrIChwYXJ0IElJSSkKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg0MjkKCiAgICAgICAgV2ViS2l0L2d0azoKCiAgICAgICAgQWRqdXN0ZWQgc29t
ZSBjYWxsIHNpdGVzIG9mIHByZXZpb3VzbHkgaW50ZXJuYWwgQVBJIGRlY2xhcmVkCiAgICAgICAg
d2Via2l0cHJpdmF0ZS5oIHRoYXQgaGF2ZSBtb3ZlZCB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cDoKICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnY0NvbGxlY3RKYXZhc2NyaXB0
T2JqZWN0cyk6CiAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2NDb2xsZWN0SmF2
YXNjcmlwdE9iamVjdHNPbkFsdGVybmF0ZVRocmVhZCk6CiAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6Z2NDb3VudEphdmFzY3JpcHRPYmplY3RzKToKICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpsYXlvdXRGcmFtZSk6CiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRl
Lmg6CiAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgoKICAgICAgICBXZWJLaXRU
b29sczoKCiAgICAgICAgTW92ZWQgdGhlIGZvbGxvd2luZyBtZXRob2RzIGZyb20gd2Via2l0cHJp
dmF0ZS5oIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHB8aDoKICAgICAgICAqIHdlYmtp
dF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0czsKICAgICAgICAqIHdlYmtpdF9nY19jb2xs
ZWN0X2phdmFzY3JpcHRfb2JqZWN0c19vbl9hbHRlcm5hdGVfdGhyZWFkOwogICAgICAgICogd2Vi
a2l0X2djX2NvdW50X2phdmFzY3JpcHRfb2JqZWN0czsKICAgICAgICAqIHdlYmtpdF93ZWJfZnJh
bWVfbGF5b3V0LgoKICAgICAgICBUaGVzZSB3ZXJlIGFsbCBvbmx5IHVzZWQgYnkgR1RLKyBEUlQu
CgogICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKICAgICAgICAo
ZGlzcGF0Y2hFdmVudCk6CiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9sbGVy
R3RrLmNwcDoKICAgICAgICAoR0NDb250cm9sbGVyOjpjb2xsZWN0KToKICAgICAgICAoR0NDb250
cm9sbGVyOjpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgogICAgICAgIChHQ0NvbnRyb2xsZXI6
OmdldEpTT2JqZWN0Q291bnQpOgotLS0KIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrKysrKysrKysKIC4uLi9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwICAgIHwgICAzMCArKysrKysrKysrKysrKysr
KysKIC4uLi9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggIHwg
ICAgNiArKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAgICAg
ICAgICB8ICAgMTIgLS0tLS0tLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3Bw
ICAgICAgICAgICAgICAgfCAgIDMyIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysrKysrKysr
KwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCAgICAgfCAg
ICA0ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9sbGVyR3RrLmNw
cCB8ICAgMTQgKysrLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgNTUg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCA5ZThhY2I1Li5lYjk1Mjk4IDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDEwLTEyLTA4ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrIChwYXJ0IElJSSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDI5CisKKyAgICAgICAgQWRqdXN0ZWQgc29tZSBj
YWxsIHNpdGVzIG9mIHByZXZpb3VzbHkgaW50ZXJuYWwgQVBJIGRlY2xhcmVkCisgICAgICAgIHdl
YmtpdHByaXZhdGUuaCB0aGF0IGhhdmUgbW92ZWQgdG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2NDb2xsZWN0SmF2YXNjcmlw
dE9iamVjdHMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnY0NvbGxlY3RK
YXZhc2NyaXB0T2JqZWN0c09uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6Z2NDb3VudEphdmFzY3JpcHRPYmplY3RzKToKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6bGF5b3V0RnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRw
cml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKwogMjAxMC0x
Mi0wNyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5j
by51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
aW5kZXggMTA2OTRkMC4uODJhZWJjOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMjgsNyArMjgsOSBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlICJKU0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNM
b2NrLmgiCkBAIC0zNzcsMyArMzc5LDMxIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKQogICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmdjQ29sbGVjdEphdmFzY3JpcHRPYmplY3RzKCkKK3sKKyAgICBnY0NvbnRyb2xsZXIo
KS5nYXJiYWdlQ29sbGVjdE5vdygpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6Z2NDb2xsZWN0SmF2YXNjcmlwdE9iamVjdHNPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRV
bnRpbERvbmUpCit7CisgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0
ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0VW50aWxEb25lKTsKK30KKwordW5zaWduZWQgbG9uZyBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdjQ291bnRKYXZhc2NyaXB0T2JqZWN0cygpCit7Cisg
ICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgcmV0
dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5vYmplY3RDb3VudCgp
OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bGF5b3V0RnJhbWUoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWVWaWV3KiB2
aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47
CisKKyAgICB2aWV3LT5sYXlvdXQoKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGVmNTdiMTQuLjZkYjYyNjgg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuaApAQCAtNTgsMTEgKzU4LDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBy
ZXN1bWVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CiAgICAgc3RhdGljIHZvaWQg
Y2xlYXJNYWluRnJhbWVOYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSk7CiAgICAgc3RhdGljIEF0
a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSk7CisgICAgc3RhdGljIHZvaWQgbGF5b3V0RnJhbWUoV2ViS2l0V2ViRnJhbWUqKTsKIAogICAg
IC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5h
bWUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUsIGNvbnN0IGdjaGFy
KiB2YWx1ZSk7CiAgICAgc3RhdGljIGJvb2wgaXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSk7CiAKKyAgICAvLyBHQworICAgIHN0YXRpYyB2
b2lkIGdjQ29sbGVjdEphdmFzY3JpcHRPYmplY3RzKCk7CisgICAgc3RhdGljIHZvaWQgZ2NDb2xs
ZWN0SmF2YXNjcmlwdE9iamVjdHNPbkFsdGVybmF0ZVRocmVhZChib29sIHdhaXRVbnRpbERvbmUp
OworICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdjQ291bnRKYXZhc2NyaXB0T2JqZWN0cygpOwor
CiAgICAgc3RhdGljIHZvaWQgd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBnY2hhciog
c291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgZ2No
YXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAg
ICAgc3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAppbmRleCAwZjhkNzAwLi45YWJjZDlmIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCkBAIC0zNTEsMTUgKzM1MSw2IEBAIGV4dGVybiAiQyIgewogICAgIHdlYmtp
dF9oaXN0b3J5X2l0ZW1zKHZvaWQpOwogCiAgICAgV0VCS0lUX0FQSSB2b2lkCi0gICAgd2Via2l0
X2djX2NvbGxlY3RfamF2YXNjcmlwdF9vYmplY3RzKCk7Ci0KLSAgICBXRUJLSVRfQVBJIHZvaWQK
LSAgICB3ZWJraXRfZ2NfY29sbGVjdF9qYXZhc2NyaXB0X29iamVjdHNfb25fYWx0ZXJuYXRlX3Ro
cmVhZChnYm9vbGVhbiB3YWl0VW50aWxEb25lKTsKLQotICAgIFdFQktJVF9BUEkgZ3NpemUKLSAg
ICB3ZWJraXRfZ2NfY291bnRfamF2YXNjcmlwdF9vYmplY3RzKCk7Ci0KLSAgICBXRUJLSVRfQVBJ
IHZvaWQKICAgICB3ZWJraXRfYXBwbGljYXRpb25fY2FjaGVfc2V0X21heGltdW1fc2l6ZSh1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICBXRUJLSVRfQVBJIHVuc2lnbmVkIGludApAQCAt
MzcyLDkgKzM2Myw2IEBAIGV4dGVybiAiQyIgewogICAgIFdFQktJVF9BUEkgV2ViS2l0V2ViRGF0
YWJhc2UgKgogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZShXZWJL
aXRTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IGNoYXIqIGRhdGFiYXNlTmFt
ZSk7CiAKLSAgICBXRUJLSVRfQVBJIHZvaWQKLSAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChX
ZWJLaXRXZWJGcmFtZSogZnJhbWUpOwotCiAgICAgdm9pZCB3ZWJraXRXZWJWaWV3RW50ZXJGdWxs
c2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok5vZGUqIG5vZGUpOwogICAg
IHZvaWQgd2Via2l0V2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IGVkMTBlNDguLjEzMzQ0
YTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTQ3LDkgKzQ3LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgi
CiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNET01XaW5k
b3cuaCIKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKLSNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNs
dWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTg3NiwyMyArODc0LDYgQEAgV2ViS2l0TG9hZFN0YXR1cyB3
ZWJraXRfd2ViX2ZyYW1lX2dldF9sb2FkX3N0YXR1cyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAg
ICAgcmV0dXJuIHByaXYtPmxvYWRTdGF0dXM7CiB9CiAKLXZvaWQgd2Via2l0X2djX2NvbGxlY3Rf
amF2YXNjcmlwdF9vYmplY3RzKCkKLXsKLSAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVj
dE5vdygpOwotfQotCi12b2lkIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0c19v
bl9hbHRlcm5hdGVfdGhyZWFkKGdib29sZWFuIHdhaXRVbnRpbERvbmUpCi17Ci0gICAgZ2NDb250
cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyh3YWl0
VW50aWxEb25lKTsKLX0KLQotZ3NpemUgd2Via2l0X2djX2NvdW50X2phdmFzY3JpcHRfb2JqZWN0
cygpCi17Ci0gICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0gICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5vYmpl
Y3RDb3VudCgpOwotCi19Ci0KIEd0a1BvbGljeVR5cGUgd2Via2l0X3dlYl9mcmFtZV9nZXRfaG9y
aXpvbnRhbF9zY3JvbGxiYXJfcG9saWN5KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1FKGZyYW1lKSwgR1RLX1BPTElD
WV9BVVRPTUFUSUMpOwpAQCAtOTU5LDE5ICs5NDAsNiBAQCBXZWJLaXRTZWN1cml0eU9yaWdpbiog
d2Via2l0X3dlYl9mcmFtZV9nZXRfc2VjdXJpdHlfb3JpZ2luKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZQogICAgIHJldHVybiBwcml2LT5vcmlnaW47CiB9CiAKLXZvaWQgd2Via2l0X3dlYl9mcmFtZV9s
YXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
RnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB2aWV3LT5sYXlvdXQoKTsKLX0KLQogLyoqCiAgKiB3ZWJraXRf
d2ViX2ZyYW1lX2dldF9uZXR3b3JrX3Jlc3BvbnNlOgogICogQGZyYW1lOiBhICNXZWJLaXRXZWJG
cmFtZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDljYWJjMDguLjYxMjgxZDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAx
MC0xMi0wOCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIFBvcHVsYXRlIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ayAocGFydCBJSUkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODQyOQorCisgICAgICAgIE1vdmVkIHRoZSBmb2xsb3dpbmcg
bWV0aG9kcyBmcm9tIHdlYmtpdHByaXZhdGUuaCB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwfGg6CisgICAgICAgICogd2Via2l0X2djX2NvbGxlY3RfamF2YXNjcmlwdF9vYmplY3RzOwor
ICAgICAgICAqIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0c19vbl9hbHRlcm5h
dGVfdGhyZWFkOworICAgICAgICAqIHdlYmtpdF9nY19jb3VudF9qYXZhc2NyaXB0X29iamVjdHM7
CisgICAgICAgICogd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQuCisKKyAgICAgICAgVGhlc2Ugd2Vy
ZSBhbGwgb25seSB1c2VkIGJ5IEdUSysgRFJULgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Z3RrL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGRpc3BhdGNoRXZlbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoR0NDb250
cm9sbGVyOjpjb2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdE9uQWx0ZXJu
YXRlVGhyZWFkKToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNPYmplY3RDb3VudCk6CisK
IDIwMTAtMTItMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9FdmVudFNlbmRlci5jcHAKaW5kZXggNmU1ZmE1Zi4uYjg0NDU1OCAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgi
CisjaW5jbHVkZSAiV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgiCiAK
ICNpbmNsdWRlIDxHdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNP
YmplY3RSZWYuaD4KQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogZXh0
ZXJuICJDIiB7Ci0gICAgZXh0ZXJuIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKTsKICAgICBleHRlcm4gR3RrTWVudSogd2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0X21lbnUoV2ViS2l0V2ViVmlldyopOwogfQogCkBAIC00NDMsNyArNDQzLDcgQEAg
c3RhdGljIHZvaWQgc2VuZE9yUXVldWVFdmVudChHZGtFdmVudCogZXZlbnQsIGJvb2wgc2hvdWxk
UmVwbGF5U2F2ZWRFdmVudHMpCiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnQoR2RrRXZlbnQq
IGV2ZW50KQogewotICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFtZSk7CisgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpsYXlvdXRGcmFtZShtYWluRnJhbWUpOwogICAgIFdl
YktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJh
bWUpOwogICAgIGlmICghdmlldykgewogICAgICAgICBnZGtfZXZlbnRfZnJlZShldmVudCk7CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvR0NDb250cm9sbGVyR3Rr
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3Bw
CmluZGV4IDg3ZWI0MTMuLjRlYjVkNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9HQ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC0yOSwyNiArMjksMjIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIldl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgorCiAjaW5jbHVkZSA8Z2xp
Yi5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KIAotZXh0ZXJuICJDIiB7Ci1leHRlcm4g
dm9pZCB3ZWJraXRfZ2NfY29sbGVjdF9qYXZhc2NyaXB0X29iamVjdHMoKTsKLWV4dGVybiB2b2lk
IHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0c19vbl9hbHRlcm5hdGVfdGhyZWFk
KGdib29sZWFuIHdhaXRVbnRpbERvbmUpOwotZXh0ZXJuIGdzaXplIHdlYmtpdF9nY19jb3VudF9q
YXZhc2NyaXB0X29iamVjdHMoKTsKLX0KLQogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3QoKSBj
b25zdAogewotICAgIHdlYmtpdF9nY19jb2xsZWN0X2phdmFzY3JpcHRfb2JqZWN0cygpOworICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2NDb2xsZWN0SmF2YXNjcmlwdE9iamVjdHMoKTsK
IH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZChib29sIHdh
aXRVbnRpbERvbmUpIGNvbnN0CiB7Ci0gICAgd2Via2l0X2djX2NvbGxlY3RfamF2YXNjcmlwdF9v
YmplY3RzX29uX2FsdGVybmF0ZV90aHJlYWQod2FpdFVudGlsRG9uZSk7CisgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpnY0NvbGxlY3RKYXZhc2NyaXB0T2JqZWN0c09uQWx0ZXJuYXRlVGhy
ZWFkKHdhaXRVbnRpbERvbmUpOwogfQogCiBzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVj
dENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2Via2l0X2djX2NvdW50X2phdmFzY3JpcHRf
b2JqZWN0cygpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdjQ291bnRK
YXZhc2NyaXB0T2JqZWN0cygpOwogfQotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76057</attachid>
            <date>2010-12-09 06:54:29 -0800</date>
            <delta_ts>2010-12-09 09:48:49 -0800</delta_ts>
            <desc>patch 4 - v1</desc>
            <filename>0001-2010-12-09-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>9026</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmNWM0NjVhMDczMjUyZGJkMjAxMTZjOWFlNDEyMzkwNmU1MTlhMWQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VGh1LCA5IERlYyAyMDEwIDA5OjUxOjU2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMi0w
OSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrIChwYXJ0IElWKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQyOQoKICAgICAgICBXZWJLaXQvZ3RrOgogICAgICAgIE1vdmVkIGFsc28gd2Vi
a2l0X3dvcmtlcl90aHJlYWRfY291bnQoKSB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGssCiAg
ICAgICAgc2luY2UgaXQgd2FzIG9ubHkgdXNlZCBieSBEUlQgZm9yIG5vdy4KCiAgICAgICAgU2lu
Y2UgdGhpcyBtZXRob2Qgd2FzIHRoZSBvbmx5IG9uZSBpbiB3ZWJraXR3b3JrZXIuY3BwLCB0aGUg
ZmlsZSB3YXMKICAgICAgICBhbHNvIHJlbW92ZWQuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06
CiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgog
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KToKICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgogICAgICAg
ICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKICAgICAgICAqIHdlYmtpdC93ZWJraXR3b3JrZXJz
LmNwcDogUmVtb3ZlZC4KCiAgICAgICAgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrOgog
ICAgICAgIEFkanVzdCBjYWxsIHNpdGVzIG9mIHdlYmtpdF90aHJlYWRfY291bnQgdG8gdXNlIHRo
ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgdmVyc2lvbiBub3cuCgogICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KToKLS0tCiBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrCiBXZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0K
IC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwICAgIHwgICAx
MiArKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
aCAgfCAgICAxICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAgICAgICAgICAg
ICAgICAgIHwgICAgMyAtCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3b3JrZXJzLmNwcCAgICAg
ICAgICAgICAgICB8ICAgNDUgLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysrKwogLi4uL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICAzICstCiA4IGZp
bGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdvcmtlcnMuY3BwCgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyMDVk
MWE1Li5mYjk4MGI0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEyLTA5ICBBbnRvbmlvIEdv
bWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrIChw
YXJ0IElWKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDg0MjkKKworICAgICAgICBNb3ZlZCBhbHNvIHdlYmtpdF93b3JrZXJfdGhyZWFkX2NvdW50KCkg
dG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLAorICAgICAgICBzaW5jZSBpdCB3YXMgb25seSB1
c2VkIGJ5IERSVCBmb3Igbm93LgorCisgICAgICAgIFNpbmNlIHRoaXMgbWV0aG9kIHdhcyB0aGUg
b25seSBvbmUgaW4gd2Via2l0d29ya2VyLmNwcCwgdGhlIGZpbGUgd2FzCisgICAgICAgIGFsc28g
cmVtb3ZlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3b3JrZXJzLmNwcDogUmVtb3ZlZC4K
KwogMjAxMC0xMi0wOCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvR05V
bWFrZWZpbGUuYW0gYi9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE4NDZmN2YuLjQ2
MzFkZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTk1LDggKzE5NSw3IEBAIHdlYmtpdGd0a19zb3VyY2Vz
ICs9IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAgXAogCVdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgXAotCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRv
d2ZlYXR1cmVzLmNwcCBcCi0JV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d29ya2Vycy5jcHAKKwlX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKIAogcGtnY29uZmln
ZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwogcGtnY29uZmlnX0RBVEEgPSBXZWJLaXQvZ3RrL0BX
RUJLSVRHVEtfUENfTkFNRUAtQFdFQktJVEdUS19BUElfVkVSU0lPTkAucGMKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApp
bmRleCA4MmFlYmM5Li43NTQxN2QxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00Niw2ICs0Nyw3IEBACiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2VuZGlmCisjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogI2luY2x1
ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgpAQCAtNDA3
LDMgKzQwOSwxMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bGF5b3V0RnJhbWUo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogCiAgICAgdmlldy0+bGF5b3V0KCk7CiB9CisKK3Vuc2ln
bmVkIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KCkKK3sK
KyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3
b3JrZXJUaHJlYWRDb3VudCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuaAppbmRleCA2ZGI2MjY4Li41ZTg1MGE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcxLDYgKzcxLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25z
dCBnY2hhciogc291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwg
Y29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOwogCiBwcml2YXRlOgog
ICAgIHN0YXRpYyBib29sIHNfZHJ0UnVuOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4
IDlhYmNkOWYuLjA3ZjdjZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTM1Myw5
ICszNTMsNiBAQCBleHRlcm4gIkMiIHsKICAgICBXRUJLSVRfQVBJIHZvaWQKICAgICB3ZWJraXRf
YXBwbGljYXRpb25fY2FjaGVfc2V0X21heGltdW1fc2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6
ZSk7CiAKLSAgICBXRUJLSVRfQVBJIHVuc2lnbmVkIGludAotICAgIHdlYmtpdF93b3JrZXJfdGhy
ZWFkX2NvdW50KCk7Ci0gICAgCiAgICAgLy8gV2ViS2l0V2ViRGF0YVNvdXJjZSBwcml2YXRlCiAg
ICAgV2ViS2l0V2ViRGF0YVNvdXJjZSoKICAgICB3ZWJraXRfd2ViX2RhdGFfc291cmNlX25ld193
aXRoX2xvYWRlcihQYXNzUmVmUHRyPFdlYktpdDo6RG9jdW1lbnRMb2FkZXI+KTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdvcmtlcnMuY3BwIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d29ya2Vycy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NTg2
M2MuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d29ya2Vycy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IndlYmtpdHByaXZhdGUuaCIKLQotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi11bnNpZ25l
ZCBpbnQgd2Via2l0X3dvcmtlcl90aHJlYWRfY291bnQodm9pZCkKLXsKLSNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICByZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3Vu
dCgpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi0KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4MDQ5ZGJm
Li5iY2RjNDBkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMDkgIEFudG9uaW8gR29t
ZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbR3RrXSBQb3B1bGF0ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgKHBh
cnQgSVYpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODQyOQorCisgICAgICAgIEFkanVzdCBjYWxsIHNpdGVzIG9mIHdlYmtpdF90aHJlYWRfY291bnQg
dG8gdXNlIHRoZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgdmVyc2lvbiBub3cuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KToKKwogMjAxMC0x
Mi0wOCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDgzODc0ZjQuLjIx
NWFiNDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNTAsNyArNTAsNiBAQAogCiBleHRlcm4g
IkMiIHsKIHZvaWQgd2Via2l0X2FwcGxpY2F0aW9uX2NhY2hlX3NldF9tYXhpbXVtX3NpemUodW5z
aWduZWQgbG9uZyBsb25nIHNpemUpOwotdW5zaWduZWQgaW50IHdlYmtpdF93b3JrZXJfdGhyZWFk
X2NvdW50KHZvaWQpOwogdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9leGVjdXRlX3NjcmlwdChX
ZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvciwgbG9uZyBjYWxsSWQsIGNvbnN0IGdjaGFyKiBz
Y3JpcHQpOwogfQogCkBAIC0xODQsNyArMTgzLDcgQEAgc2l6ZV90IExheW91dFRlc3RDb250cm9s
bGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIAogdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OndvcmtlclRocmVhZENvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2Via2l0X3dvcmtl
cl90aHJlYWRfY291bnQoKTsKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3
b3JrZXJUaHJlYWRDb3VudCgpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpub3Rp
ZnlEb25lKCkKLS0gCjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76076</attachid>
            <date>2010-12-09 09:48:49 -0800</date>
            <delta_ts>2010-12-09 11:00:26 -0800</delta_ts>
            <desc>(committed r73628, r=mrobinson) patch 4 - v2</desc>
            <filename>0001-2010-12-09-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>9345</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBlM2I0NGMwNDQ4OTZkYTVkNjkyZDI3Yjk3MGQxZmIxODM2NDU1NmFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VGh1LCA5IERlYyAyMDEwIDA5OjUxOjU2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMi0w
OSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gUG9wdWxhdGUgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrIChwYXJ0IElWKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODQyOQoKICAgICAgICBXZWJLaXQvZ3RrOgogICAgICAgIE1vdmVkIGFsc28gd2Vi
a2l0X3dvcmtlcl90aHJlYWRfY291bnQoKSB0byBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGssCiAg
ICAgICAgc2luY2UgaXQgd2FzIG9ubHkgdXNlZCBieSBEUlQgZm9yIG5vdy4KCiAgICAgICAgU2lu
Y2UgdGhpcyBtZXRob2Qgd2FzIHRoZSBvbmx5IG9uZSBpbiB3ZWJraXR3b3JrZXIuY3BwLCB0aGUg
ZmlsZSB3YXMKICAgICAgICBhbHNvIHJlbW92ZWQuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06
CiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgog
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OndvcmtlclRocmVhZENvdW50KToKICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgogICAgICAg
ICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKICAgICAgICAqIHdlYmtpdC93ZWJraXR3b3JrZXJz
LmNwcDogUmVtb3ZlZC4KCiAgICAgICAgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrOgog
ICAgICAgIEFkanVzdCBjYWxsIHNpdGVzIG9mIHdlYmtpdF90aHJlYWRfY291bnQgdG8gdXNlIHRo
ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsgdmVyc2lvbiBub3cuCgogICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OndvcmtlclRocmVhZENvdW50KToKLS0tCiBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrCiBXZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0K
IC4uLi9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwICAgIHwgICAx
NCArKysrKysKIC4uLi9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmggIHwgICAgMSArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAg
ICAgICAgICB8ICAgIDMgLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d29ya2Vycy5jcHAgICAg
ICAgICAgICAgICAgfCAgIDQ1IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysrKysKIC4uLi9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAgMyArLQogOCBm
aWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3b3JrZXJzLmNwcAoKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYmQ0
MTNmZS4uZjIzZmEwYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0xMi0wOSAgQW50b25pbyBH
b21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHdGtdIFBvcHVsYXRlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayAo
cGFydCBJVikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4NDI5CisKKyAgICAgICAgTW92ZWQgYWxzbyB3ZWJraXRfd29ya2VyX3RocmVhZF9jb3VudCgp
IHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0aywKKyAgICAgICAgc2luY2UgaXQgd2FzIG9ubHkg
dXNlZCBieSBEUlQgZm9yIG5vdy4KKworICAgICAgICBTaW5jZSB0aGlzIG1ldGhvZCB3YXMgdGhl
IG9ubHkgb25lIGluIHdlYmtpdHdvcmtlci5jcHAsIHRoZSBmaWxlIHdhcworICAgICAgICBhbHNv
IHJlbW92ZWQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjp3b3JrZXJUaHJlYWRDb3VudCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d29ya2Vycy5jcHA6IFJlbW92ZWQu
CisKIDIwMTAtMTItMDkgIEpvb25lIEh1ciAgPGpvb25lQGtsZHAub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvR05VbWFr
ZWZpbGUuYW0gYi9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDdmZGYyNTMuLjZkYzJi
ZGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQpAQCAtMTk3LDggKzE5Nyw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9
IFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAgXAogCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgXAotCVdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2Zl
YXR1cmVzLmNwcCBcCi0JV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d29ya2Vycy5jcHAKKwlXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAKIAogcGtnY29uZmlnZGly
ID0gJChsaWJkaXIpL3BrZ2NvbmZpZwogcGtnY29uZmlnX0RBVEEgPSBXZWJLaXQvZ3RrL0BXRUJL
SVRHVEtfUENfTkFNRUAtQFdFQktJVEdUS19BUElfVkVSU0lPTkAucGMKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRl
eCA5MWU1YTExLi5mMWFlOTUwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0xLDYgKzEsMTAgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorPDw8PDw8PCBIRUFECiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25l
IEh1ciA8am9vbmVAa2xkcC5vcmc+Cis9PT09PT09CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCis+Pj4+Pj4+IDIwMTAtMTItMDkgIEFudG9u
aW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDYg
KzUxLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAj
ZW5kaWYKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRl
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3
ZWJ2aWV3LmgiCkBAIC00MjEsMyArNDI2LDEyIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KFdlYktpdFdlYlZpZXcqIHdlYlZpCiAK
ICAgICBmcHJpbnRmKHN0ZG91dCwgInZpZXdwb3J0IHNpemUgJWR4JWQgc2NhbGUgJWYgd2l0aCBs
aW1pdHMgWyVmLCAlZl1cbiIsIGF0dHJzLmxheW91dFNpemUud2lkdGgoKSwgYXR0cnMubGF5b3V0
U2l6ZS5oZWlnaHQoKSwgYXR0cnMuaW5pdGlhbFNjYWxlLCBhdHRycy5taW5pbXVtU2NhbGUsIGF0
dHJzLm1heGltdW1TY2FsZSk7CiB9CisKK3Vuc2lnbmVkIGludCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OndvcmtlclRocmVhZENvdW50KCkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRDb3VudCgpOworI2Vsc2UK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggZGQxZDQ5ZC4uNjIwM2Y1MyAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdo
aXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgZ2NoYXIqIHNvdXJjZU9yaWdpbiwgY29uc3Qg
Z2NoYXIqIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3Qs
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOworICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgd29ya2Vy
VGhyZWFkQ291bnQoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzX2RydFJ1bjsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAwODM2NDBkLi5hZDc5M2QxIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0yNjAsOSArMjYwLDYgQEAgZXh0ZXJuICJDIiB7CiAgICAg
V0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2NhY2hlX3NldF9tYXhpbXVt
X3NpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpOwogCi0gICAgV0VCS0lUX0FQSSB1bnNpZ25l
ZCBpbnQKLSAgICB3ZWJraXRfd29ya2VyX3RocmVhZF9jb3VudCgpOwotICAgIAogICAgIC8vIFdl
YktpdFdlYkRhdGFTb3VyY2UgcHJpdmF0ZQogICAgIFdlYktpdFdlYkRhdGFTb3VyY2UqCiAgICAg
d2Via2l0X3dlYl9kYXRhX3NvdXJjZV9uZXdfd2l0aF9sb2FkZXIoUGFzc1JlZlB0cjxXZWJLaXQ6
OkRvY3VtZW50TG9hZGVyPik7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
b3JrZXJzLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdvcmtlcnMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTU4NjNjLi4wMDAwMDAwCi0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdvcmtlcnMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCi0KLSNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKLQotdW5zaWduZWQgaW50IHdlYmtpdF93b3JrZXJfdGhyZWFkX2Nv
dW50KHZvaWQpCi17Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgcmV0dXJuIFdlYkNvcmU6Oldv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0j
ZW5kaWYKLX0KLQotCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKaW5kZXggYTNhYTRjOS4uYWQ3MTcxMiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEwLTEyLTA5ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gUG9wdWxhdGUg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrIChwYXJ0IElWKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg0MjkKKworICAgICAgICBBZGp1c3QgY2FsbCBz
aXRlcyBvZiB3ZWJraXRfdGhyZWFkX2NvdW50IHRvIHVzZSB0aGUgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrIHZlcnNpb24gbm93LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3
b3JrZXJUaHJlYWRDb3VudCk6CisKIDIwMTAtMTItMDkgIEtvYW4tU2luIFRhbiAgPGtvYW5zaW4u
dGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAppbmRleCA4MzVmN2Q4Li41YmQ4MGRiIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKQEAgLTUxLDcgKzUxLDYgQEAKIAogZXh0ZXJuICJDIiB7CiB2b2lkIHdlYmtpdF9hcHBs
aWNhdGlvbl9jYWNoZV9zZXRfbWF4aW11bV9zaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsK
LXVuc2lnbmVkIGludCB3ZWJraXRfd29ya2VyX3RocmVhZF9jb3VudCh2b2lkKTsKIHZvaWQgd2Vi
a2l0X3dlYl9pbnNwZWN0b3JfZXhlY3V0ZV9zY3JpcHQoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNw
ZWN0b3IsIGxvbmcgY2FsbElkLCBjb25zdCBnY2hhciogc2NyaXB0KTsKIH0KIApAQCAtMTg1LDcg
KzE4NCw3IEBAIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3Vu
dCgpCiAKIHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjp3b3JrZXJUaHJlYWRDb3VudCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHdlYmtpdF93b3JrZXJfdGhyZWFkX2NvdW50KCk7CisgICAg
cmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d29ya2VyVGhyZWFkQ291bnQoKTsKIH0K
IAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCi0tIAoxLjcuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>