<?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>102833</bug_id>
          
          <creation_ts>2012-11-20 13:48:03 -0800</creation_ts>
          <short_desc>[EFL][WK2] 3D pixel tests are failing</short_desc>
          <delta_ts>2017-03-11 10:46:05 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Yael">yael</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>772135</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-20 13:48:03 -0800</bug_when>
    <thetext>In the current setup, we dump pixel results from the web process, bypassing the Texture Mapper. In order to correctly dump the pixels for 3D transforms we have to do the painting in the UI process, the same as was done for Qt.
A patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773230</commentid>
    <comment_count>1</comment_count>
      <attachid>175510</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-21 13:33:19 -0800</bug_when>
    <thetext>Created attachment 175510
Patch

Generate a snapshot of the view in the UI process instead of the web process.
We have to use Texture Mapper in order to correctly paint 3D transforms etc.

Since I could not find an efl based API that will give me a snapshot, and I cannot use both evas and openGl API in the same file, I created a new file, in which I use openGL to get a snapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773254</commentid>
    <comment_count>2</comment_count>
      <attachid>175510</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-21 13:58:07 -0800</bug_when>
    <thetext>Comment on attachment 175510
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:45
&gt; +    return viewImpl-&gt;getSnapshot();

takeShapshot?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:978
&gt; +    }

Is this right with those ifdefs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773258</commentid>
    <comment_count>3</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-21 14:02:47 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 175510 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175510&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:45
&gt; &gt; +    return viewImpl-&gt;getSnapshot();
&gt; 
&gt; takeShapshot?
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:978
&gt; &gt; +    }
&gt; 
&gt; Is this right with those ifdefs?
yes. both &apos;{&apos; and &apos;}&apos; are inside #if USE(ACCELERATED_COMPOSITING)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773274</commentid>
    <comment_count>4</comment_count>
      <attachid>175510</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2012-11-21 14:12:43 -0800</bug_when>
    <thetext>Comment on attachment 175510
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:24
&gt; +#include &lt;GL/gl.h&gt;

Unfortunately this will not work for opengl ES.
For GL ES2 it will be GLES2/gl2.h, for GL ES1 it will be  GLES/gl.h

I think there should be single place for this, may be OpenGLShims.h ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773454</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-21 18:02:25 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 175510 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175510&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:24
&gt; &gt; +#include &lt;GL/gl.h&gt;
&gt; 
&gt; Unfortunately this will not work for opengl ES.
&gt; For GL ES2 it will be GLES2/gl2.h, for GL ES1 it will be  GLES/gl.h
&gt; 
&gt; I think there should be single place for this, may be OpenGLShims.h ?

I got a tip from Carsten Haitzler on the enlightement mailing list about some ecore_x API that I can use. I will give that a try first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775086</commentid>
    <comment_count>6</comment_count>
      <attachid>175907</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-25 18:32:02 -0800</bug_when>
    <thetext>Created attachment 175907
Patch

Address comment #2 and comment #4.
XShmGetImage is failing to grab the image, so I resorted to glReadPixels, which is what the Qt port does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775088</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-25 18:34:48 -0800</bug_when>
    <thetext>Attachment 175907 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775089</commentid>
    <comment_count>8</comment_count>
      <attachid>175907</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-25 18:36:36 -0800</bug_when>
    <thetext>Comment on attachment 175907
Patch

Attachment 175907 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14981481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775091</commentid>
    <comment_count>9</comment_count>
      <attachid>175910</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-25 18:45:32 -0800</bug_when>
    <thetext>Created attachment 175910
Patch

Forgot to remove one of the X11 headers. sorry :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775092</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-25 18:49:40 -0800</bug_when>
    <thetext>Attachment 175910 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp:122:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp:122:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775093</commentid>
    <comment_count>11</comment_count>
      <attachid>175911</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-25 18:51:40 -0800</bug_when>
    <thetext>Created attachment 175911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775130</commentid>
    <comment_count>12</comment_count>
      <attachid>175911</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-25 21:54:13 -0800</bug_when>
    <thetext>Comment on attachment 175911
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1034
&gt; +    delete buffer;

delete[] buffer ?

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:34
&gt; +    unsigned char* buffer = new unsigned char[width * height * 4];

allocated with operator new[].

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:39
&gt; +    unsigned* buf = (unsigned*)buffer;

Please void C style cast

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:41
&gt; +    for (int i = 0; i &lt; height / 2; i++) {

we usually prefer preincrement when possible

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:42
&gt; +        for (int j = 0; j &lt; width; j++) {

ditto

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:138
&gt; +    RefPtr&lt;cairo_surface_t&gt; surface = WKImageCreateCairoSurface(WKViewGetSnapshot(toAPI(m_view)));

You need to adopt.

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:147
&gt; +    return adoptWK(WKImageCreateFromCairoSurface(surface.get(), options));

I did not understand why we converted to a cairo surface and then back to a WKImageRef. Why not return WKViewGetSnapshot(toAPI(m_view)) directly?

&gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:85
&gt; +    cairo_t* context = cairo_create(surface);

Smart pointer?

&gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:121
&gt; +    cairo_surface_t* surface = 0;

Smart pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775387</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-26 05:45:33 -0800</bug_when>
    <thetext>(In reply to comment #12)
Thank you for your comments :)
&gt; (From update of attachment 175911 [details])
&gt; we usually prefer preincrement when possible
&gt; 
Can you please tell me which coding guideline says this?

&gt; I did not understand why we converted to a cairo surface and then back to a WKImageRef. Why not return WKViewGetSnapshot(toAPI(m_view)) directly?
I didn&apos;t know if it is ok to return a cairo type in our API. If that is ok, then there is no need for the multiple conversions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775403</commentid>
    <comment_count>14</comment_count>
      <attachid>175911</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-26 05:58:47 -0800</bug_when>
    <thetext>Comment on attachment 175911
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:41
&gt;&gt; +    for (int i = 0; i &lt; height / 2; i++) {
&gt; 
&gt; we usually prefer preincrement when possible

It is not documented in the WebKit style guidelines document but Benjamin Poulain commented about this about on one of my patches:
https://bugs.webkit.org/show_bug.cgi?id=101257#c22

I also landed a cleanup patch regarding this in:
https://bugs.webkit.org/show_bug.cgi?id=101859

While this makes no difference for primitive types, it usually does for complex types. Therefore, it is good practice to use prefix operator whenever possible.

&gt;&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:147
&gt;&gt; +    return adoptWK(WKImageCreateFromCairoSurface(surface.get(), options));
&gt; 
&gt; I did not understand why we converted to a cairo surface and then back to a WKImageRef. Why not return WKViewGetSnapshot(toAPI(m_view)) directly?

What I mean is WKViewGetSnapshot() returns a WKImageRef and this function returns a WKImageRef. Why not return the output of WKViewGetSnapshot() directly? Instead you are creating a surface using WKImageCreateCairoSurface() from the WKImage, then converting the surface back to a WKImage. I did not understand the reason for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775416</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-26 06:12:24 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 175911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175911&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:85
&gt; &gt; +    cairo_t* context = cairo_create(surface);
&gt; 
&gt; Smart pointer?
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:121
&gt; &gt; +    cairo_surface_t* surface = 0;
&gt; 
&gt; Smart pointer?
TestInvocationEfl.cpp is almost a copy of TestInvocationCairo.cpp, with some modifications specific to EFL.
I was hoping to get some comments regarding if people prefer that the file is split, or to add the EFL specific bits to TestInvocationCairo.cpp.
I think your comments are result of copy/pasted code from TestInvocationCairo.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775418</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-26 06:16:43 -0800</bug_when>
    <thetext>Adding a few GTK guys to see if they have an opinion regarding the addition of EFL specific code in TestInvocationCairo.cpp (https://bugs.webkit.org/show_bug.cgi?id=102833#c15).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775894</commentid>
    <comment_count>17</comment_count>
      <attachid>176066</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-26 14:27:14 -0800</bug_when>
    <thetext>Created attachment 176066
Patch

Address comment #12.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775949</commentid>
    <comment_count>18</comment_count>
      <attachid>176066</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-26 15:12:22 -0800</bug_when>
    <thetext>Comment on attachment 176066
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1035
&gt; +    delete[] buffer;
&gt; +    return image;

I prefer newline before return

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.cpp:37
&gt; +    // Now flip it

Bad comment and ends without punctuation mark

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotGL.h:21
&gt; +#ifndef SnapshotGL_h
&gt; +#define SnapshotGL_h

what about SnapshotImageGL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776078</commentid>
    <comment_count>19</comment_count>
      <attachid>176113</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-26 16:55:52 -0800</bug_when>
    <thetext>Created attachment 176113
Patch

Address comment #18.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776239</commentid>
    <comment_count>20</comment_count>
      <attachid>176113</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-26 20:07:17 -0800</bug_when>
    <thetext>Comment on attachment 176113
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:45
&gt; +    UIProcess/API/efl/SnapshotImageGL.cpp

Wrong alphabetical order.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1026
&gt; +        return WKImageCreateFromCairoSurface(surface.get(), 0);

If you don&apos;t use local variable, I think you can remove &quot;{&quot;, &quot;}&quot; in this function.
return WKImageCreateFromCairoSurface(createSurfaceForImage(sd-&gt;image).get(), 0);

Or, because you define *surface* variable two places, I think you can declare it first on 1022 line.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1030
&gt; +    Evas_Native_Surface* ns = evas_object_image_native_surface_get(sd-&gt;image);

I prefer to use full name. e.g) naviveSurface.

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotImageGL.cpp:21
&gt; +#if USE(ACCELERATED_COMPOSITING)

IMO, it would be better if you move this macro to above #if USE(OPENGL_ES_2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776811</commentid>
    <comment_count>21</comment_count>
      <attachid>176279</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 08:52:47 -0800</bug_when>
    <thetext>Created attachment 176279
Patch

Address comment #20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776942</commentid>
    <comment_count>22</comment_count>
      <attachid>176279</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 10:30:40 -0800</bug_when>
    <thetext>Comment on attachment 176279
Patch

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

&gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:45
&gt; +void computeMD5HashStringForCairoSurface(cairo_surface_t* surface, char hashString[33])

There seems to be quite a bit of duplication with TestInvocationCairo.cpp. I really wish we could avoid that.

Personally, I would add #ifdefs in TestInvocationCairo.cpp to git EFL port&apos;s need. This would avoid the duplication.
Any other opinion on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776971</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-27 10:49:16 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 176279 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176279&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/TestInvocationEfl.cpp:45
&gt; &gt; +void computeMD5HashStringForCairoSurface(cairo_surface_t* surface, char hashString[33])
&gt; 
&gt; There seems to be quite a bit of duplication with TestInvocationCairo.cpp. I really wish we could avoid that.
&gt; 
&gt; Personally, I would add #ifdefs in TestInvocationCairo.cpp to git EFL port&apos;s need. This would avoid the duplication.
&gt; Any other opinion on this?

That sounds like the proper thing to do indeed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777129</commentid>
    <comment_count>24</comment_count>
      <attachid>176329</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 12:42:13 -0800</bug_when>
    <thetext>Created attachment 176329
Patch

Removed TestInvocationEFL.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777196</commentid>
    <comment_count>25</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 13:55:33 -0800</bug_when>
    <thetext>Looks like I cannot include WebCore headers in webkit-gtk, so I cannot use RefCairoPtr in common code.

Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo_surface&gt;(_cairo_surface*)&apos;
Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo&gt;(_cairo*)&apos;
Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo&gt;(_cairo*)&apos;
Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo_surface&gt;(_cairo_surface*)&apos;
collect2: error: ld returned 1 exit status
make[1]: *** [Programs/WebKitTestRunner] Error 1
make[1]: Leaving directory `/home/phil/gst/jhbuild/makes/WebKit/WebKitBuild/Release&apos;
make: *** [all] Error 2

Failed to build WebKit using &apos;make&apos;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777209</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 14:08:23 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; Looks like I cannot include WebCore headers in webkit-gtk, so I cannot use RefCairoPtr in common code.
&gt; 
&gt; Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo_surface&gt;(_cairo_surface*)&apos;
&gt; Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo&gt;(_cairo*)&apos;
&gt; Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo&gt;(_cairo*)&apos;
&gt; Tools/WebKitTestRunner/cairo/Programs_WebKitTestRunner-TestInvocationCairo.o:TestInvocationCairo.cpp:function WTR::TestInvocation::dumpPixelsAndCompareWithExpected(OpaqueWKImage const*, OpaqueWKArray const*): error: undefined reference to &apos;void WTF::derefIfNotNull&lt;_cairo_surface&gt;(_cairo_surface*)&apos;
&gt; collect2: error: ld returned 1 exit status
&gt; make[1]: *** [Programs/WebKitTestRunner] Error 1
&gt; make[1]: Leaving directory `/home/phil/gst/jhbuild/makes/WebKit/WebKitBuild/Release&apos;
&gt; make: *** [all] Error 2
&gt; 
&gt; Failed to build WebKit using &apos;make&apos;!

This would probably fix it:
diff --git a/Tools/WebKitTestRunner/GNUmakefile.am b/Tools/WebKitTestRunner/GNUmakefile.am
index 3706003..b1dfb98 100644
--- a/Tools/WebKitTestRunner/GNUmakefile.am
+++ b/Tools/WebKitTestRunner/GNUmakefile.am
@@ -52,6 +52,7 @@ Programs_WebKitTestRunner_CFLAGS = $(global_cflags)
 
 Programs_WebKitTestRunner_LDADD = \
        libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+        libWebCoreGtk.la \
        libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
        $(GLOBALDEPS_LIBS) \
        $(CAIRO_LIBS) \

Unless there is a specific reason not to have WebKitTestRunner link against WebCore library?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777212</commentid>
    <comment_count>27</comment_count>
      <attachid>176336</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 14:11:05 -0800</bug_when>
    <thetext>Created attachment 176336
Patch

Removed smart pointer usage from TestInvocationCairo.cpp.
They break the GTK build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777239</commentid>
    <comment_count>28</comment_count>
      <attachid>176336</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-27 14:40:19 -0800</bug_when>
    <thetext>Comment on attachment 176336
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1026
&gt; +        return WKImageCreateFromCairoSurface(createSurfaceForImage(sd-&gt;image).get(), 0);
&gt; +#if USE(ACCELERATED_COMPOSITING)

newline after return please

&gt; Source/WebKit2/UIProcess/API/efl/SnapshotImageGL.cpp:6
&gt; +/*
&gt; +   Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; +
&gt; +    This library is free software; you can redistribute it and/or
&gt; +    modify it under the terms of the GNU Library General Public
&gt; +    License as published by the Free Software Foundation; either

why not * ? and why not BSD license? I think we prefer that

&gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:110
&gt; +void TestInvocation::forceRepaintDoneCallback(WKErrorRef, void *context)

didFinishRepaint would be a nicer name

&gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:112
&gt; +    static_cast&lt;TestInvocation*&gt;(context)-&gt;m_gotRepaint = true;

gotRepaint is a terrible name. why not m_didRepaint

&gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:136
&gt; +
&gt; +    if (m_gotRepaint)
&gt; +        surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()-&gt;windowSnapshotImage().get());
&gt; +    else {
&gt; +        m_error = true;
&gt; +        m_errorMessage = &quot;Timed out waiting for repaint\n&quot;;
&gt; +        m_webProcessIsUnrensponsive = true;
&gt; +        return;
&gt; +    }

no.

if (!m_didRepaint) {
   ...
   return;
}

cairo_surface_t surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()-&gt;windowSnapshotImage().get());

&gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:132
&gt; +    Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_view));
&gt; +
&gt; +    ASSERT(ee);

no newline before ASSERT, it belong to ee</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777255</commentid>
    <comment_count>29</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 15:00:49 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 176336 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176336&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:1026
&gt; &gt; +        return WKImageCreateFromCairoSurface(createSurfaceForImage(sd-&gt;image).get(), 0);
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; 
&gt; newline after return please
&gt; 
ok
&gt; &gt; Source/WebKit2/UIProcess/API/efl/SnapshotImageGL.cpp:6
&gt; &gt; +/*
&gt; &gt; +   Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; &gt; +
&gt; &gt; +    This library is free software; you can redistribute it and/or
&gt; &gt; +    modify it under the terms of the GNU Library General Public
&gt; &gt; +    License as published by the Free Software Foundation; either
&gt; 
&gt; why not * ? and why not BSD license? I think we prefer that
&gt; 
I copied the license of EwkViewImpl, I&apos;ll change that.

&gt; &gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:110
&gt; &gt; +void TestInvocation::forceRepaintDoneCallback(WKErrorRef, void *context)
&gt; 
&gt; didFinishRepaint would be a nicer name
&gt; 
The functions names are not introduced in this patch. I can rename them as a followup

&gt; &gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:112
&gt; &gt; +    static_cast&lt;TestInvocation*&gt;(context)-&gt;m_gotRepaint = true;
&gt; 
&gt; gotRepaint is a terrible name. why not m_didRepaint
&gt; 
copy/paste from Qt :) I&apos;ll rename

&gt; &gt; Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp:136
&gt; &gt; +
&gt; &gt; +    if (m_gotRepaint)
&gt; &gt; +        surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()-&gt;windowSnapshotImage().get());
&gt; &gt; +    else {
&gt; &gt; +        m_error = true;
&gt; &gt; +        m_errorMessage = &quot;Timed out waiting for repaint\n&quot;;
&gt; &gt; +        m_webProcessIsUnrensponsive = true;
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; no.
&gt; 
&gt; if (!m_didRepaint) {
&gt;    ...
&gt;    return;
&gt; }
&gt; 
same as before, copy/paste from Qt :) Will change.
&gt; cairo_surface_t surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()-&gt;windowSnapshotImage().get());
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp:132
&gt; &gt; +    Ecore_Evas* ee = ecore_evas_ecore_evas_get(evas_object_evas_get(m_view));
&gt; &gt; +
&gt; &gt; +    ASSERT(ee);
&gt; 
&gt; no newline before ASSERT, it belong to ee
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777269</commentid>
    <comment_count>30</comment_count>
      <attachid>176347</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-11-27 15:23:31 -0800</bug_when>
    <thetext>Created attachment 176347
Patch

Address part of comment #28.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777290</commentid>
    <comment_count>31</comment_count>
      <attachid>176347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:57:43 -0800</bug_when>
    <thetext>Comment on attachment 176347
Patch

Clearing flags on attachment: 176347

Committed r135935: &lt;http://trac.webkit.org/changeset/135935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777291</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:57:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777580</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 23:49:45 -0800</bug_when>
    <thetext>This patch seems to have caused 6 failures:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6416

We have blurry text on scaled layers and a few other issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777720</commentid>
    <comment_count>34</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-11-28 03:59:12 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; This patch seems to have caused 6 failures:
&gt; http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6416
&gt; 
&gt; We have blurry text on scaled layers and a few other issues.

There are over 100 tests that have become flaky ([ IMAGE PASS ]) because of this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777737</commentid>
    <comment_count>35</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-11-28 04:23:59 -0800</bug_when>
    <thetext>Not sure how it is related but fast/dom/shadow/input-with-validation.html seems to have started crashing reliably after this commit on WK2 debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777781</commentid>
    <comment_count>36</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-28 05:23:25 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Not sure how it is related but fast/dom/shadow/input-with-validation.html seems to have started crashing reliably after this commit on WK2 debug
We have these bugs to track the crash:
https://bugs.webkit.org/show_bug.cgi?id=98026
https://bugs.webkit.org/show_bug.cgi?id=99886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778828</commentid>
    <comment_count>37</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-11-29 01:50:10 -0800</bug_when>
    <thetext>Causes masive reftests flakiness, this needs to be solved urgently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778955</commentid>
    <comment_count>38</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-29 06:03:16 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Causes masive reftests flakiness, this needs to be solved urgently.

Unfortunately, many of the failures are real failures.
I was looking today e.g. the css/sticky results and the actual results match what I see in MiniBrowser. Which means we have bugs that need to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778998</commentid>
    <comment_count>39</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-29 07:27:47 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Causes masive reftests flakiness, this needs to be solved urgently.

Thanks to kbalazs, who helped me analyze some of the flaky tests. It seems that we have a bug in the way we draw the scrollbars. If you look at the expected results images, they are completely wrong in many tests. I will file a separate bug about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779008</commentid>
    <comment_count>40</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-11-29 07:33:53 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #37)
&gt; &gt; Causes masive reftests flakiness, this needs to be solved urgently.
&gt; 
&gt; Thanks to kbalazs, who helped me analyze some of the flaky tests. It seems that we have a bug in the way we draw the scrollbars. If you look at the expected results images, they are completely wrong in many tests. I will file a separate bug about that.

https://bugs.webkit.org/show_bug.cgi?id=103641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780065</commentid>
    <comment_count>41</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-11-30 06:13:41 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; Causes masive reftests flakiness, this needs to be solved urgently.
&gt; 
&gt; Unfortunately, many of the failures are real failures.
&gt; I was looking today e.g. the css/sticky results and the actual results match what I see in MiniBrowser. Which means we have bugs that need to be fixed.

Many tests don&apos;t seem that way. As an example (and this one seems common) fast/forms/input-first-letter-edit.html is just empty (totally white) when it fails. If you look at the test, it is highly unlikely to be a real failure: it&apos;s basically just

&lt;body&gt;
    &lt;input type=&quot;text&quot; id=&quot;target&quot; /&gt;
&lt;/body&gt;

with a bit of script that &apos;types&apos; text into the input. I don&apos;t think that really renders as an empty page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286612</commentid>
    <comment_count>42</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:46:05 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175510</attachid>
            <date>2012-11-21 13:33:19 -0800</date>
            <delta_ts>2012-11-25 18:32:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18187</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6Z2V0U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
Lmg6CisgICAgICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
U25hcHNob3RHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1
cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuaDogQWRkZWQuCisK
IDIwMTItMTEtMjEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CiAKICAgICAgICAgRGlzYW1iaWd1YXRlIGlubmVyTm9kZUZyYW1lUG9pbnQgYW5kIG1haW5G
cmFtZVBvaW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTM1Mjc1
KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0
aF9yZXF1ZXN0LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1Mjc1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywzICszNywxMCBA
QCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlCiAKICAgICByZXR1cm4g
dmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdL
Vmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJ
bXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisgICAgcmV0dXJuIHZpZXdJ
bXBsLT5nZXRTbmFwc2hvdCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5oCShyZXZpc2lvbiAxMzUyNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4
IEBAIFdLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKEV2YXMqIGMKIAogV0tfRVhQT1JU
IFdLUGFnZVJlZiBXS1ZpZXdHZXRQYWdlKFdLVmlld1JlZiB2aWV3KTsKIAorV0tfRVhQT1JUIFdL
SW1hZ2VSZWYgV0tWaWV3R2V0U25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpOworCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkocmV2aXNpb24gMTM1Mjc1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2lu
Y2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVm
bC5oIgorI2luY2x1ZGUgIlNuYXBzaG90R0wuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIKQEAgLTU5LDYg
KzYwLDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxp
dGllc0VmbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0ltYWdlQ2Fpcm8uaD4KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiVmli
cmF0aW9uQ2xpZW50RWZsLmgiCkBAIC05NjMsMyArOTY1LDI0IEBAIHZvaWQgRXdrVmlld0ltcGw6
Om9uRmF2aWNvbkNoYW5nZWQoY29uc3QKIAogICAgIHZpZXdJbXBsLT5pbmZvcm1JY29uQ2hhbmdl
KCk7CiB9CisKK1dLSW1hZ2VSZWYgRXdrVmlld0ltcGw6OmdldFNuYXBzaG90KCkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAoIW1faXNIYXJkd2FyZUFjY2VsZXJhdGVkKSB7CisjZW5k
aWYKKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGNyZWF0ZVN1cmZh
Y2VGb3JJbWFnZShzZC0+aW1hZ2UpOworICAgICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21D
YWlyb1N1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgMCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIH0KKworICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5zID0gZXZhc19vYmpl
Y3RfaW1hZ2VfbmF0aXZlX3N1cmZhY2VfZ2V0KHNkLT5pbWFnZSk7CisgICAgdW5zaWduZWQgY2hh
ciogYnVmZmVyID0gZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoc2QtPnZpZXcudywgc2QtPnZp
ZXcuaCwgbnMtPmRhdGEub3BlbmdsLnRleHR1cmVfaWQpOworCisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zv
cl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2QtPnZpZXcudywgc2QtPnZpZXcu
aCwgc2QtPnZpZXcudyAqIDQpKTsKKyAgICBXS0ltYWdlUmVmIGltYWdlID0gV0tJbWFnZUNyZWF0
ZUZyb21DYWlyb1N1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgMCk7CisgICAgZGVsZXRlIGJ1ZmZlcjsK
KyAgICByZXR1cm4gaW1hZ2U7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTM1Mjc1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjA2LDYgKzIwNiw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGFyZHdhcmVBY2NlbGVy
YXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXJkd2FyZUFjY2VsZXJhdGVkOyB9CiAgICAgdm9p
ZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tncm91bmQg
PSBlbmFibGU7IH0KIAorICAgIFdLSW1hZ2VSZWYgZ2V0U25hcHNob3QoKTsKKwogcHJpdmF0ZToK
ICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29uc3Q7CiAgICAg
dm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNo
b3RHTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNs
dWRlICJTbmFwc2hvdEdMLmgiCisKKyNpbmNsdWRlIDxHTC9nbC5oPgorCit1bnNpZ25lZCBjaGFy
KiBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0
ZXh0dXJlSWQpCit7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQp
OworICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciA9IG5ldyB1bnNpZ25lZCBjaGFyW3dpZHRoICog
aGVpZ2h0ICogNF07CisgICAgZ2xHZXRUZXhJbWFnZShHTF9URVhUVVJFXzJELCAwLCBHTF9CR1JB
LCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8gTm93IGZsaXAgaXQKKyAgICB1
bnNpZ25lZCB0bXA7CisgICAgdW5zaWduZWQqIGJ1ZiA9ICh1bnNpZ25lZCopYnVmZmVyOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQgLyAyOyBpKyspIHsKKyAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaSAqIHdp
ZHRoICsgal07CisgICAgICAgICAgICBidWZbaSAqIHdpZHRoICsgal0gPSBidWZbKGhlaWdodCAt
IGkgLSAxKSAqIHdpZHRoICsgal07CisgICAgICAgICAgICBidWZbKGhlaWdodCAtIGkgLSAxKSAq
IHdpZHRoICsgal0gPSB0bXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVy
OworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Nu
YXBzaG90R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9TbmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBTbmFwc2hvdEdMX2gKKyNkZWZpbmUgU25hcHNob3RHTF9oCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZy
b21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOwor
I2VuZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEdMX2gKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQyNykKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTIxICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IDNEIHBpeGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZSBhIHNuYXBzaG90IG9mIHRoZSB2aWV3IGluIHRo
ZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBXZSBoYXZl
IHRvIHVzZSBUZXh0dXJlIE1hcHBlciBpbiBvcmRlciB0byBjb3JyZWN0bHkgcGFpbnQgM0QgdHJh
bnNmb3JtcyBldGMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAg
ICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0
Zm9ybVdlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRv
d1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZv
Y2F0aW9uRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpjb21w
dXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXVFI6OndyaXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6cGFpbnRS
ZXBhaW50UmVjdE92ZXJsYXkpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQ
aXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKwogMjAxMi0xMS0yMSAgVGhpYWdvIE1hcmNv
cyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBL
VVJMIHVuaXQgdGVzdCBjcmFzaGluZyB3aGVuIHRpbGVkIGJhY2tpbmcgc3RvcmUgaXMgZW5hYmxl
ZCBvbiBSZWxlYXNlIEJvdHMKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1F
ZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVm
bC5jbWFrZQkocmV2aXNpb24gMTM1Mjc1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOSwxMSArOSwxMCBAQCBBRERfQ1VTVE9N
X1RBUkdFVChmb3J3YXJkaW5nLWhlYWRlcnNTb3VwCiBTRVQoRm9yd2FyZGluZ05ldHdvcmtIZWFk
ZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FIGZvcndhcmRpbmctaGVhZGVyc1NvdXBGb3JXZWJL
aXRUZXN0UnVubmVyKQogCiBMSVNUKEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKLSAg
ICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAK
LQogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvRXZlbnRTZW5kZXJQcm94eUVmbC5j
cHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5j
cHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1Rlc3RDb250cm9sbGVyRWZsLmNw
cAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvVGVzdEludm9jYXRpb25FZmwuY3Bw
CiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9tYWluLmNwcAogKQogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAxMzUyNzUpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKICAgICBi
b29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJb
MzNdKTsKIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShF
RkwpCiAgICAgc3RhdGljIHZvaWQgZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYs
IHZvaWQqIGNvbnRleHQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50RG9uZSgpOwogI2VuZGlmCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0Vm
bC5jcHAJKHJldmlzaW9uIDEzNTI3NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Bs
YXRmb3JtV2ViVmlld0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAKICNp
bmNsdWRlICJFV2ViS2l0Mi5oIgogI2luY2x1ZGUgIldlYktpdDIvV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTExNSw5ICsxMTgsMjQgQEAgdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQ
bGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hp
Y2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMu
Ci0gICAgcmV0dXJuIDA7CisgICAgRWNvcmVfRXZhcyogZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2
YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmlldykpOworCisgICAgQVNTRVJUKGVlKTsK
KworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworICAgIGVjb3JlX2V2YXNfZ2VvbWV0
cnlfZ2V0KGVlLCAwLCAwLCAmd2lkdGgsICZoZWlnaHQpOworICAgIEFTU0VSVCh3aWR0aCA+IDAg
JiYgaGVpZ2h0ID4gMCk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IFdL
SW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tWaWV3R2V0U25hcHNob3QodG9BUEkobV92aWV3KSkp
OworCisgICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewor
ICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2Fpcm8gc3VyZmFjZTogJXMi
LCBjYWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBXS0ltYWdlT3B0aW9ucyBvcHRpb25zID0gMDsKKyAgICByZXR1cm4gYWRvcHRX
SyhXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCBvcHRpb25zKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvVGVzdEludm9jYXRpb25FZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZsLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZsLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChDKSAyMDExIEJyZW50IEZ1bGdoYW0gPGJm
dWxnaGFtQHdlYmtpdC5vcmc+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAgICAgICAgIChD
KSAyMDEwLCAyMDExIElnYWxpYSBTLkwKKyAqICAgICAgICAgICAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCisKKyNpbmNsdWRlICJQaXhlbER1bXBT
dXBwb3J0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgorI2luY2x1ZGUg
PGNhaXJvL2NhaXJvLmg+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL01ENS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3ZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWly
b1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjaGFyIGhhc2hTdHJpbmdbMzNdKQor
eworICAgIEFTU0VSVChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSkgPT0g
Q0FJUk9fRk9STUFUX0FSR0IzMik7IC8vIEltYWdlRGlmZiBhc3N1bWVzIDMyIGJpdCBSR0JBLCB3
ZSBtdXN0IGFzIHdlbGwuCisKKyAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKTsKKyAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOworICAgIHNpemVfdCBieXRlc1BlclJv
dyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKKworICAgIE1ENSBt
ZDVDb250ZXh0OworICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7Cisg
ICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgcGl4ZWxzSGlnaDsgKytyb3cpIHsKKyAgICAg
ICAgbWQ1Q29udGV4dC5hZGRCeXRlcyhiaXRtYXBEYXRhLCA0ICogcGl4ZWxzV2lkZSk7CisgICAg
ICAgIGJpdG1hcERhdGEgKz0gYnl0ZXNQZXJSb3c7CisgICAgfQorICAgIFZlY3Rvcjx1aW50OF90
LCAxNj4gaGFzaDsKKyAgICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOworCisgICAgc25wcmlu
dGYoaGFzaFN0cmluZywgMzMsICIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKKyAgICAgICAgaGFzaFswXSwgaGFzaFsxXSwg
aGFzaFsyXSwgaGFzaFszXSwgaGFzaFs0XSwgaGFzaFs1XSwgaGFzaFs2XSwgaGFzaFs3XSwKKyAg
ICAgICAgaGFzaFs4XSwgaGFzaFs5XSwgaGFzaFsxMF0sIGhhc2hbMTFdLCBoYXNoWzEyXSwgaGFz
aFsxM10sIGhhc2hbMTRdLCBoYXNoWzE1XSk7Cit9CisKK3N0YXRpYyBjYWlyb19zdGF0dXNfdCB3
cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4qIGluID0gcmVpbnRl
cnByZXRfY2FzdDxWZWN0b3I8dW5zaWduZWQgY2hhcj4qPihjbG9zdXJlKTsKKyAgICBpbi0+YXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgcmV0dXJuIENBSVJPX1NUQVRVU19TVUNDRVNTOworfQor
CitzdGF0aWMgdm9pZCBkdW1wQml0bWFwKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3Qg
Y2hhciogY2hlY2tzdW0pCit7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBpeGVsRGF0YTsK
KyAgICBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oc3VyZmFjZSwgd3JpdGVGdW5j
dGlvbiwgJnBpeGVsRGF0YSk7CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBwaXhlbERh
dGEuc2l6ZSgpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBwaXhlbERhdGEuZGF0
YSgpOworCisgICAgcHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0aCwgY2hlY2tzdW0pOworfQorCitz
dGF0aWMgdm9pZCBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQoreworICAgIGNhaXJvX3QqIGNvbnRleHQgPSBj
YWlyb19jcmVhdGUoc3VyZmFjZSk7CisKKyAgICBjYWlyb19wdXNoX2dyb3VwKGNvbnRleHQpOwor
CisgICAgLy8gUGFpbnQgdGhlIGdyYXkgbWFzayBvdmVyIHRoZSBvcmlnaW5hbCBpbWFnZS4KKyAg
ICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4dCwgMCwgMCwgMCwgMC42Nik7CisgICAgY2Fp
cm9fcGFpbnQoY29udGV4dCk7CisKKyAgICAvLyBQYWludCB0cmFuc3BhcmVudCByZWN0YW5nbGVz
IG92ZXIgdGhlIG1hc2sgdG8gc2hvdyB0aGUgcmVwYWludGVkIHJlZ2lvbnMuCisgICAgY2Fpcm9f
c2V0X3NvdXJjZV9yZ2JhKGNvbnRleHQsIDAsIDAsIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVy
YXRvcihjb250ZXh0LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIHNpemVfdCBjb3VudCA9
IFdLQXJyYXlHZXRTaXplKHJlcGFpbnRSZWN0cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CisgICAgICAgIFdLUmVjdCByZWN0ID0gV0tSZWN0R2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8V0tSZWN0UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgocmVwYWludFJlY3RzLCBp
KSkpOworICAgICAgICBjYWlyb19yZWN0YW5nbGUoY29udGV4dCwgcmVjdC5vcmlnaW4ueCwgcmVj
dC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0KTsKKyAgICAgICAg
Y2Fpcm9fZmlsbChjb250ZXh0KTsKKyAgICB9CisKKyAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291
cmNlKGNvbnRleHQpOworICAgIGNhaXJvX3BhaW50KGNvbnRleHQpOworCisgICAgY2Fpcm9fZGVz
dHJveShjb250ZXh0KTsKK30KKworCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnRE
b25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxUZXN0SW52b2NhdGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0cnVlOworICAgIFRl
c3RDb250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7Cit9CisKK3ZvaWQgVGVzdEludm9j
YXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2VSZWYpOworCisgICAgY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlID0gMDsKKworICAgIFdLUGFnZVJlZiBwYWdlID0gVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQo
cGFnZSwgdGhpcywgJmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBUZXN0Q29udHJvbGxlcjo6U2hv
cnRUaW1lb3V0KTsKKworICAgIGlmIChtX2dvdFJlcGFpbnQpCisgICAgICAgIHN1cmZhY2UgPSBX
S0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2Vi
VmlldygpLT53aW5kb3dTbmFwc2hvdEltYWdlKCkuZ2V0KCkpOworICAgIGVsc2UgeworICAgICAg
ICBtX2Vycm9yID0gdHJ1ZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSAiVGltZWQgb3V0IHdh
aXRpbmcgZm9yIHJlcGFpbnRcbiI7CisgICAgICAgIG1fd2ViUHJvY2Vzc0lzVW5yZW5zcG9uc2l2
ZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZWxzZQorICAgIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoaW1hZ2VSZWYpOworI2Vu
ZGlmCisgICAgaWYgKHJlcGFpbnRSZWN0cykKKyAgICAgICAgcGFpbnRSZXBhaW50UmVjdE92ZXJs
YXkoc3VyZmFjZSwgcmVwYWludFJlY3RzKTsKKworICAgIGNoYXIgYWN0dWFsSGFzaFszM107Cisg
ICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlyb1N1cmZhY2Uoc3VyZmFjZSwgYWN0dWFsSGFz
aCk7CisgICAgaWYgKCFjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhh
Y3R1YWxIYXNoKSkKKyAgICAgICAgZHVtcEJpdG1hcChzdXJmYWNlLCBhY3R1YWxIYXNoKTsKKwor
ICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175907</attachid>
            <date>2012-11-25 18:32:02 -0800</date>
            <delta_ts>2012-11-25 18:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18621</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdldEltYWdlRnJvbUN1cnJlbnRUZXh0
dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmg6IEFkZGVkLgor
CiAyMDEyLTExLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0NTUzMgQmFja2dyb3VuZHMgYW5kIEJvcmRlcnNdIEltcGxlbWVudCBuZXcgQ1NTMyBiYWNr
Z3JvdW5kLXBvc2l0aW9uIHBhcnNpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQko
cmV2aXNpb24gMTM1NjM4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NjM4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwzICs0MiwxMCBAQCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1Jl
CiAKICAgICByZXR1cm4gdmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmll
d0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisg
ICAgcmV0dXJuIHZpZXdJbXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NjM4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsOCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhG
aXhlCiAKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7
CiAKK1dLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3
UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEz
NTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGlj
eUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZENsaWVudEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90R0wuaCIKICNpbmNsdWRl
ICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tO
dW1iZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBA
IC01OSw5ICs2MSwxMSBAQAogI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFY29yZV9YLmg+CisjaW5jbHVk
ZSA8RXZhc19FbmdpbmVfR0xfWDExLmg+CiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2Fpcm9VdGlsaXRpZXNFZmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKICNpZiBFTkFCTEUoVklCUkFUSU9O
KQogI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudEVmbC5oIgpAQCAtMTAxMiwzICsxMDE2LDIzIEBA
IHZvaWQgRXdrVmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQoY29uc3QKIAogICAgIHZpZXdJbXBs
LT5pbmZvcm1JY29uQ2hhbmdlKCk7CiB9CisKK1dLSW1hZ2VSZWYgRXdrVmlld0ltcGw6OnRha2VT
bmFwc2hvdCgpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX2lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCkgeworI2VuZGlmCisgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBjcmVhdGVTdXJmYWNlRm9ySW1hZ2Uoc2QtPmltYWdlKTsKKyAgICAgICAgcmV0dXJu
IFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIDApOworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB9CisKKyAgICBFdmFzX05hdGl2ZV9TdXJm
YWNlKiBucyA9IGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX2dldChzZC0+aW1hZ2Up
OworICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciA9IGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJl
KHNkLT52aWV3LncsIHNkLT52aWV3LmgsIG5zLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+
dmlldy53LCBzZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1h
Z2UgPSBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAg
ICBkZWxldGUgYnVmZmVyOworICAgIHJldHVybiBpbWFnZTsKKyNlbmRpZgorfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lv
biAxMzU2MzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhcmR3YXJlQWNjZWxl
cmF0ZWQ7IH0KICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sIGVuYWJsZSkgeyBtX3Nl
dERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCisgICAgV0tJbWFnZVJlZiB0YWtlU25hcHNo
b3QoKTsKKwogcHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxF
d2tWaWV3SW1wbD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Nu
YXBzaG90R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL1NuYXBzaG90R0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvU25hcHNob3RHTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpbmNsdWRlICJTbmFwc2hvdEdMLmgiCisKKyNpZiBVU0UoT1BFTkdMX0VT
XzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+Cisj
ZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwordW5zaWduZWQgY2hhciog
Z2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgdGV4
dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsK
KyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhclt3aWR0aCAqIGhl
aWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JB
LCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8gTm93IGZsaXAgaXQKKyAgICB1
bnNpZ25lZCB0bXA7CisgICAgdW5zaWduZWQqIGJ1ZiA9ICh1bnNpZ25lZCopYnVmZmVyOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQgLyAyOyBpKyspIHsKKyAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaSAqIHdp
ZHRoICsgal07CisgICAgICAgICAgICBidWZbaSAqIHdpZHRoICsgal0gPSBidWZbKGhlaWdodCAt
IGkgLSAxKSAqIHdpZHRoICsgal07CisgICAgICAgICAgICBidWZbKGhlaWdodCAtIGkgLSAxKSAq
IHdpZHRoICsgal0gPSB0bXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVy
OworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Nu
YXBzaG90R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9TbmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBTbmFwc2hvdEdMX2gKKyNkZWZpbmUgU25hcHNob3RHTF9oCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZy
b21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOwor
I2VuZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEdMX2gKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTIxICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJd
IDNEIHBpeGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZSBhIHNuYXBzaG90IG9mIHRoZSB2aWV3IGluIHRo
ZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBXZSBoYXZl
IHRvIHVzZSBUZXh0dXJlIE1hcHBlciBpbiBvcmRlciB0byBjb3JyZWN0bHkgcGFpbnQgM0QgdHJh
bnNmb3JtcyBldGMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAg
ICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0
Zm9ybVdlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRv
d1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZv
Y2F0aW9uRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpjb21w
dXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXVFI6OndyaXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6cGFpbnRS
ZXBhaW50UmVjdE92ZXJsYXkpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQ
aXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKwogMjAxMi0xMS0yMyAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MzIEJhY2tncm91bmRzIGFuZCBC
b3JkZXJzXSBJbXBsZW1lbnQgbmV3IENTUzMgYmFja2dyb3VuZC1wb3NpdGlvbiBwYXJzaW5nLgpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAx
MzU2MzgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDExICs5LDEwIEBAIEFERF9DVVNUT01fVEFSR0VUKGZvcndhcmRpbmct
aGVhZGVyc1NvdXAKIFNFVChGb3J3YXJkaW5nTmV0d29ya0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVu
bmVyX05BTUUgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RSdW5uZXIpCiAKIExJ
U1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUwotICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfRElSfS9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAotCiAgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAogICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfRElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAogICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfRElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAKICAgICAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0vZWZsL21haW4uY3BwCiApCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFn
ZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOwogICAgIGJvb2wgY29tcGFyZUFjdHVhbEhh
c2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOwogCi0jaWYgUExBVEZP
Uk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGF0aWMgdm9p
ZCBmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCk7CiAg
ICAgdm9pZCBmb3JjZVJlcGFpbnREb25lKCk7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAkocmV2aXNpb24gMTM1
NjM4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogI2luY2x1ZGUgIkVXZWJLaXQyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0Mi9XS0FQSUNhc3QuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJ
bWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIApAQCAtMTI0LDkgKzEyNywyNCBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZp
ZXdGaXJzdFJlCiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2lu
ZG93U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJl
IHBpeGVscyBpbiB0aGUgVUkgcHJvY2VzcywKLSAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5
IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAg
ICBFY29yZV9FdmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3Rf
ZXZhc19nZXQobV92aWV3KSk7CisKKyAgICBBU1NFUlQoZWUpOworCisgICAgaW50IHdpZHRoOwor
ICAgIGludCBoZWlnaHQ7CisgICAgZWNvcmVfZXZhc19nZW9tZXRyeV9nZXQoZWUsIDAsIDAsICZ3
aWR0aCwgJmhlaWdodCk7CisgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsKKyAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3Vy
ZmFjZShXS1ZpZXdHZXRTbmFwc2hvdCh0b0FQSShtX3ZpZXcpKSk7CisKKyAgICBjYWlyb19zdGF0
dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKTsKKyAgICBp
ZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEVJTkFfTE9HX0VS
UigiQ291bGQgbm90IGNyZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsIGNhaXJvX3N0YXR1c190b19z
dHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFdLSW1hZ2VP
cHRpb25zIG9wdGlvbnMgPSAwOworICAgIHJldHVybiBhZG9wdFdLKFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIG9wdGlvbnMpKTsKIH0KIAogYm9vbCBQbGF0Zm9y
bVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpIGNv
bnN0CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2NhdGlvbkVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9jYXRp
b25FZmwuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVz
dEludm9jYXRpb25FZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
ICAgICAgICAgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMTAsIDIwMTEgSWdhbGlhIFMu
TAorICogICAgICAgICAgIChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdElu
dm9jYXRpb24uaCIKKworI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KKyNpbmNs
dWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
TUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RSIHsK
Kwordm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UsIGNoYXIgaGFzaFN0cmluZ1szM10pCit7CisgICAgQVNTRVJUKGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsg
Ly8gSW1hZ2VEaWZmIGFzc3VtZXMgMzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4KKworICAg
IHNpemVfdCBwaXhlbHNIaWdoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZh
Y2UpOworICAgIHNpemVfdCBwaXhlbHNXaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworCisgICAgTUQ1IG1kNUNvbnRleHQ7CisgICAgdW5zaWdu
ZWQgY2hhciogYml0bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAw
OyByb3cgPCBwaXhlbHNIaWdoOyArK3JvdykgeworICAgICAgICBtZDVDb250ZXh0LmFkZEJ5dGVz
KGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgYml0bWFwRGF0YSArPSBieXRl
c1BlclJvdzsKKyAgICB9CisgICAgVmVjdG9yPHVpbnQ4X3QsIDE2PiBoYXNoOworICAgIG1kNUNv
bnRleHQuY2hlY2tzdW0oaGFzaCk7CisKKyAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiUw
MnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAy
eCUwMngiLAorICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBoYXNo
WzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzddLAorICAgICAgICBoYXNoWzhdLCBoYXNoWzld
LCBoYXNoWzEwXSwgaGFzaFsxMV0sIGhhc2hbMTJdLCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhhc2hb
MTVdKTsKK30KKworc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCogY2xv
c3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAg
IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogaW4gPSByZWludGVycHJldF9jYXN0PFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPio+KGNsb3N1cmUpOworICAgIGluLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBCaXRt
YXAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3sKKyAg
ICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcGl4ZWxEYXRhOworICAgIGNhaXJvX3N1cmZhY2Vfd3Jp
dGVfdG9fcG5nX3N0cmVhbShzdXJmYWNlLCB3cml0ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsKKyAg
ICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7CisgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSA9IHBpeGVsRGF0YS5kYXRhKCk7CisKKyAgICBwcmludFBORyhk
YXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50UmVwYWlu
dFJlY3RPdmVybGF5KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50
UmVjdHMpCit7CisgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsK
KworICAgIGNhaXJvX3B1c2hfZ3JvdXAoY29udGV4dCk7CisKKyAgICAvLyBQYWludCB0aGUgZ3Jh
eSBtYXNrIG92ZXIgdGhlIG9yaWdpbmFsIGltYWdlLgorICAgIGNhaXJvX3NldF9zb3VyY2Vfcmdi
YShjb250ZXh0LCAwLCAwLCAwLCAwLjY2KTsKKyAgICBjYWlyb19wYWludChjb250ZXh0KTsKKwor
ICAgIC8vIFBhaW50IHRyYW5zcGFyZW50IHJlY3RhbmdsZXMgb3ZlciB0aGUgbWFzayB0byBzaG93
IHRoZSByZXBhaW50ZWQgcmVnaW9ucy4KKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4
dCwgMCwgMCwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQsIENBSVJPX09Q
RVJBVE9SX1NPVVJDRSk7CisgICAgc2l6ZV90IGNvdW50ID0gV0tBcnJheUdldFNpemUocmVwYWlu
dFJlY3RzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgV0tSZWN0IHJlY3QgPSBXS1JlY3RHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1JlY3RSZWY+KFdL
QXJyYXlHZXRJdGVtQXRJbmRleChyZXBhaW50UmVjdHMsIGkpKSk7CisgICAgICAgIGNhaXJvX3Jl
Y3RhbmdsZShjb250ZXh0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNpemUu
d2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOworICAgICAgICBjYWlyb19maWxsKGNvbnRleHQpOwor
ICAgIH0KKworICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY29udGV4dCk7CisgICAgY2Fp
cm9fcGFpbnQoY29udGV4dCk7CisKKyAgICBjYWlyb19kZXN0cm95KGNvbnRleHQpOworfQorCisK
K3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVm
LCB2b2lkICpjb250ZXh0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29u
dGV4dCktPm1fZ290UmVwYWludCA9IHRydWU7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgp
Lm5vdGlmeURvbmUoKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50
UmVjdHMpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFVOVVNFRF9Q
QVJBTShpbWFnZVJlZik7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSAwOworCisg
ICAgV0tQYWdlUmVmIHBhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpOworICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCB0aGlzLCAmZm9yY2VSZXBh
aW50RG9uZUNhbGxiYWNrKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5VbnRp
bChtX2dvdFJlcGFpbnQsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQpOworCisgICAgaWYg
KG1fZ290UmVwYWludCkKKyAgICAgICAgc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZh
Y2UoVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90
SW1hZ2UoKS5nZXQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZXJyb3IgPSB0cnVlOworICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVwYWludFxuIjsK
KyAgICAgICAgbV93ZWJQcm9jZXNzSXNVbnJlbnNwb25zaXZlID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbHNlCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gV0tJbWFn
ZUNyZWF0ZUNhaXJvU3VyZmFjZShpbWFnZVJlZik7CisjZW5kaWYKKyAgICBpZiAocmVwYWludFJl
Y3RzKQorICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCByZXBhaW50UmVj
dHMpOworCisgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKKyAgICBjb21wdXRlTUQ1SGFzaFN0cmlu
Z0ZvckNhaXJvU3VyZmFjZShzdXJmYWNlLCBhY3R1YWxIYXNoKTsKKyAgICBpZiAoIWNvbXBhcmVB
Y3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQorICAgICAgICBk
dW1wQml0bWFwKHN1cmZhY2UsIGFjdHVhbEhhc2gpOworCisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHN1cmZhY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIK
</data>
<flag name="commit-queue"
          id="191519"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175910</attachid>
            <date>2012-11-25 18:45:32 -0800</date>
            <delta_ts>2012-11-25 18:51:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>19194</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdldEltYWdlRnJvbUN1cnJlbnRUZXh0
dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmg6IEFkZGVkLgor
CiAyMDEyLTExLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0NTUzMgQmFja2dyb3VuZHMgYW5kIEJvcmRlcnNdIEltcGxlbWVudCBuZXcgQ1NTMyBiYWNr
Z3JvdW5kLXBvc2l0aW9uIHBhcnNpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQko
cmV2aXNpb24gMTM1NjM4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NjM4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwzICs0MiwxMCBAQCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1Jl
CiAKICAgICByZXR1cm4gdmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmll
d0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisg
ICAgcmV0dXJuIHZpZXdJbXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NjM4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsOCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhG
aXhlCiAKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7
CiAKK1dLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3
UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEz
NTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGlj
eUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZENsaWVudEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90R0wuaCIKICNpbmNsdWRl
ICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tO
dW1iZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBA
IC02Miw2ICs2NCw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fp
cm9VdGlsaXRpZXNFZmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogI2luY2x1
ZGUgIlZpYnJhdGlvbkNsaWVudEVmbC5oIgpAQCAtMTAxMiwzICsxMDE1LDIzIEBAIHZvaWQgRXdr
Vmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQoY29uc3QKIAogICAgIHZpZXdJbXBsLT5pbmZvcm1J
Y29uQ2hhbmdlKCk7CiB9CisKK1dLSW1hZ2VSZWYgRXdrVmlld0ltcGw6OnRha2VTbmFwc2hvdCgp
Cit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX2lzSGFyZHdhcmVBY2NlbGVyYXRl
ZCkgeworI2VuZGlmCisgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBj
cmVhdGVTdXJmYWNlRm9ySW1hZ2Uoc2QtPmltYWdlKTsKKyAgICAgICAgcmV0dXJuIFdLSW1hZ2VD
cmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIDApOworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICB9CisKKyAgICBFdmFzX05hdGl2ZV9TdXJmYWNlKiBucyA9
IGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX2dldChzZC0+aW1hZ2UpOworICAgIHVu
c2lnbmVkIGNoYXIqIGJ1ZmZlciA9IGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJlKHNkLT52aWV3
LncsIHNkLT52aWV3LmgsIG5zLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmlldy53LCBz
ZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2UgPSBXS0lt
YWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBkZWxldGUg
YnVmZmVyOworICAgIHJldHVybiBpbWFnZTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzU2Mzgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXJkd2Fy
ZUFjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhcmR3YXJlQWNjZWxlcmF0ZWQ7IH0K
ICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sIGVuYWJsZSkgeyBtX3NldERyYXdzQmFj
a2dyb3VuZCA9IGVuYWJsZTsgfQogCisgICAgV0tJbWFnZVJlZiB0YWtlU25hcHNob3QoKTsKKwog
cHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29u
c3Q7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1w
bD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBz
aG90R0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvU25hcHNob3RHTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyNpbmNsdWRlICJTbmFwc2hvdEdMLmgiCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VG
cm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQor
eworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNp
Z25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRd
OworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8gTm93IGZsaXAgaXQKKyAgICB1bnNpZ25lZCB0
bXA7CisgICAgdW5zaWduZWQqIGJ1ZiA9ICh1bnNpZ25lZCopYnVmZmVyOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBoZWlnaHQgLyAyOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaSAqIHdpZHRoICsgal07
CisgICAgICAgICAgICBidWZbaSAqIHdpZHRoICsgal0gPSBidWZbKGhlaWdodCAtIGkgLSAxKSAq
IHdpZHRoICsgal07CisgICAgICAgICAgICBidWZbKGhlaWdodCAtIGkgLSAxKSAqIHdpZHRoICsg
al0gPSB0bXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hv
dEdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgICBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBTbmFwc2hvdEdMX2gKKyNkZWZpbmUgU25hcHNob3RHTF9oCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZyb21DdXJyZW50
VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOworI2VuZGlmCisK
KyNlbmRpZiAvLyBTbmFwc2hvdEdMX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDEzNTYzOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFNo
b3dUaWxlRGVidWdWaXN1YWxzKCkKICNpZiBQTEFURk9STShRVCkKICAgICByZXR1cm4gKHFnZXRl
bnYoIlFUX1dFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSA9PSAiMSIpOwog
I2VsaWYgVVNFKENBSVJPKQotICAgIHJldHVybiAoU3RyaW5nKGdldGVudigiV0VCS0lUX1NIT1df
Q09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpKSA9PSAiMSIpOworICAgIHJldHVybiAxOy8vKFN0
cmluZyhnZXRlbnYoIldFQktJVF9TSE9XX0NPTVBPU0lUSU5HX0RFQlVHX1ZJU1VBTFMiKSkgPT0g
IjEiKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTIx
ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtX
SzJdIDNEIHBpeGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZSBhIHNuYXBzaG90IG9mIHRoZSB2aWV3IGlu
IHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBXZSBo
YXZlIHRvIHVzZSBUZXh0dXJlIE1hcHBlciBpbiBvcmRlciB0byBjb3JyZWN0bHkgcGFpbnQgM0Qg
dHJhbnNmb3JtcyBldGMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAg
ICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9Q
bGF0Zm9ybVdlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Ondp
bmRvd1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJ
bnZvY2F0aW9uRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpj
b21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXVFI6OndyaXRl
RnVuY3Rpb24pOgorICAgICAgICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6cGFp
bnRSZXBhaW50UmVjdE92ZXJsYXkpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9y
Y2VSZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1
bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKwogMjAxMi0xMS0yMyAgQWxleGlzIE1l
bmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MzIEJhY2tncm91bmRzIGFu
ZCBCb3JkZXJzXSBJbXBsZW1lbnQgbmV3IENTUzMgYmFja2dyb3VuZC1wb3NpdGlvbiBwYXJzaW5n
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lv
biAxMzU2MzgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC05LDExICs5LDEwIEBAIEFERF9DVVNUT01fVEFSR0VUKGZvcndhcmRp
bmctaGVhZGVyc1NvdXAKIFNFVChGb3J3YXJkaW5nTmV0d29ya0hlYWRlcnNGb3JXZWJLaXRUZXN0
UnVubmVyX05BTUUgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RSdW5uZXIpCiAK
IExJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUwotICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfRElSfS9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAotCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9ESVJ9L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAogICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfRElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAogICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfRElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCisgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9ESVJ9L2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAKICAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0RJUn0vZWZsL21haW4uY3BwCiApCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJ
bWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOwogICAgIGJvb2wgY29tcGFyZUFjdHVh
bEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOwogCi0jaWYgUExB
VEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGF0aWMg
dm9pZCBmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCk7
CiAgICAgdm9pZCBmb3JjZVJlcGFpbnREb25lKCk7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAkocmV2aXNpb24g
MTM1NjM4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogI2luY2x1ZGUgIkVXZWJLaXQy
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Mi9XS0FQSUNhc3QuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApAQCAtMTI0LDkgKzEyNywyNCBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdl
YlZpZXdGaXJzdFJlCiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6
d2luZG93U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0
dXJlIHBpeGVscyBpbiB0aGUgVUkgcHJvY2VzcywKLSAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNz
YXJ5IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsK
KyAgICBFY29yZV9FdmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmpl
Y3RfZXZhc19nZXQobV92aWV3KSk7CisKKyAgICBBU1NFUlQoZWUpOworCisgICAgaW50IHdpZHRo
OworICAgIGludCBoZWlnaHQ7CisgICAgZWNvcmVfZXZhc19nZW9tZXRyeV9nZXQoZWUsIDAsIDAs
ICZ3aWR0aCwgJmhlaWdodCk7CisgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsK
KyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJv
U3VyZmFjZShXS1ZpZXdHZXRTbmFwc2hvdCh0b0FQSShtX3ZpZXcpKSk7CisKKyAgICBjYWlyb19z
dGF0dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKTsKKyAg
ICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEVJTkFfTE9H
X0VSUigiQ291bGQgbm90IGNyZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsIGNhaXJvX3N0YXR1c190
b19zdHJpbmcoc3RhdHVzKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFdLSW1h
Z2VPcHRpb25zIG9wdGlvbnMgPSAwOworICAgIHJldHVybiBhZG9wdFdLKFdLSW1hZ2VDcmVhdGVG
cm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIG9wdGlvbnMpKTsKIH0KIAogYm9vbCBQbGF0
Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMp
IGNvbnN0CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2NhdGlvbkVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9j
YXRpb25FZmwuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
VGVzdEludm9jYXRpb25FZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgICAgICAgICAgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMTAsIDIwMTEgSWdhbGlh
IFMuTAorICogICAgICAgICAgIChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVz
dEludm9jYXRpb24uaCIKKworI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KKyNp
bmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RS
IHsKKwordm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNoYXIgaGFzaFN0cmluZ1szM10pCit7CisgICAgQVNTRVJUKGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9PSBDQUlST19GT1JNQVRfQVJHQjMy
KTsgLy8gSW1hZ2VEaWZmIGFzc3VtZXMgMzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4KKwor
ICAgIHNpemVfdCBwaXhlbHNIaWdoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpOworICAgIHNpemVfdCBwaXhlbHNXaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
d2lkdGgoc3VyZmFjZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworCisgICAgTUQ1IG1kNUNvbnRleHQ7CisgICAgdW5z
aWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBmb3IgKHNpemVfdCByb3cg
PSAwOyByb3cgPCBwaXhlbHNIaWdoOyArK3JvdykgeworICAgICAgICBtZDVDb250ZXh0LmFkZEJ5
dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgYml0bWFwRGF0YSArPSBi
eXRlc1BlclJvdzsKKyAgICB9CisgICAgVmVjdG9yPHVpbnQ4X3QsIDE2PiBoYXNoOworICAgIG1k
NUNvbnRleHQuY2hlY2tzdW0oaGFzaCk7CisKKyAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywg
IiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4
JTAyeCUwMngiLAorICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBo
YXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzddLAorICAgICAgICBoYXNoWzhdLCBoYXNo
WzldLCBoYXNoWzEwXSwgaGFzaFsxMV0sIGhhc2hbMTJdLCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhh
c2hbMTVdKTsKK30KKworc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCog
Y2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorewor
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogaW4gPSByZWludGVycHJldF9jYXN0PFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPio+KGNsb3N1cmUpOworICAgIGluLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBC
aXRtYXAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3sK
KyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcGl4ZWxEYXRhOworICAgIGNhaXJvX3N1cmZhY2Vf
d3JpdGVfdG9fcG5nX3N0cmVhbShzdXJmYWNlLCB3cml0ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsK
KyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7CisgICAgY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSA9IHBpeGVsRGF0YS5kYXRhKCk7CisKKyAgICBwcmludFBO
RyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50UmVw
YWludFJlY3RPdmVybGF5KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBh
aW50UmVjdHMpCit7CisgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNl
KTsKKworICAgIGNhaXJvX3B1c2hfZ3JvdXAoY29udGV4dCk7CisKKyAgICAvLyBQYWludCB0aGUg
Z3JheSBtYXNrIG92ZXIgdGhlIG9yaWdpbmFsIGltYWdlLgorICAgIGNhaXJvX3NldF9zb3VyY2Vf
cmdiYShjb250ZXh0LCAwLCAwLCAwLCAwLjY2KTsKKyAgICBjYWlyb19wYWludChjb250ZXh0KTsK
KworICAgIC8vIFBhaW50IHRyYW5zcGFyZW50IHJlY3RhbmdsZXMgb3ZlciB0aGUgbWFzayB0byBz
aG93IHRoZSByZXBhaW50ZWQgcmVnaW9ucy4KKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29u
dGV4dCwgMCwgMCwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQsIENBSVJP
X09QRVJBVE9SX1NPVVJDRSk7CisgICAgc2l6ZV90IGNvdW50ID0gV0tBcnJheUdldFNpemUocmVw
YWludFJlY3RzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAg
ICAgICAgV0tSZWN0IHJlY3QgPSBXS1JlY3RHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1JlY3RSZWY+
KFdLQXJyYXlHZXRJdGVtQXRJbmRleChyZXBhaW50UmVjdHMsIGkpKSk7CisgICAgICAgIGNhaXJv
X3JlY3RhbmdsZShjb250ZXh0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNp
emUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOworICAgICAgICBjYWlyb19maWxsKGNvbnRleHQp
OworICAgIH0KKworICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY29udGV4dCk7CisgICAg
Y2Fpcm9fcGFpbnQoY29udGV4dCk7CisKKyAgICBjYWlyb19kZXN0cm95KGNvbnRleHQpOworfQor
CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9y
UmVmLCB2b2lkICpjb250ZXh0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RJbnZvY2F0aW9uKj4o
Y29udGV4dCktPm1fZ290UmVwYWludCA9IHRydWU7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLm5vdGlmeURvbmUoKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0Fu
ZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZVJlZiwgV0tBcnJheVJlZiByZXBh
aW50UmVjdHMpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFVOVVNF
RF9QQVJBTShpbWFnZVJlZik7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSAwOwor
CisgICAgV0tQYWdlUmVmIHBhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZp
ZXcoKS0+cGFnZSgpOworICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCB0aGlzLCAmZm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5V
bnRpbChtX2dvdFJlcGFpbnQsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQpOworCisgICAg
aWYgKG1fZ290UmVwYWludCkKKyAgICAgICAgc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UoVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBz
aG90SW1hZ2UoKS5nZXQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZXJyb3IgPSB0cnVlOwor
ICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVwYWludFxu
IjsKKyAgICAgICAgbV93ZWJQcm9jZXNzSXNVbnJlbnNwb25zaXZlID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gV0tJ
bWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShpbWFnZVJlZik7CisjZW5kaWYKKyAgICBpZiAocmVwYWlu
dFJlY3RzKQorICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCByZXBhaW50
UmVjdHMpOworCisgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKKyAgICBjb21wdXRlTUQ1SGFzaFN0
cmluZ0ZvckNhaXJvU3VyZmFjZShzdXJmYWNlLCBhY3R1YWxIYXNoKTsKKyAgICBpZiAoIWNvbXBh
cmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQorICAgICAg
ICBkdW1wQml0bWFwKHN1cmZhY2UsIGFjdHVhbEhhc2gpOworCisgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHN1cmZhY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175911</attachid>
            <date>2012-11-25 18:51:40 -0800</date>
            <delta_ts>2012-11-26 14:27:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18498</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdldEltYWdlRnJvbUN1cnJlbnRUZXh0
dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmg6IEFkZGVkLgor
CiAyMDEyLTExLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0NTUzMgQmFja2dyb3VuZHMgYW5kIEJvcmRlcnNdIEltcGxlbWVudCBuZXcgQ1NTMyBiYWNr
Z3JvdW5kLXBvc2l0aW9uIHBhcnNpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQko
cmV2aXNpb24gMTM1NjM4KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NjM4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwzICs0MiwxMCBAQCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1Jl
CiAKICAgICByZXR1cm4gdmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmll
d0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisg
ICAgcmV0dXJuIHZpZXdJbXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NjM4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsOCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhG
aXhlCiAKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7
CiAKK1dLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3
UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEz
NTYzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGlj
eUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZENsaWVudEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90R0wuaCIKICNpbmNsdWRl
ICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tO
dW1iZXIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBA
IC02Miw2ICs2NCw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fp
cm9VdGlsaXRpZXNFZmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogI2luY2x1
ZGUgIlZpYnJhdGlvbkNsaWVudEVmbC5oIgpAQCAtMTAxMiwzICsxMDE1LDIzIEBAIHZvaWQgRXdr
Vmlld0ltcGw6Om9uRmF2aWNvbkNoYW5nZWQoY29uc3QKIAogICAgIHZpZXdJbXBsLT5pbmZvcm1J
Y29uQ2hhbmdlKCk7CiB9CisKK1dLSW1hZ2VSZWYgRXdrVmlld0ltcGw6OnRha2VTbmFwc2hvdCgp
Cit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX2lzSGFyZHdhcmVBY2NlbGVyYXRl
ZCkgeworI2VuZGlmCisgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBj
cmVhdGVTdXJmYWNlRm9ySW1hZ2Uoc2QtPmltYWdlKTsKKyAgICAgICAgcmV0dXJuIFdLSW1hZ2VD
cmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIDApOworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICB9CisKKyAgICBFdmFzX05hdGl2ZV9TdXJmYWNlKiBucyA9
IGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX2dldChzZC0+aW1hZ2UpOworICAgIHVu
c2lnbmVkIGNoYXIqIGJ1ZmZlciA9IGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJlKHNkLT52aWV3
LncsIHNkLT52aWV3LmgsIG5zLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmlldy53LCBz
ZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2UgPSBXS0lt
YWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBkZWxldGUg
YnVmZmVyOworICAgIHJldHVybiBpbWFnZTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzU2Mzgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXJkd2Fy
ZUFjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhcmR3YXJlQWNjZWxlcmF0ZWQ7IH0K
ICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sIGVuYWJsZSkgeyBtX3NldERyYXdzQmFj
a2dyb3VuZCA9IGVuYWJsZTsgfQogCisgICAgV0tJbWFnZVJlZiB0YWtlU25hcHNob3QoKTsKKwog
cHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29u
c3Q7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1w
bD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBz
aG90R0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvU25hcHNob3RHTC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyNpbmNsdWRlICJTbmFwc2hvdEdMLmgiCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5j
bHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2lu
Y2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VG
cm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQor
eworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNp
Z25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRd
OworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8gTm93IGZsaXAgaXQKKyAgICB1bnNpZ25lZCB0
bXA7CisgICAgdW5zaWduZWQqIGJ1ZiA9ICh1bnNpZ25lZCopYnVmZmVyOworCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBoZWlnaHQgLyAyOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaSAqIHdpZHRoICsgal07
CisgICAgICAgICAgICBidWZbaSAqIHdpZHRoICsgal0gPSBidWZbKGhlaWdodCAtIGkgLSAxKSAq
IHdpZHRoICsgal07CisgICAgICAgICAgICBidWZbKGhlaWdodCAtIGkgLSAxKSAqIHdpZHRoICsg
al0gPSB0bXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hv
dEdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEdMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgICBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBTbmFwc2hvdEdMX2gKKyNkZWZpbmUgU25hcHNob3RHTF9oCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZyb21DdXJyZW50
VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOworI2VuZGlmCisK
KyNlbmRpZiAvLyBTbmFwc2hvdEdMX2gKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTIxICBZYWVsIEFoYXJv
biAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBpeGVs
IHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBHZW5lcmF0ZSBhIHNuYXBzaG90IG9mIHRoZSB2aWV3IGluIHRoZSBVSSBwcm9j
ZXNzIGluc3RlYWQgb2YgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBXZSBoYXZlIHRvIHVzZSBU
ZXh0dXJlIE1hcHBlciBpbiBvcmRlciB0byBjb3JyZWN0bHkgcGFpbnQgM0QgdHJhbnNmb3JtcyBl
dGMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJ
bnZvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZp
ZXdFZmwuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZs
LmNwcDogQWRkZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpjb21wdXRlTUQ1SGFz
aFN0cmluZ0ZvckNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXVFI6OndyaXRlRnVuY3Rpb24pOgor
ICAgICAgICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6cGFpbnRSZXBhaW50UmVj
dE92ZXJsYXkpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9u
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRD
b21wYXJlV2l0aEV4cGVjdGVkKToKKwogMjAxMi0xMS0yMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhp
c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MzIEJhY2tncm91bmRzIGFuZCBCb3JkZXJzXSBJ
bXBsZW1lbnQgbmV3IENTUzMgYmFja2dyb3VuZC1wb3NpdGlvbiBwYXJzaW5nLgpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU2MzgpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC05LDExICs5LDEwIEBAIEFERF9DVVNUT01fVEFSR0VUKGZvcndhcmRpbmctaGVhZGVyc1Nv
dXAKIFNFVChGb3J3YXJkaW5nTmV0d29ya0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVubmVyX05BTUUg
Zm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktpdFRlc3RSdW5uZXIpCiAKIExJU1QoQVBQRU5E
IFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUwotICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9j
YWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAotCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9E
SVJ9L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
RElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9E
SVJ9L2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJ
Un0vZWZsL21haW4uY3BwCiApCiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgJKHJldmlzaW9uIDEzNTYzOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tB
cnJheVJlZiByZXBhaW50UmVjdHMpOwogICAgIGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVj
dGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOwogCi0jaWYgUExBVEZPUk0oUVQpCisj
aWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBzdGF0aWMgdm9pZCBmb3JjZVJl
cGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBm
b3JjZVJlcGFpbnREb25lKCk7CiAjZW5kaWYKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
ZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAkocmV2aXNpb24gMTM1NjM4KQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogI2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Mi9XS0FQSUNhc3QuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJv
Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAt
MTI0LDkgKzEyNywyNCBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJl
CiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNo
b3RJbWFnZSgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBp
biB0aGUgVUkgcHJvY2VzcywKLSAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1
cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAgICBFY29yZV9F
dmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQo
bV92aWV3KSk7CisKKyAgICBBU1NFUlQoZWUpOworCisgICAgaW50IHdpZHRoOworICAgIGludCBo
ZWlnaHQ7CisgICAgZWNvcmVfZXZhc19nZW9tZXRyeV9nZXQoZWUsIDAsIDAsICZ3aWR0aCwgJmhl
aWdodCk7CisgICAgQVNTRVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsKKyAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShXS1Zp
ZXdHZXRTbmFwc2hvdCh0b0FQSShtX3ZpZXcpKSk7CisKKyAgICBjYWlyb19zdGF0dXNfdCBzdGF0
dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKTsKKyAgICBpZiAoc3RhdHVz
ICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQg
bm90IGNyZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsIGNhaXJvX3N0YXR1c190b19zdHJpbmcoc3Rh
dHVzKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFdLSW1hZ2VPcHRpb25zIG9w
dGlvbnMgPSAwOworICAgIHJldHVybiBhZG9wdFdLKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJm
YWNlKHN1cmZhY2UuZ2V0KCksIG9wdGlvbnMpKTsKIH0KIAogYm9vbCBQbGF0Zm9ybVdlYlZpZXc6
OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpIGNvbnN0CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9jYXRpb25FZmwuY3Bw
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9jYXRp
b25FZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAg
KEMpIDIwMTEgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMTAsIDIwMTEgSWdhbGlhIFMuTAorICogICAg
ICAgICAgIChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdEludm9jYXRpb24u
aCIKKworI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdl
YlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYktpdDIv
V0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KKyNpbmNsdWRlIDxjc3Rk
aW8+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTUQ1Lmg+Cisj
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBj
b21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNoYXIgaGFzaFN0cmluZ1szM10pCit7CisgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsgLy8gSW1hZ2VE
aWZmIGFzc3VtZXMgMzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4KKworICAgIHNpemVfdCBw
aXhlbHNIaWdoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworICAg
IHNpemVfdCBwaXhlbHNXaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFj
ZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3Ry
aWRlKHN1cmZhY2UpOworCisgICAgTUQ1IG1kNUNvbnRleHQ7CisgICAgdW5zaWduZWQgY2hhciog
Yml0bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBw
aXhlbHNIaWdoOyArK3JvdykgeworICAgICAgICBtZDVDb250ZXh0LmFkZEJ5dGVzKGJpdG1hcERh
dGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsK
KyAgICB9CisgICAgVmVjdG9yPHVpbnQ4X3QsIDE2PiBoYXNoOworICAgIG1kNUNvbnRleHQuY2hl
Y2tzdW0oaGFzaCk7CisKKyAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiUwMnglMDJ4JTAy
eCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAor
ICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBoYXNoWzRdLCBoYXNo
WzVdLCBoYXNoWzZdLCBoYXNoWzddLAorICAgICAgICBoYXNoWzhdLCBoYXNoWzldLCBoYXNoWzEw
XSwgaGFzaFsxMV0sIGhhc2hbMTJdLCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhhc2hbMTVdKTsKK30K
Kworc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCogY2xvc3VyZSwgY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiogaW4gPSByZWludGVycHJldF9jYXN0PFZlY3Rvcjx1bnNpZ25lZCBjaGFy
Pio+KGNsb3N1cmUpOworICAgIGluLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4g
Q0FJUk9fU1RBVFVTX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3sKKyAgICBWZWN0b3I8
dW5zaWduZWQgY2hhcj4gcGl4ZWxEYXRhOworICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5n
X3N0cmVhbShzdXJmYWNlLCB3cml0ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsKKyAgICBjb25zdCBz
aXplX3QgZGF0YUxlbmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7CisgICAgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSA9IHBpeGVsRGF0YS5kYXRhKCk7CisKKyAgICBwcmludFBORyhkYXRhLCBkYXRh
TGVuZ3RoLCBjaGVja3N1bSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVy
bGF5KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit7
CisgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKKworICAgIGNh
aXJvX3B1c2hfZ3JvdXAoY29udGV4dCk7CisKKyAgICAvLyBQYWludCB0aGUgZ3JheSBtYXNrIG92
ZXIgdGhlIG9yaWdpbmFsIGltYWdlLgorICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjb250ZXh0
LCAwLCAwLCAwLCAwLjY2KTsKKyAgICBjYWlyb19wYWludChjb250ZXh0KTsKKworICAgIC8vIFBh
aW50IHRyYW5zcGFyZW50IHJlY3RhbmdsZXMgb3ZlciB0aGUgbWFzayB0byBzaG93IHRoZSByZXBh
aW50ZWQgcmVnaW9ucy4KKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4dCwgMCwgMCwg
MCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQsIENBSVJPX09QRVJBVE9SX1NP
VVJDRSk7CisgICAgc2l6ZV90IGNvdW50ID0gV0tBcnJheUdldFNpemUocmVwYWludFJlY3RzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgV0tSZWN0
IHJlY3QgPSBXS1JlY3RHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1JlY3RSZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChyZXBhaW50UmVjdHMsIGkpKSk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShj
b250ZXh0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNpemUud2lkdGgsIHJl
Y3Quc2l6ZS5oZWlnaHQpOworICAgICAgICBjYWlyb19maWxsKGNvbnRleHQpOworICAgIH0KKwor
ICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY29udGV4dCk7CisgICAgY2Fpcm9fcGFpbnQo
Y29udGV4dCk7CisKKyAgICBjYWlyb19kZXN0cm95KGNvbnRleHQpOworfQorCisKK3ZvaWQgVGVz
dEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkICpj
b250ZXh0KQoreworICAgIHN0YXRpY19jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29udGV4dCktPm1f
Z290UmVwYWludCA9IHRydWU7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURv
bmUoKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRo
RXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit7
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFVOVVNFRF9QQVJBTShpbWFn
ZVJlZik7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSAwOworCisgICAgV0tQYWdl
UmVmIHBhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgp
OworICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCB0aGlzLCAmZm9yY2VSZXBhaW50RG9uZUNh
bGxiYWNrKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5VbnRpbChtX2dvdFJl
cGFpbnQsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQpOworCisgICAgaWYgKG1fZ290UmVw
YWludCkKKyAgICAgICAgc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoVGVzdENv
bnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2UoKS5n
ZXQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZXJyb3IgPSB0cnVlOworICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVwYWludFxuIjsKKyAgICAgICAg
bV93ZWJQcm9jZXNzSXNVbnJlbnNwb25zaXZlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbHNlCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNh
aXJvU3VyZmFjZShpbWFnZVJlZik7CisjZW5kaWYKKyAgICBpZiAocmVwYWludFJlY3RzKQorICAg
ICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCByZXBhaW50UmVjdHMpOworCisg
ICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKKyAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJv
U3VyZmFjZShzdXJmYWNlLCBhY3R1YWxIYXNoKTsKKyAgICBpZiAoIWNvbXBhcmVBY3R1YWxIYXNo
VG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQorICAgICAgICBkdW1wQml0bWFw
KHN1cmZhY2UsIGFjdHVhbEhhc2gpOworCisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZh
Y2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176066</attachid>
            <date>2012-11-26 14:27:14 -0800</date>
            <delta_ts>2012-11-26 16:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18167</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI2ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKGdldEltYWdlRnJvbUN1cnJlbnRUZXh0
dXJlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmg6IEFkZGVkLgor
CiAyMDEyLTExLTI2ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgVGV4dCBBdXRvc2l6aW5nOiBBZGQgVGV4dCBBdXRvc2l6aW5nIEFQSXMgZm9yIFdLMgpJ
bmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RHTC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2
YXNHTFN1cmZhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMyArNDIsMTAgQEAgV0tQYWdlUmVm
IFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZQogCiAgICAgcmV0dXJuIHZpZXdJbXBsLT53
a1BhZ2UoKTsKIH0KKworV0tJbWFnZVJlZiBXS1ZpZXdHZXRTbmFwc2hvdChXS1ZpZXdSZWYgdmll
d1JlZikKK3sKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJvbUV2
YXNPYmplY3QodG9JbXBsKHZpZXdSZWYpKTsKKworICAgIHJldHVybiB2aWV3SW1wbC0+dGFrZVNu
YXBzaG90KCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmgJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgV0tfRVhQ
T1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRoRml4ZQogCiBXS19FWFBPUlQgV0tQYWdlUmVm
IFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcpOwogCitXS19FWFBPUlQgV0tJbWFnZVJlZiBX
S1ZpZXdHZXRTbmFwc2hvdChXS1ZpZXdSZWYgdmlld1JlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzU3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSwxMyBAQAogI2luY2x1ZGUgIlBhZ2VQb2xpY3lDbGllbnRFZmwuaCIKICNpbmNsdWRlICJQ
YWdlVUlDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRDbGllbnRFZmwuaCIKKyNp
bmNsdWRlICJTbmFwc2hvdEdMLmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgpAQCAtNjIsNiArNjQsNyBAQAogI2luY2x1ZGUg
PEVkamUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzRWZsLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgog
CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICNpbmNsdWRlICJWaWJyYXRpb25DbGllbnRFZmwuaCIK
QEAgLTEwMTIsMyArMTAxNSwyMyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpvbkZhdmljb25DaGFuZ2Vk
KGNvbnN0CiAKICAgICB2aWV3SW1wbC0+aW5mb3JtSWNvbkNoYW5nZSgpOwogfQorCitXS0ltYWdl
UmVmIEV3a1ZpZXdJbXBsOjp0YWtlU25hcHNob3QoKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc21hcnREYXRhKCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIGlmICghbV9pc0hhcmR3YXJlQWNjZWxlcmF0ZWQpIHsKKyNlbmRpZgorICAgICAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gY3JlYXRlU3VyZmFjZUZvckltYWdlKHNkLT5p
bWFnZSk7CisgICAgICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJm
YWNlLmdldCgpLCAwKTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgfQor
CisgICAgRXZhc19OYXRpdmVfU3VyZmFjZSogbnMgPSBldmFzX29iamVjdF9pbWFnZV9uYXRpdmVf
c3VyZmFjZV9nZXQoc2QtPmltYWdlKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBnZXRJ
bWFnZUZyb21DdXJyZW50VGV4dHVyZShzZC0+dmlldy53LCBzZC0+dmlldy5oLCBucy0+ZGF0YS5v
cGVuZ2wudGV4dHVyZV9pZCk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJ
Uk9fRk9STUFUX0FSR0IzMiwgc2QtPnZpZXcudywgc2QtPnZpZXcuaCwgc2QtPnZpZXcudyAqIDQp
KTsKKyAgICBXS0ltYWdlUmVmIGltYWdlID0gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2Uo
c3VyZmFjZS5nZXQoKSwgMCk7CisgICAgZGVsZXRlW10gYnVmZmVyOworICAgIHJldHVybiBpbWFn
ZTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzU3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1
LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0hhcmR3YXJlQWNjZWxlcmF0ZWQ7IH0KICAgICB2b2lkIHNldERyYXdzQmFja2dy
b3VuZChib29sIGVuYWJsZSkgeyBtX3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCisg
ICAgV0tJbWFnZVJlZiB0YWtlU25hcHNob3QoKTsKKwogcHJpdmF0ZToKICAgICBpbmxpbmUgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNwbGF5VGlt
ZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RHTC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJTbmFwc2hvdEdM
LmgiCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5j
bHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisj
ZW5kaWYKKwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcg
dW5zaWduZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAw
LCB3aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisg
ICAgLy8gTm93IGZsaXAgaXQKKyAgICB1bnNpZ25lZCB0bXA7CisgICAgdW5zaWduZWQqIGJ1ZiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihidWZmZXIpOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBoZWlnaHQgLyAyOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3
aWR0aDsgKytqKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaSAqIHdpZHRoICsgal07CisgICAg
ICAgICAgICBidWZbaSAqIHdpZHRoICsgal0gPSBidWZbKGhlaWdodCAtIGkgLSAxKSAqIHdpZHRo
ICsgal07CisgICAgICAgICAgICBidWZbKGhlaWdodCAtIGkgLSAxKSAqIHdpZHRoICsgal0gPSB0
bXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90R0wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEdMLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hv
dEdMLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgICBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRl
ZiBTbmFwc2hvdEdMX2gKKyNkZWZpbmUgU25hcHNob3RHTF9oCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVy
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOworI2VuZGlmCisKKyNlbmRp
ZiAvLyBTbmFwc2hvdEdMX2gKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTI2ICBZYWVsIEFoYXJvbiAgPHlh
ZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBpeGVsIHRlc3Rz
IGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHZW5lcmF0ZSBhIHNuYXBzaG90IG9mIHRoZSB2aWV3IGluIHRoZSBVSSBwcm9jZXNzIGlu
c3RlYWQgb2YgdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICBXZSBoYXZlIHRvIHVzZSBUZXh0dXJl
IE1hcHBlciBpbiBvcmRlciB0byBjb3JyZWN0bHkgcGFpbnQgM0QgdHJhbnNmb3JtcyBldGMuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0
aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwu
Y3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2Up
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZsLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpjb21wdXRlTUQ1SGFzaFN0cmlu
Z0ZvckNhaXJvU3VyZmFjZSk6CisgICAgICAgIChXVFI6OndyaXRlRnVuY3Rpb24pOgorICAgICAg
ICAoV1RSOjpkdW1wQml0bWFwKToKKyAgICAgICAgKFdUUjo6cGFpbnRSZXBhaW50UmVjdE92ZXJs
YXkpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxi
YWNrKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKToKKwogMjAxMi0xMS0yNiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIENvdmVyYWdlIHRlc3RpbmcgaW4gd2Via2l0cHkgc2hvdWxk
IG9taXQgc29tZSBwYXRocwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZs
LmNtYWtlCShyZXZpc2lvbiAxMzU3NDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05LDExICs5LDEwIEBAIEFERF9DVVNUT01f
VEFSR0VUKGZvcndhcmRpbmctaGVhZGVyc1NvdXAKIFNFVChGb3J3YXJkaW5nTmV0d29ya0hlYWRl
cnNGb3JXZWJLaXRUZXN0UnVubmVyX05BTUUgZm9yd2FyZGluZy1oZWFkZXJzU291cEZvcldlYktp
dFRlc3RSdW5uZXIpCiAKIExJU1QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUwotICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAot
CiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNw
cAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNw
cAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvVGVzdENvbnRyb2xsZXJFZmwuY3Bw
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAK
ICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL21haW4uY3BwCiApCiAKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHJldmlzaW9uIDEzNTc0MCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVX
aXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOwogICAgIGJv
b2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoY29uc3QgY2hhclsz
M10pOwogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVG
TCkKICAgICBzdGF0aWMgdm9pZCBmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwg
dm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnREb25lKCk7CiAjZW5kaWYKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZs
LmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxh
dGZvcm1XZWJWaWV3RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOSBAQAogI2lu
Y2x1ZGUgIkVXZWJLaXQyLmgiCiAjaW5jbHVkZSAiV2ViS2l0Mi9XS0FQSUNhc3QuaCIKICNpbmNs
dWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI0LDkgKzEyNywxNiBAQCB2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlCiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBs
YXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUgVUkgcHJvY2VzcywKLSAgICAvLyB3aGlj
aCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4K
LSAgICByZXR1cm4gMDsKKyAgICBFY29yZV9FdmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZh
c19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQobV92aWV3KSk7CisKKyAgICBBU1NFUlQoZWUpOwor
CisgICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgZWNvcmVfZXZhc19nZW9tZXRy
eV9nZXQoZWUsIDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgQVNTRVJUKHdpZHRoID4gMCAm
JiBoZWlnaHQgPiAwKTsKKworICAgIHJldHVybiBhZG9wdFdLKFdLVmlld0dldFNuYXBzaG90KHRv
QVBJKG1fdmlldykpKTsKIH0KIAogYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OnZpZXdTdXBwb3J0c09w
dGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpIGNvbnN0CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2VmbC9UZXN0SW52b2NhdGlvbkVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9jYXRpb25FZmwuY3BwCShyZXZpc2lvbiAwKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdEludm9jYXRpb25FZmwuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMTEgQnJlbnQg
RnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
ICAgICAgICAgKEMpIDIwMTAsIDIwMTEgSWdhbGlhIFMuTAorICogICAgICAgICAgIChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKKworI2luY2x1ZGUg
IlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgorI2luY2x1ZGUgPGNhaXJvL2NhaXJv
Lmg+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL01ENS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKworbmFtZXNw
YWNlIFdUUiB7CisKK3ZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlyb1N1cmZhY2UoY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjaGFyIGhhc2hTdHJpbmdbMzNdKQoreworICAgIEFTU0VS
VChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSkgPT0gQ0FJUk9fRk9STUFU
X0FSR0IzMik7IC8vIEltYWdlRGlmZiBhc3N1bWVzIDMyIGJpdCBSR0JBLCB3ZSBtdXN0IGFzIHdl
bGwuCisKKyAgICBzaXplX3QgcGl4ZWxzSGlnaCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzdXJmYWNlKTsKKyAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3dpZHRoKHN1cmZhY2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKKworICAgIE1ENSBtZDVDb250ZXh0Owor
ICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CisgICAgZm9yIChzaXpl
X3Qgcm93ID0gMDsgcm93IDwgcGl4ZWxzSGlnaDsgKytyb3cpIHsKKyAgICAgICAgbWQ1Q29udGV4
dC5hZGRCeXRlcyhiaXRtYXBEYXRhLCA0ICogcGl4ZWxzV2lkZSk7CisgICAgICAgIGJpdG1hcERh
dGEgKz0gYnl0ZXNQZXJSb3c7CisgICAgfQorICAgIFZlY3Rvcjx1aW50OF90LCAxNj4gaGFzaDsK
KyAgICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOworCisgICAgc25wcmludGYoaGFzaFN0cmlu
ZywgMzMsICIlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4IiwKKyAgICAgICAgaGFzaFswXSwgaGFzaFsxXSwgaGFzaFsyXSwgaGFz
aFszXSwgaGFzaFs0XSwgaGFzaFs1XSwgaGFzaFs2XSwgaGFzaFs3XSwKKyAgICAgICAgaGFzaFs4
XSwgaGFzaFs5XSwgaGFzaFsxMF0sIGhhc2hbMTFdLCBoYXNoWzEyXSwgaGFzaFsxM10sIGhhc2hb
MTRdLCBoYXNoWzE1XSk7Cit9CisKK3N0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9u
KHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4qIGluID0gcmVpbnRlcnByZXRfY2FzdDxW
ZWN0b3I8dW5zaWduZWQgY2hhcj4qPihjbG9zdXJlKTsKKyAgICBpbi0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CisgICAgcmV0dXJuIENBSVJPX1NUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdm9p
ZCBkdW1wQml0bWFwKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgY2hhciogY2hlY2tz
dW0pCit7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBpeGVsRGF0YTsKKyAgICBjYWlyb19z
dXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oc3VyZmFjZSwgd3JpdGVGdW5jdGlvbiwgJnBpeGVs
RGF0YSk7CisgICAgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGggPSBwaXhlbERhdGEuc2l6ZSgpOwor
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBwaXhlbERhdGEuZGF0YSgpOworCisgICAg
cHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0aCwgY2hlY2tzdW0pOworfQorCitzdGF0aWMgdm9pZCBw
YWludFJlcGFpbnRSZWN0T3ZlcmxheShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLQXJyYXlS
ZWYgcmVwYWludFJlY3RzKQoreworICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0ID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKKworICAgIGNhaXJvX3B1c2hfZ3JvdXAoY29udGV4
dC5nZXQoKSk7CisKKyAgICAvLyBQYWludCB0aGUgZ3JheSBtYXNrIG92ZXIgdGhlIG9yaWdpbmFs
IGltYWdlLgorICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjb250ZXh0LmdldCgpLCAwLCAwLCAw
LCAwLjY2KTsKKyAgICBjYWlyb19wYWludChjb250ZXh0LmdldCgpKTsKKworICAgIC8vIFBhaW50
IHRyYW5zcGFyZW50IHJlY3RhbmdsZXMgb3ZlciB0aGUgbWFzayB0byBzaG93IHRoZSByZXBhaW50
ZWQgcmVnaW9ucy4KKyAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4dC5nZXQoKSwgMCwg
MCwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQuZ2V0KCksIENBSVJPX09Q
RVJBVE9SX1NPVVJDRSk7CisgICAgc2l6ZV90IGNvdW50ID0gV0tBcnJheUdldFNpemUocmVwYWlu
dFJlY3RzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgV0tSZWN0IHJlY3QgPSBXS1JlY3RHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1JlY3RSZWY+KFdL
QXJyYXlHZXRJdGVtQXRJbmRleChyZXBhaW50UmVjdHMsIGkpKSk7CisgICAgICAgIGNhaXJvX3Jl
Y3RhbmdsZShjb250ZXh0LmdldCgpLCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0
LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOworICAgICAgICBjYWlyb19maWxsKGNvbnRl
eHQuZ2V0KCkpOworICAgIH0KKworICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY29udGV4
dC5nZXQoKSk7CisgICAgY2Fpcm9fcGFpbnQoY29udGV4dC5nZXQoKSk7Cit9CisKKwordm9pZCBU
ZXN0SW52b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQg
KmNvbnRleHQpCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdEludm9jYXRpb24qPihjb250ZXh0KS0+
bV9nb3RSZXBhaW50ID0gdHJ1ZTsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5
RG9uZSgpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdp
dGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykK
K3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgVU5VU0VEX1BBUkFNKGlt
YWdlUmVmKTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7CisKKyAgICBX
S1BhZ2VSZWYgcGFnZSA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5w
YWdlKCk7CisgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIHRoaXMsICZmb3JjZVJlcGFpbnRE
b25lQ2FsbGJhY2spOworCisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnJ1blVudGlsKG1f
Z290UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OlNob3J0VGltZW91dCk7CisKKyAgICBpZiAobV9n
b3RSZXBhaW50KQorICAgICAgICBzdXJmYWNlID0gYWRvcHRSZWYoV0tJbWFnZUNyZWF0ZUNhaXJv
U3VyZmFjZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2luZG93U25h
cHNob3RJbWFnZSgpLmdldCgpKSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZXJyb3IgPSB0cnVl
OworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVwYWlu
dFxuIjsKKyAgICAgICAgbV93ZWJQcm9jZXNzSXNVbnJlbnNwb25zaXZlID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3Vy
ZmFjZSA9IGFkb3B0UmVmKFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoaW1hZ2VSZWYpKTsKKyNl
bmRpZgorICAgIGlmIChyZXBhaW50UmVjdHMpCisgICAgICAgIHBhaW50UmVwYWludFJlY3RPdmVy
bGF5KHN1cmZhY2UuZ2V0KCksIHJlcGFpbnRSZWN0cyk7CisKKyAgICBjaGFyIGFjdHVhbEhhc2hb
MzNdOworICAgIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0
KCksIGFjdHVhbEhhc2gpOworICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5k
RHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCisgICAgICAgIGR1bXBCaXRtYXAoc3VyZmFjZS5nZXQo
KSwgYWN0dWFsSGFzaCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176113</attachid>
            <date>2012-11-26 16:55:52 -0800</date>
            <delta_ts>2012-11-27 08:52:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18298</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVu
dFRleHR1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5o
OiBBZGRlZC4KKwogMjAxMi0xMS0yNiAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogQWRkIFRleHQgQXV0b3NpemluZyBBUElz
IGZvciBXSzIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU3NDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VH
TC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2F1dGhfcmVxdWVzdC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMyArNDIs
MTAgQEAgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZQogCiAgICAgcmV0
dXJuIHZpZXdJbXBsLT53a1BhZ2UoKTsKIH0KKworV0tJbWFnZVJlZiBXS1ZpZXdHZXRTbmFwc2hv
dChXS1ZpZXdSZWYgdmlld1JlZikKK3sKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBFd2tW
aWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QodG9JbXBsKHZpZXdSZWYpKTsKKworICAgIHJldHVybiB2
aWV3SW1wbC0+dGFrZVNuYXBzaG90KCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRoRml4ZQogCiBXS19F
WFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcpOwogCitXS19FWFBP
UlQgV0tJbWFnZVJlZiBXS1ZpZXdHZXRTbmFwc2hvdChXS1ZpZXdSZWYgdmlld1JlZik7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzU3NDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDExICszNSwxMyBAQAogI2luY2x1ZGUgIlBhZ2VQb2xpY3lDbGllbnRFZmwu
aCIKICNpbmNsdWRlICJQYWdlVUlDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRD
bGllbnRFZmwuaCIKKyNpbmNsdWRlICJTbmFwc2hvdEltYWdlR0wuaCIKICNpbmNsdWRlICJXS0Rp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIu
aCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5RWZsLmgiCkBAIC02Miw2
ICs2NCw3IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGls
aXRpZXNFZmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tJbWFnZUNhaXJvLmg+CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogI2luY2x1ZGUgIlZp
YnJhdGlvbkNsaWVudEVmbC5oIgpAQCAtMTAxMiwzICsxMDE1LDI0IEBAIHZvaWQgRXdrVmlld0lt
cGw6Om9uRmF2aWNvbkNoYW5nZWQoY29uc3QKIAogICAgIHZpZXdJbXBsLT5pbmZvcm1JY29uQ2hh
bmdlKCk7CiB9CisKK1dLSW1hZ2VSZWYgRXdrVmlld0ltcGw6OnRha2VTbmFwc2hvdCgpCit7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKCFtX2lzSGFyZHdhcmVBY2NlbGVyYXRlZCkgewor
I2VuZGlmCisgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBjcmVhdGVT
dXJmYWNlRm9ySW1hZ2Uoc2QtPmltYWdlKTsKKyAgICAgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVG
cm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIDApOworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICB9CisKKyAgICBFdmFzX05hdGl2ZV9TdXJmYWNlKiBucyA9IGV2YXNf
b2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX2dldChzZC0+aW1hZ2UpOworICAgIHVuc2lnbmVk
IGNoYXIqIGJ1ZmZlciA9IGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJlKHNkLT52aWV3LncsIHNk
LT52aWV3LmgsIG5zLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVf
Zm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmlldy53LCBzZC0+dmll
dy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2UgPSBXS0ltYWdlQ3Jl
YXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBkZWxldGVbXSBidWZm
ZXI7CisKKyAgICByZXR1cm4gaW1hZ2U7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTM1NzQwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGFyZHdhcmVB
Y2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXJkd2FyZUFjY2VsZXJhdGVkOyB9CiAg
ICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tn
cm91bmQgPSBlbmFibGU7IH0KIAorICAgIFdLSW1hZ2VSZWYgdGFrZVNuYXBzaG90KCk7CisKIHBy
aXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpIGNvbnN0
OwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+
Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEltYWdl
R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Nu
YXBzaG90SW1hZ2VHTC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUy
IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiU25hcHNob3RJbWFnZUdMLmgiCisKKyNpZiBVU0Uo
T1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wy
ZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKwordW5zaWdu
ZWQgY2hhciogZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgdGV4dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZUlkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhclt3
aWR0aCAqIGhlaWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0
LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8gVGV4dHVyZXMg
YXJlIGZsaXBwZWQgb24gdGhlIFkgYXhpcywgc28gd2UgbmVlZCB0byBmbGlwIHRoZSBpbWFnZSBi
YWNrLgorICAgIHVuc2lnbmVkIHRtcDsKKyAgICB1bnNpZ25lZCogYnVmID0gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCo+KGJ1ZmZlcik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdo
dCAvIDI7ICsraSkgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyArK2opIHsK
KyAgICAgICAgICAgIHRtcCA9IGJ1ZltpICogd2lkdGggKyBqXTsKKyAgICAgICAgICAgIGJ1Zltp
ICogd2lkdGggKyBqXSA9IGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBqXTsKKyAgICAg
ICAgICAgIGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBqXSA9IHRtcDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdElt
YWdlR0wuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAgIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIFNuYXBzaG90SW1hZ2VHTF9oCisjZGVmaW5lIFNuYXBzaG90SW1hZ2VHTF9oCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZyb21D
dXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpOworI2Vu
ZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEltYWdlR0xfaApJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NzQwKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTEtMjEg
IFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml0gM0QgcGl4ZWwgdGVzdHMgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGEgc25hcHNob3Qgb2YgdGhlIHZpZXcgaW4g
dGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZiB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIFdlIGhh
dmUgdG8gdXNlIFRleHR1cmUgTWFwcGVyIGluIG9yZGVyIHRvIGNvcnJlY3RseSBwYWludCAzRCB0
cmFuc2Zvcm1zIGV0Yy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAg
ICAgICAoVGVzdEludm9jYXRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1Bs
YXRmb3JtV2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2lu
ZG93U25hcHNob3RJbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9lZmwvVGVzdElu
dm9jYXRpb25FZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OmNv
bXB1dGVNRDVIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdUUjo6d3JpdGVG
dW5jdGlvbik6CisgICAgICAgIChXVFI6OmR1bXBCaXRtYXApOgorICAgICAgICAoV1RSOjpwYWlu
dFJlcGFpbnRSZWN0T3ZlcmxheSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpmb3Jj
ZVJlcGFpbnREb25lQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVt
cFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDEyLTExLTI2ICBaYW4gRG9iZXJz
ZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgQ292ZXJhZ2UgdGVzdGluZyBp
biB3ZWJraXRweSBzaG91bGQgb21pdCBzb21lIHBhdGhzCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTksMTEgKzks
MTAgQEAgQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cAogU0VUKEZvcndh
cmRpbmdOZXR3b3JrSGVhZGVyc0ZvcldlYktpdFRlc3RSdW5uZXJfTkFNRSBmb3J3YXJkaW5nLWhl
YWRlcnNTb3VwRm9yV2ViS2l0VGVzdFJ1bm5lcikKIAogTElTVChBUFBFTkQgV2ViS2l0VGVzdFJ1
bm5lcl9TT1VSQ0VTCi0gICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZv
Y2F0aW9uQ2Fpcm8uY3BwCi0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL0V2ZW50
U2VuZGVyUHJveHlFZmwuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9QbGF0
Zm9ybVdlYlZpZXdFZmwuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2VmbC9UZXN0
Q29udHJvbGxlckVmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vZWZsL1Rlc3RJ
bnZvY2F0aW9uRWZsLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9lZmwvbWFpbi5j
cHAKICkKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkocmV2
aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1w
UGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFp
bnRSZWN0cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVz
dWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyB2b2lkIGZvcmNlUmVwYWludERvbmVDYWxs
YmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKICAgICB2b2lkIGZvcmNlUmVwYWludERv
bmUoKTsKICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxhdGZvcm1X
ZWJWaWV3RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9Q
bGF0Zm9ybVdlYlZpZXdFZmwuY3BwCShyZXZpc2lvbiAxMzU3NDApCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw5IEBACiAjaW5jbHVkZSAiRVdlYktpdDIuaCIKICNpbmNsdWRlICJXZWJLaXQyL1dL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
ZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KKyNpbmNsdWRl
IDxjYWlyby5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMjQsOSArMTI3LDE2
IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmUKIAogV0tSZXRhaW5Q
dHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4ZWxzIGluIHRoZSBVSSBwcm9j
ZXNzLAotICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8gY2FwdHVyZSB0aGluZ3MgbGlr
ZSAzRCB0cmFuc2Zvcm1zLgotICAgIHJldHVybiAwOworICAgIEVjb3JlX0V2YXMqIGVlID0gZWNv
cmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzX29iamVjdF9ldmFzX2dldChtX3ZpZXcpKTsKKwor
ICAgIEFTU0VSVChlZSk7CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAgICBl
Y29yZV9ldmFzX2dlb21ldHJ5X2dldChlZSwgMCwgMCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBB
U1NFUlQod2lkdGggPiAwICYmIGhlaWdodCA+IDApOworCisgICAgcmV0dXJuIGFkb3B0V0soV0tW
aWV3R2V0U25hcHNob3QodG9BUEkobV92aWV3KSkpOwogfQogCiBib29sIFBsYXRmb3JtV2ViVmll
dzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2NhdGlvbkVmbC5j
cHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2Nh
dGlvbkVmbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAg
ICAoQykgMjAxMSBCcmVudCBGdWxnaGFtIDxiZnVsZ2hhbUB3ZWJraXQub3JnPi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAxMCwgMjAxMSBJZ2FsaWEgUy5MCisgKiAg
ICAgICAgICAgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0SW52b2NhdGlv
bi5oIgorCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
V2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CisjaW5j
bHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4
dHJhcy5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0Zv
ckNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNoYXIgaGFzaFN0cmluZ1sz
M10pCit7CisgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNl
KSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsgLy8gSW1hZ2VEaWZmIGFzc3VtZXMgMzIgYml0IFJH
QkEsIHdlIG11c3QgYXMgd2VsbC4KKworICAgIHNpemVfdCBwaXhlbHNIaWdoID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworICAgIHNpemVfdCBwaXhlbHNXaWRlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CisgICAgc2l6ZV90IGJ5dGVz
UGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworCisgICAg
TUQ1IG1kNUNvbnRleHQ7CisgICAgdW5zaWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2Up
KTsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBwaXhlbHNIaWdoOyArK3Jvdykgewor
ICAgICAgICBtZDVDb250ZXh0LmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsK
KyAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKKyAgICB9CisgICAgVmVjdG9yPHVp
bnQ4X3QsIDE2PiBoYXNoOworICAgIG1kNUNvbnRleHQuY2hlY2tzdW0oaGFzaCk7CisKKyAgICBz
bnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4
JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICBoYXNoWzBdLCBoYXNo
WzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBoYXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzdd
LAorICAgICAgICBoYXNoWzhdLCBoYXNoWzldLCBoYXNoWzEwXSwgaGFzaFsxMV0sIGhhc2hbMTJd
LCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhhc2hbMTVdKTsKK30KKworc3RhdGljIGNhaXJvX3N0YXR1
c190IHdyaXRlRnVuY3Rpb24odm9pZCogY2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogaW4gPSBy
ZWludGVycHJldF9jYXN0PFZlY3Rvcjx1bnNpZ25lZCBjaGFyPio+KGNsb3N1cmUpOworICAgIGlu
LT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7
Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBj
b25zdCBjaGFyKiBjaGVja3N1bSkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcGl4ZWxE
YXRhOworICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShzdXJmYWNlLCB3cml0
ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IHBp
eGVsRGF0YS5zaXplKCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSA9IHBpeGVsRGF0
YS5kYXRhKCk7CisKKyAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7Cit9
CisKK3N0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit7CisgICAgUmVmUHRyPGNhaXJvX3Q+
IGNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOworCisgICAgY2Fpcm9f
cHVzaF9ncm91cChjb250ZXh0LmdldCgpKTsKKworICAgIC8vIFBhaW50IHRoZSBncmF5IG1hc2sg
b3ZlciB0aGUgb3JpZ2luYWwgaW1hZ2UuCisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNvbnRl
eHQuZ2V0KCksIDAsIDAsIDAsIDAuNjYpOworICAgIGNhaXJvX3BhaW50KGNvbnRleHQuZ2V0KCkp
OworCisgICAgLy8gUGFpbnQgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlcyBvdmVyIHRoZSBtYXNrIHRv
IHNob3cgdGhlIHJlcGFpbnRlZCByZWdpb25zLgorICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShj
b250ZXh0LmdldCgpLCAwLCAwLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IoY29udGV4
dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBzaXplX3QgY291bnQgPSBXS0Fy
cmF5R2V0U2l6ZShyZXBhaW50UmVjdHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICBXS1JlY3QgcmVjdCA9IFdLUmVjdEdldFZhbHVlKHN0YXRpY19j
YXN0PFdLUmVjdFJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHJlcGFpbnRSZWN0cywgaSkpKTsK
KyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNvbnRleHQuZ2V0KCksIHJlY3Qub3JpZ2luLngsIHJl
Y3Qub3JpZ2luLnksIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCk7CisgICAgICAg
IGNhaXJvX2ZpbGwoY29udGV4dC5nZXQoKSk7CisgICAgfQorCisgICAgY2Fpcm9fcG9wX2dyb3Vw
X3RvX3NvdXJjZShjb250ZXh0LmdldCgpKTsKKyAgICBjYWlyb19wYWludChjb250ZXh0LmdldCgp
KTsKK30KKworCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2so
V0tFcnJvclJlZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0SW52b2Nh
dGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0cnVlOworICAgIFRlc3RDb250cm9sbGVy
OjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQ
aXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLQXJyYXlS
ZWYgcmVwYWludFJlY3RzKQoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICBVTlVTRURfUEFSQU0oaW1hZ2VSZWYpOworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
c3VyZmFjZTsKKworICAgIFdLUGFnZVJlZiBwYWdlID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwgdGhp
cywgJmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hh
cmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBUZXN0Q29udHJvbGxlcjo6U2hvcnRUaW1lb3V0
KTsKKworICAgIGlmIChtX2dvdFJlcGFpbnQpCisgICAgICAgIHN1cmZhY2UgPSBhZG9wdFJlZihX
S0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2Vi
VmlldygpLT53aW5kb3dTbmFwc2hvdEltYWdlKCkuZ2V0KCkpKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbV9lcnJvciA9IHRydWU7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gIlRpbWVkIG91dCB3
YWl0aW5nIGZvciByZXBhaW50XG4iOworICAgICAgICBtX3dlYlByb2Nlc3NJc1VucmVuc3BvbnNp
dmUgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFj
ZShpbWFnZVJlZikpOworI2VuZGlmCisgICAgaWYgKHJlcGFpbnRSZWN0cykKKyAgICAgICAgcGFp
bnRSZXBhaW50UmVjdE92ZXJsYXkoc3VyZmFjZS5nZXQoKSwgcmVwYWludFJlY3RzKTsKKworICAg
IGNoYXIgYWN0dWFsSGFzaFszM107CisgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlyb1N1
cmZhY2Uoc3VyZmFjZS5nZXQoKSwgYWN0dWFsSGFzaCk7CisgICAgaWYgKCFjb21wYXJlQWN0dWFs
SGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhhY3R1YWxIYXNoKSkKKyAgICAgICAgZHVtcEJp
dG1hcChzdXJmYWNlLmdldCgpLCBhY3R1YWxIYXNoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RS
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176279</attachid>
            <date>2012-11-27 08:52:47 -0800</date>
            <delta_ts>2012-11-27 12:42:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>18307</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTIxICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVu
dFRleHR1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5o
OiBBZGRlZC4KKwogMjAxMi0xMS0yNiAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFRleHQgQXV0b3NpemluZzogQWRkIFRleHQgQXV0b3NpemluZyBBUElz
IGZvciBXSzIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU3NDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250
ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9y
d2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwzICs0MiwxMCBAQCBX
S1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlCiAKICAgICByZXR1cm4gdmll
d0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmll
d1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJbXBs
Ojpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisgICAgcmV0dXJuIHZpZXdJbXBs
LT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBA
QCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlCiAKIFdLX0VYUE9SVCBX
S1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7CiAKK1dLX0VYUE9SVCBXS0lt
YWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgogI2lu
Y2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVm
bC5oIgorI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFy
eS5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgogI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTYyLDYgKzY0LDcg
QEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGllc0Vm
bC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0lt
YWdlQ2Fpcm8uaD4KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiVmlicmF0aW9u
Q2xpZW50RWZsLmgiCkBAIC0xMDEyLDMgKzEwMTUsMjEgQEAgdm9pZCBFd2tWaWV3SW1wbDo6b25G
YXZpY29uQ2hhbmdlZChjb25zdAogCiAgICAgdmlld0ltcGwtPmluZm9ybUljb25DaGFuZ2UoKTsK
IH0KKworV0tJbWFnZVJlZiBFd2tWaWV3SW1wbDo6dGFrZVNuYXBzaG90KCkKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBpZiAoIW1faXNIYXJkd2FyZUFjY2VsZXJhdGVkKQorI2VuZGlmCisg
ICAgICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjcmVhdGVTdXJmYWNl
Rm9ySW1hZ2Uoc2QtPmltYWdlKS5nZXQoKSwgMCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UgPSBldmFzX29i
amVjdF9pbWFnZV9uYXRpdmVfc3VyZmFjZV9nZXQoc2QtPmltYWdlKTsKKyAgICB1bnNpZ25lZCBj
aGFyKiBidWZmZXIgPSBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShzZC0+dmlldy53LCBzZC0+
dmlldy5oLCBuYXRpdmVTdXJmYWNlLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmlldy53
LCBzZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2UgPSBX
S0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBkZWxl
dGVbXSBidWZmZXI7CisKKyAgICByZXR1cm4gaW1hZ2U7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNpb24g
MTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
SGFyZHdhcmVBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXJkd2FyZUFjY2VsZXJh
dGVkOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXRE
cmF3c0JhY2tncm91bmQgPSBlbmFibGU7IH0KIAorICAgIFdLSW1hZ2VSZWYgdGFrZVNuYXBzaG90
KCk7CisKIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RXdr
Vmlld0ltcGw+Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFw
c2hvdEltYWdlR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUyIEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTbmFwc2hvdEltYWdlR0wuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8
R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYK
KwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5zaWdu
ZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aWR0
aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAgLy8g
VGV4dHVyZXMgYXJlIGZsaXBwZWQgb24gdGhlIFkgYXhpcywgc28gd2UgbmVlZCB0byBmbGlwIHRo
ZSBpbWFnZSBiYWNrLgorICAgIHVuc2lnbmVkIHRtcDsKKyAgICB1bnNpZ25lZCogYnVmID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGJ1ZmZlcik7CisKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGhlaWdodCAvIDI7ICsraSkgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRo
OyArK2opIHsKKyAgICAgICAgICAgIHRtcCA9IGJ1ZltpICogd2lkdGggKyBqXTsKKyAgICAgICAg
ICAgIGJ1ZltpICogd2lkdGggKyBqXSA9IGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBq
XTsKKyAgICAgICAgICAgIGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBqXSA9IHRtcDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFn
ZUdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEltYWdlR0wuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAgIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIFNuYXBzaG90SW1hZ2VHTF9oCisjZGVmaW5lIFNuYXBzaG90SW1hZ2VHTF9o
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBnZXRJ
bWFnZUZyb21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJl
SWQpOworI2VuZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEltYWdlR0xfaApJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NzQw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTItMTEtMjEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gM0QgcGl4ZWwgdGVzdHMgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGEgc25hcHNob3Qgb2YgdGhl
IHZpZXcgaW4gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZiB0aGUgd2ViIHByb2Nlc3MuCisgICAg
ICAgIFdlIGhhdmUgdG8gdXNlIFRleHR1cmUgTWFwcGVyIGluIG9yZGVyIHRvIGNvcnJlY3RseSBw
YWludCAzRCB0cmFuc2Zvcm1zIGV0Yy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1FZmwuY21ha2U6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oOgorICAgICAgICAoVGVzdEludm9jYXRpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvVGVzdEludm9jYXRpb25FZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUik6CisgICAgICAg
IChXVFI6OmNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdU
Ujo6d3JpdGVGdW5jdGlvbik6CisgICAgICAgIChXVFI6OmR1bXBCaXRtYXApOgorICAgICAgICAo
V1RSOjpwYWludFJlcGFpbnRSZWN0T3ZlcmxheSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOgorCiAyMDEyLTExLTI2ICBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgQ292ZXJhZ2Ug
dGVzdGluZyBpbiB3ZWJraXRweSBzaG91bGQgb21pdCBzb21lIHBhdGhzCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTksMTEgKzksMTAgQEAgQUREX0NVU1RPTV9UQVJHRVQoZm9yd2FyZGluZy1oZWFkZXJzU291cAog
U0VUKEZvcndhcmRpbmdOZXR3b3JrSGVhZGVyc0ZvcldlYktpdFRlc3RSdW5uZXJfTkFNRSBmb3J3
YXJkaW5nLWhlYWRlcnNTb3VwRm9yV2ViS2l0VGVzdFJ1bm5lcikKIAogTElTVChBUFBFTkQgV2Vi
S2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCi0gICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJv
L1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCi0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0v
ZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9
L2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9
L2VmbC9UZXN0Q29udHJvbGxlckVmbC5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0v
ZWZsL1Rlc3RJbnZvY2F0aW9uRWZsLmNwcAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9l
ZmwvbWFpbi5jcHAKICkKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAkocmV2aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5
UmVmIHJlcGFpbnRSZWN0cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRB
bmREdW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyB2b2lkIGZvcmNlUmVwYWlu
dERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsKICAgICB2b2lkIGZvcmNl
UmVwYWludERvbmUoKTsKICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
UGxhdGZvcm1XZWJWaWV3RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCShyZXZpc2lvbiAxMzU3NDApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSAiRVdlYktpdDIuaCIKICNpbmNsdWRlICJX
ZWJLaXQyL1dLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4K
KyNpbmNsdWRlIDxjYWlyby5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMjQs
OSArMTI3LDE2IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmUKIAog
V0tSZXRhaW5QdHI8V0tJbWFnZVJlZj4gUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dTbmFwc2hvdElt
YWdlKCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIGNhcHR1cmUgcGl4ZWxzIGluIHRo
ZSBVSSBwcm9jZXNzLAotICAgIC8vIHdoaWNoIG1heSBiZSBuZWNlc3NhcnkgdG8gY2FwdHVyZSB0
aGluZ3MgbGlrZSAzRCB0cmFuc2Zvcm1zLgotICAgIHJldHVybiAwOworICAgIEVjb3JlX0V2YXMq
IGVlID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzX29iamVjdF9ldmFzX2dldChtX3Zp
ZXcpKTsKKworICAgIEFTU0VSVChlZSk7CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdo
dDsKKyAgICBlY29yZV9ldmFzX2dlb21ldHJ5X2dldChlZSwgMCwgMCwgJndpZHRoLCAmaGVpZ2h0
KTsKKyAgICBBU1NFUlQod2lkdGggPiAwICYmIGhlaWdodCA+IDApOworCisgICAgcmV0dXJuIGFk
b3B0V0soV0tWaWV3R2V0U25hcHNob3QodG9BUEkobV92aWV3KSkpOwogfQogCiBib29sIFBsYXRm
b3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykg
Y29uc3QKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Rlc3RJbnZvY2F0aW9uRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9UZXN0SW52b2Nh
dGlvbkVmbC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9U
ZXN0SW52b2NhdGlvbkVmbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICAgICAgICAgICAoQykgMjAxMSBCcmVudCBGdWxnaGFtIDxiZnVsZ2hhbUB3ZWJraXQub3JnPi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAxMCwgMjAxMSBJZ2FsaWEg
Uy5MCisgKiAgICAgICAgICAgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
SW52b2NhdGlvbi5oIgorCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJv
Lmg+CisjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3Rm
L1N0cmluZ0V4dHJhcy5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBjb21wdXRlTUQ1SGFz
aFN0cmluZ0ZvckNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNoYXIgaGFz
aFN0cmluZ1szM10pCit7CisgICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1h
dChzdXJmYWNlKSA9PSBDQUlST19GT1JNQVRfQVJHQjMyKTsgLy8gSW1hZ2VEaWZmIGFzc3VtZXMg
MzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4KKworICAgIHNpemVfdCBwaXhlbHNIaWdoID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpOworICAgIHNpemVfdCBwaXhl
bHNXaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CisgICAgc2l6
ZV90IGJ5dGVzUGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2Up
OworCisgICAgTUQ1IG1kNUNvbnRleHQ7CisgICAgdW5zaWduZWQgY2hhciogYml0bWFwRGF0YSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KHN1cmZhY2UpKTsKKyAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCBwaXhlbHNIaWdoOyAr
K3JvdykgeworICAgICAgICBtZDVDb250ZXh0LmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhl
bHNXaWRlKTsKKyAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKKyAgICB9CisgICAg
VmVjdG9yPHVpbnQ4X3QsIDE2PiBoYXNoOworICAgIG1kNUNvbnRleHQuY2hlY2tzdW0oaGFzaCk7
CisKKyAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAy
eCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICBoYXNo
WzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBoYXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZd
LCBoYXNoWzddLAorICAgICAgICBoYXNoWzhdLCBoYXNoWzldLCBoYXNoWzEwXSwgaGFzaFsxMV0s
IGhhc2hbMTJdLCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhhc2hbMTVdKTsKK30KKworc3RhdGljIGNh
aXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCogY2xvc3VyZSwgY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiogaW4gPSByZWludGVycHJldF9jYXN0PFZlY3Rvcjx1bnNpZ25lZCBjaGFyPio+KGNsb3N1cmUp
OworICAgIGluLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gQ0FJUk9fU1RBVFVT
X1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hh
cj4gcGl4ZWxEYXRhOworICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShzdXJm
YWNlLCB3cml0ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsKKyAgICBjb25zdCBzaXplX3QgZGF0YUxl
bmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSA9
IHBpeGVsRGF0YS5kYXRhKCk7CisKKyAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVj
a3N1bSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit7CisgICAgUmVmUHRy
PGNhaXJvX3Q+IGNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOworCisg
ICAgY2Fpcm9fcHVzaF9ncm91cChjb250ZXh0LmdldCgpKTsKKworICAgIC8vIFBhaW50IHRoZSBn
cmF5IG1hc2sgb3ZlciB0aGUgb3JpZ2luYWwgaW1hZ2UuCisgICAgY2Fpcm9fc2V0X3NvdXJjZV9y
Z2JhKGNvbnRleHQuZ2V0KCksIDAsIDAsIDAsIDAuNjYpOworICAgIGNhaXJvX3BhaW50KGNvbnRl
eHQuZ2V0KCkpOworCisgICAgLy8gUGFpbnQgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlcyBvdmVyIHRo
ZSBtYXNrIHRvIHNob3cgdGhlIHJlcGFpbnRlZCByZWdpb25zLgorICAgIGNhaXJvX3NldF9zb3Vy
Y2VfcmdiYShjb250ZXh0LmdldCgpLCAwLCAwLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0
b3IoY29udGV4dC5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBzaXplX3QgY291
bnQgPSBXS0FycmF5R2V0U2l6ZShyZXBhaW50UmVjdHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBXS1JlY3QgcmVjdCA9IFdLUmVjdEdldFZhbHVl
KHN0YXRpY19jYXN0PFdLUmVjdFJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHJlcGFpbnRSZWN0
cywgaSkpKTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNvbnRleHQuZ2V0KCksIHJlY3Qub3Jp
Z2luLngsIHJlY3Qub3JpZ2luLnksIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCk7
CisgICAgICAgIGNhaXJvX2ZpbGwoY29udGV4dC5nZXQoKSk7CisgICAgfQorCisgICAgY2Fpcm9f
cG9wX2dyb3VwX3RvX3NvdXJjZShjb250ZXh0LmdldCgpKTsKKyAgICBjYWlyb19wYWludChjb250
ZXh0LmdldCgpKTsKK30KKworCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25l
Q2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBzdGF0aWNfY2FzdDxU
ZXN0SW52b2NhdGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0cnVlOworICAgIFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRp
b246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2VSZWYs
IFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2VSZWYpOworCisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZTsKKworICAgIFdLUGFnZVJlZiBwYWdlID0gVGVzdENvbnRyb2xsZXI6
OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQo
cGFnZSwgdGhpcywgJmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RSZXBhaW50LCBUZXN0Q29udHJvbGxlcjo6U2hv
cnRUaW1lb3V0KTsKKworICAgIGlmIChtX2dvdFJlcGFpbnQpCisgICAgICAgIHN1cmZhY2UgPSBh
ZG9wdFJlZihXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFRlc3RDb250cm9sbGVyOjpzaGFyZWQo
KS5tYWluV2ViVmlldygpLT53aW5kb3dTbmFwc2hvdEltYWdlKCkuZ2V0KCkpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgbV9lcnJvciA9IHRydWU7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gIlRp
bWVkIG91dCB3YWl0aW5nIGZvciByZXBhaW50XG4iOworICAgICAgICBtX3dlYlByb2Nlc3NJc1Vu
cmVuc3BvbnNpdmUgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vsc2UKKyAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoV0tJbWFnZUNyZWF0ZUNh
aXJvU3VyZmFjZShpbWFnZVJlZikpOworI2VuZGlmCisgICAgaWYgKHJlcGFpbnRSZWN0cykKKyAg
ICAgICAgcGFpbnRSZXBhaW50UmVjdE92ZXJsYXkoc3VyZmFjZS5nZXQoKSwgcmVwYWludFJlY3Rz
KTsKKworICAgIGNoYXIgYWN0dWFsSGFzaFszM107CisgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdG
b3JDYWlyb1N1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgYWN0dWFsSGFzaCk7CisgICAgaWYgKCFjb21w
YXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhhY3R1YWxIYXNoKSkKKyAgICAg
ICAgZHVtcEJpdG1hcChzdXJmYWNlLmdldCgpLCBhY3R1YWxIYXNoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176329</attachid>
            <date>2012-11-27 12:42:13 -0800</date>
            <delta_ts>2012-11-27 14:11:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>15442</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTg3MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI3ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVu
dFRleHR1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5o
OiBBZGRlZC4KKwogMjAxMi0xMS0yNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pk
bnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtRdF1bV0syXSBUaWxlcyBub3QgYWx3
YXlzIHBhaW50ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU3
NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xD
b250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tf
Zm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwzICs0MiwxMCBA
QCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlCiAKICAgICByZXR1cm4g
dmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdL
Vmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJ
bXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisgICAgcmV0dXJuIHZpZXdJ
bXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
OCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlCiAKIFdLX0VYUE9S
VCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7CiAKK1dLX0VYUE9SVCBX
S0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgog
I2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVu
dEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUgIldLRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTYyLDYgKzY0
LDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGll
c0VmbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0ltYWdlQ2Fpcm8uaD4KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiVmlicmF0
aW9uQ2xpZW50RWZsLmgiCkBAIC0xMDEyLDMgKzEwMTUsMjEgQEAgdm9pZCBFd2tWaWV3SW1wbDo6
b25GYXZpY29uQ2hhbmdlZChjb25zdAogCiAgICAgdmlld0ltcGwtPmluZm9ybUljb25DaGFuZ2Uo
KTsKIH0KKworV0tJbWFnZVJlZiBFd2tWaWV3SW1wbDo6dGFrZVNuYXBzaG90KCkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAoIW1faXNIYXJkd2FyZUFjY2VsZXJhdGVkKQorI2VuZGlm
CisgICAgICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjcmVhdGVTdXJm
YWNlRm9ySW1hZ2Uoc2QtPmltYWdlKS5nZXQoKSwgMCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UgPSBldmFz
X29iamVjdF9pbWFnZV9uYXRpdmVfc3VyZmFjZV9nZXQoc2QtPmltYWdlKTsKKyAgICB1bnNpZ25l
ZCBjaGFyKiBidWZmZXIgPSBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShzZC0+dmlldy53LCBz
ZC0+dmlldy5oLCBuYXRpdmVTdXJmYWNlLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmll
dy53LCBzZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2Ug
PSBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBk
ZWxldGVbXSBidWZmZXI7CisKKyAgICByZXR1cm4gaW1hZ2U7CisjZW5kaWYKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNp
b24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzSGFyZHdhcmVBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9z
ZXREcmF3c0JhY2tncm91bmQgPSBlbmFibGU7IH0KIAorICAgIFdLSW1hZ2VSZWYgdGFrZVNuYXBz
aG90KCk7CisKIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8
RXdrVmlld0ltcGw+Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEltYWdlR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUyIEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTbmFwc2hvdEltYWdlR0wuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVk
ZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5k
aWYKKwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5z
aWduZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAg
Ly8gVGV4dHVyZXMgYXJlIGZsaXBwZWQgb24gdGhlIFkgYXhpcywgc28gd2UgbmVlZCB0byBmbGlw
IHRoZSBpbWFnZSBiYWNrLgorICAgIHVuc2lnbmVkIHRtcDsKKyAgICB1bnNpZ25lZCogYnVmID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGJ1ZmZlcik7CisKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGhlaWdodCAvIDI7ICsraSkgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdp
ZHRoOyArK2opIHsKKyAgICAgICAgICAgIHRtcCA9IGJ1ZltpICogd2lkdGggKyBqXTsKKyAgICAg
ICAgICAgIGJ1ZltpICogd2lkdGggKyBqXSA9IGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGgg
KyBqXTsKKyAgICAgICAgICAgIGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBqXSA9IHRt
cDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJ
bWFnZUdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEltYWdlR0wuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFNuYXBzaG90SW1hZ2VHTF9oCisjZGVmaW5lIFNuYXBzaG90SW1hZ2VH
TF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBn
ZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0
dXJlSWQpOworI2VuZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEltYWdlR0xfaApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1
ODkxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTItMTEtMjcgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gM0QgcGl4ZWwgdGVzdHMgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGEgc25hcHNob3Qgb2Yg
dGhlIHZpZXcgaW4gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZiB0aGUgd2ViIHByb2Nlc3MuCisg
ICAgICAgIFdlIGhhdmUgdG8gdXNlIFRleHR1cmUgTWFwcGVyIGluIG9yZGVyIHRvIGNvcnJlY3Rs
eSBwYWludCAzRCB0cmFuc2Zvcm1zIGV0Yy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwOgorICAgICAgICAo
V1RSOjp3cml0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdUUjo6cGFpbnRSZXBhaW50UmVjdE92ZXJs
YXkpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZvcmNl
UmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1w
UGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKToKKwogMjAxMi0xMS0yNyAgUHJhdGlrIFNvbGFua2kg
IDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgb2JqYy9vYmpjLXJ1bnRpbWUuaCBkb2Vz
IG5vdCBleGlzdCBvbiBhbGwgUExBVEZPUk0oTUFDKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAkocmV2aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0lt
YWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFs
SGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKLSNpZiBQTEFU
Rk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyB2
b2lkIGZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsK
ICAgICB2b2lkIGZvcmNlUmVwYWludERvbmUoKTsKICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCShyZXZp
c2lvbiAxMzU3NDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0
aW9uQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5IEBACiAjaW5jbHVkZSAi
VGVzdEludm9jYXRpb24uaCIKIAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VD
YWlyby5oPgogI2luY2x1ZGUgPGNhaXJvL2NhaXJvLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgpAQCAt
NjEsNyArNjQsNyBAQCB2b2lkIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNlCiAg
ICAgICAgIGhhc2hbOF0sIGhhc2hbOV0sIGhhc2hbMTBdLCBoYXNoWzExXSwgaGFzaFsxMl0sIGhh
c2hbMTNdLCBoYXNoWzE0XSwgaGFzaFsxNV0pOwogfQogCi1zdGF0aWMgY2Fpcm9fc3RhdHVzX3Qg
d3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBpbnQgbGVuZ3RoKQorc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24o
dm9pZCogY2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogaW4gPSByZWludGVycHJldF9jYXN0PFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPio+KGNsb3N1cmUpOwogICAgIGluLT5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKQEAgLTgwLDQzICs4Myw2NyBAQCBzdGF0aWMgdm9pZCBkdW1wQml0bWFwKGNhaXJvX3N1
cmZhY2VfdCoKIAogc3RhdGljIHZvaWQgcGFpbnRSZXBhaW50UmVjdE92ZXJsYXkoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKIHsKLSAgICBjYWlyb190
KiBjb250ZXh0ID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOworICAgIFJlZlB0cjxjYWlyb190PiBj
b250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKIAotICAgIGNhaXJvX3B1
c2hfZ3JvdXAoY29udGV4dCk7CisgICAgY2Fpcm9fcHVzaF9ncm91cChjb250ZXh0LmdldCgpKTsK
IAogICAgIC8vIFBhaW50IHRoZSBncmF5IG1hc2sgb3ZlciB0aGUgb3JpZ2luYWwgaW1hZ2UuCi0g
ICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNvbnRleHQsIDAsIDAsIDAsIDAuNjYpOwotICAgIGNh
aXJvX3BhaW50KGNvbnRleHQpOworICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShjb250ZXh0Lmdl
dCgpLCAwLCAwLCAwLCAwLjY2KTsKKyAgICBjYWlyb19wYWludChjb250ZXh0LmdldCgpKTsKIAog
ICAgIC8vIFBhaW50IHRyYW5zcGFyZW50IHJlY3RhbmdsZXMgb3ZlciB0aGUgbWFzayB0byBzaG93
IHRoZSByZXBhaW50ZWQgcmVnaW9ucy4KLSAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4
dCwgMCwgMCwgMCwgMCk7Ci0gICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNvbnRleHQsIENBSVJPX09Q
RVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNvbnRleHQuZ2V0KCks
IDAsIDAsIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjb250ZXh0LmdldCgpLCBDQUlS
T19PUEVSQVRPUl9TT1VSQ0UpOwogICAgIHNpemVfdCBjb3VudCA9IFdLQXJyYXlHZXRTaXplKHJl
cGFpbnRSZWN0cyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgIFdLUmVjdCByZWN0ID0gV0tSZWN0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tSZWN0UmVm
PihXS0FycmF5R2V0SXRlbUF0SW5kZXgocmVwYWludFJlY3RzLCBpKSkpOwotICAgICAgICBjYWly
b19yZWN0YW5nbGUoY29udGV4dCwgcmVjdC5vcmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5z
aXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0KTsKLSAgICAgICAgY2Fpcm9fZmlsbChjb250ZXh0
KTsKKyAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNvbnRleHQuZ2V0KCksIHJlY3Qub3JpZ2luLngs
IHJlY3Qub3JpZ2luLnksIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCk7CisgICAg
ICAgIGNhaXJvX2ZpbGwoY29udGV4dC5nZXQoKSk7CiAgICAgfQogCi0gICAgY2Fpcm9fcG9wX2dy
b3VwX3RvX3NvdXJjZShjb250ZXh0KTsKLSAgICBjYWlyb19wYWludChjb250ZXh0KTsKKyAgICBj
YWlyb19wb3BfZ3JvdXBfdG9fc291cmNlKGNvbnRleHQuZ2V0KCkpOworICAgIGNhaXJvX3BhaW50
KGNvbnRleHQuZ2V0KCkpOworfQogCi0gICAgY2Fpcm9fZGVzdHJveShjb250ZXh0KTsKKyNpZiBQ
TEFURk9STShFRkwpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJh
Y2soV0tFcnJvclJlZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0SW52
b2NhdGlvbio+KGNvbnRleHQpLT5tX2dvdFJlcGFpbnQgPSB0cnVlOworICAgIFRlc3RDb250cm9s
bGVyOjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7CiB9CisjZW5kaWYKIAogdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiB3a0ltYWdl
LCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UgPSBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKHdrSW1hZ2UpOworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oRUZMKQorICAgIFVOVVNFRF9QQVJBTSh3a0lt
YWdlKTsKKworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2U7CisKKyAgICBXS1Bh
Z2VSZWYgcGFnZSA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5wYWdl
KCk7CisgICAgV0tQYWdlRm9yY2VSZXBhaW50KHBhZ2UsIHRoaXMsICZmb3JjZVJlcGFpbnREb25l
Q2FsbGJhY2spOworCisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnJ1blVudGlsKG1fZ290
UmVwYWludCwgVGVzdENvbnRyb2xsZXI6OlNob3J0VGltZW91dCk7CisKKyAgICBpZiAobV9nb3RS
ZXBhaW50KQorICAgICAgICBzdXJmYWNlID0gYWRvcHRSZWYoV0tJbWFnZUNyZWF0ZUNhaXJvU3Vy
ZmFjZShUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2luZG93U25hcHNo
b3RJbWFnZSgpLmdldCgpKSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZXJyb3IgPSB0cnVlOwor
ICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgcmVwYWludFxu
IjsKKyAgICAgICAgbV93ZWJQcm9jZXNzSXNVbnJlbnNwb25zaXZlID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbHNlCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFj
ZSA9IGFkb3B0UmVmKFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2Uod2tJbWFnZSkpOworI2VuZGlm
CiAKICAgICBpZiAocmVwYWludFJlY3RzKQotICAgICAgICBwYWludFJlcGFpbnRSZWN0T3Zlcmxh
eShzdXJmYWNlLCByZXBhaW50UmVjdHMpOworICAgICAgICBwYWludFJlcGFpbnRSZWN0T3Zlcmxh
eShzdXJmYWNlLmdldCgpLCByZXBhaW50UmVjdHMpOwogCiAgICAgY2hhciBhY3R1YWxIYXNoWzMz
XTsKLSAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShzdXJmYWNlLCBhY3R1
YWxIYXNoKTsKKyAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShzdXJmYWNl
LmdldCgpLCBhY3R1YWxIYXNoKTsKICAgICBpZiAoIWNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3Rl
ZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQotICAgICAgICBkdW1wQml0bWFwKHN1cmZhY2Us
IGFjdHVhbEhhc2gpOwotCi0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworICAg
ICAgICBkdW1wQml0bWFwKHN1cmZhY2UuZ2V0KCksIGFjdHVhbEhhc2gpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2Vi
Vmlld0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvUGxh
dGZvcm1XZWJWaWV3RWZsLmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsOSBAQAogI2luY2x1ZGUgIkVXZWJLaXQyLmgiCiAjaW5jbHVkZSAiV2ViS2l0Mi9XS0FQ
SUNhc3QuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQ
dHJDYWlyby5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CisjaW5jbHVkZSA8
Y2Fpcm8uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI0LDkgKzEyNywxNiBA
QCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlCiAKIFdLUmV0YWluUHRy
PFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUgVUkgcHJvY2Vz
cywKLSAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2Ug
M0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAgICBFY29yZV9FdmFzKiBlZSA9IGVjb3Jl
X2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhc19vYmplY3RfZXZhc19nZXQobV92aWV3KSk7CisKKyAg
ICBBU1NFUlQoZWUpOworCisgICAgaW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgZWNv
cmVfZXZhc19nZW9tZXRyeV9nZXQoZWUsIDAsIDAsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgQVNT
RVJUKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsKKworICAgIHJldHVybiBhZG9wdFdLKFdLVmll
d0dldFNuYXBzaG90KHRvQVBJKG1fdmlldykpKTsKIH0KIAogYm9vbCBQbGF0Zm9ybVdlYlZpZXc6
OnZpZXdTdXBwb3J0c09wdGlvbnMoV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176336</attachid>
            <date>2012-11-27 14:11:05 -0800</date>
            <delta_ts>2012-11-27 15:23:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>13433</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTg3MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI3ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVu
dFRleHR1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5o
OiBBZGRlZC4KKwogMjAxMi0xMS0yNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pk
bnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtRdF1bV0syXSBUaWxlcyBub3QgYWx3
YXlzIHBhaW50ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU3
NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xD
b250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tf
Zm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwzICs0MiwxMCBA
QCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlCiAKICAgICByZXR1cm4g
dmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdL
Vmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJ
bXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisgICAgcmV0dXJuIHZpZXdJ
bXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
OCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlCiAKIFdLX0VYUE9S
VCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7CiAKK1dLX0VYUE9SVCBX
S0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgog
I2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVu
dEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUgIldLRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTYyLDYgKzY0
LDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGll
c0VmbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0ltYWdlQ2Fpcm8uaD4KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiVmlicmF0
aW9uQ2xpZW50RWZsLmgiCkBAIC0xMDEyLDMgKzEwMTUsMjEgQEAgdm9pZCBFd2tWaWV3SW1wbDo6
b25GYXZpY29uQ2hhbmdlZChjb25zdAogCiAgICAgdmlld0ltcGwtPmluZm9ybUljb25DaGFuZ2Uo
KTsKIH0KKworV0tJbWFnZVJlZiBFd2tWaWV3SW1wbDo6dGFrZVNuYXBzaG90KCkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAoIW1faXNIYXJkd2FyZUFjY2VsZXJhdGVkKQorI2VuZGlm
CisgICAgICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjcmVhdGVTdXJm
YWNlRm9ySW1hZ2Uoc2QtPmltYWdlKS5nZXQoKSwgMCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UqIG5hdGl2ZVN1cmZhY2UgPSBldmFz
X29iamVjdF9pbWFnZV9uYXRpdmVfc3VyZmFjZV9nZXQoc2QtPmltYWdlKTsKKyAgICB1bnNpZ25l
ZCBjaGFyKiBidWZmZXIgPSBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShzZC0+dmlldy53LCBz
ZC0+dmlldy5oLCBuYXRpdmVTdXJmYWNlLT5kYXRhLm9wZW5nbC50ZXh0dXJlX2lkKTsKKyAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLCBzZC0+dmll
dy53LCBzZC0+dmlldy5oLCBzZC0+dmlldy53ICogNCkpOworICAgIFdLSW1hZ2VSZWYgaW1hZ2Ug
PSBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShzdXJmYWNlLmdldCgpLCAwKTsKKyAgICBk
ZWxldGVbXSBidWZmZXI7CisKKyAgICByZXR1cm4gaW1hZ2U7CisjZW5kaWYKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkocmV2aXNp
b24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzSGFyZHdhcmVBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkOyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9z
ZXREcmF3c0JhY2tncm91bmQgPSBlbmFibGU7IH0KIAorICAgIFdLSW1hZ2VSZWYgdGFrZVNuYXBz
aG90KCk7CisKIHByaXZhdGU6CiAgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0
RGF0YSgpIGNvbnN0OwogICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8
RXdrVmlld0ltcGw+Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEltYWdlR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUyIEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTbmFwc2hvdEltYWdlR0wuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVk
ZSA8R0xFUzIvZ2wyZXh0Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5k
aWYKKwordW5zaWduZWQgY2hhciogZ2V0SW1hZ2VGcm9tQ3VycmVudFRleHR1cmUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBpbnQgdGV4dHVyZUlkKQoreworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBidWZmZXIgPSBuZXcgdW5z
aWduZWQgY2hhclt3aWR0aCAqIGhlaWdodCAqIDRdOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3
aWR0aCwgaGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBidWZmZXIpOworCisgICAg
Ly8gVGV4dHVyZXMgYXJlIGZsaXBwZWQgb24gdGhlIFkgYXhpcywgc28gd2UgbmVlZCB0byBmbGlw
IHRoZSBpbWFnZSBiYWNrLgorICAgIHVuc2lnbmVkIHRtcDsKKyAgICB1bnNpZ25lZCogYnVmID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KGJ1ZmZlcik7CisKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGhlaWdodCAvIDI7ICsraSkgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdp
ZHRoOyArK2opIHsKKyAgICAgICAgICAgIHRtcCA9IGJ1ZltpICogd2lkdGggKyBqXTsKKyAgICAg
ICAgICAgIGJ1ZltpICogd2lkdGggKyBqXSA9IGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGgg
KyBqXTsKKyAgICAgICAgICAgIGJ1ZlsoaGVpZ2h0IC0gaSAtIDEpICogd2lkdGggKyBqXSA9IHRt
cDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJ
bWFnZUdMLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9TbmFwc2hvdEltYWdlR0wuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFNuYXBzaG90SW1hZ2VHTF9oCisjZGVmaW5lIFNuYXBzaG90SW1hZ2VH
TF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit1bnNpZ25lZCBjaGFyKiBn
ZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0
dXJlSWQpOworI2VuZGlmCisKKyNlbmRpZiAvLyBTbmFwc2hvdEltYWdlR0xfaApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1
ODkxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTItMTEtMjcgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gM0QgcGl4ZWwgdGVzdHMgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGEgc25hcHNob3Qgb2Yg
dGhlIHZpZXcgaW4gdGhlIFVJIHByb2Nlc3MgaW5zdGVhZCBvZiB0aGUgd2ViIHByb2Nlc3MuCisg
ICAgICAgIFdlIGhhdmUgdG8gdXNlIFRleHR1cmUgTWFwcGVyIGluIG9yZGVyIHRvIGNvcnJlY3Rs
eSBwYWludCAzRCB0cmFuc2Zvcm1zIGV0Yy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwOgorICAgICAgICAo
V1RSOjp3cml0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdUUjo6cGFpbnRSZXBhaW50UmVjdE92ZXJs
YXkpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZvcmNl
UmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1w
UGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9lZmwvUGxhdGZvcm1XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKToKKwogMjAxMi0xMS0yNyAgUHJhdGlrIFNvbGFua2kg
IDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgb2JqYy9vYmpjLXJ1bnRpbWUuaCBkb2Vz
IG5vdCBleGlzdCBvbiBhbGwgUExBVEZPUk0oTUFDKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaAkocmV2aXNpb24gMTM1NzQwKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0lt
YWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFs
SGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhjb25zdCBjaGFyWzMzXSk7CiAKLSNpZiBQTEFU
Rk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyB2
b2lkIGZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KTsK
ICAgICB2b2lkIGZvcmNlUmVwYWludERvbmUoKTsKICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCShyZXZp
c2lvbiAxMzU3NDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0
aW9uQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
VGVzdEludm9jYXRpb24uaCIKIAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4K
ICNpbmNsdWRlIDxjc3RkaW8+CkBAIC02MSw3ICs2Myw3IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hT
dHJpbmdGb3JDYWlyb1N1cmZhY2UKICAgICAgICAgaGFzaFs4XSwgaGFzaFs5XSwgaGFzaFsxMF0s
IGhhc2hbMTFdLCBoYXNoWzEyXSwgaGFzaFsxM10sIGhhc2hbMTRdLCBoYXNoWzE1XSk7CiB9CiAK
LXN0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgpCitzdGF0aWMgY2Fpcm9f
c3RhdHVzX3Qgd3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBp
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPHVuc2lnbmVkIGNoYXI+Kj4oY2xvc3VyZSk7CiAg
ICAgaW4tPmFwcGVuZChkYXRhLCBsZW5ndGgpOwpAQCAtMTA0LDkgKzEwNiwzNyBAQCBzdGF0aWMg
dm9pZCBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShjYWlyCiAgICAgY2Fpcm9fZGVzdHJveShjb250
ZXh0KTsKIH0KIAorI2lmIFBMQVRGT1JNKEVGTCkKK3ZvaWQgVGVzdEludm9jYXRpb246OmZvcmNl
UmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2b2lkICpjb250ZXh0KQoreworICAgIHN0
YXRpY19jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29udGV4dCktPm1fZ290UmVwYWludCA9IHRydWU7
CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKK30KKyNlbmRpZgor
CiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChX
S0ltYWdlUmVmIHdrSW1hZ2UsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQogeworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oRUZMKQorICAgIFVOVVNFRF9QQVJB
TSh3a0ltYWdlKTsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTsKKworICAgIFdLUGFn
ZVJlZiBwYWdlID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KTsKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwgdGhpcywgJmZvcmNlUmVwYWludERvbmVD
YWxsYmFjayk7CisKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RS
ZXBhaW50LCBUZXN0Q29udHJvbGxlcjo6U2hvcnRUaW1lb3V0KTsKKworICAgIGlmIChtX2dvdFJl
cGFpbnQpCisgICAgICAgIHN1cmZhY2UgPSBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT53aW5kb3dTbmFwc2hvdEltYWdlKCku
Z2V0KCkpOworICAgIGVsc2UgeworICAgICAgICBtX2Vycm9yID0gdHJ1ZTsKKyAgICAgICAgbV9l
cnJvck1lc3NhZ2UgPSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHJlcGFpbnRcbiI7CisgICAgICAg
IG1fd2ViUHJvY2Vzc0lzVW5yZW5zcG9uc2l2ZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZWxzZQogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVD
YWlyb1N1cmZhY2Uod2tJbWFnZSk7CisjZW5kaWYKIAogICAgIGlmIChyZXBhaW50UmVjdHMpCiAg
ICAgICAgIHBhaW50UmVwYWludFJlY3RPdmVybGF5KHN1cmZhY2UsIHJlcGFpbnRSZWN0cyk7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0Vm
bC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1Bs
YXRmb3JtV2ViVmlld0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDkgQEAKICNp
bmNsdWRlICJFV2ViS2l0Mi5oIgogI2luY2x1ZGUgIldlYktpdDIvV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEyNCw5ICsxMjcsMTYgQEAgdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQ
bGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hp
Y2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMu
Ci0gICAgcmV0dXJuIDA7CisgICAgRWNvcmVfRXZhcyogZWUgPSBlY29yZV9ldmFzX2Vjb3JlX2V2
YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmlldykpOworCisgICAgQVNTRVJUKGVlKTsK
KworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworICAgIGVjb3JlX2V2YXNfZ2VvbWV0
cnlfZ2V0KGVlLCAwLCAwLCAmd2lkdGgsICZoZWlnaHQpOworICAgIEFTU0VSVCh3aWR0aCA+IDAg
JiYgaGVpZ2h0ID4gMCk7CisKKyAgICByZXR1cm4gYWRvcHRXSyhXS1ZpZXdHZXRTbmFwc2hvdCh0
b0FQSShtX3ZpZXcpKSk7CiB9CiAKIGJvb2wgUGxhdGZvcm1XZWJWaWV3Ojp2aWV3U3VwcG9ydHNP
cHRpb25zKFdLRGljdGlvbmFyeVJlZiBvcHRpb25zKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176347</attachid>
            <date>2012-11-27 15:23:31 -0800</date>
            <delta_ts>2012-11-27 15:57:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>102833.patch</filename>
            <type>text/plain</type>
            <size>14460</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTg3MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTI3ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIDNEIHBp
eGVsIHRlc3RzIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDI4MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgZm9yIGdlbmVyYXRpbmcgYSBzbmFwc2hvdCwgdG8g
YmUgdXNlZCBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAg
IChXS1ZpZXdHZXRTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6b25GYXZpY29uQ2hhbmdlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0SW1hZ2VGcm9tQ3VycmVu
dFRleHR1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5o
OiBBZGRlZC4KKwogMjAxMi0xMS0yNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pk
bnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtRdF1bV0syXSBUaWxlcyBub3QgYWx3
YXlzIHBhaW50ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzU3
NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xD
b250ZXh0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tf
Zm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtLmNwcApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwzICs0MiwxMCBA
QCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlld1JlCiAKICAgICByZXR1cm4g
dmlld0ltcGwtPndrUGFnZSgpOwogfQorCitXS0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdL
Vmlld1JlZiB2aWV3UmVmKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJ
bXBsOjpmcm9tRXZhc09iamVjdCh0b0ltcGwodmlld1JlZikpOworCisgICAgcmV0dXJuIHZpZXdJ
bXBsLT50YWtlU25hcHNob3QoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaAkocmV2aXNpb24gMTM1NzQwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
OCBAQCBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlCiAKIFdLX0VYUE9S
VCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7CiAKK1dLX0VYUE9SVCBX
S0ltYWdlUmVmIFdLVmlld0dldFNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiUGFnZVBvbGljeUNsaWVudEVmbC5oIgog
I2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVu
dEVmbC5oIgorI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUgIldLRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKQEAgLTYyLDYgKzY0
LDcgQEAKICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb1V0aWxpdGll
c0VmbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0ltYWdlQ2Fpcm8uaD4KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiVmlicmF0
aW9uQ2xpZW50RWZsLmgiCkBAIC0xMDEyLDMgKzEwMTUsMjIgQEAgdm9pZCBFd2tWaWV3SW1wbDo6
b25GYXZpY29uQ2hhbmdlZChjb25zdAogCiAgICAgdmlld0ltcGwtPmluZm9ybUljb25DaGFuZ2Uo
KTsKIH0KKworV0tJbWFnZVJlZiBFd2tWaWV3SW1wbDo6dGFrZVNuYXBzaG90KCkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAoIW1faXNIYXJkd2FyZUFjY2VsZXJhdGVkKQorI2VuZGlm
CisgICAgICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjcmVhdGVTdXJm
YWNlRm9ySW1hZ2Uoc2QtPmltYWdlKS5nZXQoKSwgMCk7CisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisgICAgRXZhc19OYXRpdmVfU3VyZmFjZSogbmF0aXZlU3VyZmFjZSA9IGV2
YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX2dldChzZC0+aW1hZ2UpOworICAgIHVuc2ln
bmVkIGNoYXIqIGJ1ZmZlciA9IGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJlKHNkLT52aWV3Lncs
IHNkLT52aWV3LmgsIG5hdGl2ZVN1cmZhY2UtPmRhdGEub3BlbmdsLnRleHR1cmVfaWQpOworICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIsIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNkLT52
aWV3LncsIHNkLT52aWV3LmgsIHNkLT52aWV3LncgKiA0KSk7CisgICAgV0tJbWFnZVJlZiBpbWFn
ZSA9IFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIDApOworICAg
IGRlbGV0ZVtdIGJ1ZmZlcjsKKworICAgIHJldHVybiBpbWFnZTsKKyNlbmRpZgorfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZp
c2lvbiAxMzU3NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhcmR3YXJlQWNj
ZWxlcmF0ZWQ7IH0KICAgICB2b2lkIHNldERyYXdzQmFja2dyb3VuZChib29sIGVuYWJsZSkgeyBt
X3NldERyYXdzQmFja2dyb3VuZCA9IGVuYWJsZTsgfQogCisgICAgV0tJbWFnZVJlZiB0YWtlU25h
cHNob3QoKTsKKwogcHJpdmF0ZToKICAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1l
cjxFd2tWaWV3SW1wbD4qKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1NuYXBzaG90SW1hZ2VHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorI2lmIFVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4K
KyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKyNlbHNlCisjaW5jbHVkZSAiT3BlbkdMU2hpbXMu
aCIKKyNlbmRpZgorCit1bnNpZ25lZCBjaGFyKiBnZXRJbWFnZUZyb21DdXJyZW50VGV4dHVyZShp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB0ZXh0dXJlSWQpCit7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciA9
IG5ldyB1bnNpZ25lZCBjaGFyW3dpZHRoICogaGVpZ2h0ICogNF07CisgICAgZ2xSZWFkUGl4ZWxz
KDAsIDAsIHdpZHRoLCBoZWlnaHQsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0JZVEUsIGJ1ZmZlcik7
CisKKyAgICAvLyBUZXh0dXJlcyBhcmUgZmxpcHBlZCBvbiB0aGUgWSBheGlzLCBzbyB3ZSBuZWVk
IHRvIGZsaXAgdGhlIGltYWdlIGJhY2suCisgICAgdW5zaWduZWQgdG1wOworICAgIHVuc2lnbmVk
KiBidWYgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4oYnVmZmVyKTsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaGVpZ2h0IC8gMjsgKytpKSB7CisgICAgICAgIGZvciAoaW50IGogPSAw
OyBqIDwgd2lkdGg7ICsraikgeworICAgICAgICAgICAgdG1wID0gYnVmW2kgKiB3aWR0aCArIGpd
OworICAgICAgICAgICAgYnVmW2kgKiB3aWR0aCArIGpdID0gYnVmWyhoZWlnaHQgLSBpIC0gMSkg
KiB3aWR0aCArIGpdOworICAgICAgICAgICAgYnVmWyhoZWlnaHQgLSBpIC0gMSkgKiB3aWR0aCAr
IGpdID0gdG1wOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdElt
YWdlR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9T
bmFwc2hvdEltYWdlR0wuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1NuYXBzaG90SW1hZ2VHTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgU25hcHNob3RJbWFnZUdMX2gKKyNkZWZpbmUg
U25hcHNob3RJbWFnZUdMX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3Vu
c2lnbmVkIGNoYXIqIGdldEltYWdlRnJvbUN1cnJlbnRUZXh0dXJlKGludCB3aWR0aCwgaW50IGhl
aWdodCwgaW50IHRleHR1cmVJZCk7CisjZW5kaWYKKworI2VuZGlmIC8vIFNuYXBzaG90SW1hZ2VH
TF9oCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzU4OTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxMi0xMS0yNyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBpbnRl
bC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSAzRCBwaXhlbCB0ZXN0cyBhcmUgZmFpbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUg
YSBzbmFwc2hvdCBvZiB0aGUgdmlldyBpbiB0aGUgVUkgcHJvY2VzcyBpbnN0ZWFkIG9mIHRoZSB3
ZWIgcHJvY2Vzcy4KKyAgICAgICAgV2UgaGF2ZSB0byB1c2UgVGV4dHVyZSBNYXBwZXIgaW4gb3Jk
ZXIgdG8gY29ycmVjdGx5IHBhaW50IDNEIHRyYW5zZm9ybXMgZXRjLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAoVGVzdEludm9jYXRpb24p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5j
cHA6CisgICAgICAgIChXVFI6OndyaXRlRnVuY3Rpb24pOgorICAgICAgICAoV1RSOjpwYWludFJl
cGFpbnRSZWN0T3ZlcmxheSk6CisgICAgICAgIChXVFIpOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV1RS
OjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorCiAyMDEyLTExLTI3ICBQ
cmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBvYmpjL29iamMt
cnVudGltZS5oIGRvZXMgbm90IGV4aXN0IG9uIGFsbCBQTEFURk9STShNQUMpCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiAxMzU3NDApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0
aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKICAgICBib29s
IGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJbMzNd
KTsKIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwp
CiAgICAgc3RhdGljIHZvaWQgZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZv
aWQqIGNvbnRleHQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50RG9uZSgpOwogI2VuZGlmCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25D
YWlyby5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fp
cm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDgg
QEAKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogCiAjaW5jbHVkZSAiUGl4ZWxEdW1wU3Vw
cG9ydC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KICNpbmNsdWRlIDxj
YWlyby9jYWlyby5oPgogI2luY2x1ZGUgPGNzdGRpbz4KQEAgLTYxLDcgKzYzLDcgQEAgdm9pZCBj
b21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZQogICAgICAgICBoYXNoWzhdLCBoYXNo
WzldLCBoYXNoWzEwXSwgaGFzaFsxMV0sIGhhc2hbMTJdLCBoYXNoWzEzXSwgaGFzaFsxNF0sIGhh
c2hbMTVdKTsKIH0KIAotc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCog
Y2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgaW50IGxlbmd0aCkK
K3N0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWZWN0b3I8dW5z
aWduZWQgY2hhcj4qIGluID0gcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8dW5zaWduZWQgY2hhcj4q
PihjbG9zdXJlKTsKICAgICBpbi0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CkBAIC0xMDQsOSArMTA2
LDM3IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KGNhaXIKICAgICBjYWly
b19kZXN0cm95KGNvbnRleHQpOwogfQogCisjaWYgUExBVEZPUk0oRUZMKQordm9pZCBUZXN0SW52
b2NhdGlvbjo6Zm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQgKmNvbnRl
eHQpCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdEludm9jYXRpb24qPihjb250ZXh0KS0+bV9nb3RS
ZXBhaW50ID0gdHJ1ZTsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgp
OworfQorI2VuZGlmCisKIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJl
V2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMp
CiB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShFRkwpCisg
ICAgVU5VU0VEX1BBUkFNKHdrSW1hZ2UpOworCisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
OworCisgICAgV0tQYWdlUmVmIHBhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpOworICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCB0aGlzLCAmZm9y
Y2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKworICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5y
dW5VbnRpbChtX2dvdFJlcGFpbnQsIFRlc3RDb250cm9sbGVyOjpTaG9ydFRpbWVvdXQpOworCisg
ICAgaWYgKCFtX2dvdFJlcGFpbnQpIHsKKyAgICAgICAgbV9lcnJvciA9IHRydWU7CisgICAgICAg
IG1fZXJyb3JNZXNzYWdlID0gIlRpbWVkIG91dCB3YWl0aW5nIGZvciByZXBhaW50XG4iOworICAg
ICAgICBtX3dlYlByb2Nlc3NJc1VucmVuc3BvbnNpdmUgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc3VyZmFjZSA9IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoVGVzdENv
bnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2UoKS5n
ZXQoKSk7CisjZWxzZQogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IFdLSW1hZ2VDcmVh
dGVDYWlyb1N1cmZhY2Uod2tJbWFnZSk7CisjZW5kaWYKIAogICAgIGlmIChyZXBhaW50UmVjdHMp
CiAgICAgICAgIHBhaW50UmVwYWludFJlY3RPdmVybGF5KHN1cmZhY2UsIHJlcGFpbnRSZWN0cyk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmll
d0VmbC5jcHAJKHJldmlzaW9uIDEzNTc0MCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZs
L1BsYXRmb3JtV2ViVmlld0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDkgQEAK
ICNpbmNsdWRlICJFV2ViS2l0Mi5oIgogI2luY2x1ZGUgIldlYktpdDIvV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VDYWlyby5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEyNCw5ICsxMjcsMTUgQEAgdm9pZCBQbGF0
Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVm
PiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8g
d2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9y
bXMuCi0gICAgcmV0dXJuIDA7CisgICAgRWNvcmVfRXZhcyogZWUgPSBlY29yZV9ldmFzX2Vjb3Jl
X2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmlldykpOworICAgIEFTU0VSVChlZSk7
CisKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAgICBlY29yZV9ldmFzX2dlb21l
dHJ5X2dldChlZSwgMCwgMCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBBU1NFUlQod2lkdGggPiAw
ICYmIGhlaWdodCA+IDApOworCisgICAgcmV0dXJuIGFkb3B0V0soV0tWaWV3R2V0U25hcHNob3Qo
dG9BUEkobV92aWV3KSkpOwogfQogCiBib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRz
T3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>