<?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>90606</bug_id>
          
          <creation_ts>2012-07-05 05:15:40 -0700</creation_ts>
          <short_desc>[EFL] Port the test framework to WebKit 2</short_desc>
          <delta_ts>2012-08-15 11:20:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90602</dependson>
          <blocked>90451</blocked>
    
    <blocked>90973</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago Marcos P. Santos">tmpsantos</reporter>
          <assigned_to name="Thiago Marcos P. Santos">tmpsantos</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cshu</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>k.czech</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663502</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-05 05:15:40 -0700</bug_when>
    <thetext>No excuses for API without tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663640</commentid>
    <comment_count>1</comment_count>
      <attachid>150962</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-05 10:57:27 -0700</bug_when>
    <thetext>Created attachment 150962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663911</commentid>
    <comment_count>2</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-07-06 00:02:32 -0700</bug_when>
    <thetext>&gt; void EWK2TestBase::shutdown()
&gt; {
&gt;    ecore_evas_shutdown();
&gt; }

EWK2TestBase::shutdown is not used. I think it can be deleted as well as in wk1 tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663935</commentid>
    <comment_count>3</comment_count>
      <attachid>151034</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-06 01:19:22 -0700</bug_when>
    <thetext>Created attachment 151034
Patch

Unused method removed. Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663943</commentid>
    <comment_count>4</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-07-06 01:33:53 -0700</bug_when>
    <thetext>LGTM, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663992</commentid>
    <comment_count>5</comment_count>
      <attachid>151049</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-06 03:55:04 -0700</bug_when>
    <thetext>Created attachment 151049
Patch

Removed unused include path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664029</commentid>
    <comment_count>6</comment_count>
      <attachid>151065</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-06 05:38:26 -0700</bug_when>
    <thetext>Created attachment 151065
Patch

Cleanup more unused include paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664251</commentid>
    <comment_count>7</comment_count>
      <attachid>151065</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-06 13:40:56 -0700</bug_when>
    <thetext>Comment on attachment 151065
Patch

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

Do you need to add Intel&apos;s copyright to any header?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.cpp:27
&gt; +int EWK2UnitTests::EWK2TestBase::useX11Window;

Shouldn&apos;t you add a default value here?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.cpp:40
&gt; +    int count = 0;
&gt; +
&gt; +    while ((count = ecore_evas_shutdown()) &gt; 0) { }

Isn&apos;t it better to call ecore_evas_shutdown() only once and ASSERT that itit returns so that faulty code gets evident more easily?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.h:63
&gt; +    static int useX11Window;

Isn&apos;t it possible to use a bool here?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestConfig.h:23
&gt; +namespace EWK2UnitTests {
&gt; +namespace Config {

Nit: we normally put an empty line after each namespace declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664261</commentid>
    <comment_count>8</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-06 14:03:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 151065 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151065&amp;action=review
&gt; 
&gt; Do you need to add Intel&apos;s copyright to any header?
&gt; 

This is basically a copy from WK1 test framework skeleton. Nothing was added, so I kept the original copyright holder since no significant changes (more than 10 lines per file) were made.  

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.cpp:27
&gt; &gt; +int EWK2UnitTests::EWK2TestBase::useX11Window;
&gt; 
&gt; Shouldn&apos;t you add a default value here?

I guess since it is static, it is zeroed by default.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.cpp:40
&gt; &gt; +    int count = 0;
&gt; &gt; +
&gt; &gt; +    while ((count = ecore_evas_shutdown()) &gt; 0) { }
&gt; 
&gt; Isn&apos;t it better to call ecore_evas_shutdown() only once and ASSERT that itit returns so that faulty code gets evident more easily?

Yes, gonna change that.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.h:63
&gt; &gt; +    static int useX11Window;
&gt; 
&gt; Isn&apos;t it possible to use a bool here?

I guess it is int because of compatibility with getopt_long()

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestConfig.h:23
&gt; &gt; +namespace EWK2UnitTests {
&gt; &gt; +namespace Config {
&gt; 
&gt; Nit: we normally put an empty line after each namespace declaration.

Roger that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664276</commentid>
    <comment_count>9</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-06 15:30:40 -0700</bug_when>
    <thetext>&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2TestBase.cpp:40
&gt; &gt; &gt; +    int count = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    while ((count = ecore_evas_shutdown()) &gt; 0) { }
&gt; &gt; 
&gt; &gt; Isn&apos;t it better to call ecore_evas_shutdown() only once and ASSERT that itit returns so that faulty code gets evident more easily?
&gt; 
&gt; Yes, gonna change that.
&gt; 

Actually I double checked this on the Ecore docs [1]. It actually makes sense since it returns &gt; 0 when it is still in use. We have too many asynchronous events ongoing and on my tests here it rarely return 0 at the first attempt.

[1] http://docs.enlightenment.org/auto/ecore/group__Ecore__Evas__Group.html#gab8fa311077f749190c9b622f672b2214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664280</commentid>
    <comment_count>10</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-06 15:48:24 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Actually I double checked this on the Ecore docs [1]. It actually makes sense since it returns &gt; 0 when it is still in use. We have too many asynchronous events ongoing and on my tests here it rarely return 0 at the first attempt.

It does what all _shutdown() EFL functions do. If the number of calls to _init() and _shutdown() are properly balanced, in the end the counters should all return 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665006</commentid>
    <comment_count>11</comment_count>
      <attachid>151284</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-09 11:08:48 -0700</bug_when>
    <thetext>Created attachment 151284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665033</commentid>
    <comment_count>12</comment_count>
      <attachid>151289</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-09 11:47:19 -0700</bug_when>
    <thetext>Created attachment 151289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665043</commentid>
    <comment_count>13</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-09 11:57:34 -0700</bug_when>
    <thetext>Ok, after the feedback, the patch was completely reworked. Waiting for comments.

Please note that it is now more gtest-ish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665438</commentid>
    <comment_count>14</comment_count>
      <attachid>151289</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-09 19:57:56 -0700</bug_when>
    <thetext>Comment on attachment 151289
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:31
&gt; +static void onLoadProgress(void *userData, Evas_Object *webView, void *eventInfo)

nit : Move * to variable type side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665446</commentid>
    <comment_count>15</comment_count>
      <attachid>151289</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-09 20:32:52 -0700</bug_when>
    <thetext>Comment on attachment 151289
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:215
&gt; +    TARGET_LINK_LIBRARIES(${testName} ${EWK2UnitTests_LIBRARIES} ewk2UnitTestUtils gtest pthread)

Do you really need to pass pthread here? If it&apos;s really necessary, you should use find_package(Threads) and link to ${CMAKE_THREAD_LIBS_INIT}.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:62
&gt; +    m_webView = ewk_view_add(evas);

Isn&apos;t this leaking? We have an OwnPtr overload for Evas_Object* that&apos;s probably handy here.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:70
&gt; +    ecore_evas_free(m_ecoreEvas);

We have an OwnPtr overload for Ecore_Evas*. You can use it here and avoid having to manually keep track of the memory.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:74
&gt; +

Nit: extra empty line.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:83
&gt; +    while (m_loadProgress != 1.f)
&gt; +        ecore_main_loop_iterate();

Where&apos;s the main loop being started and shut down? Do you really need to busy wait like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665545</commentid>
    <comment_count>16</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2012-07-10 00:49:57 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=151289&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:44
&gt; +    Evas_Object* m_webView;

I think OwnPtr can be used instead.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:45
&gt; +    Ecore_Evas* m_ecoreEvas;

I think OwnPtr can be used instead.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:48
&gt; +    unsigned int m_height;

I see m_width, m_height are hardcoded, so maybe it can be changed to
static const int m_width = 800;
static const int m_height = 600;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665639</commentid>
    <comment_count>17</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-10 04:14:04 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 151289 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151289&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PlatformEfl.cmake:215
&gt; &gt; +    TARGET_LINK_LIBRARIES(${testName} ${EWK2UnitTests_LIBRARIES} ewk2UnitTestUtils gtest pthread)
&gt; 
&gt; Do you really need to pass pthread here? If it&apos;s really necessary, you should use find_package(Threads) and link to ${CMAKE_THREAD_LIBS_INIT}.
&gt; 

It is need by gtest, so maybe it is in the wrong place. Gonna verify that.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:62
&gt; &gt; +    m_webView = ewk_view_add(evas);
&gt; 
&gt; Isn&apos;t this leaking? We have an OwnPtr overload for Evas_Object* that&apos;s probably handy here.
&gt; 

I&apos;m going to double check ecore_evas source code (since the docs doesn&apos;t say much), but I assumed that ecore_evas_free was in charge to clean up it&apos;s children. My tests using valgrind + system malloc doesn&apos;t show any leak though. Maybe I&apos;m been coding Qt for too long. :)

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:70
&gt; &gt; +    ecore_evas_free(m_ecoreEvas);
&gt; 
&gt; We have an OwnPtr overload for Ecore_Evas*. You can use it here and avoid having to manually keep track of the memory.
&gt; 

The reason why I&apos;m not using OwnPtr is because I want to ensure coherency. Not sure if it is a good idea to destruct them after ecore_evas_shutdown() (which would be the case when using auto pointers).

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:74
&gt; &gt; +
&gt; 
&gt; Nit: extra empty line.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:83
&gt; &gt; +    while (m_loadProgress != 1.f)
&gt; &gt; +        ecore_main_loop_iterate();
&gt; 
&gt; Where&apos;s the main loop being started and shut down? Do you really need to busy wait like this?

This is not a busy wait, it is totally event/timeout oriented (pretty much what the main loop does). Just a convenience function to load a page synchronously since I&apos;m expecting to most of the tests are going to be &quot;load a page, verify getters&quot;. This way you can write your tests inline.

Qt utests uses title change events to ensure a certain state inside the page, since even when the page is 100% loaded you might still have some JS executing. I should write something similar to wait for some title changes/value synchronously. This makes a lot easier and cleaner to write tests.

If needed, each test should start the main_loop and stop it when is most appropriated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665640</commentid>
    <comment_count>18</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-10 04:14:49 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151289&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:44
&gt; &gt; +    Evas_Object* m_webView;
&gt; 
&gt; I think OwnPtr can be used instead.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:45
&gt; &gt; +    Ecore_Evas* m_ecoreEvas;
&gt; 
&gt; I think OwnPtr can be used instead.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:48
&gt; &gt; +    unsigned int m_height;
&gt; 
&gt; I see m_width, m_height are hardcoded, so maybe it can be changed to
&gt; static const int m_width = 800;
&gt; static const int m_height = 600;

Maybe I should put these globals at ::testing::Environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666087</commentid>
    <comment_count>19</comment_count>
      <attachid>151532</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-10 14:57:28 -0700</bug_when>
    <thetext>Created attachment 151532
Patch

The pthreads issue is going to be fixed in another bug. I&apos;m going to make gtest a shared library now that we have many customers for it (TestWebKitAPI is also comming), and fix the link problem for wk1 and wk2 tests. I still not using OwnPtr because of destruction order coherence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666661</commentid>
    <comment_count>20</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-11 04:46:47 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=151532) [details]
&gt; Patch
&gt; 
&gt; The pthreads issue is going to be fixed in another bug. I&apos;m going to make gtest a shared library now that we have many customers for it (TestWebKitAPI is also comming), and fix the link problem for wk1 and wk2 tests. I still not using OwnPtr because of destruction order coherence.

Here: bug 90973</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667343</commentid>
    <comment_count>21</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-11 19:42:18 -0700</bug_when>
    <thetext>Right now I only have some questions left:

 - You mention not being able to use OwnPtr with the init/shutdown stuff. I&apos;m not very familiar with how gtest is supposed to work; wouldn&apos;t it be possible to init and shutdown in the constructor and the destructor, respectively?

 - On a side note, it&apos;s generally good practice to init and shutdown everything you use (evas, for example).

 - On loadUrlSync don&apos;t you actually need to init and shut down the main loop since you are using it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667491</commentid>
    <comment_count>22</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-12 01:08:33 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Right now I only have some questions left:
&gt; 
&gt;  - You mention not being able to use OwnPtr with the init/shutdown stuff. I&apos;m not very familiar with how gtest is supposed to work; wouldn&apos;t it be possible to init and shutdown in the constructor and the destructor, respectively?
&gt; 

Yes, it is possible, but it&apos;s not a good idea since we use ASSERT_GT on the constructor and gtest team want to make assertions throw exceptions.

&gt;  - On a side note, it&apos;s generally good practice to init and shutdown everything you use (evas, for example).
&gt; 

Yes, the latest version of the patch deletes everything. I found no evidence of ecore_evas_free deleting it&apos;s children.

&gt;  - On loadUrlSync don&apos;t you actually need to init and shut down the main loop since you are using it?

No. Actually that&apos;s the point of loadUrlSync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667498</commentid>
    <comment_count>23</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-12 01:14:52 -0700</bug_when>
    <thetext>&gt; &gt;  - You mention not being able to use OwnPtr with the init/shutdown stuff. I&apos;m not very familiar with how gtest is supposed to work; wouldn&apos;t it be possible to init and shutdown in the constructor and the destructor, respectively?
&gt; &gt; 
&gt; 
&gt; Yes, it is possible, but it&apos;s not a good idea since we use ASSERT_GT on the constructor and gtest team want to make assertions throw exceptions.

s/constructor/SetUp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667504</commentid>
    <comment_count>24</comment_count>
      <attachid>151532</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 01:21:57 -0700</bug_when>
    <thetext>Comment on attachment 151532
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:43
&gt; +    : m_loadProgress(0.f)

Use 0, not 0.f. This is part of the coding style.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:49
&gt; +void EWK2UnitTestBase::SetUp()

Why does this start with a capital letter?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:67
&gt; +    evas_object_focus_set(m_webView, EINA_TRUE);

Should be true, not EINA_TRUE.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:70
&gt; +void EWK2UnitTestBase::TearDown()

Why does this start with a capital letter?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:79
&gt; +    m_loadProgress = 0;

Should we have an EINA SAFETY for url?

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:84
&gt; +    while (m_loadProgress != 1.f)

Use 1, not 1.f, as per coding style.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:32
&gt; +    Evas_Object* webView() { return m_webView; }

Should be const.

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:49
&gt; +}

// namespace EWK2UnitTest

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:51
&gt; +#endif

// EWK2UnitTestBase_h

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp:37
&gt; +}

// namespace EWK2UnitTest

&gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h:45
&gt; +#endif

// EWK2UnitTestEnvironment_h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667528</commentid>
    <comment_count>25</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-12 01:50:58 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 151532 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151532&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:43
&gt; &gt; +    : m_loadProgress(0.f)
&gt; 
&gt; Use 0, not 0.f. This is part of the coding style.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:49
&gt; &gt; +void EWK2UnitTestBase::SetUp()
&gt; 
&gt; Why does this start with a capital letter?
&gt; 

This is enforced by gtest.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:67
&gt; &gt; +    evas_object_focus_set(m_webView, EINA_TRUE);
&gt; 
&gt; Should be true, not EINA_TRUE.
&gt; 

Docs says Eina_Bool.

http://docs.enlightenment.org/auto/evas/group__Evas__Object__Group__Basic.html#ga114336ce1de94dbb13843cca2516e34b

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:70
&gt; &gt; +void EWK2UnitTestBase::TearDown()
&gt; 
&gt; Why does this start with a capital letter?
&gt; 

Enforced by gtest.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:79
&gt; &gt; +    m_loadProgress = 0;
&gt; 
&gt; Should we have an EINA SAFETY for url?
&gt; 

I don&apos;t think so. I&apos;m not accessing &quot;url&quot;, just handling it directly to EWK. The check would be at the one that changes/reads it.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:84
&gt; &gt; +    while (m_loadProgress != 1.f)
&gt; 
&gt; Use 1, not 1.f, as per coding style.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:32
&gt; &gt; +    Evas_Object* webView() { return m_webView; }
&gt; 
&gt; Should be const.
&gt; 

Not really. What about const correctness? I&apos;ve seen WebKit respecting this rule in many places:

Example -&gt; CSSToStyleMap* styleMap() { return &amp;m_styleMap; }

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:49
&gt; &gt; +}
&gt; 
&gt; // namespace EWK2UnitTest
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:51
&gt; &gt; +#endif
&gt; 
&gt; // EWK2UnitTestBase_h
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.cpp:37
&gt; &gt; +}
&gt; 
&gt; // namespace EWK2UnitTest
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h:45
&gt; &gt; +#endif
&gt; 
&gt; // EWK2UnitTestEnvironment_h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667682</commentid>
    <comment_count>26</comment_count>
      <attachid>151925</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-12 05:51:41 -0700</bug_when>
    <thetext>Created attachment 151925
Patch

Thanks for having a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667858</commentid>
    <comment_count>27</comment_count>
      <attachid>151925</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-12 09:27:54 -0700</bug_when>
    <thetext>Comment on attachment 151925
Patch

Looks fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668132</commentid>
    <comment_count>28</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-12 13:13:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt;  - On a side note, it&apos;s generally good practice to init and shutdown everything you use (evas, for example).
&gt; Yes, the latest version of the patch deletes everything. I found no evidence of ecore_evas_free deleting it&apos;s children.

I mean, you should probably call evas_init() and evas_shutdown().

&gt; &gt;  - On loadUrlSync don&apos;t you actually need to init and shut down the main loop since you are using it?
&gt; No. Actually that&apos;s the point of loadUrlSync.

So you can/should iterate without starting the main loop?

(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:32
&gt; &gt; &gt; +    Evas_Object* webView() { return m_webView; }
&gt; &gt; 
&gt; &gt; Should be const.
&gt; Not really. What about const correctness? I&apos;ve seen WebKit respecting this rule in many places:
&gt; 
&gt; Example -&gt; CSSToStyleMap* styleMap() { return &amp;m_styleMap; }

It depends on whether callers are expected to call functions which take a non-const Evas_Object*. Right now only ewk_view_uri_get() is called, but I guess non-const functions will be called at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668148</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 13:22:16 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #22)
&gt; &gt; &gt;  - On a side note, it&apos;s generally good practice to init and shutdown everything you use (evas, for example).
&gt; &gt; Yes, the latest version of the patch deletes everything. I found no evidence of ecore_evas_free deleting it&apos;s children.
&gt; 
&gt; I mean, you should probably call evas_init() and evas_shutdown().
&gt; 
&gt; &gt; &gt;  - On loadUrlSync don&apos;t you actually need to init and shut down the main loop since you are using it?
&gt; &gt; No. Actually that&apos;s the point of loadUrlSync.
&gt; 
&gt; So you can/should iterate without starting the main loop?
&gt; 
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:32
&gt; &gt; &gt; &gt; +    Evas_Object* webView() { return m_webView; }
&gt; &gt; &gt; 
&gt; &gt; &gt; Should be const.
&gt; &gt; Not really. What about const correctness? I&apos;ve seen WebKit respecting this rule in many places:
&gt; &gt; 
&gt; &gt; Example -&gt; CSSToStyleMap* styleMap() { return &amp;m_styleMap; }
&gt; 
&gt; It depends on whether callers are expected to call functions which take a non-const Evas_Object*. Right now only ewk_view_uri_get() is called, but I guess non-const functions will be called at some point.

I meant that the getter should be const since it does not alter the object, not a const return value. For e.g.:

inline HTMLFrameOwnerElement* Frame::ownerElement() const
{
    return m_ownerElement;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668218</commentid>
    <comment_count>30</comment_count>
      <attachid>151925</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-12 14:28:20 -0700</bug_when>
    <thetext>Comment on attachment 151925
Patch

cq+&apos;ing so Thiago can go to bed in peace :-)

I finally understood what Chris was trying to say, and I agree with him. Thiago seems to be OK with it as well, but he&apos;ll do that in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668227</commentid>
    <comment_count>31</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-12 14:35:42 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 151925 [details])
&gt; cq+&apos;ing so Thiago can go to bed in peace :-)
&gt; 
&gt; I finally understood what Chris was trying to say, and I agree with him. Thiago seems to be OK with it as well, but he&apos;ll do that in another patch.

I will ignore what I learned from the Scott Meyers books in favor of consistence with the rest of EFL port. :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668253</commentid>
    <comment_count>32</comment_count>
      <attachid>151925</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 14:46:18 -0700</bug_when>
    <thetext>Comment on attachment 151925
Patch

Clearing flags on attachment: 151925

Committed r122512: &lt;http://trac.webkit.org/changeset/122512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668254</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 14:46:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696179</commentid>
    <comment_count>34</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-15 11:20:31 -0700</bug_when>
    <thetext>*** Bug 68510 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150962</attachid>
            <date>2012-07-05 10:57:27 -0700</date>
            <delta_ts>2012-07-06 01:19:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120705205927.patch</filename>
            <type>text/plain</type>
            <size>21792</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWZlMjQyNjRlMmVjMTMx
YjNlNTg2NzQxNTM2Y2JjYmQyZWFjYjE2My4uZWIxMGEzMGMxYzAyMjc0MDY0ZDUxMmY1NTA4YTkx
NWMxNTAwNGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA3LTA1ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggdGhl
IHNhbWUgdGVzdCBmcmFtZXdvcmsgYXMgd2UgaGF2ZSBmb3IgV2ViS2l0IDEKKyAgICAgICAgcG9y
dGVkIHRvIHVzZSB0aGUgV2ViS2l0IDIgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdHMpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjppbml0KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd24pOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdL
MlRlc3RCYXNlOjpzaHV0ZG93bkFsbCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVz
dEJhc2U6OnN0YXJ0VGVzdCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6
OmVuZFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjpjcmVhdGVU
ZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6cnVuVGVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdEJh
c2UuaDogQWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3RzKToKKyAgICAgICAgKEVXSzJUZXN0
QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVGVzdENvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKENvbmZpZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdHMpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdL
MlRlc3RFY29yZUV2YXM6OkVXSzJUZXN0RWNvcmVFdmFzKToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0RWNvcmVFdmFzOjpldmFzKToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVX
SzJUZXN0RWNvcmVFdmFzOjpzaG93KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0
Vmlldzo6RVdLMlRlc3RWaWV3KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0Vmll
dzo6aW5pdCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdFZpZXc6OnNob3cpOgor
ICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RWaWV3OjpldmFzKToKKyAgICAgICAgKEVX
SzJVbml0VGVzdHM6OkVXSzJUZXN0Vmlldzo6YmluZEV2ZW50cyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuaDogQWRkZWQuCisg
ICAgICAgIChFV0syVW5pdFRlc3RzKToKKyAgICAgICAgKEVXSzJUZXN0RWNvcmVFdmFzKToKKyAg
ICAgICAgKEVXSzJUZXN0Vmlldyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdFZp
ZXc6OndlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNl
cy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoZXdrVmlld1Vy
aUdldENiKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfcnVubmVyLmNwcDogQWRkZWQuCisgICAgICAgIChwYXJzZUN1c3RvbUFyZ3VtZW50
cyk6CisgICAgICAgIChtYWluKToKKwogMjAxMi0wNy0wNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFs
YXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBXVFIgY3Jhc2hlcyBpZiBhIFVSTCBpcyBw
YXNzZWQgYXMgYSBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2QwNjE4
NGMxYmI5ZGRlYjZhNzVlZWUyM2VjNzVjN2I5N2M4YWJkNS4uNWVhMWI2MDY4Y2Y2NmFkMTQ5ZGMw
ZjdlODYyYzJlZDg1MDYwYjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2Niwz
ICsxNjYsNjcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAKIElOU1RBTEwoRklMRVMgJHtDTUFL
RV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtn
Y29uZmlnKQogSU5TVEFMTChGSUxFUyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGlu
Y2x1ZGUvJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQor
CitJTkNMVURFX0RJUkVDVE9SSUVTKCR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0CisgICAgICAgICAg
ICAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2luY2x1ZGUKKykKKworU0VUKEVXSzJV
bml0VGVzdHNfTElCUkFSSUVTCisgICAgJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9Cisg
ICAgJHtXZWJDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQor
ICAgICR7RUNPUkVfTElCUkFSSUVTfQorICAgICR7RUNPUkVfRVZBU19MSUJSQVJJRVN9CisgICAg
JHtFVkFTX0xJQlJBUklFU30KKykKKworU0VUKEVXSzJVbml0VGVzdHNfSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZSIKKyAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfSIKKyAgICAi
JHtXVEZfRElSfSIKKyAgICAiJHtXVEZfRElSfS93dGYiCisgICAgJHtFQ09SRV9JTkNMVURFX0RJ
UlN9CisgICAgJHtFQ09SRV9FVkFTX0lOQ0xVREVfRElSU30KKyAgICAke0VWQVNfSU5DTFVERV9E
SVJTfQorKQorCitTRVQoRVdLMlVuaXRUZXN0c19MSU5LX0ZMQUdTCisgICAgJHtFQ09SRV9MREZM
QUdTfQorICAgICR7RUNPUkVfRVZBU19MREZMQUdTfQorICAgICR7RVZBU19MREZMQUdTfQorKQor
CitJRiAoRU5BQkxFX0dMSUJfU1VQUE9SVCkKKyAgICBMSVNUKEFQUEVORCBFV0syVW5pdFRlc3Rz
X0lOQ0xVREVfRElSRUNUT1JJRVMgIiR7V1RGX0RJUn0vd3RmL2dvYmplY3QiKQorICAgIExJU1Qo
QVBQRU5EIEVXSzJVbml0VGVzdHNfTElCUkFSSUVTCisgICAgICAgICR7R2xpYl9MSUJSQVJJRVN9
CisgICAgICAgICR7R3RocmVhZF9MSUJSQVJJRVN9CisgICAgKQorRU5ESUYgKCkKKworU0VUKFdF
QktJVDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cyIpCitTRVQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jlc291
cmNlcykKKworQUREX0RFRklOSVRJT05TKC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtURVNUX1JF
U09VUkNFU19ESVJ9XCIpCisKK0FERF9MSUJSQVJZKGV3azJUZXN0VXRpbHMKKyAgICAke1dFQktJ
VDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5jcHAKKyAgICAke1dF
QktJVDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Vmlldy5jcHAKKykKKwor
VEFSR0VUX0xJTktfTElCUkFSSUVTKGV3azJUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJB
UklFU30pCisKKyMgVGhlICJld2siIG9uIHRoZSB0ZXN0IG5hbWUgbmVlZHMgdG8gYmUgc3VmZml4
ZWQgd2l0aCAiMiIsIG90aGVyd2lzZSBpdAorIyB3aWxsIGNsYXNoIHdpdGggdGVzdHMgZnJvbSB0
aGUgV2ViS2l0IDEgdGVzdCBzdWl0ZS4KK1NFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCisgICAg
dGVzdF9ld2syX3ZpZXcKKykKKworRk9SRUFDSCh0ZXN0TmFtZSAke0VXSzJVbml0VGVzdHNfQklO
QVJJRVN9KQorICAgIEFERF9FWEVDVVRBQkxFKCR7dGVzdE5hbWV9ICR7V0VCS0lUMl9FRkxfVEVT
VF9ESVJ9LyR7dGVzdE5hbWV9LmNwcCAke1dFQktJVDJfRUZMX1RFU1RfRElSfS90ZXN0X3J1bm5l
ci5jcHApCisgICAgQUREX1RFU1QoJHt0ZXN0TmFtZX0gJHtDTUFLRV9SVU5USU1FX09VVFBVVF9E
SVJFQ1RPUll9LyR7dGVzdE5hbWV9KQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke3Rlc3RO
YW1lfSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVGVzdFV0aWxzIGd0ZXN0IHB0aHJl
YWQpCisgICAgQUREX1RBUkdFVF9QUk9QRVJUSUVTKCR7dGVzdE5hbWV9IExJTktfRkxBR1MgIiR7
RVdLMlVuaXRUZXN0c19MSU5LX0ZMQUdTfSIpCisgICAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKCR7
dGVzdE5hbWV9IFBST1BFUlRJRVMgRk9MREVSICJXZWJLaXQiKQorRU5ERk9SRUFDSCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJUZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY5YzQ2YTU0
NjE5MmQzYWVkYTlhMWJjNmVhYzZmMDMxZDAzZmU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RC
YXNlLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz
MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFV0syVGVzdEJhc2UuaCIKKworI2luY2x1ZGUgIkVXSzJUZXN0Q29uZmlnLmgi
CisjaW5jbHVkZSAiRVdLMlRlc3RWaWV3LmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNs
dWRlIDxFY29yZS5oPgorCitpbnQgRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjp1c2VYMTFX
aW5kb3c7CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3RzIHsKKworYm9vbCBFV0syVGVzdEJhc2U6
OmluaXQoKQoreworICAgIHJldHVybiBlY29yZV9ldmFzX2luaXQoKTsKK30KKwordm9pZCBFV0sy
VGVzdEJhc2U6OnNodXRkb3duKCkKK3sKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Cit9CisK
K3ZvaWQgRVdLMlRlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCit7CisgICAgaW50IGNvdW50ID0gMDsK
KworICAgIHdoaWxlICgoY291bnQgPSBlY29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Cit9
CisKK3ZvaWQgRVdLMlRlc3RCYXNlOjpzdGFydFRlc3QoKQoreworICAgIGVjb3JlX21haW5fbG9v
cF9iZWdpbigpOworfQorCit2b2lkIEVXSzJUZXN0QmFzZTo6ZW5kVGVzdCgpCit7CisgICAgZWNv
cmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworYm9vbCBFV0syVGVzdEJhc2U6OmNyZWF0ZVRlc3Qo
Y29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3sK
KyAgICBFRkxfSU5JVF9SRVQoKTsKKworICAgIEVXSzJUZXN0RWNvcmVFdmFzIGV2YXModXNlWDEx
V2luZG93KTsKKyAgICBpZiAoIWV2YXMuZXZhcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBldmFzLnNob3coKTsKKworICAgIEVXSzJUZXN0VmlldyB2aWV3KGV2YXMuZXZhcygpLCB1
cmwpOworICAgIGlmICghdmlldy5pbml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7
CisgICAgdmlldy5zaG93KCk7CisKKyAgICBTVEFSVF9URVNUKCk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBFV0syVGVzdEJhc2U6OnJ1blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNr
KSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZv
aWQqIGV2ZW50X2RhdGEpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0
VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKK30KKwor
Ym9vbCBFV0syVGVzdEJhc2U6OnJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRf
Y2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRf
bmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3sKKyAgICByZXR1cm4gY3JlYXRlVGVzdCh1cmwsIGV2
ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IzOWIxODZjNzk5MjVjOWVl
YjNmOWE2NjJkMDNlYmE4NWRiYjI0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s
IE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaWZuZGVmIEVXSzJUZXN0QmFzZV9oCisjZGVmaW5l
IEVXSzJUZXN0QmFzZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKworI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKKyAgICBkbyB7ICAgIFwKKyAg
ICAgICAgQVNTRVJUX0VRKHRydWUsIEVXSzJUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwK
KyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCisgICAgZG8geyAg
ICBcCisgICAgICAgIEVXSzJUZXN0QmFzZTo6c3RhcnRUZXN0KCk7ICAgXAorICAgIH0gd2hpbGUg
KDApCisKKyNkZWZpbmUgRU5EX1RFU1QoKSAgICBcCisgICAgZG8geyAgICBcCisgICAgICAgIEVX
SzJUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFRkxf
SU5JVF9SRVQoKSAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBpZiAoIUVXSzJUZXN0QmFzZTo6
aW5pdCgpKSAgIFwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAorICAgIH0gd2hpbGUg
KDApCisKKyNkZWZpbmUgRUZMX0lOSVQoKSAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBFV0sy
VGVzdEJhc2U6OmluaXQoKTsgICAgXAorICAgIH0gd2hpbGUgKDApCisKK25hbWVzcGFjZSBFV0sy
VW5pdFRlc3RzIHsKKworY2xhc3MgRVdLMlRlc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Ym9vbCBpbml0KCk7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKKyAgICBzdGF0aWMgdm9p
ZCBzaHV0ZG93bkFsbCgpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0VGVzdCgpOworICAgIHN0YXRp
YyB2b2lkIGVuZFRlc3QoKTsKKworICAgIHN0YXRpYyBib29sIHJ1blRlc3QoY29uc3QgY2hhciog
dXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwg
Y29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlzaGVkIiwgdm9pZCogZXZlbnRfZGF0
YSA9IDApOworICAgIHN0YXRpYyBib29sIHJ1blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9h
ZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEgPSAwKTsKKworICAgIHN0YXRpYyBpbnQgdXNl
WDExV2luZG93OworCitwcml2YXRlOgorICAgIHN0YXRpYyBib29sIGNyZWF0ZVRlc3QoY29uc3Qg
Y2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZv
aWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSk7Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdENvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdENvbmZpZy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4YzY5ZGU1YzYwYjg5ODUyZmI0Nzk5MDllZjE5N2JiMWZlOWFlN2QKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJUZXN0Q29uZmlnLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQor
ICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaWZu
ZGVmIEVXSzJUZXN0Q29uZmlnX2gKKyNkZWZpbmUgRVdLMlRlc3RDb25maWdfaAorCituYW1lc3Bh
Y2UgRVdLMlVuaXRUZXN0cyB7CituYW1lc3BhY2UgQ29uZmlnIHsKK3N0YXRpYyBjb25zdCBpbnQg
ZGVmYXVsdFZpZXdXaWR0aCA9IDYwMDsKK3N0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFZpZXdIZWln
aHQgPSA4MDA7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFRlc3RQYWdlID0gImZp
bGU6Ly8iVEVTVF9SRVNPVVJDRVNfRElSIi9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sIjsKK30KK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Vmlldy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmIxZDYxNmU0MjJlNTUxNjA0NDY2ODVkMjZlNmY0OTU0NDE5OWIwZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RWaWV3LmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQor
ICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLMlRlc3RWaWV3LmgiCisKKyNpbmNsdWRlICJF
V0syVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdHMgeworCitFV0syVGVzdEVjb3Jl
RXZhczo6RVdLMlRlc3RFY29yZUV2YXMoaW50IHVzZVgxMVdpbmRvdykKK3sKKyAgICBpZiAodXNl
WDExV2luZG93KQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3
KDAsIDAsIDAsIENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hl
aWdodCwgMCkpOworICAgIGVsc2UKKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29y
ZV9ldmFzX2J1ZmZlcl9uZXcoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1
bHRWaWV3SGVpZ2h0KSk7Cit9CisKK0VXSzJUZXN0RWNvcmVFdmFzOjpFV0syVGVzdEVjb3JlRXZh
cyhjb25zdCBjaGFyKiBlbmdpbmVfbmFtZSwgaW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95
LCBpbnQgdmlld3BvcnRfdywgaW50IHZpZXdwb3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlv
bnMsIGludCB1c2VYMTFXaW5kb3cpCit7CisgICAgaWYgKHVzZVgxMVdpbmRvdykKKyAgICAgICAg
bV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldyhlbmdpbmVfbmFtZSwgdmlld3Bv
cnRfeCwgdmlld3BvcnRfeSwgdmlld3BvcnRfdywgdmlld3BvcnRfaCwgZXh0cmFfb3B0aW9ucykp
OworICAgIGVsc2UKKyAgICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX2J1
ZmZlcl9uZXcodmlld3BvcnRfeCwgdmlld3BvcnRfeSkpOworfQorCitFdmFzKiBFV0syVGVzdEVj
b3JlRXZhczo6ZXZhcygpCit7CisgICAgaWYgKCFtX2Vjb3JlRXZhcy5nZXQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkp
OworfQorCit2b2lkIEVXSzJUZXN0RWNvcmVFdmFzOjpzaG93KCkKK3sKKyAgICBpZiAobV9lY29y
ZUV2YXMuZ2V0KCkpCisgICAgICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vjb3JlRXZhcy5nZXQoKSk7
Cit9CisKK0VXSzJUZXN0Vmlldzo6RVdLMlRlc3RWaWV3KEV2YXMqIGV2YXMpCisgICAgOiBtX2V2
YXMoZXZhcykKKyAgICAsIG1fdXJsKENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlKQorICAgICwgbV93
aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCisgICAgLCBtX2hlaWdodChDb25maWc6OmRl
ZmF1bHRWaWV3SGVpZ2h0KQoreworfQorCitFV0syVGVzdFZpZXc6OkVXSzJUZXN0VmlldyhFdmFz
KiBldmFzLCBjb25zdCBjaGFyKiB1cmwpCisgICAgOiBtX2V2YXMoZXZhcykKKyAgICAsIG1fdXJs
KHVybCkKKyAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQorICAgICwgbV9o
ZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKK3sKK30KKworRVdLMlRlc3RWaWV3OjpF
V0syVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCisgICAgOiBtX2V2YXMoZXZhcykKKyAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1fd2lk
dGgod2lkdGgpCisgICAgLCBtX2hlaWdodChoZWlnaHQpCit7Cit9CisKK2Jvb2wgRVdLMlRlc3RW
aWV3Ojppbml0KCkKK3sKKyAgICBpZiAoIW1fZXZhcyB8fCBtX3VybC5lbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dlYlZpZXcgPSBhZG9wdFB0cihld2tfdmlld19hZGQo
bV9ldmFzKSk7CisgICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGV3a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LmdldCgpLCBtX3VybC5jX3N0cigp
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEVXSzJUZXN0Vmlldzo6c2hvdygpCit7
CisgICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2YXNf
b2JqZWN0X3Jlc2l6ZShtX3dlYlZpZXcuZ2V0KCksIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICBl
dmFzX29iamVjdF9zaG93KG1fd2ViVmlldy5nZXQoKSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNf
c2V0KG1fd2ViVmlldy5nZXQoKSwgRUlOQV9UUlVFKTsKK30KKworRXZhcyogRVdLMlRlc3RWaWV3
OjpldmFzKCkKK3sKKyAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gZXZhc19vYmplY3RfZXZhc19nZXQobV93ZWJWaWV3LmdldCgpKTsKK30K
Kwordm9pZCBFV0syVGVzdFZpZXc6OmJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lkKiwg
RXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRyKQor
eworICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV93ZWJWaWV3LmdldCgpLCBldmVudE5hbWUsIGNh
bGxiYWNrKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3Lmdl
dCgpLCBldmVudE5hbWUsIGNhbGxiYWNrLCBwdHIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVGVzdFZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmY4ZTZiZDNlODJkZWY4YjlkOTgwY2Rh
YTYzZjRkODU0YmMxMmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuaApAQCAtMCwwICsx
LDY3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNyBVU0EKKyovCisKKyNpZm5kZWYgRVdLMlRlc3RWaWV3X2gKKyNkZWZpbmUgRVdLMlRl
c3RWaWV3X2gKKworI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFdmFzLmg+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIEVX
SzJVbml0VGVzdHMgeworCitjbGFzcyBFV0syVGVzdEVjb3JlRXZhcyB7CitwdWJsaWM6CisgICAg
RVdLMlRlc3RFY29yZUV2YXMoaW50IHVzZVgxMVdpbmRvdyk7CisgICAgRVdLMlRlc3RFY29yZUV2
YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRf
eSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRp
b25zLCBpbnQgdXNlWDExV2luZG93KTsKKworICAgIEV2YXMqIGV2YXMoKTsKKyAgICB2b2lkIHNo
b3coKTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8RWNvcmVfRXZhcz4gbV9lY29yZUV2YXM7Cit9
OworCitjbGFzcyBFV0syVGVzdFZpZXcgeworcHVibGljOgorICAgIGV4cGxpY2l0IEVXSzJUZXN0
VmlldyhFdmFzKik7CisgICAgRVdLMlRlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwpOwor
ICAgIEVXSzJUZXN0VmlldyhFdmFzKiwgY29uc3QgY2hhciogdXJsLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOworCisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXcu
Z2V0KCk7IH0KKyAgICBFdmFzKiBldmFzKCk7CisgICAgdm9pZCBzaG93KCk7CisKKyAgICBib29s
IGluaXQoKTsKKyAgICB2b2lkIGJpbmRFdmVudHModm9pZCAoKmNhbGxiYWNrKSh2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgdm9pZCogcHRyKTsKKwor
cHJpdmF0ZToKKyAgICBFV0syVGVzdFZpZXcoY29uc3QgRVdLMlRlc3RWaWV3Jik7CisgICAgRVdL
MlRlc3RWaWV3IG9wZXJhdG9yPShjb25zdCBFV0syVGVzdFZpZXcmKTsKKworICAgIEV2YXMqIG1f
ZXZhczsKKyAgICBPd25QdHI8RXZhc19PYmplY3Q+IG1fd2ViVmlldzsKKworICAgIGludCBtX3dp
ZHRoLCBtX2hlaWdodDsKKyAgICBzdGQ6OnN0cmluZyBtX3VybDsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNv
dXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVkZDgxZTczMjNjZTgwZDZmMGMzMTFjOTRiODdkNDAzNTE1ZGQyZDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVm
YXVsdF90ZXN0X3BhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxIVE1MPgorPEJPRFk+Cis8SDIg
YWxpZ249ImNlbnRlciI+RUZMIFVuaXQgVGVzdHM8L0gyPgorPEgyIGFsaWduPSJjZW50ZXIiPkRl
ZmF1bHQgVGVzdGluZyBXZWIgUGFnZTwvSDI+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGU5MzM1NGI1ZGU5MzU5NjMxMmZhNDg5MjZjNGZmNGRiYzZkMTcx
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisg
ICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgi
CisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0czsKKworLyoqCisqIEBicmllZiBDaGVja2luZyB3aGV0
aGVyIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdCB1cmkgc3RyaW5nLgorKi8KK3N0YXRpYyB2b2lk
IGV3a1ZpZXdVcmlHZXRDYih2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRJ
bmZvKQoreworICAgIGRvdWJsZSBwcm9ncmVzcyA9ICpzdGF0aWNfY2FzdDxkb3VibGUqPihldmVu
dEluZm8pOworCisgICAgaWYgKHByb2dyZXNzICE9IDEuMCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgZXdrX3ZpZXdfdXJpX2dl
dChvKSk7CisgICAgRU5EX1RFU1QoKTsKK30KKworVEVTVCh0ZXN0X2V3a192aWV3LCBld2tfdmll
d191cmlfZ2V0KQoreworICAgIFJVTl9URVNUKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgZXdr
Vmlld1VyaUdldENiLCAibG9hZCxwcm9ncmVzcyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5MDhkMzAzM2E2Mjg1OTI1NDE2ZDU5ZjM2Yjk0YzhhOTYwZDUxZDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X3J1bm5lci5j
cHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC
b3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9F
V0syVGVzdEJhc2UuaCIKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorCitzdGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgc3RhdGljIGNvbnN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgICAg
IHsidXNlWDExV2luZG93Iiwgbm9fYXJndW1lbnQsICZFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJh
c2U6OnVzZVgxMVdpbmRvdywgdHJ1ZX0sCisgICAgICAgIHswLCAwLCAwLCAwfQorICAgIH07CisK
KyAgICBpbnQgb3B0aW9uOworICAgIHdoaWxlICgob3B0aW9uID0gZ2V0b3B0X2xvbmcoYXJnYywg
YXJndiwgIiIsIG9wdGlvbnMsIDApKSAhPSAtMSkgeyB9Cit9CisKK2ludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKK3sKKyAgICBhdGV4aXQoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNl
OjpzaHV0ZG93bkFsbCk7CisgICAgcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJndik7Cisg
ICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgICAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151034</attachid>
            <date>2012-07-06 01:19:22 -0700</date>
            <delta_ts>2012-07-06 03:54:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120706112122.patch</filename>
            <type>text/plain</type>
            <size>21646</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWZlMjQyNjRlMmVjMTMx
YjNlNTg2NzQxNTM2Y2JjYmQyZWFjYjE2My4uZTJmMzk0ZDY4NTRiZmEwYmE0NjIzM2Y0MjdlYmEx
ZTY2M2I2MTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTA2ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggdGhl
IHNhbWUgdGVzdCBmcmFtZXdvcmsgYXMgd2UgaGF2ZSBmb3IgV2ViS2l0IDEKKyAgICAgICAgcG9y
dGVkIHRvIHVzZSB0aGUgV2ViS2l0IDIgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdHMpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjppbml0KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6
RVdLMlRlc3RCYXNlOjpzdGFydFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRl
c3RCYXNlOjplbmRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6
Y3JlYXRlVGVzdCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6OnJ1blRl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChF
V0syVGVzdEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RDb25maWcuaDogQWRkZWQuCisgICAgICAgIChDb25maWcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3RzKToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0RWNvcmVFdmFzOjpFV0syVGVzdEVjb3JlRXZhcyk6CisgICAgICAgIChFV0sy
VW5pdFRlc3RzOjpFV0syVGVzdEVjb3JlRXZhczo6ZXZhcyk6CisgICAgICAgIChFV0syVW5pdFRl
c3RzOjpFV0syVGVzdEVjb3JlRXZhczo6c2hvdyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpF
V0syVGVzdFZpZXc6OkVXSzJUZXN0Vmlldyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0sy
VGVzdFZpZXc6OmluaXQpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RWaWV3Ojpz
aG93KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0Vmlldzo6ZXZhcyk6CisgICAg
ICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdFZpZXc6OmJpbmRFdmVudHMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3Lmg6IEFk
ZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChFV0syVGVzdEVjb3JlRXZh
cyk6CisgICAgICAgIChFV0syVGVzdFZpZXcpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdL
MlRlc3RWaWV3Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9y
ZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3
a1ZpZXdVcmlHZXRDYik6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAocGFyc2VDdXN0b21B
cmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDctMDUgIEJhbGF6cyBLZWxlbWVu
ICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gV1RSIGNyYXNoZXMgaWYgYSBV
UkwgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDdkMDYxODRjMWJiOWRkZWI2YTc1ZWVlMjNlYzc1YzdiOTdjOGFiZDUuLjVlYTFiNjA2OGNmNjZh
ZDE0OWRjMGY3ZTg2MmMyZWQ4NTA2MGIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xNjYsMyArMTY2LDY3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogCiBJTlNUQUxMKEZJTEVT
ICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04g
bGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5B
VElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01B
Sk9SfSkKKworSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdAorICAg
ICAgICAgICAgICAgICAgICAke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlCispCisKK1NF
VChFV0syVW5pdFRlc3RzX0xJQlJBUklFUworICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9O
QU1FfQorICAgICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJQlJBUllf
TkFNRX0KKyAgICAke0VDT1JFX0xJQlJBUklFU30KKyAgICAke0VDT1JFX0VWQVNfTElCUkFSSUVT
fQorICAgICR7RVZBU19MSUJSQVJJRVN9CispCisKK1NFVChFV0syVW5pdFRlc3RzX0lOQ0xVREVf
RElSRUNUT1JJRVMKKyAgICAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UiCisgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0i
CisgICAgIiR7V1RGX0RJUn0iCisgICAgIiR7V1RGX0RJUn0vd3RmIgorICAgICR7RUNPUkVfSU5D
TFVERV9ESVJTfQorICAgICR7RUNPUkVfRVZBU19JTkNMVURFX0RJUlN9CisgICAgJHtFVkFTX0lO
Q0xVREVfRElSU30KKykKKworU0VUKEVXSzJVbml0VGVzdHNfTElOS19GTEFHUworICAgICR7RUNP
UkVfTERGTEFHU30KKyAgICAke0VDT1JFX0VWQVNfTERGTEFHU30KKyAgICAke0VWQVNfTERGTEFH
U30KKykKKworSUYgKEVOQUJMRV9HTElCX1NVUFBPUlQpCisgICAgTElTVChBUFBFTkQgRVdLMlVu
aXRUZXN0c19JTkNMVURFX0RJUkVDVE9SSUVTICIke1dURl9ESVJ9L3d0Zi9nb2JqZWN0IikKKyAg
ICBMSVNUKEFQUEVORCBFV0syVW5pdFRlc3RzX0xJQlJBUklFUworICAgICAgICAke0dsaWJfTElC
UkFSSUVTfQorICAgICAgICAke0d0aHJlYWRfTElCUkFSSUVTfQorICAgICkKK0VORElGICgpCisK
K1NFVChXRUJLSVQyX0VGTF9URVNUX0RJUiAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMiKQorU0VUKFRFU1RfUkVTT1VSQ0VTX0RJUiAke1dFQktJVDJfRUZMX1RFU1RfRElS
fS9yZXNvdXJjZXMpCisKK0FERF9ERUZJTklUSU9OUygtRFRFU1RfUkVTT1VSQ0VTX0RJUj1cIiR7
VEVTVF9SRVNPVVJDRVNfRElSfVwiKQorCitBRERfTElCUkFSWShld2syVGVzdFV0aWxzCisgICAg
JHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuY3BwCisg
ICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuY3Bw
CispCisKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0
c19MSUJSQVJJRVN9KQorCisjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJl
IHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2UgaXQKKyMgd2lsbCBjbGFzaCB3aXRoIHRlc3Rz
IGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUuCitTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklF
UworICAgIHRlc3RfZXdrMl92aWV3CispCisKK0ZPUkVBQ0godGVzdE5hbWUgJHtFV0syVW5pdFRl
c3RzX0JJTkFSSUVTfSkKKyAgICBBRERfRVhFQ1VUQUJMRSgke3Rlc3ROYW1lfSAke1dFQktJVDJf
RUZMX1RFU1RfRElSfS8ke3Rlc3ROYW1lfS5jcHAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vdGVz
dF9ydW5uZXIuY3BwKQorICAgIEFERF9URVNUKCR7dGVzdE5hbWV9ICR7Q01BS0VfUlVOVElNRV9P
VVRQVVRfRElSRUNUT1JZfS8ke3Rlc3ROYW1lfSkKKyAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMo
JHt0ZXN0TmFtZX0gJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30gZXdrMlRlc3RVdGlscyBndGVz
dCBwdGhyZWFkKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUygke3Rlc3ROYW1lfSBMSU5LX0ZM
QUdTICIke0VXSzJVbml0VGVzdHNfTElOS19GTEFHU30iKQorICAgIFNFVF9UQVJHRVRfUFJPUEVS
VElFUygke3Rlc3ROYW1lfSBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikKK0VOREZPUkVBQ0go
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5p
dFRlc3RVdGlscy9FV0syVGVzdEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
ZjU1MzY4MzMzNzExYTFhYjU2ZjljZTlkZDcxZDU5ODVmNGNmNDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJUZXN0QmFzZS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwg
U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRVdLMlRlc3RCYXNlLmgiCisKKyNpbmNsdWRlICJFV0syVGVzdENv
bmZpZy5oIgorI2luY2x1ZGUgIkVXSzJUZXN0Vmlldy5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+
CisjaW5jbHVkZSA8RWNvcmUuaD4KKworaW50IEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6
dXNlWDExV2luZG93OworCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0cyB7CisKK2Jvb2wgRVdLMlRl
c3RCYXNlOjppbml0KCkKK3sKKyAgICByZXR1cm4gZWNvcmVfZXZhc19pbml0KCk7Cit9CisKK3Zv
aWQgRVdLMlRlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCit7CisgICAgaW50IGNvdW50ID0gMDsKKwor
ICAgIHdoaWxlICgoY291bnQgPSBlY29yZV9ldmFzX3NodXRkb3duKCkpID4gMCkgeyB9Cit9CisK
K3ZvaWQgRVdLMlRlc3RCYXNlOjpzdGFydFRlc3QoKQoreworICAgIGVjb3JlX21haW5fbG9vcF9i
ZWdpbigpOworfQorCit2b2lkIEVXSzJUZXN0QmFzZTo6ZW5kVGVzdCgpCit7CisgICAgZWNvcmVf
bWFpbl9sb29wX3F1aXQoKTsKK30KKworYm9vbCBFV0syVGVzdEJhc2U6OmNyZWF0ZVRlc3QoY29u
c3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCos
IHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3sKKyAg
ICBFRkxfSU5JVF9SRVQoKTsKKworICAgIEVXSzJUZXN0RWNvcmVFdmFzIGV2YXModXNlWDExV2lu
ZG93KTsKKyAgICBpZiAoIWV2YXMuZXZhcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBldmFzLnNob3coKTsKKworICAgIEVXSzJUZXN0VmlldyB2aWV3KGV2YXMuZXZhcygpLCB1cmwp
OworICAgIGlmICghdmlldy5pbml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZp
ZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0YSk7Cisg
ICAgdmlldy5zaG93KCk7CisKKyAgICBTVEFSVF9URVNUKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBFV0syVGVzdEJhc2U6OnJ1blRlc3Qodm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQq
IGV2ZW50X2RhdGEpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRlc3QoQ29uZmlnOjpkZWZhdWx0VGVz
dFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKK30KKworYm9v
bCBFV0syVGVzdEJhc2U6OnJ1blRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2Fs
bGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFt
ZSwgdm9pZCogZXZlbnRfZGF0YSkKK3sKKyAgICByZXR1cm4gY3JlYXRlVGVzdCh1cmwsIGV2ZW50
X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRU
ZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhkNjY5MzJiMjIwOGQ5NWExMjgw
NDA0MWM1YmU2MjhkODA5MDYzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
IDAyMTExLTEzMDcgVVNBCisqLworCisjaWZuZGVmIEVXSzJUZXN0QmFzZV9oCisjZGVmaW5lIEVX
SzJUZXN0QmFzZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKworI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKKyAgICBkbyB7ICAgIFwKKyAgICAg
ICAgQVNTRVJUX0VRKHRydWUsIEVXSzJUZXN0QmFzZTo6cnVuVGVzdChhcmdzKSk7ICAgIFwKKyAg
ICB9IHdoaWxlICgwKQorCisjZGVmaW5lIFNUQVJUX1RFU1QoKSAgICBcCisgICAgZG8geyAgICBc
CisgICAgICAgIEVXSzJUZXN0QmFzZTo6c3RhcnRUZXN0KCk7ICAgXAorICAgIH0gd2hpbGUgKDAp
CisKKyNkZWZpbmUgRU5EX1RFU1QoKSAgICBcCisgICAgZG8geyAgICBcCisgICAgICAgIEVXSzJU
ZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFRkxfSU5J
VF9SRVQoKSAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBpZiAoIUVXSzJUZXN0QmFzZTo6aW5p
dCgpKSAgIFwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgXAorICAgIH0gd2hpbGUgKDAp
CisKKyNkZWZpbmUgRUZMX0lOSVQoKSAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBFV0syVGVz
dEJhc2U6OmluaXQoKTsgICAgXAorICAgIH0gd2hpbGUgKDApCisKK25hbWVzcGFjZSBFV0syVW5p
dFRlc3RzIHsKKworY2xhc3MgRVdLMlRlc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBpbml0KCk7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd25BbGwoKTsKKyAgICBzdGF0aWMgdm9p
ZCBzdGFydFRlc3QoKTsKKyAgICBzdGF0aWMgdm9pZCBlbmRUZXN0KCk7CisKKyAgICBzdGF0aWMg
Ym9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lk
KiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUgPSAibG9hZCxm
aW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEgPSAwKTsKKyAgICBzdGF0aWMgYm9vbCBydW5UZXN0
KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0g
MCk7CisKKyAgICBzdGF0aWMgaW50IHVzZVgxMVdpbmRvdzsKKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNr
KSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZv
aWQqIGV2ZW50X2RhdGEpOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RDb25m
aWcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRp
bHMvRVdLMlRlc3RDb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGM2OWRlNWM2MGI4OTg1MmZiNDc5OTA5
ZWYxOTdiYjFmZTlhZTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdENvbmZpZy5oCkBAIC0wLDAg
KzEsMzAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw
MjExMS0xMzA3IFVTQQorKi8KKworI2lmbmRlZiBFV0syVGVzdENvbmZpZ19oCisjZGVmaW5lIEVX
SzJUZXN0Q29uZmlnX2gKKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdHMgeworbmFtZXNwYWNlIENv
bmZpZyB7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRWaWV3V2lkdGggPSA2MDA7CitzdGF0aWMg
Y29uc3QgaW50IGRlZmF1bHRWaWV3SGVpZ2h0ID0gODAwOworc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IGRlZmF1bHRUZXN0UGFnZSA9ICJmaWxlOi8vIlRFU1RfUkVTT1VSQ0VTX0RJUiIvZGVmYXVs
dF90ZXN0X3BhZ2UuaHRtbCI7Cit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGls
cy9FV0syVGVzdFZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMWQ2MTZlNDIyZTU1MTYwNDQ2Njg1ZDI2
ZTZmNDk1NDQxOTliMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Vmlldy5jcHAKQEAgLTAsMCAr
MSwxMjMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw
MjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVXSzJU
ZXN0Vmlldy5oIgorCisjaW5jbHVkZSAiRVdLMlRlc3RDb25maWcuaCIKKyNpbmNsdWRlIDxFV2Vi
S2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBFV0syVW5p
dFRlc3RzIHsKKworRVdLMlRlc3RFY29yZUV2YXM6OkVXSzJUZXN0RWNvcmVFdmFzKGludCB1c2VY
MTFXaW5kb3cpCit7CisgICAgaWYgKHVzZVgxMVdpbmRvdykKKyAgICAgICAgbV9lY29yZUV2YXMg
PSBhZG9wdFB0cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCBDb25maWc6OmRlZmF1bHRWaWV3V2lk
dGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQsIDApKTsKKyAgICBlbHNlCisgICAgICAgIG1f
ZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KENvbmZpZzo6ZGVmYXVs
dFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkpOworfQorCitFV0syVGVzdEVj
b3JlRXZhczo6RVdLMlRlc3RFY29yZUV2YXMoY29uc3QgY2hhciogZW5naW5lX25hbWUsIGludCB2
aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0X3csIGludCB2aWV3cG9ydF9o
LCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDExV2luZG93KQoreworICAgIGlm
ICh1c2VYMTFXaW5kb3cpCisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZh
c19uZXcoZW5naW5lX25hbWUsIHZpZXdwb3J0X3gsIHZpZXdwb3J0X3ksIHZpZXdwb3J0X3csIHZp
ZXdwb3J0X2gsIGV4dHJhX29wdGlvbnMpKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFz
ID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdwb3J0X3gsIHZpZXdwb3J0X3kp
KTsKK30KKworRXZhcyogRVdLMlRlc3RFY29yZUV2YXM6OmV2YXMoKQoreworICAgIGlmICghbV9l
Y29yZUV2YXMuZ2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGVjb3JlX2V2
YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsKK30KKwordm9pZCBFV0syVGVzdEVjb3JlRXZhczo6
c2hvdygpCit7CisgICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQorICAgICAgICBlY29yZV9ldmFz
X3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOworfQorCitFV0syVGVzdFZpZXc6OkVXSzJUZXN0Vmll
dyhFdmFzKiBldmFzKQorICAgIDogbV9ldmFzKGV2YXMpCisgICAgLCBtX3VybChDb25maWc6OmRl
ZmF1bHRUZXN0UGFnZSkKKyAgICAsIG1fd2lkdGgoQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoKQor
ICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkKK3sKK30KKworRVdLMlRl
c3RWaWV3OjpFV0syVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3QgY2hhciogdXJsKQorICAgIDog
bV9ldmFzKGV2YXMpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3dpZHRoKENvbmZpZzo6ZGVm
YXVsdFZpZXdXaWR0aCkKKyAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQp
Cit7Cit9CisKK0VXSzJUZXN0Vmlldzo6RVdLMlRlc3RWaWV3KEV2YXMqIGV2YXMsIGNvbnN0IGNo
YXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgIDogbV9ldmFzKGV2YXMpCisgICAg
LCBtX3VybCh1cmwpCisgICAgLCBtX3dpZHRoKHdpZHRoKQorICAgICwgbV9oZWlnaHQoaGVpZ2h0
KQoreworfQorCitib29sIEVXSzJUZXN0Vmlldzo6aW5pdCgpCit7CisgICAgaWYgKCFtX2V2YXMg
fHwgbV91cmwuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93ZWJWaWV3
ID0gYWRvcHRQdHIoZXdrX3ZpZXdfYWRkKG1fZXZhcykpOworICAgIGlmICghbV93ZWJWaWV3Lmdl
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBld2tfdmlld191cmlfc2V0KG1fd2Vi
Vmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBFV0syVGVzdFZpZXc6OnNob3coKQoreworICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBldmFzX29iamVjdF9yZXNpemUobV93ZWJWaWV3LmdldCgpLCBt
X3dpZHRoLCBtX2hlaWdodCk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhtX3dlYlZpZXcuZ2V0KCkp
OworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZpZXcuZ2V0KCksIEVJTkFfVFJVRSk7
Cit9CisKK0V2YXMqIEVXSzJUZXN0Vmlldzo6ZXZhcygpCit7CisgICAgaWYgKCFtX3dlYlZpZXcu
Z2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X2V2YXNf
Z2V0KG1fd2ViVmlldy5nZXQoKSk7Cit9CisKK3ZvaWQgRVdLMlRlc3RWaWV3OjpiaW5kRXZlbnRz
KHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFy
KiBldmVudE5hbWUsIHZvaWQqIHB0cikKK3sKKyAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKG1fd2Vi
Vmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7CisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjaywgcHRyKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGJmOGU2YmQzZTgyZGVmOGI5ZDk4MGNkYWE2M2Y0ZDg1NGJjMTJiZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlRlc3RWaWV3LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwg
U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaWZuZGVmIEVXSzJU
ZXN0Vmlld19oCisjZGVmaW5lIEVXSzJUZXN0Vmlld19oCisKKyNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3RzIHsKKworY2xhc3MgRVdLMlRlc3RF
Y29yZUV2YXMgeworcHVibGljOgorICAgIEVXSzJUZXN0RWNvcmVFdmFzKGludCB1c2VYMTFXaW5k
b3cpOworICAgIEVXSzJUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQg
dmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9ydF93LCBpbnQgdmlld3BvcnRf
aCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgxMVdpbmRvdyk7CisKKyAgICBF
dmFzKiBldmFzKCk7CisgICAgdm9pZCBzaG93KCk7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPEVj
b3JlX0V2YXM+IG1fZWNvcmVFdmFzOworfTsKKworY2xhc3MgRVdLMlRlc3RWaWV3IHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBFV0syVGVzdFZpZXcoRXZhcyopOworICAgIEVXSzJUZXN0VmlldyhF
dmFzKiwgY29uc3QgY2hhciogdXJsKTsKKyAgICBFV0syVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNo
YXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAgIEV2YXNfT2JqZWN0KiB3ZWJW
aWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9CisgICAgRXZhcyogZXZhcygpOworICAg
IHZvaWQgc2hvdygpOworCisgICAgYm9vbCBpbml0KCk7CisgICAgdm9pZCBiaW5kRXZlbnRzKHZv
aWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBl
dmVudE5hbWUsIHZvaWQqIHB0cik7CisKK3ByaXZhdGU6CisgICAgRVdLMlRlc3RWaWV3KGNvbnN0
IEVXSzJUZXN0VmlldyYpOworICAgIEVXSzJUZXN0VmlldyBvcGVyYXRvcj0oY29uc3QgRVdLMlRl
c3RWaWV3Jik7CisKKyAgICBFdmFzKiBtX2V2YXM7CisgICAgT3duUHRyPEV2YXNfT2JqZWN0PiBt
X3dlYlZpZXc7CisKKyAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7CisgICAgc3RkOjpzdHJpbmcg
bV91cmw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90
ZXN0X3BhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ4MWU3MzIzY2U4MGQ2ZjBjMzExYzk0Yjg3ZDQw
MzUxNWRkMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwKQEAgLTAsMCArMSw2
IEBACis8SFRNTD4KKzxCT0RZPgorPEgyIGFsaWduPSJjZW50ZXIiPkVGTCBVbml0IFRlc3RzPC9I
Mj4KKzxIMiBhbGlnbj0iY2VudGVyIj5EZWZhdWx0IFRlc3RpbmcgV2ViIFBhZ2U8L0gyPgorPC9C
T0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlOTMzNTRiNWRlOTM1
OTYzMTJmYTQ4OTI2YzRmZjRkYmM2ZDE3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy
MTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0
VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdHM7CisKKy8q
KgorKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiByZXR1cm5zIGNvcnJlY3QgdXJp
IHN0cmluZy4KKyovCitzdGF0aWMgdm9pZCBld2tWaWV3VXJpR2V0Q2Iodm9pZCogZGF0YSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBkb3VibGUgcHJvZ3Jlc3MgPSAq
c3RhdGljX2Nhc3Q8ZG91YmxlKj4oZXZlbnRJbmZvKTsKKworICAgIGlmIChwcm9ncmVzcyAhPSAx
LjApCisgICAgICAgIHJldHVybjsKKworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3d3dy5nb29n
bGUuY29tLyIsIGV3a192aWV3X3VyaV9nZXQobykpOworICAgIEVORF9URVNUKCk7Cit9CisKK1RF
U1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfdXJpX2dldCkKK3sKKyAgICBSVU5fVEVTVCgiaHR0
cDovL3d3dy5nb29nbGUuY29tLyIsIGV3a1ZpZXdVcmlHZXRDYiwgImxvYWQscHJvZ3Jlc3MiKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfcnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfcnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTA4ZDMwMzNhNjI4NTkyNTQxNmQ1OWYzNmI5NGM4
YTk2MGQ1MWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBH
TlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKwor
I2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgiCisjaW5jbHVkZSA8Z2V0b3B0
Lmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworc3RhdGljIHZvaWQgcGFyc2VDdXN0b21B
cmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHN0YXRpYyBjb25zdCBvcHRp
b24gb3B0aW9uc1tdID0geworICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAm
RVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjp1c2VYMTFXaW5kb3csIHRydWV9LAorICAgICAg
ICB7MCwgMCwgMCwgMH0KKyAgICB9OworCisgICAgaW50IG9wdGlvbjsKKyAgICB3aGlsZSAoKG9w
dGlvbiA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICIiLCBvcHRpb25zLCAwKSkgIT0gLTEpIHsg
fQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgYXRleGl0KEVX
SzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwpOworICAgIHBhcnNlQ3VzdG9t
QXJndW1lbnRzKGFyZ2MsIGFyZ3YpOworICAgIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOworICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151049</attachid>
            <date>2012-07-06 03:55:04 -0700</date>
            <delta_ts>2012-07-06 05:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120706135705.patch</filename>
            <type>text/plain</type>
            <size>21614</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGYwNTJiNzU0NjBlYjMx
M2M0Zjk0MzY5NWNmNjkzYTQ2MzU2MDNhNy4uNTEzMTk5M2M5NjhkZjg0NTUxOGE5OGYyZmUxMGY1
N2FlNjYzYjdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTA2ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggdGhl
IHNhbWUgdGVzdCBmcmFtZXdvcmsgYXMgd2UgaGF2ZSBmb3IgV2ViS2l0IDEKKyAgICAgICAgcG9y
dGVkIHRvIHVzZSB0aGUgV2ViS2l0IDIgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdHMpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjppbml0KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6
RVdLMlRlc3RCYXNlOjpzdGFydFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRl
c3RCYXNlOjplbmRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6
Y3JlYXRlVGVzdCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6OnJ1blRl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChF
V0syVGVzdEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RDb25maWcuaDogQWRkZWQuCisgICAgICAgIChDb25maWcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3RzKToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0RWNvcmVFdmFzOjpFV0syVGVzdEVjb3JlRXZhcyk6CisgICAgICAgIChFV0sy
VW5pdFRlc3RzOjpFV0syVGVzdEVjb3JlRXZhczo6ZXZhcyk6CisgICAgICAgIChFV0syVW5pdFRl
c3RzOjpFV0syVGVzdEVjb3JlRXZhczo6c2hvdyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpF
V0syVGVzdFZpZXc6OkVXSzJUZXN0Vmlldyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0sy
VGVzdFZpZXc6OmluaXQpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RWaWV3Ojpz
aG93KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0Vmlldzo6ZXZhcyk6CisgICAg
ICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdFZpZXc6OmJpbmRFdmVudHMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3Lmg6IEFk
ZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChFV0syVGVzdEVjb3JlRXZh
cyk6CisgICAgICAgIChFV0syVGVzdFZpZXcpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdL
MlRlc3RWaWV3Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9y
ZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3
a1ZpZXdVcmlHZXRDYik6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAocGFyc2VDdXN0b21B
cmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDctMDUgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtFRkxdIEV3
a19WaWV3IG5lZWRzIHRvIHJlcG9ydCBsb2FkIHN0YXR1cyBjaGFuZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDdkMDYxODRjMWJiOWRkZWI2YTc1ZWVlMjNlYzc1YzdiOTdjOGFiZDUu
LjdiMTdjNTVkOTljZjJkNzVmYTJiYjc4Mzg5ZGFhM2M1MWMwZmFmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNjYsMyArMTY2LDY1IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwog
CiBJTlNUQUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIu
cGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9I
RUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfSkKKworSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlf
RElSfS9ndGVzdC9pbmNsdWRlKQorCitTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKKyAgICAk
e0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAke1dlYkNvcmVfTElCUkFSWV9OQU1F
fQorICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgJHtFQ09SRV9MSUJSQVJJRVN9Cisg
ICAgJHtFQ09SRV9FVkFTX0xJQlJBUklFU30KKyAgICAke0VWQVNfTElCUkFSSUVTfQorKQorCitT
RVQoRVdLMlVuaXRUZXN0c19JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7Q01BS0VfU09VUkNF
X0RJUn0vU291cmNlIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IgorICAgICIke1dURl9ESVJ9IgorICAgICIke1dURl9E
SVJ9L3d0ZiIKKyAgICAke0VDT1JFX0lOQ0xVREVfRElSU30KKyAgICAke0VDT1JFX0VWQVNfSU5D
TFVERV9ESVJTfQorICAgICR7RVZBU19JTkNMVURFX0RJUlN9CispCisKK1NFVChFV0syVW5pdFRl
c3RzX0xJTktfRkxBR1MKKyAgICAke0VDT1JFX0xERkxBR1N9CisgICAgJHtFQ09SRV9FVkFTX0xE
RkxBR1N9CisgICAgJHtFVkFTX0xERkxBR1N9CispCisKK0lGIChFTkFCTEVfR0xJQl9TVVBQT1JU
KQorICAgIExJU1QoQVBQRU5EIEVXSzJVbml0VGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtX
VEZfRElSfS93dGYvZ29iamVjdCIpCisgICAgTElTVChBUFBFTkQgRVdLMlVuaXRUZXN0c19MSUJS
QVJJRVMKKyAgICAgICAgJHtHbGliX0xJQlJBUklFU30KKyAgICAgICAgJHtHdGhyZWFkX0xJQlJB
UklFU30KKyAgICApCitFTkRJRiAoKQorCitTRVQoV0VCS0lUMl9FRkxfVEVTVF9ESVIgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzIikKK1NFVChURVNUX1JFU09VUkNFU19E
SVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vcmVzb3VyY2VzKQorCitBRERfREVGSU5JVElPTlMo
LURURVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VSQ0VTX0RJUn1cIikKKworQUREX0xJ
QlJBUlkoZXdrMlRlc3RVdGlscworICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RCYXNlLmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRU
ZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNwcAorKQorCitUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdr
MlRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSkKKworIyBUaGUgImV3ayIgb24g
dGhlIHRlc3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0
CisjIHdpbGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgor
U0VUKEVXSzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJfdmlldworKQorCitGT1JF
QUNIKHRlc3ROYW1lICR7RVdLMlVuaXRUZXN0c19CSU5BUklFU30pCisgICAgQUREX0VYRUNVVEFC
TEUoJHt0ZXN0TmFtZX0gJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vJHt0ZXN0TmFtZX0uY3BwICR7
V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Rlc3RfcnVubmVyLmNwcCkKKyAgICBBRERfVEVTVCgke3Rl
c3ROYW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vJHt0ZXN0TmFtZX0pCisg
ICAgVEFSR0VUX0xJTktfTElCUkFSSUVTKCR7dGVzdE5hbWV9ICR7RVdLMlVuaXRUZXN0c19MSUJS
QVJJRVN9IGV3azJUZXN0VXRpbHMgZ3Rlc3QgcHRocmVhZCkKKyAgICBBRERfVEFSR0VUX1BST1BF
UlRJRVMoJHt0ZXN0TmFtZX0gTElOS19GTEFHUyAiJHtFV0syVW5pdFRlc3RzX0xJTktfRkxBR1N9
IikKKyAgICBTRVRfVEFSR0VUX1BST1BFUlRJRVMoJHt0ZXN0TmFtZX0gUFJPUEVSVElFUyBGT0xE
RVIgIldlYktpdCIpCitFTkRGT1JFQUNIKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRl
c3RCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGY1NTM2ODMzMzcxMWExYWI1NmY5Y2U5ZGQ3MWQ1OTg1
ZjRjZjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuY3BwCkBAIC0wLDAgKzEsODUgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAg
ICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVXSzJUZXN0QmFzZS5o
IgorCisjaW5jbHVkZSAiRVdLMlRlc3RDb25maWcuaCIKKyNpbmNsdWRlICJFV0syVGVzdFZpZXcu
aCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisKK2ludCBFV0sy
VW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6OnVzZVgxMVdpbmRvdzsKKworbmFtZXNwYWNlIEVXSzJV
bml0VGVzdHMgeworCitib29sIEVXSzJUZXN0QmFzZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIGVj
b3JlX2V2YXNfaW5pdCgpOworfQorCit2b2lkIEVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwoKQor
eworICAgIGludCBjb3VudCA9IDA7CisKKyAgICB3aGlsZSAoKGNvdW50ID0gZWNvcmVfZXZhc19z
aHV0ZG93bigpKSA+IDApIHsgfQorfQorCit2b2lkIEVXSzJUZXN0QmFzZTo6c3RhcnRUZXN0KCkK
K3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKwordm9pZCBFV0syVGVzdEJhc2U6
OmVuZFRlc3QoKQoreworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK2Jvb2wgRVdL
MlRlc3RCYXNlOjpjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxi
YWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUs
IHZvaWQqIGV2ZW50X2RhdGEpCit7CisgICAgRUZMX0lOSVRfUkVUKCk7CisKKyAgICBFV0syVGVz
dEVjb3JlRXZhcyBldmFzKHVzZVgxMVdpbmRvdyk7CisgICAgaWYgKCFldmFzLmV2YXMoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXZhcy5zaG93KCk7CisKKyAgICBFV0syVGVzdFZp
ZXcgdmlldyhldmFzLmV2YXMoKSwgdXJsKTsKKyAgICBpZiAoIXZpZXcuaW5pdCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICB2aWV3LmJpbmRFdmVudHMoZXZlbnRfY2FsbGJhY2ssIGV2
ZW50X25hbWUsIGV2ZW50X2RhdGEpOworICAgIHZpZXcuc2hvdygpOworCisgICAgU1RBUlRfVEVT
VCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRVdLMlRlc3RCYXNlOjpydW5UZXN0
KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25z
dCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKQoreworICAgIHJldHVybiBjcmVh
dGVUZXN0KENvbmZpZzo6ZGVmYXVsdFRlc3RQYWdlLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFt
ZSwgZXZlbnRfZGF0YSk7Cit9CisKK2Jvb2wgRVdLMlRlc3RCYXNlOjpydW5UZXN0KGNvbnN0IGNo
YXIqIHVybCwgdm9pZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lk
KiksIGNvbnN0IGNoYXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit7CisgICAgcmV0
dXJuIGNyZWF0ZVRlc3QodXJsLCBldmVudF9jYWxsYmFjaywgZXZlbnRfbmFtZSwgZXZlbnRfZGF0
YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZDY2OTMyYjIyMDhkOTVhMTI4MDQwNDFjNWJlNjI4ZDgwOTA2M2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJUZXN0QmFzZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2lmbmRlZiBF
V0syVGVzdEJhc2VfaAorI2RlZmluZSBFV0syVGVzdEJhc2VfaAorCisjaW5jbHVkZSA8RXZhcy5o
PgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNkZWZpbmUgUlVOX1RFU1QoYXJncy4uLikg
ICBcCisgICAgZG8geyAgICBcCisgICAgICAgIEFTU0VSVF9FUSh0cnVlLCBFV0syVGVzdEJhc2U6
OnJ1blRlc3QoYXJncykpOyAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBTVEFSVF9U
RVNUKCkgICAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBFV0syVGVzdEJhc2U6OnN0YXJ0VGVz
dCgpOyAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVORF9URVNUKCkgICAgXAorICAg
IGRvIHsgICAgXAorICAgICAgICBFV0syVGVzdEJhc2U6OmVuZFRlc3QoKTsgXAorICAgIH0gd2hp
bGUgKDApCisKKyNkZWZpbmUgRUZMX0lOSVRfUkVUKCkgIFwKKyAgICBkbyB7ICAgIFwKKyAgICAg
ICAgaWYgKCFFV0syVGVzdEJhc2U6OmluaXQoKSkgICBcCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7ICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVGTF9JTklUKCkgIFwKKyAgICBk
byB7ICAgIFwKKyAgICAgICAgRVdLMlRlc3RCYXNlOjppbml0KCk7ICAgIFwKKyAgICB9IHdoaWxl
ICgwKQorCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0cyB7CisKK2NsYXNzIEVXSzJUZXN0QmFzZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaW5pdCgpOworICAgIHN0YXRpYyB2b2lkIHNodXRk
b3duQWxsKCk7CisgICAgc3RhdGljIHZvaWQgc3RhcnRUZXN0KCk7CisgICAgc3RhdGljIHZvaWQg
ZW5kVGVzdCgpOworCisgICAgc3RhdGljIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB1cmwsIHZv
aWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBjb25zdCBj
aGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2b2lkKiBldmVudF9kYXRhID0gMCk7
CisgICAgc3RhdGljIGJvb2wgcnVuVGVzdCh2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBF
dmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSA9ICJsb2FkLGZpbmlz
aGVkIiwgdm9pZCogZXZlbnRfZGF0YSA9IDApOworCisgICAgc3RhdGljIGludCB1c2VYMTFXaW5k
b3c7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgY3JlYXRlVGVzdChjb25zdCBjaGFyKiB1
cmwsIHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCopLCBj
b25zdCBjaGFyKiBldmVudF9uYW1lLCB2b2lkKiBldmVudF9kYXRhKTsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJUZXN0Q29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Q29uZmlnLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjhjNjlkZTVjNjBiODk4NTJmYjQ3OTkwOWVmMTk3YmIxZmU5YWU3ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMv
RVdLMlRlc3RDb25maWcuaApAQCAtMCwwICsxLDMwIEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNl
LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpZm5kZWYgRVdL
MlRlc3RDb25maWdfaAorI2RlZmluZSBFV0syVGVzdENvbmZpZ19oCisKK25hbWVzcGFjZSBFV0sy
VW5pdFRlc3RzIHsKK25hbWVzcGFjZSBDb25maWcgeworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0
Vmlld1dpZHRoID0gNjAwOworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Vmlld0hlaWdodCA9IDgw
MDsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBkZWZhdWx0VGVzdFBhZ2UgPSAiZmlsZTovLyJU
RVNUX1JFU09VUkNFU19ESVIiL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwiOworfQorfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YjFkNjE2ZTQyMmU1NTE2MDQ0NjY4NWQyNmU2ZjQ5NTQ0MTk5YjBkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9F
V0syVGVzdFZpZXcuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNl
LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJFV0syVGVzdFZpZXcuaCIKKworI2luY2x1ZGUgIkVXSzJUZXN0
Q29uZmlnLmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0cyB7CisKK0VXSzJUZXN0RWNvcmVFdmFzOjpF
V0syVGVzdEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KQoreworICAgIGlmICh1c2VYMTFXaW5k
b3cpCisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoMCwgMCwg
MCwgQ29uZmlnOjpkZWZhdWx0Vmlld1dpZHRoLCBDb25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0LCAw
KSk7CisgICAgZWxzZQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNf
YnVmZmVyX25ldyhDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdI
ZWlnaHQpKTsKK30KKworRVdLMlRlc3RFY29yZUV2YXM6OkVXSzJUZXN0RWNvcmVFdmFzKGNvbnN0
IGNoYXIqIGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2
aWV3cG9ydF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50
IHVzZVgxMVdpbmRvdykKK3sKKyAgICBpZiAodXNlWDExV2luZG93KQorICAgICAgICBtX2Vjb3Jl
RXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfbmV3KGVuZ2luZV9uYW1lLCB2aWV3cG9ydF94LCB2
aWV3cG9ydF95LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oLCBleHRyYV9vcHRpb25zKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGFkb3B0UHRyKGVjb3JlX2V2YXNfYnVmZmVyX25l
dyh2aWV3cG9ydF94LCB2aWV3cG9ydF95KSk7Cit9CisKK0V2YXMqIEVXSzJUZXN0RWNvcmVFdmFz
OjpldmFzKCkKK3sKKyAgICBpZiAoIW1fZWNvcmVFdmFzLmdldCgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBlY29yZV9ldmFzX2dldChtX2Vjb3JlRXZhcy5nZXQoKSk7Cit9CisK
K3ZvaWQgRVdLMlRlc3RFY29yZUV2YXM6OnNob3coKQoreworICAgIGlmIChtX2Vjb3JlRXZhcy5n
ZXQoKSkKKyAgICAgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFzLmdldCgpKTsKK30KKwor
RVdLMlRlc3RWaWV3OjpFV0syVGVzdFZpZXcoRXZhcyogZXZhcykKKyAgICA6IG1fZXZhcyhldmFz
KQorICAgICwgbV91cmwoQ29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UpCisgICAgLCBtX3dpZHRoKENv
bmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKKyAgICAsIG1faGVpZ2h0KENvbmZpZzo6ZGVmYXVsdFZp
ZXdIZWlnaHQpCit7Cit9CisKK0VXSzJUZXN0Vmlldzo6RVdLMlRlc3RWaWV3KEV2YXMqIGV2YXMs
IGNvbnN0IGNoYXIqIHVybCkKKyAgICA6IG1fZXZhcyhldmFzKQorICAgICwgbV91cmwodXJsKQor
ICAgICwgbV93aWR0aChDb25maWc6OmRlZmF1bHRWaWV3V2lkdGgpCisgICAgLCBtX2hlaWdodChD
b25maWc6OmRlZmF1bHRWaWV3SGVpZ2h0KQoreworfQorCitFV0syVGVzdFZpZXc6OkVXSzJUZXN0
VmlldyhFdmFzKiBldmFzLCBjb25zdCBjaGFyKiB1cmwsIGludCB3aWR0aCwgaW50IGhlaWdodCkK
KyAgICA6IG1fZXZhcyhldmFzKQorICAgICwgbV91cmwodXJsKQorICAgICwgbV93aWR0aCh3aWR0
aCkKKyAgICAsIG1faGVpZ2h0KGhlaWdodCkKK3sKK30KKworYm9vbCBFV0syVGVzdFZpZXc6Omlu
aXQoKQoreworICAgIGlmICghbV9ldmFzIHx8IG1fdXJsLmVtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIG1fd2ViVmlldyA9IGFkb3B0UHRyKGV3a192aWV3X2FkZChtX2V2YXMp
KTsKKyAgICBpZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZXdrX3ZpZXdfdXJpX3NldChtX3dlYlZpZXcuZ2V0KCksIG1fdXJsLmNfc3RyKCkpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRVdLMlRlc3RWaWV3OjpzaG93KCkKK3sKKyAgICBp
ZiAoIW1fd2ViVmlldy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZhc19vYmplY3Rf
cmVzaXplKG1fd2ViVmlldy5nZXQoKSwgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2Jq
ZWN0X3Nob3cobV93ZWJWaWV3LmdldCgpKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93
ZWJWaWV3LmdldCgpLCBFSU5BX1RSVUUpOworfQorCitFdmFzKiBFV0syVGVzdFZpZXc6OmV2YXMo
KQoreworICAgIGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBldmFzX29iamVjdF9ldmFzX2dldChtX3dlYlZpZXcuZ2V0KCkpOworfQorCit2b2lk
IEVXSzJUZXN0Vmlldzo6YmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09i
amVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpCit7CisgICAg
aWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcuZ2V0KCksIGV2ZW50TmFtZSwgY2FsbGJhY2sp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcuZ2V0KCksIGV2
ZW50TmFtZSwgY2FsbGJhY2ssIHB0cik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJUZXN0Vmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZjhlNmJkM2U4MmRlZjhiOWQ5ODBjZGFhNjNmNGQ4
NTRiYzEyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0Vmlldy5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAg
ICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3
IFVTQQorKi8KKworI2lmbmRlZiBFV0syVGVzdFZpZXdfaAorI2RlZmluZSBFV0syVGVzdFZpZXdf
aAorCisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRl
IDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgRVdLMlVuaXRU
ZXN0cyB7CisKK2NsYXNzIEVXSzJUZXN0RWNvcmVFdmFzIHsKK3B1YmxpYzoKKyAgICBFV0syVGVz
dEVjb3JlRXZhcyhpbnQgdXNlWDExV2luZG93KTsKKyAgICBFV0syVGVzdEVjb3JlRXZhcyhjb25z
dCBjaGFyKiBlbmdpbmVfbmFtZSwgaW50IHZpZXdwb3J0X3gsIGludCB2aWV3cG9ydF95LCBpbnQg
dmlld3BvcnRfdywgaW50IHZpZXdwb3J0X2gsIGNvbnN0IGNoYXIqIGV4dHJhX29wdGlvbnMsIGlu
dCB1c2VYMTFXaW5kb3cpOworCisgICAgRXZhcyogZXZhcygpOworICAgIHZvaWQgc2hvdygpOwor
Citwcml2YXRlOgorICAgIE93blB0cjxFY29yZV9FdmFzPiBtX2Vjb3JlRXZhczsKK307CisKK2Ns
YXNzIEVXSzJUZXN0VmlldyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRVdLMlRlc3RWaWV3KEV2
YXMqKTsKKyAgICBFV0syVGVzdFZpZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCk7CisgICAgRVdL
MlRlc3RWaWV3KEV2YXMqLCBjb25zdCBjaGFyKiB1cmwsIGludCB3aWR0aCwgaW50IGhlaWdodCk7
CisKKyAgICBFdmFzX09iamVjdCogd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldy5nZXQoKTsg
fQorICAgIEV2YXMqIGV2YXMoKTsKKyAgICB2b2lkIHNob3coKTsKKworICAgIGJvb2wgaW5pdCgp
OworICAgIHZvaWQgYmluZEV2ZW50cyh2b2lkICgqY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVj
dCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnROYW1lLCB2b2lkKiBwdHIpOworCitwcml2YXRl
OgorICAgIEVXSzJUZXN0Vmlldyhjb25zdCBFV0syVGVzdFZpZXcmKTsKKyAgICBFV0syVGVzdFZp
ZXcgb3BlcmF0b3I9KGNvbnN0IEVXSzJUZXN0VmlldyYpOworCisgICAgRXZhcyogbV9ldmFzOwor
ICAgIE93blB0cjxFdmFzX09iamVjdD4gbV93ZWJWaWV3OworCisgICAgaW50IG1fd2lkdGgsIG1f
aGVpZ2h0OworICAgIHN0ZDo6c3RyaW5nIG1fdXJsOworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9k
ZWZhdWx0X3Rlc3RfcGFnZS5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRkODFl
NzMyM2NlODBkNmYwYzMxMWM5NGI4N2Q0MDM1MTVkZDJkNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rl
c3RfcGFnZS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPEhUTUw+Cis8Qk9EWT4KKzxIMiBhbGlnbj0i
Y2VudGVyIj5FRkwgVW5pdCBUZXN0czwvSDI+Cis8SDIgYWxpZ249ImNlbnRlciI+RGVmYXVsdCBU
ZXN0aW5nIFdlYiBQYWdlPC9IMj4KKzwvQk9EWT4KKzwvSFRNTD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZTkzMzU0YjVkZTkzNTk2MzEyZmE0ODkyNmM0ZmY0ZGJjNmQxNzEyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuaCIKKyNpbmNs
dWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBFV0syVW5pdFRlc3RzOworCisvKioKKyogQGJyaWVmIENoZWNraW5nIHdoZXRoZXIgZnVu
Y3Rpb24gcmV0dXJucyBjb3JyZWN0IHVyaSBzdHJpbmcuCisqLworc3RhdGljIHZvaWQgZXdrVmll
d1VyaUdldENiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudEluZm8pCit7
CisgICAgZG91YmxlIHByb2dyZXNzID0gKnN0YXRpY19jYXN0PGRvdWJsZSo+KGV2ZW50SW5mbyk7
CisKKyAgICBpZiAocHJvZ3Jlc3MgIT0gMS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBFWFBF
Q1RfU1RSRVEoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCBld2tfdmlld191cmlfZ2V0KG8pKTsK
KyAgICBFTkRfVEVTVCgpOworfQorCitURVNUKHRlc3RfZXdrX3ZpZXcsIGV3a192aWV3X3VyaV9n
ZXQpCit7CisgICAgUlVOX1RFU1QoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCBld2tWaWV3VXJp
R2V0Q2IsICJsb2FkLHByb2dyZXNzIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwOGQz
MDMzYTYyODU5MjU0MTZkNTlmMzZiOTRjOGE5NjBkNTFkNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApAQCAt
MCwwICsxLDQwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJUZXN0
QmFzZS5oIgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisK
K3N0YXRpYyB2b2lkIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikK
K3sKKyAgICBzdGF0aWMgY29uc3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKKyAgICAgICAgeyJ1c2VY
MTFXaW5kb3ciLCBub19hcmd1bWVudCwgJkVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6dXNl
WDExV2luZG93LCB0cnVlfSwKKyAgICAgICAgezAsIDAsIDAsIDB9CisgICAgfTsKKworICAgIGlu
dCBvcHRpb247CisgICAgd2hpbGUgKChvcHRpb24gPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAi
Iiwgb3B0aW9ucywgMCkpICE9IC0xKSB7IH0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQoreworICAgIGF0ZXhpdChFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6OnNodXRk
b3duQWxsKTsKKyAgICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2KTsKKyAgICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151065</attachid>
            <date>2012-07-06 05:38:26 -0700</date>
            <delta_ts>2012-07-09 11:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120706154027.patch</filename>
            <type>text/plain</type>
            <size>21265</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGYwNTJiNzU0NjBlYjMx
M2M0Zjk0MzY5NWNmNjkzYTQ2MzU2MDNhNy4uNTEzMTk5M2M5NjhkZjg0NTUxOGE5OGYyZmUxMGY1
N2FlNjYzYjdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTA2ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcHJldHR5IG11Y2ggdGhl
IHNhbWUgdGVzdCBmcmFtZXdvcmsgYXMgd2UgaGF2ZSBmb3IgV2ViS2l0IDEKKyAgICAgICAgcG9y
dGVkIHRvIHVzZSB0aGUgV2ViS2l0IDIgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0sy
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdHMpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjppbml0KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6
RVdLMlRlc3RCYXNlOjpzdGFydFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRl
c3RCYXNlOjplbmRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6
Y3JlYXRlVGVzdCk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdEJhc2U6OnJ1blRl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChF
V0syVGVzdEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RDb25maWcuaDogQWRkZWQuCisgICAgICAgIChDb25maWcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmNw
cDogQWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3RzKToKKyAgICAgICAgKEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0RWNvcmVFdmFzOjpFV0syVGVzdEVjb3JlRXZhcyk6CisgICAgICAgIChFV0sy
VW5pdFRlc3RzOjpFV0syVGVzdEVjb3JlRXZhczo6ZXZhcyk6CisgICAgICAgIChFV0syVW5pdFRl
c3RzOjpFV0syVGVzdEVjb3JlRXZhczo6c2hvdyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpF
V0syVGVzdFZpZXc6OkVXSzJUZXN0Vmlldyk6CisgICAgICAgIChFV0syVW5pdFRlc3RzOjpFV0sy
VGVzdFZpZXc6OmluaXQpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RWaWV3Ojpz
aG93KToKKyAgICAgICAgKEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0Vmlldzo6ZXZhcyk6CisgICAg
ICAgIChFV0syVW5pdFRlc3RzOjpFV0syVGVzdFZpZXc6OmJpbmRFdmVudHMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3Lmg6IEFk
ZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0cyk6CisgICAgICAgIChFV0syVGVzdEVjb3JlRXZh
cyk6CisgICAgICAgIChFV0syVGVzdFZpZXcpOgorICAgICAgICAoRVdLMlVuaXRUZXN0czo6RVdL
MlRlc3RWaWV3Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9y
ZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGV3
a1ZpZXdVcmlHZXRDYik6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X3J1bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAocGFyc2VDdXN0b21B
cmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMTItMDctMDUgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtFRkxdIEV3
a19WaWV3IG5lZWRzIHRvIHJlcG9ydCBsb2FkIHN0YXR1cyBjaGFuZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDdkMDYxODRjMWJiOWRkZWI2YTc1ZWVlMjNlYzc1YzdiOTdjOGFiZDUu
LjY3MzUzYzNhNjg5NDEwMzUwNDdjNGVmY2RkOGZiOGQ2ZWY2MmZhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xNjYsMyArMTY2LDUzIEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwog
CiBJTlNUQUxMKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIu
cGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9I
RUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfSkKKworSU5DTFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlf
RElSfS9ndGVzdC9pbmNsdWRlKQorCitTRVQoRVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKKyAgICAk
e0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFNRX0KKyAgICAke1dlYkNvcmVfTElCUkFSWV9OQU1F
fQorICAgICR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9CisgICAgJHtFQ09SRV9MSUJSQVJJRVN9Cisg
ICAgJHtFQ09SRV9FVkFTX0xJQlJBUklFU30KKyAgICAke0VWQVNfTElCUkFSSUVTfQorKQorCitT
RVQoRVdLMlVuaXRUZXN0c19MSU5LX0ZMQUdTCisgICAgJHtFQ09SRV9MREZMQUdTfQorICAgICR7
RUNPUkVfRVZBU19MREZMQUdTfQorICAgICR7RVZBU19MREZMQUdTfQorKQorCitJRiAoRU5BQkxF
X0dMSUJfU1VQUE9SVCkKKyAgICBMSVNUKEFQUEVORCBFV0syVW5pdFRlc3RzX0xJQlJBUklFUwor
ICAgICAgICAke0dsaWJfTElCUkFSSUVTfQorICAgICAgICAke0d0aHJlYWRfTElCUkFSSUVTfQor
ICAgICkKK0VORElGICgpCisKK1NFVChXRUJLSVQyX0VGTF9URVNUX0RJUiAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMiKQorU0VUKFRFU1RfUkVTT1VSQ0VTX0RJUiAke1dF
QktJVDJfRUZMX1RFU1RfRElSfS9yZXNvdXJjZXMpCisKK0FERF9ERUZJTklUSU9OUygtRFRFU1Rf
UkVTT1VSQ0VTX0RJUj1cIiR7VEVTVF9SRVNPVVJDRVNfRElSfVwiKQorCitBRERfTElCUkFSWShl
d2syVGVzdFV0aWxzCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9F
V0syVGVzdEJhc2UuY3BwCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGls
cy9FV0syVGVzdFZpZXcuY3BwCispCisKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVGVzdFV0
aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQorCisjIFRoZSAiZXdrIiBvbiB0aGUgdGVz
dCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2UgaXQKKyMgd2ls
bCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUuCitTRVQoRVdL
MlVuaXRUZXN0c19CSU5BUklFUworICAgIHRlc3RfZXdrMl92aWV3CispCisKK0ZPUkVBQ0godGVz
dE5hbWUgJHtFV0syVW5pdFRlc3RzX0JJTkFSSUVTfSkKKyAgICBBRERfRVhFQ1VUQUJMRSgke3Rl
c3ROYW1lfSAke1dFQktJVDJfRUZMX1RFU1RfRElSfS8ke3Rlc3ROYW1lfS5jcHAgJHtXRUJLSVQy
X0VGTF9URVNUX0RJUn0vdGVzdF9ydW5uZXIuY3BwKQorICAgIEFERF9URVNUKCR7dGVzdE5hbWV9
ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS8ke3Rlc3ROYW1lfSkKKyAgICBUQVJH
RVRfTElOS19MSUJSQVJJRVMoJHt0ZXN0TmFtZX0gJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30g
ZXdrMlRlc3RVdGlscyBndGVzdCBwdGhyZWFkKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUygk
e3Rlc3ROYW1lfSBMSU5LX0ZMQUdTICIke0VXSzJVbml0VGVzdHNfTElOS19GTEFHU30iKQorICAg
IFNFVF9UQVJHRVRfUFJPUEVSVElFUygke3Rlc3ROYW1lfSBQUk9QRVJUSUVTIEZPTERFUiAiV2Vi
S2l0IikKK0VOREZPUkVBQ0goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQwZjU1MzY4MzMzNzExYTFhYjU2ZjljZTlkZDcxZDU5ODVmNGNmNDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLMlRlc3RCYXNlLmgiCisKKyNp
bmNsdWRlICJFV0syVGVzdENvbmZpZy5oIgorI2luY2x1ZGUgIkVXSzJUZXN0Vmlldy5oIgorI2lu
Y2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKworaW50IEVXSzJVbml0VGVz
dHM6OkVXSzJUZXN0QmFzZTo6dXNlWDExV2luZG93OworCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0
cyB7CisKK2Jvb2wgRVdLMlRlc3RCYXNlOjppbml0KCkKK3sKKyAgICByZXR1cm4gZWNvcmVfZXZh
c19pbml0KCk7Cit9CisKK3ZvaWQgRVdLMlRlc3RCYXNlOjpzaHV0ZG93bkFsbCgpCit7CisgICAg
aW50IGNvdW50ID0gMDsKKworICAgIHdoaWxlICgoY291bnQgPSBlY29yZV9ldmFzX3NodXRkb3du
KCkpID4gMCkgeyB9Cit9CisKK3ZvaWQgRVdLMlRlc3RCYXNlOjpzdGFydFRlc3QoKQoreworICAg
IGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworfQorCit2b2lkIEVXSzJUZXN0QmFzZTo6ZW5kVGVz
dCgpCit7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKworYm9vbCBFV0syVGVzdEJh
c2U6OmNyZWF0ZVRlc3QoY29uc3QgY2hhciogdXJsLCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZv
aWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29uc3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCog
ZXZlbnRfZGF0YSkKK3sKKyAgICBFRkxfSU5JVF9SRVQoKTsKKworICAgIEVXSzJUZXN0RWNvcmVF
dmFzIGV2YXModXNlWDExV2luZG93KTsKKyAgICBpZiAoIWV2YXMuZXZhcygpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBldmFzLnNob3coKTsKKworICAgIEVXSzJUZXN0VmlldyB2aWV3
KGV2YXMuZXZhcygpLCB1cmwpOworICAgIGlmICghdmlldy5pbml0KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHZpZXcuYmluZEV2ZW50cyhldmVudF9jYWxsYmFjaywgZXZlbnRfbmFt
ZSwgZXZlbnRfZGF0YSk7CisgICAgdmlldy5zaG93KCk7CisKKyAgICBTVEFSVF9URVNUKCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFV0syVGVzdEJhc2U6OnJ1blRlc3Qodm9pZCAo
KmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIq
IGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpCit7CisgICAgcmV0dXJuIGNyZWF0ZVRlc3Qo
Q29uZmlnOjpkZWZhdWx0VGVzdFBhZ2UsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVu
dF9kYXRhKTsKK30KKworYm9vbCBFV0syVGVzdEJhc2U6OnJ1blRlc3QoY29uc3QgY2hhciogdXJs
LCB2b2lkICgqZXZlbnRfY2FsbGJhY2spKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKSwgY29u
c3QgY2hhciogZXZlbnRfbmFtZSwgdm9pZCogZXZlbnRfZGF0YSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlVGVzdCh1cmwsIGV2ZW50X2NhbGxiYWNrLCBldmVudF9uYW1lLCBldmVudF9kYXRhKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhk
NjY5MzJiMjIwOGQ5NWExMjgwNDA0MWM1YmU2MjhkODA5MDYzZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdL
MlRlc3RCYXNlLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaWZuZGVmIEVXSzJUZXN0
QmFzZV9oCisjZGVmaW5lIEVXSzJUZXN0QmFzZV9oCisKKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2RlZmluZSBSVU5fVEVTVChhcmdzLi4uKSAgIFwKKyAg
ICBkbyB7ICAgIFwKKyAgICAgICAgQVNTRVJUX0VRKHRydWUsIEVXSzJUZXN0QmFzZTo6cnVuVGVz
dChhcmdzKSk7ICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIFNUQVJUX1RFU1QoKSAg
ICBcCisgICAgZG8geyAgICBcCisgICAgICAgIEVXSzJUZXN0QmFzZTo6c3RhcnRUZXN0KCk7ICAg
XAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRU5EX1RFU1QoKSAgICBcCisgICAgZG8geyAg
ICBcCisgICAgICAgIEVXSzJUZXN0QmFzZTo6ZW5kVGVzdCgpOyBcCisgICAgfSB3aGlsZSAoMCkK
KworI2RlZmluZSBFRkxfSU5JVF9SRVQoKSAgXAorICAgIGRvIHsgICAgXAorICAgICAgICBpZiAo
IUVXSzJUZXN0QmFzZTo6aW5pdCgpKSAgIFwKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAg
XAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgRUZMX0lOSVQoKSAgXAorICAgIGRvIHsgICAg
XAorICAgICAgICBFV0syVGVzdEJhc2U6OmluaXQoKTsgICAgXAorICAgIH0gd2hpbGUgKDApCisK
K25hbWVzcGFjZSBFV0syVW5pdFRlc3RzIHsKKworY2xhc3MgRVdLMlRlc3RCYXNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBpbml0KCk7CisgICAgc3RhdGljIHZvaWQgc2h1dGRvd25BbGwo
KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydFRlc3QoKTsKKyAgICBzdGF0aWMgdm9pZCBlbmRUZXN0
KCk7CisKKyAgICBzdGF0aWMgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9pZCAoKmV2
ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNoYXIqIGV2
ZW50X25hbWUgPSAibG9hZCxmaW5pc2hlZCIsIHZvaWQqIGV2ZW50X2RhdGEgPSAwKTsKKyAgICBz
dGF0aWMgYm9vbCBydW5UZXN0KHZvaWQgKCpldmVudF9jYWxsYmFjaykodm9pZCosIEV2YXNfT2Jq
ZWN0Kiwgdm9pZCopLCBjb25zdCBjaGFyKiBldmVudF9uYW1lID0gImxvYWQsZmluaXNoZWQiLCB2
b2lkKiBldmVudF9kYXRhID0gMCk7CisKKyAgICBzdGF0aWMgaW50IHVzZVgxMVdpbmRvdzsKKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVUZXN0KGNvbnN0IGNoYXIqIHVybCwgdm9p
ZCAoKmV2ZW50X2NhbGxiYWNrKSh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiksIGNvbnN0IGNo
YXIqIGV2ZW50X25hbWUsIHZvaWQqIGV2ZW50X2RhdGEpOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlRlc3RDb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RDb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGM2OWRl
NWM2MGI4OTg1MmZiNDc5OTA5ZWYxOTdiYjFmZTlhZTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVz
dENvbmZpZy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2lmbmRlZiBFV0syVGVzdENv
bmZpZ19oCisjZGVmaW5lIEVXSzJUZXN0Q29uZmlnX2gKKworbmFtZXNwYWNlIEVXSzJVbml0VGVz
dHMgeworbmFtZXNwYWNlIENvbmZpZyB7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRWaWV3V2lk
dGggPSA2MDA7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRWaWV3SGVpZ2h0ID0gODAwOworc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRUZXN0UGFnZSA9ICJmaWxlOi8vIlRFU1RfUkVT
T1VSQ0VTX0RJUiIvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbCI7Cit9Cit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVGVzdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMWQ2MTZl
NDIyZTU1MTYwNDQ2Njg1ZDI2ZTZmNDk1NDQxOTliMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJUZXN0
Vmlldy5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkVXSzJUZXN0Vmlldy5oIgorCisjaW5jbHVkZSAiRVdLMlRlc3RDb25maWcu
aCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBFV0syVW5pdFRlc3RzIHsKKworRVdLMlRlc3RFY29yZUV2YXM6OkVXSzJUZXN0
RWNvcmVFdmFzKGludCB1c2VYMTFXaW5kb3cpCit7CisgICAgaWYgKHVzZVgxMVdpbmRvdykKKyAg
ICAgICAgbV9lY29yZUV2YXMgPSBhZG9wdFB0cihlY29yZV9ldmFzX25ldygwLCAwLCAwLCBDb25m
aWc6OmRlZmF1bHRWaWV3V2lkdGgsIENvbmZpZzo6ZGVmYXVsdFZpZXdIZWlnaHQsIDApKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJf
bmV3KENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCwgQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdodCkp
OworfQorCitFV0syVGVzdEVjb3JlRXZhczo6RVdLMlRlc3RFY29yZUV2YXMoY29uc3QgY2hhciog
ZW5naW5lX25hbWUsIGludCB2aWV3cG9ydF94LCBpbnQgdmlld3BvcnRfeSwgaW50IHZpZXdwb3J0
X3csIGludCB2aWV3cG9ydF9oLCBjb25zdCBjaGFyKiBleHRyYV9vcHRpb25zLCBpbnQgdXNlWDEx
V2luZG93KQoreworICAgIGlmICh1c2VYMTFXaW5kb3cpCisgICAgICAgIG1fZWNvcmVFdmFzID0g
YWRvcHRQdHIoZWNvcmVfZXZhc19uZXcoZW5naW5lX25hbWUsIHZpZXdwb3J0X3gsIHZpZXdwb3J0
X3ksIHZpZXdwb3J0X3csIHZpZXdwb3J0X2gsIGV4dHJhX29wdGlvbnMpKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19idWZmZXJfbmV3KHZpZXdw
b3J0X3gsIHZpZXdwb3J0X3kpKTsKK30KKworRXZhcyogRVdLMlRlc3RFY29yZUV2YXM6OmV2YXMo
KQoreworICAgIGlmICghbV9lY29yZUV2YXMuZ2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzLmdldCgpKTsKK30KKwordm9pZCBF
V0syVGVzdEVjb3JlRXZhczo6c2hvdygpCit7CisgICAgaWYgKG1fZWNvcmVFdmFzLmdldCgpKQor
ICAgICAgICBlY29yZV9ldmFzX3Nob3cobV9lY29yZUV2YXMuZ2V0KCkpOworfQorCitFV0syVGVz
dFZpZXc6OkVXSzJUZXN0VmlldyhFdmFzKiBldmFzKQorICAgIDogbV9ldmFzKGV2YXMpCisgICAg
LCBtX3VybChDb25maWc6OmRlZmF1bHRUZXN0UGFnZSkKKyAgICAsIG1fd2lkdGgoQ29uZmlnOjpk
ZWZhdWx0Vmlld1dpZHRoKQorICAgICwgbV9oZWlnaHQoQ29uZmlnOjpkZWZhdWx0Vmlld0hlaWdo
dCkKK3sKK30KKworRVdLMlRlc3RWaWV3OjpFV0syVGVzdFZpZXcoRXZhcyogZXZhcywgY29uc3Qg
Y2hhciogdXJsKQorICAgIDogbV9ldmFzKGV2YXMpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBt
X3dpZHRoKENvbmZpZzo6ZGVmYXVsdFZpZXdXaWR0aCkKKyAgICAsIG1faGVpZ2h0KENvbmZpZzo6
ZGVmYXVsdFZpZXdIZWlnaHQpCit7Cit9CisKK0VXSzJUZXN0Vmlldzo6RVdLMlRlc3RWaWV3KEV2
YXMqIGV2YXMsIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorICAgIDog
bV9ldmFzKGV2YXMpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3dpZHRoKHdpZHRoKQorICAg
ICwgbV9oZWlnaHQoaGVpZ2h0KQoreworfQorCitib29sIEVXSzJUZXN0Vmlldzo6aW5pdCgpCit7
CisgICAgaWYgKCFtX2V2YXMgfHwgbV91cmwuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV93ZWJWaWV3ID0gYWRvcHRQdHIoZXdrX3ZpZXdfYWRkKG1fZXZhcykpOworICAg
IGlmICghbV93ZWJWaWV3LmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBld2tf
dmlld191cmlfc2V0KG1fd2ViVmlldy5nZXQoKSwgbV91cmwuY19zdHIoKSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBFV0syVGVzdFZpZXc6OnNob3coKQoreworICAgIGlmICghbV93
ZWJWaWV3LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBldmFzX29iamVjdF9yZXNpemUo
bV93ZWJWaWV3LmdldCgpLCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgZXZhc19vYmplY3Rfc2hv
dyhtX3dlYlZpZXcuZ2V0KCkpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZpZXcu
Z2V0KCksIEVJTkFfVFJVRSk7Cit9CisKK0V2YXMqIEVXSzJUZXN0Vmlldzo6ZXZhcygpCit7Cisg
ICAgaWYgKCFtX3dlYlZpZXcuZ2V0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fd2ViVmlldy5nZXQoKSk7Cit9CisKK3ZvaWQgRVdLMlRl
c3RWaWV3OjpiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwg
dm9pZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cikKK3sKKyAgICBpZiAoIW1f
d2ViVmlldy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfZGVsKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1lLCBjYWxsYmFjayk7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1fd2ViVmlldy5nZXQoKSwgZXZlbnROYW1l
LCBjYWxsYmFjaywgcHRyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVGVzdFZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RW
aWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGJmOGU2YmQzZTgyZGVmOGI5ZDk4MGNkYWE2M2Y0ZDg1NGJjMTJi
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlRlc3RWaWV3LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaWZuZGVmIEVXSzJUZXN0Vmlld19oCisjZGVmaW5lIEVXSzJUZXN0Vmlld19oCisKKyNp
bmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPHN0cmlu
Zz4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3RzIHsK
KworY2xhc3MgRVdLMlRlc3RFY29yZUV2YXMgeworcHVibGljOgorICAgIEVXSzJUZXN0RWNvcmVF
dmFzKGludCB1c2VYMTFXaW5kb3cpOworICAgIEVXSzJUZXN0RWNvcmVFdmFzKGNvbnN0IGNoYXIq
IGVuZ2luZV9uYW1lLCBpbnQgdmlld3BvcnRfeCwgaW50IHZpZXdwb3J0X3ksIGludCB2aWV3cG9y
dF93LCBpbnQgdmlld3BvcnRfaCwgY29uc3QgY2hhciogZXh0cmFfb3B0aW9ucywgaW50IHVzZVgx
MVdpbmRvdyk7CisKKyAgICBFdmFzKiBldmFzKCk7CisgICAgdm9pZCBzaG93KCk7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPEVjb3JlX0V2YXM+IG1fZWNvcmVFdmFzOworfTsKKworY2xhc3MgRVdL
MlRlc3RWaWV3IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFV0syVGVzdFZpZXcoRXZhcyopOwor
ICAgIEVXSzJUZXN0VmlldyhFdmFzKiwgY29uc3QgY2hhciogdXJsKTsKKyAgICBFV0syVGVzdFZp
ZXcoRXZhcyosIGNvbnN0IGNoYXIqIHVybCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKworICAg
IEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3LmdldCgpOyB9CisgICAg
RXZhcyogZXZhcygpOworICAgIHZvaWQgc2hvdygpOworCisgICAgYm9vbCBpbml0KCk7CisgICAg
dm9pZCBiaW5kRXZlbnRzKHZvaWQgKCpjYWxsYmFjaykodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopLCBjb25zdCBjaGFyKiBldmVudE5hbWUsIHZvaWQqIHB0cik7CisKK3ByaXZhdGU6CisgICAg
RVdLMlRlc3RWaWV3KGNvbnN0IEVXSzJUZXN0VmlldyYpOworICAgIEVXSzJUZXN0VmlldyBvcGVy
YXRvcj0oY29uc3QgRVdLMlRlc3RWaWV3Jik7CisKKyAgICBFdmFzKiBtX2V2YXM7CisgICAgT3du
UHRyPEV2YXNfT2JqZWN0PiBtX3dlYlZpZXc7CisKKyAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7
CisgICAgc3RkOjpzdHJpbmcgbV91cmw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRf
dGVzdF9wYWdlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9y
ZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ4MWU3MzIzY2U4
MGQ2ZjBjMzExYzk0Yjg3ZDQwMzUxNWRkMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdl
Lmh0bWwKQEAgLTAsMCArMSw2IEBACis8SFRNTD4KKzxCT0RZPgorPEgyIGFsaWduPSJjZW50ZXIi
PkVGTCBVbml0IFRlc3RzPC9IMj4KKzxIMiBhbGlnbj0iY2VudGVyIj5EZWZhdWx0IFRlc3Rpbmcg
V2ViIFBhZ2U8L0gyPgorPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRlOTMzNTRiNWRlOTM1OTYzMTJmYTQ4OTI2YzRmZjRkYmM2ZDE3MTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJUZXN0QmFzZS5oIgorI2luY2x1ZGUgPEVX
ZWJLaXQyLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIEVX
SzJVbml0VGVzdHM7CisKKy8qKgorKiBAYnJpZWYgQ2hlY2tpbmcgd2hldGhlciBmdW5jdGlvbiBy
ZXR1cm5zIGNvcnJlY3QgdXJpIHN0cmluZy4KKyovCitzdGF0aWMgdm9pZCBld2tWaWV3VXJpR2V0
Q2Iodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBk
b3VibGUgcHJvZ3Jlc3MgPSAqc3RhdGljX2Nhc3Q8ZG91YmxlKj4oZXZlbnRJbmZvKTsKKworICAg
IGlmIChwcm9ncmVzcyAhPSAxLjApCisgICAgICAgIHJldHVybjsKKworICAgIEVYUEVDVF9TVFJF
USgiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsIGV3a192aWV3X3VyaV9nZXQobykpOworICAgIEVO
RF9URVNUKCk7Cit9CisKK1RFU1QodGVzdF9ld2tfdmlldywgZXdrX3ZpZXdfdXJpX2dldCkKK3sK
KyAgICBSVU5fVEVTVCgiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsIGV3a1ZpZXdVcmlHZXRDYiwg
ImxvYWQscHJvZ3Jlc3MiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfcnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTA4ZDMwMzNhNjI4
NTkyNTQxNmQ1OWYzNmI5NGM4YTk2MGQ1MWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ydW5uZXIuY3BwCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlRlc3RCYXNlLmgi
CisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworc3RhdGlj
IHZvaWQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAg
IHN0YXRpYyBjb25zdCBvcHRpb24gb3B0aW9uc1tdID0geworICAgICAgICB7InVzZVgxMVdpbmRv
dyIsIG5vX2FyZ3VtZW50LCAmRVdLMlVuaXRUZXN0czo6RVdLMlRlc3RCYXNlOjp1c2VYMTFXaW5k
b3csIHRydWV9LAorICAgICAgICB7MCwgMCwgMCwgMH0KKyAgICB9OworCisgICAgaW50IG9wdGlv
bjsKKyAgICB3aGlsZSAoKG9wdGlvbiA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICIiLCBvcHRp
b25zLCAwKSkgIT0gLTEpIHsgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
Cit7CisgICAgYXRleGl0KEVXSzJVbml0VGVzdHM6OkVXSzJUZXN0QmFzZTo6c2h1dGRvd25BbGwp
OworICAgIHBhcnNlQ3VzdG9tQXJndW1lbnRzKGFyZ2MsIGFyZ3YpOworICAgIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOworICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151284</attachid>
            <date>2012-07-09 11:08:48 -0700</date>
            <delta_ts>2012-07-09 11:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120709210846.patch</filename>
            <type>text/plain</type>
            <size>12705</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmFjYWM3MTcxZDBjOTlj
YThkNjZhMjUwOTc5NjhhOTMwOTBkNjQ0NS4uNDZiYjQ5MTExYmRkMzQ4NGE0ODg3OTk2YzMxYTdk
ZjVkOTJlOGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA3LTA5ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBvZiBFRkwncyBXZWJL
aXQgMSB0ZXN0IGZyYW1ld29yayB1c2VzIGEgbW9yZSBndGVzdC1pc2gKKyAgICAgICAgd2F5IG9m
IHdyaXRpbmcgdGVzdHMgYW5kIGl0IGlzIGJhc2VkIG9uIGEgdGVzdCBmaXh0dXJlIHRoYXQgbG9h
ZHMgYQorICAgICAgICBwYWdlIHN5bmNocm9ub3VzbHkgYXMgY29udmVuaWVuY2UgKGlmIG5lZWRl
ZCkuIFRoaXMgYmFzZSBmaXh0dXJlIGNhbiBiZQorICAgICAgICBlYXNpbHkgZXh0ZW5kZWQgYnkg
anVzdCBpbmhlcml0aW5nIGZyb20gaXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdCk6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6Om9uTG9hZFByb2dyZXNzKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6
OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVu
aXRUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRl
c3RCYXNlOjpsb2FkVXJsU3luYyk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVz
dEJhc2U6OmRlZmF1bHRUZXN0UGFnZVVybCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAo
RVdLMlVuaXRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdL
MlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHBhcnNlQ3VzdG9tQXJndW1lbnRzKToKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3Rf
cGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfdmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wNy0wOSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgTWFjIGJ1
aWxkIHdoZW4gY29kZXNpZ25fYWxsb2NhdGUgaXMgbm90IGluc3RhbGxlZCBhdCAvdXNyL2Jpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2QwNjE4NGMxYmI5ZGRlYjZhNzVlZWUyM2Vj
NzVjN2I5N2M4YWJkNS4uMTJiNGJmNThiY2JkNTdiNjNlN2IzNTRiODI3OTc3MTIyYzlkM2I0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2NiwzICsxNjYsNTMgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAKIElOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQy
L2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQogSU5TVEFMTChGSUxF
UyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX0xJQlJB
UllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorCitJTkNMVURFX0RJUkVDVE9SSUVT
KCR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2luY2x1ZGUpCisKK1NFVChFV0syVW5pdFRlc3RzX0xJ
QlJBUklFUworICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViQ29y
ZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKyAgICAke0VDT1JF
X0xJQlJBUklFU30KKyAgICAke0VDT1JFX0VWQVNfTElCUkFSSUVTfQorICAgICR7RVZBU19MSUJS
QVJJRVN9CispCisKK1NFVChFV0syVW5pdFRlc3RzX0xJTktfRkxBR1MKKyAgICAke0VDT1JFX0xE
RkxBR1N9CisgICAgJHtFQ09SRV9FVkFTX0xERkxBR1N9CisgICAgJHtFVkFTX0xERkxBR1N9Cisp
CisKK0lGIChFTkFCTEVfR0xJQl9TVVBQT1JUKQorICAgIExJU1QoQVBQRU5EIEVXSzJVbml0VGVz
dHNfTElCUkFSSUVTCisgICAgICAgICR7R2xpYl9MSUJSQVJJRVN9CisgICAgICAgICR7R3RocmVh
ZF9MSUJSQVJJRVN9CisgICAgKQorRU5ESUYgKCkKKworU0VUKFdFQktJVDJfRUZMX1RFU1RfRElS
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cyIpCitTRVQoVEVTVF9SRVNP
VVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jlc291cmNlcykKKworQUREX0RFRklO
SVRJT05TKC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtURVNUX1JFU09VUkNFU19ESVJ9XCIpCisK
K0FERF9MSUJSQVJZKGV3azJVbml0VGVzdFV0aWxzCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJ
Un0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAorICAgICR7V0VCS0lUMl9FRkxf
VEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5jcHAKKykKKworVEFSR0VU
X0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJ
RVN9KQorCisjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVk
IHdpdGggIjIiLCBvdGhlcndpc2UgaXQKKyMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhl
IFdlYktpdCAxIHRlc3Qgc3VpdGUuCitTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUworICAgIHRl
c3RfZXdrMl92aWV3CispCisKK0ZPUkVBQ0godGVzdE5hbWUgJHtFV0syVW5pdFRlc3RzX0JJTkFS
SUVTfSkKKyAgICBBRERfRVhFQ1VUQUJMRSgke3Rlc3ROYW1lfSAke1dFQktJVDJfRUZMX1RFU1Rf
RElSfS8ke3Rlc3ROYW1lfS5jcHApCisgICAgQUREX1RFU1QoJHt0ZXN0TmFtZX0gJHtDTUFLRV9S
VU5USU1FX09VVFBVVF9ESVJFQ1RPUll9LyR7dGVzdE5hbWV9KQorICAgIFRBUkdFVF9MSU5LX0xJ
QlJBUklFUygke3Rlc3ROYW1lfSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRl
c3RVdGlscyBndGVzdCBwdGhyZWFkKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUygke3Rlc3RO
YW1lfSBMSU5LX0ZMQUdTICIke0VXSzJVbml0VGVzdHNfTElOS19GTEFHU30iKQorICAgIFNFVF9U
QVJHRVRfUFJPUEVSVElFUygke3Rlc3ROYW1lfSBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
K0VOREZPUkVBQ0goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWM1YmI5NGE0OTU3ZDcxZjAyMDRjNmE4N2VkNDQxNmNmMWI3YTUz
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVXSzJVbml0
VGVzdEJhc2UuaCIKKworI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4K
KyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworZXh0ZXJuIGJvb2wgdXNlWDExV2luZG93
OworCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0IHsKKworc3RhdGljIHZvaWQgb25Mb2FkUHJvZ3Jl
c3Modm9pZCAqdXNlckRhdGEsIEV2YXNfT2JqZWN0ICp3ZWJWaWV3LCB2b2lkICpldmVudEluZm8p
Cit7CisgICAgVU5VU0VEX1BBUkFNKHdlYlZpZXcpOworCisgICAgRVdLMlVuaXRUZXN0QmFzZSog
dGVzdCA9IHN0YXRpY19jYXN0PEVXSzJVbml0VGVzdEJhc2UqPih1c2VyRGF0YSk7CisgICAgZG91
YmxlIHByb2dyZXNzID0gKnN0YXRpY19jYXN0PGRvdWJsZSo+KGV2ZW50SW5mbyk7CisKKyAgICB0
ZXN0LT5zZXRMb2FkUHJvZ3Jlc3MocHJvZ3Jlc3MpOworfQorCitFV0syVW5pdFRlc3RCYXNlOjpF
V0syVW5pdFRlc3RCYXNlKCkKKyAgICA6IG1fd2lkdGgoODAwKQorICAgICwgbV9oZWlnaHQoNjAw
KQorICAgICwgbV9sb2FkUHJvZ3Jlc3MoMC5mKQorICAgICwgbV9lY29yZUV2YXMoMCkKKyAgICAs
IG1fd2ViVmlldygwKQoreworfQorCit2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKK3sK
KyAgICBBU1NFUlRfR1QoZWNvcmVfZXZhc19pbml0KCksIDApOworCisgICAgaWYgKHVzZVgxMVdp
bmRvdykKKyAgICAgICAgbV9lY29yZUV2YXMgPSBlY29yZV9ldmFzX25ldygwLCAwLCAwLCBtX3dp
ZHRoLCBtX2hlaWdodCwgMCk7CisgICAgZWxzZQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3Jl
X2V2YXNfYnVmZmVyX25ldyhtX3dpZHRoLCBtX2hlaWdodCk7CisKKyAgICBlY29yZV9ldmFzX3No
b3cobV9lY29yZUV2YXMpOworICAgIEV2YXMqIGV2YXMgPSBlY29yZV9ldmFzX2dldChtX2Vjb3Jl
RXZhcyk7CisKKyAgICBtX3dlYlZpZXcgPSBld2tfdmlld19hZGQoZXZhcyk7CisgICAgZXZhc19v
YmplY3RfcmVzaXplKG1fd2ViVmlldywgbV93aWR0aCwgbV9oZWlnaHQpOworICAgIGV2YXNfb2Jq
ZWN0X3Nob3cobV93ZWJWaWV3KTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3
LCBFSU5BX1RSVUUpOworfQorCit2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlRlYXJEb3duKCkKK3sK
KyAgICBlY29yZV9ldmFzX2ZyZWUobV9lY29yZUV2YXMpOworICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKK30KKworCit2b2lkIEVXSzJVbml0VGVzdEJhc2U6OmxvYWRVcmxTeW5jKGNvbnN0IGNo
YXIqIHVybCkKK3sKKyAgICBtX2xvYWRQcm9ncmVzcyA9IDA7CisKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQobV93ZWJWaWV3LCAibG9hZCxwcm9ncmVzcyIsIG9uTG9hZFByb2dy
ZXNzLCB0aGlzKTsKKyAgICBld2tfdmlld191cmlfc2V0KG1fd2ViVmlldywgdXJsKTsKKworICAg
IHdoaWxlIChtX2xvYWRQcm9ncmVzcyAhPSAxLmYpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9p
dGVyYXRlKCk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV93ZWJWaWV3
LCAibG9hZCxwcm9ncmVzcyIsIG9uTG9hZFByb2dyZXNzKTsKK30KKworY29uc3QgY2hhciogRVdL
MlVuaXRUZXN0QmFzZTo6ZGVmYXVsdFRlc3RQYWdlVXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ImZpbGU6Ly8iVEVTVF9SRVNPVVJDRVNfRElSIi9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sIjsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMjFlZDZjOTQ1MThmODU5ZmE4NzkwNDc4MGExODg1ODNhNmUwNzMxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RCYXNlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRo
ZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1
OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8K
KworI2lmbmRlZiBFV0syVW5pdFRlc3RCYXNlX2gKKyNkZWZpbmUgRVdLMlVuaXRUZXN0QmFzZV9o
CisKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3QgeworCitjbGFzcyBFV0sy
VW5pdFRlc3RCYXNlIDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9p
ZCBzZXRMb2FkUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIHsgbV9sb2FkUHJvZ3Jlc3MgPSBwcm9n
cmVzczsgfQorICAgIEV2YXNfT2JqZWN0KiB3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9
CisKK3Byb3RlY3RlZDoKKyAgICBFV0syVW5pdFRlc3RCYXNlKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKTsKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKKworICAgIHZvaWQgbG9h
ZFVybFN5bmMoY29uc3QgY2hhciogdXJsKTsKKyAgICBjb25zdCBjaGFyKiBkZWZhdWx0VGVzdFBh
Z2VVcmwoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV93ZWJWaWV3Owor
ICAgIEVjb3JlX0V2YXMqIG1fZWNvcmVFdmFzOworCisgICAgdW5zaWduZWQgaW50IG1fd2lkdGg7
CisgICAgdW5zaWduZWQgaW50IG1faGVpZ2h0OworCisgICAgZmxvYXQgbV9sb2FkUHJvZ3Jlc3M7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RNYWluLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0TWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGY2YjQxYzJmYzQxYzJlOTY5YjIzYTljZWI4ZjQ1MmZh
MDlhNDUzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5jcHAKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN
QSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgIkVXSzJVbml0VGVzdEJhc2UuaCIKKyNp
bmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCitpbnQgdXNlWDEx
V2luZG93ID0gMDsKKworc3RhdGljIHZvaWQgcGFyc2VDdXN0b21Bcmd1bWVudHMoaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQoreworICAgIHN0YXRpYyBjb25zdCBvcHRpb24gb3B0aW9uc1tdID0gewor
ICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAmdXNlWDExV2luZG93LCAxfSwK
KyAgICAgICAgezAsIDAsIDAsIDB9CisgICAgfTsKKworICAgIHdoaWxlIChnZXRvcHRfbG9uZyhh
cmdjLCBhcmd2LCAiIiwgb3B0aW9ucywgMCkgIT0gLTEpIHsgfQorfQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcGFyc2VDdXN0b21Bcmd1bWVudHMoYXJnYywgYXJn
dik7CisgICAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7CisgICAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVz
dF9wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRkODFlNzMyM2NlODBkNmYwYzMxMWM5NGI4N2Q0MDM1
MTVkZDJkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sCkBAIC0wLDAgKzEsNiBA
QAorPEhUTUw+Cis8Qk9EWT4KKzxIMiBhbGlnbj0iY2VudGVyIj5FRkwgVW5pdCBUZXN0czwvSDI+
Cis8SDIgYWxpZ249ImNlbnRlciI+RGVmYXVsdCBUZXN0aW5nIFdlYiBQYWdlPC9IMj4KKzwvQk9E
WT4KKzwvSFRNTD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWUxNTAwYTIzMmU1OGVm
MTZhZmQzNzdkNTNiOWYwYTAyYjI2OGViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+
CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVz
dDsKKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3VyaV9nZXQpCit7CisgICAg
bG9hZFVybFN5bmMoZGVmYXVsdFRlc3RQYWdlVXJsKCkpOworICAgIEVYUEVDVF9TVFJFUShld2tf
dmlld191cmlfZ2V0KHdlYlZpZXcoKSksIGRlZmF1bHRUZXN0UGFnZVVybCgpKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151289</attachid>
            <date>2012-07-09 11:47:19 -0700</date>
            <delta_ts>2012-07-10 14:57:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120709214717.patch</filename>
            <type>text/plain</type>
            <size>12704</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmFjYWM3MTcxZDBjOTlj
YThkNjZhMjUwOTc5NjhhOTMwOTBkNjQ0NS4uNDZiYjQ5MTExYmRkMzQ4NGE0ODg3OTk2YzMxYTdk
ZjVkOTJlOGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA3LTA5ICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBvZiBFRkwncyBXZWJL
aXQgMSB0ZXN0IGZyYW1ld29yayB1c2VzIGEgbW9yZSBndGVzdC1pc2gKKyAgICAgICAgd2F5IG9m
IHdyaXRpbmcgdGVzdHMgYW5kIGl0IGlzIGJhc2VkIG9uIGEgdGVzdCBmaXh0dXJlIHRoYXQgbG9h
ZHMgYQorICAgICAgICBwYWdlIHN5bmNocm9ub3VzbHkgYXMgY29udmVuaWVuY2UgKGlmIG5lZWRl
ZCkuIFRoaXMgYmFzZSBmaXh0dXJlIGNhbiBiZQorICAgICAgICBlYXNpbHkgZXh0ZW5kZWQgYnkg
anVzdCBpbmhlcml0aW5nIGZyb20gaXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdCk6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6Om9uTG9hZFByb2dyZXNzKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6
OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVu
aXRUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRl
c3RCYXNlOjpsb2FkVXJsU3luYyk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVz
dEJhc2U6OmRlZmF1bHRUZXN0UGFnZVVybCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAo
RVdLMlVuaXRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdL
MlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAo
RVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHBhcnNlQ3VzdG9tQXJndW1lbnRzKToKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3Rf
cGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfdmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoVEVTVF9GKToKKwogMjAxMi0wNy0wOSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgTWFjIGJ1
aWxkIHdoZW4gY29kZXNpZ25fYWxsb2NhdGUgaXMgbm90IGluc3RhbGxlZCBhdCAvdXNyL2Jpbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2QwNjE4NGMxYmI5ZGRlYjZhNzVlZWUyM2Vj
NzVjN2I5N2M4YWJkNS4uMTJiNGJmNThiY2JkNTdiNjNlN2IzNTRiODI3OTc3MTIyYzlkM2I0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE2NiwzICsxNjYsNTMgQEAgU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAKIElOU1RBTEwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQy
L2VmbC9ld2Via2l0Mi5wYyBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQogSU5TVEFMTChGSUxF
UyAke0VXZWJLaXQyX0hFQURFUlN9IERFU1RJTkFUSU9OIGluY2x1ZGUvJHtXZWJLaXQyX0xJQlJB
UllfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorCitJTkNMVURFX0RJUkVDVE9SSUVT
KCR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0L2luY2x1ZGUpCisKK1NFVChFV0syVW5pdFRlc3RzX0xJ
QlJBUklFUworICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViQ29y
ZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJLaXQyX0xJQlJBUllfTkFNRX0KKyAgICAke0VDT1JF
X0xJQlJBUklFU30KKyAgICAke0VDT1JFX0VWQVNfTElCUkFSSUVTfQorICAgICR7RVZBU19MSUJS
QVJJRVN9CispCisKK1NFVChFV0syVW5pdFRlc3RzX0xJTktfRkxBR1MKKyAgICAke0VDT1JFX0xE
RkxBR1N9CisgICAgJHtFQ09SRV9FVkFTX0xERkxBR1N9CisgICAgJHtFVkFTX0xERkxBR1N9Cisp
CisKK0lGIChFTkFCTEVfR0xJQl9TVVBQT1JUKQorICAgIExJU1QoQVBQRU5EIEVXSzJVbml0VGVz
dHNfTElCUkFSSUVTCisgICAgICAgICR7R2xpYl9MSUJSQVJJRVN9CisgICAgICAgICR7R3RocmVh
ZF9MSUJSQVJJRVN9CisgICAgKQorRU5ESUYgKCkKKworU0VUKFdFQktJVDJfRUZMX1RFU1RfRElS
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cyIpCitTRVQoVEVTVF9SRVNP
VVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L3Jlc291cmNlcykKKworQUREX0RFRklO
SVRJT05TKC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtURVNUX1JFU09VUkNFU19ESVJ9XCIpCisK
K0FERF9MSUJSQVJZKGV3azJVbml0VGVzdFV0aWxzCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJ
Un0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcAorICAgICR7V0VCS0lUMl9FRkxf
VEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5jcHAKKykKKworVEFSR0VU
X0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJ
RVN9KQorCisjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVk
IHdpdGggIjIiLCBvdGhlcndpc2UgaXQKKyMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhl
IFdlYktpdCAxIHRlc3Qgc3VpdGUuCitTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUworICAgIHRl
c3RfZXdrMl92aWV3CispCisKK0ZPUkVBQ0godGVzdE5hbWUgJHtFV0syVW5pdFRlc3RzX0JJTkFS
SUVTfSkKKyAgICBBRERfRVhFQ1VUQUJMRSgke3Rlc3ROYW1lfSAke1dFQktJVDJfRUZMX1RFU1Rf
RElSfS8ke3Rlc3ROYW1lfS5jcHApCisgICAgQUREX1RFU1QoJHt0ZXN0TmFtZX0gJHtDTUFLRV9S
VU5USU1FX09VVFBVVF9ESVJFQ1RPUll9LyR7dGVzdE5hbWV9KQorICAgIFRBUkdFVF9MSU5LX0xJ
QlJBUklFUygke3Rlc3ROYW1lfSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRl
c3RVdGlscyBndGVzdCBwdGhyZWFkKQorICAgIEFERF9UQVJHRVRfUFJPUEVSVElFUygke3Rlc3RO
YW1lfSBMSU5LX0ZMQUdTICIke0VXSzJVbml0VGVzdHNfTElOS19GTEFHU30iKQorICAgIFNFVF9U
QVJHRVRfUFJPUEVSVElFUygke3Rlc3ROYW1lfSBQUk9QRVJUSUVTIEZPTERFUiAiV2ViS2l0IikK
K0VOREZPUkVBQ0goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFz
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjgzMGRiZGQwYTc5YTU1YWRiNmU4ZGE1NGJiNDQxMDE0NjJhMWIx
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVXSzJVbml0
VGVzdEJhc2UuaCIKKworI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4K
KyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworZXh0ZXJuIGludCB1c2VYMTFXaW5kb3c7
CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3QgeworCitzdGF0aWMgdm9pZCBvbkxvYWRQcm9ncmVz
cyh2b2lkICp1c2VyRGF0YSwgRXZhc19PYmplY3QgKndlYlZpZXcsIHZvaWQgKmV2ZW50SW5mbykK
K3sKKyAgICBVTlVTRURfUEFSQU0od2ViVmlldyk7CisKKyAgICBFV0syVW5pdFRlc3RCYXNlKiB0
ZXN0ID0gc3RhdGljX2Nhc3Q8RVdLMlVuaXRUZXN0QmFzZSo+KHVzZXJEYXRhKTsKKyAgICBkb3Vi
bGUgcHJvZ3Jlc3MgPSAqc3RhdGljX2Nhc3Q8ZG91YmxlKj4oZXZlbnRJbmZvKTsKKworICAgIHRl
c3QtPnNldExvYWRQcm9ncmVzcyhwcm9ncmVzcyk7Cit9CisKK0VXSzJVbml0VGVzdEJhc2U6OkVX
SzJVbml0VGVzdEJhc2UoKQorICAgIDogbV93aWR0aCg4MDApCisgICAgLCBtX2hlaWdodCg2MDAp
CisgICAgLCBtX2xvYWRQcm9ncmVzcygwLmYpCisgICAgLCBtX2Vjb3JlRXZhcygwKQorICAgICwg
bV93ZWJWaWV3KDApCit7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6U2V0VXAoKQorewor
ICAgIEFTU0VSVF9HVChlY29yZV9ldmFzX2luaXQoKSwgMCk7CisKKyAgICBpZiAodXNlWDExV2lu
ZG93KQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3JlX2V2YXNfbmV3KDAsIDAsIDAsIG1fd2lk
dGgsIG1faGVpZ2h0LCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVf
ZXZhc19idWZmZXJfbmV3KG1fd2lkdGgsIG1faGVpZ2h0KTsKKworICAgIGVjb3JlX2V2YXNfc2hv
dyhtX2Vjb3JlRXZhcyk7CisgICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVF
dmFzKTsKKworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X2FkZChldmFzKTsKKyAgICBldmFzX29i
amVjdF9yZXNpemUobV93ZWJWaWV3LCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgZXZhc19vYmpl
Y3Rfc2hvdyhtX3dlYlZpZXcpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldChtX3dlYlZpZXcs
IEVJTkFfVFJVRSk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6VGVhckRvd24oKQorewor
ICAgIGVjb3JlX2V2YXNfZnJlZShtX2Vjb3JlRXZhcyk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93
bigpOworfQorCisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6bG9hZFVybFN5bmMoY29uc3QgY2hh
ciogdXJsKQoreworICAgIG1fbG9hZFByb2dyZXNzID0gMDsKKworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcsICJsb2FkLHByb2dyZXNzIiwgb25Mb2FkUHJvZ3Jl
c3MsIHRoaXMpOworICAgIGV3a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LCB1cmwpOworCisgICAg
d2hpbGUgKG1fbG9hZFByb2dyZXNzICE9IDEuZikKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbChtX3dlYlZpZXcs
ICJsb2FkLHByb2dyZXNzIiwgb25Mb2FkUHJvZ3Jlc3MpOworfQorCitjb25zdCBjaGFyKiBFV0sy
VW5pdFRlc3RCYXNlOjpkZWZhdWx0VGVzdFBhZ2VVcmwoKSBjb25zdAoreworICAgIHJldHVybiAi
ZmlsZTovLyJURVNUX1JFU09VUkNFU19ESVIiL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwiOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9V
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQyMWVkNmM5NDUxOGY4NTlmYTg3OTA0NzgwYTE4ODU4M2E2ZTA3MzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0
aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl
IEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLwor
CisjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAorI2RlZmluZSBFV0syVW5pdFRlc3RCYXNlX2gK
KworI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CisKK2NsYXNzIEVXSzJV
bml0VGVzdEJhc2UgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lk
IHNldExvYWRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgeyBtX2xvYWRQcm9ncmVzcyA9IHByb2dy
ZXNzOyB9CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0K
KworcHJvdGVjdGVkOgorICAgIEVXSzJVbml0VGVzdEJhc2UoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgICAgdm9pZCBsb2Fk
VXJsU3luYyhjb25zdCBjaGFyKiB1cmwpOworICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRUZXN0UGFn
ZVVybCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7Cisg
ICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CisKKyAgICB1bnNpZ25lZCBpbnQgbV93aWR0aDsK
KyAgICB1bnNpZ25lZCBpbnQgbV9oZWlnaHQ7CisKKyAgICBmbG9hdCBtX2xvYWRQcm9ncmVzczsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRl
c3RNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjZiNDFjMmZjNDFjMmU5NjliMjNhOWNlYjhmNDUyZmEw
OWE0NTM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RNYWluLmNwcApAQCAtMCwwICsxLDQx
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
IDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiRVdLMlVuaXRUZXN0QmFzZS5oIgorI2lu
Y2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK2ludCB1c2VYMTFX
aW5kb3cgPSAwOworCitzdGF0aWMgdm9pZCBwYXJzZUN1c3RvbUFyZ3VtZW50cyhpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCit7CisgICAgc3RhdGljIGNvbnN0IG9wdGlvbiBvcHRpb25zW10gPSB7Cisg
ICAgICAgIHsidXNlWDExV2luZG93Iiwgbm9fYXJndW1lbnQsICZ1c2VYMTFXaW5kb3csIDF9LAor
ICAgICAgICB7MCwgMCwgMCwgMH0KKyAgICB9OworCisgICAgd2hpbGUgKGdldG9wdF9sb25nKGFy
Z2MsIGFyZ3YsICIiLCBvcHRpb25zLCAwKSAhPSAtMSkgeyB9Cit9CisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBwYXJzZUN1c3RvbUFyZ3VtZW50cyhhcmdjLCBhcmd2
KTsKKyAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKyAgICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0
X3BhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ4MWU3MzIzY2U4MGQ2ZjBjMzExYzk0Yjg3ZDQwMzUx
NWRkMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvcmVzb3VyY2VzL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwKQEAgLTAsMCArMSw2IEBA
Cis8SFRNTD4KKzxCT0RZPgorPEgyIGFsaWduPSJjZW50ZXIiPkVGTCBVbml0IFRlc3RzPC9IMj4K
KzxIMiBhbGlnbj0iY2VudGVyIj5EZWZhdWx0IFRlc3RpbmcgV2ViIFBhZ2U8L0gyPgorPC9CT0RZ
PgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTE1MDBhMjMyZTU4ZWYx
NmFmZDM3N2Q1M2I5ZjBhMDJiMjY4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAg
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN
QSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4K
KyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0
OworCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfdXJpX2dldCkKK3sKKyAgICBs
b2FkVXJsU3luYyhkZWZhdWx0VGVzdFBhZ2VVcmwoKSk7CisgICAgRVhQRUNUX1NUUkVRKGV3a192
aWV3X3VyaV9nZXQod2ViVmlldygpKSwgZGVmYXVsdFRlc3RQYWdlVXJsKCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151532</attachid>
            <date>2012-07-10 14:57:28 -0700</date>
            <delta_ts>2012-07-12 05:51:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120711005725.patch</filename>
            <type>text/plain</type>
            <size>17176</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmYzMzY4MzdjZDk0MGY0
ZTkzZTAyMzkyZTIzYjk3NjQxNzEzOGE4MC4uMzUwOWY0NDEwMTg5NTkzY2ZhNTEyNDg1NDE5ZGE1
NjAyOGU2MGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTEwICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBvZiBFRkwncyBXZWJL
aXQgMSB0ZXN0IGZyYW1ld29yayB1c2VzIGEgbW9yZSBndGVzdC1pc2gKKyAgICAgICAgd2F5IG9m
IHdyaXRpbmcgdGVzdHMgYW5kIGl0IGlzIGJhc2VkIG9uIGEgdGVzdCBmaXh0dXJlIHRoYXQgbG9h
ZHMgYQorICAgICAgICBwYWdlIHN5bmNocm9ub3VzbHkgYXMgY29udmVuaWVuY2UgKGlmIG5lZWRl
ZCkuIFRoaXMgYmFzZSBmaXh0dXJlIGNhbiBiZQorICAgICAgICBlYXNpbHkgZXh0ZW5kZWQgYnkg
anVzdCBpbmhlcml0aW5nIGZyb20gaXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdCk6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6Om9uTG9hZFByb2dyZXNzKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6
OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVu
aXRUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRl
c3RCYXNlOjpsb2FkVXJsU3luYyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVu
aXRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAoRVdLMlVu
aXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpF
V0syVW5pdFRlc3RFbnZpcm9ubWVudDo6RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQpOgorICAgICAg
ICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6ZGVmYXVsdFRlc3RQYWdl
VXJsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEVudmlyb25tZW50Lmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0KToK
KyAgICAgICAgKEVXSzJVbml0VGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dDo6RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OnVzZVgxMVdpbmRvdyk6CisgICAgICAgIChFV0sy
VW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVudmlyb25tZW50OjpkZWZhdWx0V2lkdGgpOgorICAgICAg
ICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6ZGVmYXVsdEhlaWdodCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RNYWluLmNwcDogQWRkZWQuCisgICAgICAgIChwYXJzZUFyZ3VtZW50cyk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVm
YXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRFU1RfRik6CisKIDIw
MTItMDctMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gY2xlYXIgdGhlIGNhY2hlIHRvIFdlYktpdDIgR1RLKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZDA2MTg0YzFiYjlkZGViNmE3NWVlZTIzZWM3
NWM3Yjk3YzhhYmQ1Li4wMWMyNjA2NTEyYTMwNjdkOTE4YjBhNTE1ODhjYjliYjQ3Nzk1ZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTY2LDMgKzE2Niw1NCBAQCBTRVQgKEVXZWJL
aXQyX0hFQURFUlMKIAogSU5TVEFMTChGSUxFUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIv
ZWZsL2V3ZWJraXQyLnBjIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiBJTlNUQUxMKEZJTEVT
ICR7RVdlYktpdDJfSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfTElCUkFS
WV9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0pCisKK0lOQ0xVREVfRElSRUNUT1JJRVMo
JHtUSElSRFBBUlRZX0RJUn0vZ3Rlc3QvaW5jbHVkZSkKKworU0VUKEVXSzJVbml0VGVzdHNfTElC
UkFSSUVTCisgICAgJHtKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX05BTUV9CisgICAgJHtXZWJDb3Jl
X0xJQlJBUllfTkFNRX0KKyAgICAke1dlYktpdDJfTElCUkFSWV9OQU1FfQorICAgICR7RUNPUkVf
TElCUkFSSUVTfQorICAgICR7RUNPUkVfRVZBU19MSUJSQVJJRVN9CisgICAgJHtFVkFTX0xJQlJB
UklFU30KKykKKworU0VUKEVXSzJVbml0VGVzdHNfTElOS19GTEFHUworICAgICR7RUNPUkVfTERG
TEFHU30KKyAgICAke0VDT1JFX0VWQVNfTERGTEFHU30KKyAgICAke0VWQVNfTERGTEFHU30KKykK
KworSUYgKEVOQUJMRV9HTElCX1NVUFBPUlQpCisgICAgTElTVChBUFBFTkQgRVdLMlVuaXRUZXN0
c19MSUJSQVJJRVMKKyAgICAgICAgJHtHbGliX0xJQlJBUklFU30KKyAgICAgICAgJHtHdGhyZWFk
X0xJQlJBUklFU30KKyAgICApCitFTkRJRiAoKQorCitTRVQoV0VCS0lUMl9FRkxfVEVTVF9ESVIg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzIikKK1NFVChURVNUX1JFU09V
UkNFU19ESVIgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vcmVzb3VyY2VzKQorCitBRERfREVGSU5J
VElPTlMoLURURVNUX1JFU09VUkNFU19ESVI9XCIke1RFU1RfUkVTT1VSQ0VTX0RJUn1cIikKKwor
QUREX0xJQlJBUlkoZXdrMlVuaXRUZXN0VXRpbHMKKyAgICAke1dFQktJVDJfRUZMX1RFU1RfRElS
fS9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCisgICAgJHtXRUJLSVQyX0VGTF9U
RVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5jcHAKKyAgICAk
e1dFQktJVDJfRUZMX1RFU1RfRElSfS9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdE1haW4uY3Bw
CispCisKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0
VGVzdHNfTElCUkFSSUVTfSkKKworIyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0
byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CisjIHdpbGwgY2xhc2ggd2l0aCB0
ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgorU0VUKEVXSzJVbml0VGVzdHNfQklO
QVJJRVMKKyAgICB0ZXN0X2V3azJfdmlldworKQorCitGT1JFQUNIKHRlc3ROYW1lICR7RVdLMlVu
aXRUZXN0c19CSU5BUklFU30pCisgICAgQUREX0VYRUNVVEFCTEUoJHt0ZXN0TmFtZX0gJHtXRUJL
SVQyX0VGTF9URVNUX0RJUn0vJHt0ZXN0TmFtZX0uY3BwKQorICAgIEFERF9URVNUKCR7dGVzdE5h
bWV9ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS8ke3Rlc3ROYW1lfSkKKyAgICBU
QVJHRVRfTElOS19MSUJSQVJJRVMoJHt0ZXN0TmFtZX0gJHtFV0syVW5pdFRlc3RzX0xJQlJBUklF
U30gZXdrMlVuaXRUZXN0VXRpbHMgZ3Rlc3QgcHRocmVhZCkKKyAgICBBRERfVEFSR0VUX1BST1BF
UlRJRVMoJHt0ZXN0TmFtZX0gTElOS19GTEFHUyAiJHtFV0syVW5pdFRlc3RzX0xJTktfRkxBR1N9
IikKKyAgICBTRVRfVEFSR0VUX1BST1BFUlRJRVMoJHt0ZXN0TmFtZX0gUFJPUEVSVElFUyBGT0xE
RVIgIldlYktpdCIpCitFTkRGT1JFQUNIKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MzVkMjYyZDI5NmFjODA5NWZkYTlhZjU5
ZGMzMjM2YzBkNzFlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv
c3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFV0syVW5pdFRlc3RCYXNlLmgiCisKKyNpbmNsdWRlICJFV0syVW5pdFRlc3RFbnZpcm9u
bWVudC5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworZXh0ZXJuIEVXSzJVbml0VGVzdDo6RVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCituYW1lc3BhY2UgRVdLMlVuaXRUZXN0IHsK
Kworc3RhdGljIHZvaWQgb25Mb2FkUHJvZ3Jlc3Modm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0
KiB3ZWJWaWV3LCB2b2lkKiBldmVudEluZm8pCit7CisgICAgVU5VU0VEX1BBUkFNKHdlYlZpZXcp
OworCisgICAgRVdLMlVuaXRUZXN0QmFzZSogdGVzdCA9IHN0YXRpY19jYXN0PEVXSzJVbml0VGVz
dEJhc2UqPih1c2VyRGF0YSk7CisgICAgZG91YmxlIHByb2dyZXNzID0gKnN0YXRpY19jYXN0PGRv
dWJsZSo+KGV2ZW50SW5mbyk7CisKKyAgICB0ZXN0LT5zZXRMb2FkUHJvZ3Jlc3MocHJvZ3Jlc3Mp
OworfQorCitFV0syVW5pdFRlc3RCYXNlOjpFV0syVW5pdFRlc3RCYXNlKCkKKyAgICA6IG1fbG9h
ZFByb2dyZXNzKDAuZikKKyAgICAsIG1fZWNvcmVFdmFzKDApCisgICAgLCBtX3dlYlZpZXcoMCkK
K3sKK30KKwordm9pZCBFV0syVW5pdFRlc3RCYXNlOjpTZXRVcCgpCit7CisgICAgQVNTRVJUX0dU
KGVjb3JlX2V2YXNfaW5pdCgpLCAwKTsKKworICAgIHVuc2lnbmVkIGludCB3aWR0aCA9IGVudmly
b25tZW50LT5kZWZhdWx0V2lkdGgoKTsKKyAgICB1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZW52aXJv
bm1lbnQtPmRlZmF1bHRIZWlnaHQoKTsKKworICAgIGlmIChlbnZpcm9ubWVudC0+dXNlWDExV2lu
ZG93KCkpCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVfZXZhc19uZXcoMCwgMCwgMCwgd2lk
dGgsIGhlaWdodCwgMCk7CisgICAgZWxzZQorICAgICAgICBtX2Vjb3JlRXZhcyA9IGVjb3JlX2V2
YXNfYnVmZmVyX25ldyh3aWR0aCwgaGVpZ2h0KTsKKworICAgIGVjb3JlX2V2YXNfc2hvdyhtX2Vj
b3JlRXZhcyk7CisgICAgRXZhcyogZXZhcyA9IGVjb3JlX2V2YXNfZ2V0KG1fZWNvcmVFdmFzKTsK
KworICAgIG1fd2ViVmlldyA9IGV3a192aWV3X2FkZChldmFzKTsKKyAgICBldmFzX29iamVjdF9y
ZXNpemUobV93ZWJWaWV3LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9zaG93KG1f
d2ViVmlldyk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KG1fd2ViVmlldywgRUlOQV9UUlVF
KTsKK30KKwordm9pZCBFV0syVW5pdFRlc3RCYXNlOjpUZWFyRG93bigpCit7CisgICAgZXZhc19v
YmplY3RfZGVsKG1fd2ViVmlldyk7CisgICAgZWNvcmVfZXZhc19mcmVlKG1fZWNvcmVFdmFzKTsK
KyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6
bG9hZFVybFN5bmMoY29uc3QgY2hhciogdXJsKQoreworICAgIG1fbG9hZFByb2dyZXNzID0gMDsK
KworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcsICJsb2FkLHBy
b2dyZXNzIiwgb25Mb2FkUHJvZ3Jlc3MsIHRoaXMpOworICAgIGV3a192aWV3X3VyaV9zZXQobV93
ZWJWaWV3LCB1cmwpOworCisgICAgd2hpbGUgKG1fbG9hZFByb2dyZXNzICE9IDEuZikKKyAgICAg
ICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2RlbChtX3dlYlZpZXcsICJsb2FkLHByb2dyZXNzIiwgb25Mb2FkUHJvZ3Jlc3MpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1NWMzNGYwZWJiOWZkNGM1ZGUzMTg1ZDU2NjI2MTYwNzJjNmYxNWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVz
dFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMCwwICsxLDUxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAorI2RlZmluZSBFV0syVW5pdFRlc3RCYXNl
X2gKKworI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisjaW5jbHVk
ZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CisKK2NsYXNzIEVX
SzJVbml0VGVzdEJhc2UgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2
b2lkIHNldExvYWRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgeyBtX2xvYWRQcm9ncmVzcyA9IHBy
b2dyZXNzOyB9CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7
IH0KKworcHJvdGVjdGVkOgorICAgIEVXSzJVbml0VGVzdEJhc2UoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOworCisgICAgdm9pZCBs
b2FkVXJsU3luYyhjb25zdCBjaGFyKiB1cmwpOworCitwcml2YXRlOgorICAgIEV2YXNfT2JqZWN0
KiBtX3dlYlZpZXc7CisgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CisKKyAgICBmbG9hdCBt
X2xvYWRQcm9ncmVzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVu
dmlyb25tZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1Zjc3
NDVjMTc5M2RlMWJhMmY3YjdiMjAwY2Y1OWVlYWY4NjdmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJV
bml0VGVzdEVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl
IEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CisKK0VXSzJVbml0VGVzdEVudmlyb25tZW50
OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6IG1fZGVm
YXVsdFdpZHRoKDgwMCkKKyAgICAsIG1fZGVmYXVsdEhlaWdodCg2MDApCisgICAgLCBtX3VzZVgx
MVdpbmRvdyh1c2VYMTFXaW5kb3cpCit7Cit9CisKK2NvbnN0IGNoYXIqIEVXSzJVbml0VGVzdEVu
dmlyb25tZW50OjpkZWZhdWx0VGVzdFBhZ2VVcmwoKSBjb25zdAoreworICAgIHJldHVybiAiZmls
ZTovLyJURVNUX1JFU09VUkNFU19ESVIiL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwiOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDk5YjA0NTRkZWY0ZGYwZDRmMzhlNDk0MDI0YzEyZDRmZjU5MDFlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2lmbmRlZiBFV0syVW5pdFRlc3RFbnZp
cm9ubWVudF9oCisjZGVmaW5lIEVXSzJVbml0VGVzdEVudmlyb25tZW50X2gKKworI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFjZSBFV0syVW5pdFRlc3QgeworCitjbGFzcyBFV0sy
VW5pdFRlc3RFbnZpcm9ubWVudCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25tZW50IHsKK3B1
YmxpYzoKKyAgICBFV0syVW5pdFRlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdyk7CisK
KyAgICBib29sIHVzZVgxMVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlWDExV2luZG93OyB9
CisgICAgY29uc3QgY2hhciogZGVmYXVsdFRlc3RQYWdlVXJsKCkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGludCBkZWZhdWx0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRX
aWR0aDsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGRlZmF1bHRIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2RlZmF1bHRIZWlnaHQ7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBpbnQg
bV9kZWZhdWx0V2lkdGg7CisgICAgdW5zaWduZWQgaW50IG1fZGVmYXVsdEhlaWdodDsKKworICAg
IGJvb2wgbV91c2VYMTFXaW5kb3c7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1Vu
aXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZlOWMwNjlhMmUx
ZTIwODJlOTZlMWFiNTY5YmFkMDVmMmE3MzA4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
TWFpbi5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorKi8KKworI2luY2x1ZGUgIkVX
SzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJFV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oIgor
I2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK0VXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9u
bWVudCA9IDA7CisKK3N0YXRpYyBib29sIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBpbnQgdXNlWDExV2luZG93ID0gMDsKKworICAgIHN0YXRpYyBjb25zdCBv
cHRpb24gb3B0aW9uc1tdID0geworICAgICAgICB7InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50
LCAmdXNlWDExV2luZG93LCAxfSwKKyAgICAgICAgezAsIDAsIDAsIDB9CisgICAgfTsKKworICAg
IHdoaWxlIChnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiIiwgb3B0aW9ucywgMCkgIT0gLTEpIHsg
fQorCisgICAgcmV0dXJuIHVzZVgxMVdpbmRvdzsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQoreworICAgIGJvb2wgdXNlWDExV2luZG93ID0gcGFyc2VBcmd1bWVudHMoYXJn
YywgYXJndik7CisKKyAgICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsK
KworICAgIGVudmlyb25tZW50ID0gbmV3IEVXSzJVbml0VGVzdEVudmlyb25tZW50KHVzZVgxMVdp
bmRvdyk7CisgICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KGVudmlyb25tZW50
KTsKKworICAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3Bh
Z2UuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNl
cy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZDgxZTczMjNjZTgwZDZmMGMz
MTFjOTRiODdkNDAzNTE1ZGQyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbApA
QCAtMCwwICsxLDYgQEAKKzxIVE1MPgorPEJPRFk+Cis8SDIgYWxpZ249ImNlbnRlciI+RUZMIFVu
aXQgVGVzdHM8L0gyPgorPEgyIGFsaWduPSJjZW50ZXIiPkRlZmF1bHQgVGVzdGluZyBXZWIgUGFn
ZTwvSDI+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVl
MTM0ZDM1ZDUwOGQ1MGFlNzE3N2U4ZDgzZjc1MmNjZTYzNmIzMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNw
cApAQCAtMCwwICsxLDM1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRl
ICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8RVdl
YktpdDIuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdL
MlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50
OworCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfdXJpX2dldCkKK3sKKyAgICBs
b2FkVXJsU3luYyhlbnZpcm9ubWVudC0+ZGVmYXVsdFRlc3RQYWdlVXJsKCkpOworICAgIEVYUEVD
VF9TVFJFUShld2tfdmlld191cmlfZ2V0KHdlYlZpZXcoKSksIGVudmlyb25tZW50LT5kZWZhdWx0
VGVzdFBhZ2VVcmwoKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151925</attachid>
            <date>2012-07-12 05:51:41 -0700</date>
            <delta_ts>2012-07-12 14:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90606-20120712155139.patch</filename>
            <type>text/plain</type>
            <size>17146</size>
            <attacher name="Thiago Marcos P. Santos">tmpsantos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWE0NjRkMDA3OTliZmEx
YzRjOGFkMGJhMzQ5M2Q2Nzc3MmY4YzU5YS4uNDkyNWY5MWY5NzYyMmI1NjRjMTVhYWYyYzE0OGI2
MzUwNTdmZDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA3LTEwICBUaGlh
Z28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdIFBvcnQgdGhlIHRlc3QgZnJhbWV3b3JrIHRvIFdlYktpdCAyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcG9ydCBvZiBFRkwncyBXZWJL
aXQgMSB0ZXN0IGZyYW1ld29yayB1c2VzIGEgbW9yZSBndGVzdC1pc2gKKyAgICAgICAgd2F5IG9m
IHdyaXRpbmcgdGVzdHMgYW5kIGl0IGlzIGJhc2VkIG9uIGEgdGVzdCBmaXh0dXJlIHRoYXQgbG9h
ZHMgYQorICAgICAgICBwYWdlIHN5bmNocm9ub3VzbHkgYXMgY29udmVuaWVuY2UgKGlmIG5lZWRl
ZCkuIFRoaXMgYmFzZSBmaXh0dXJlIGNhbiBiZQorICAgICAgICBlYXNpbHkgZXh0ZW5kZWQgYnkg
anVzdCBpbmhlcml0aW5nIGZyb20gaXQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJVbml0VGVzdCk6CisgICAgICAgIChF
V0syVW5pdFRlc3Q6Om9uTG9hZFByb2dyZXNzKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdL
MlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSk6CisgICAgICAgIChFV0syVW5pdFRlc3Q6
OkVXSzJVbml0VGVzdEJhc2U6OlNldFVwKToKKyAgICAgICAgKEVXSzJVbml0VGVzdDo6RVdLMlVu
aXRUZXN0QmFzZTo6VGVhckRvd24pOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRl
c3RCYXNlOjpsb2FkVXJsU3luYyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVu
aXRUZXN0KToKKyAgICAgICAgKEVXSzJVbml0VGVzdEJhc2UpOgorICAgICAgICAoRVdLMlVuaXRU
ZXN0OjpFV0syVW5pdFRlc3RCYXNlOjpzZXRMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAoRVdLMlVu
aXRUZXN0OjpFV0syVW5pdFRlc3RCYXNlOjp3ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChFV0syVW5pdFRlc3QpOgorICAgICAgICAoRVdLMlVuaXRUZXN0OjpF
V0syVW5pdFRlc3RFbnZpcm9ubWVudDo6RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQpOgorICAgICAg
ICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6ZGVmYXVsdFRlc3RQYWdl
VXJsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEVudmlyb25tZW50Lmg6IEFkZGVkLgorICAgICAgICAoRVdLMlVuaXRUZXN0KToK
KyAgICAgICAgKEVXSzJVbml0VGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKEVXSzJVbml0VGVz
dDo6RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQ6OnVzZVgxMVdpbmRvdyk6CisgICAgICAgIChFV0sy
VW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVudmlyb25tZW50OjpkZWZhdWx0V2lkdGgpOgorICAgICAg
ICAoRVdLMlVuaXRUZXN0OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudDo6ZGVmYXVsdEhlaWdodCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RNYWluLmNwcDogQWRkZWQuCisgICAgICAgIChwYXJzZUFyZ3VtZW50cyk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvZGVm
YXVsdF90ZXN0X3BhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRFU1RfRik6CisKIDIw
MTItMDctMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAg
V2ViQ29yZVN1cHBvcnQgbmVlZHMgb2JqZWN0cyBlYWNoIG9mIHdoaWNoIGZvbGxvd3MgbWFqb3Ig
V2ViQ29yZSBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGJkMDdjM2IzOTVm
NDQzZmUyYzZhMGE1NWFjNGI5NzdiYWJmN2ExYzcuLjg3YzAxODg1ZjY1MzlkMjkzZjYzYmYwYzk1
Y2RjMWY0YTRkNjlkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNjcsMyArMTY3
LDQ3IEBAIFNFVCAoRVdlYktpdDJfSEVBREVSUwogCiBJTlNUQUxMKEZJTEVTICR7Q01BS0VfQklO
QVJZX0RJUn0vV2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZp
ZykKIElOU1RBTEwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRl
LyR7V2ViS2l0Ml9MSUJSQVJZX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9SfSkKKworSU5D
TFVERV9ESVJFQ1RPUklFUygke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlKQorCitTRVQo
RVdLMlVuaXRUZXN0c19MSUJSQVJJRVMKKyAgICAke0phdmFTY3JpcHRDb3JlX0xJQlJBUllfTkFN
RX0KKyAgICAke1dlYkNvcmVfTElCUkFSWV9OQU1FfQorICAgICR7V2ViS2l0Ml9MSUJSQVJZX05B
TUV9CisgICAgJHtFQ09SRV9MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9FVkFTX0xJQlJBUklFU30K
KyAgICAke0VWQVNfTElCUkFSSUVTfQorKQorCitJRiAoRU5BQkxFX0dMSUJfU1VQUE9SVCkKKyAg
ICBMSVNUKEFQUEVORCBFV0syVW5pdFRlc3RzX0xJQlJBUklFUworICAgICAgICAke0dsaWJfTElC
UkFSSUVTfQorICAgICAgICAke0d0aHJlYWRfTElCUkFSSUVTfQorICAgICkKK0VORElGKCkKKwor
U0VUKFdFQktJVDJfRUZMX1RFU1RfRElSICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cyIpCitTRVQoVEVTVF9SRVNPVVJDRVNfRElSICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9
L3Jlc291cmNlcykKKworQUREX0RFRklOSVRJT05TKC1EVEVTVF9SRVNPVVJDRVNfRElSPVwiJHtU
RVNUX1JFU09VUkNFU19ESVJ9XCIpCisKK0FERF9MSUJSQVJZKGV3azJVbml0VGVzdFV0aWxzCisg
ICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNl
LmNwcAorICAgICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQuY3BwCisgICAgJHtXRUJLSVQyX0VGTF9URVNUX0RJUn0vVW5pdFRlc3RV
dGlscy9FV0syVW5pdFRlc3RNYWluLmNwcAorKQorCitUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdr
MlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCisKKyMgVGhlICJld2si
IG9uIHRoZSB0ZXN0IG5hbWUgbmVlZHMgdG8gYmUgc3VmZml4ZWQgd2l0aCAiMiIsIG90aGVyd2lz
ZSBpdAorIyB3aWxsIGNsYXNoIHdpdGggdGVzdHMgZnJvbSB0aGUgV2ViS2l0IDEgdGVzdCBzdWl0
ZS4KK1NFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCisgICAgdGVzdF9ld2syX3ZpZXcKKykKKwor
Rk9SRUFDSCh0ZXN0TmFtZSAke0VXSzJVbml0VGVzdHNfQklOQVJJRVN9KQorICAgIEFERF9FWEVD
VVRBQkxFKCR7dGVzdE5hbWV9ICR7V0VCS0lUMl9FRkxfVEVTVF9ESVJ9LyR7dGVzdE5hbWV9LmNw
cCkKKyAgICBBRERfVEVTVCgke3Rlc3ROYW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWX0vJHt0ZXN0TmFtZX0pCisgICAgU0VUX1RFU1RTX1BST1BFUlRJRVMoJHt0ZXN0TmFtZX0g
UFJPUEVSVElFUyBUSU1FT1VUIDYwKQorICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke3Rlc3RO
YW1lfSAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSBld2syVW5pdFRlc3RVdGlscyBndGVzdCBw
dGhyZWFkKQorRU5ERk9SRUFDSCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5p
dFRlc3RCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTY2NDMwNDljNmViYjIwODY5ZDhlM2Q2MWJhNGJi
YTgyYjdjYWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmNwcApAQCAtMCwwICsx
LDkwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s
IE1BIDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RVdLMlVuaXRUZXN0QmFzZS5oIgorCisjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CisKK2V4dGVybiBFV0syVW5pdFRlc3Q6OkVXSzJVbml0VGVzdEVu
dmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CisKK3N0
YXRpYyB2b2lkIG9uTG9hZFByb2dyZXNzKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vi
Vmlldywgdm9pZCogZXZlbnRJbmZvKQoreworICAgIFVOVVNFRF9QQVJBTSh3ZWJWaWV3KTsKKwor
ICAgIEVXSzJVbml0VGVzdEJhc2UqIHRlc3QgPSBzdGF0aWNfY2FzdDxFV0syVW5pdFRlc3RCYXNl
Kj4odXNlckRhdGEpOworICAgIGRvdWJsZSBwcm9ncmVzcyA9ICpzdGF0aWNfY2FzdDxkb3VibGUq
PihldmVudEluZm8pOworCisgICAgdGVzdC0+c2V0TG9hZFByb2dyZXNzKHByb2dyZXNzKTsKK30K
KworRVdLMlVuaXRUZXN0QmFzZTo6RVdLMlVuaXRUZXN0QmFzZSgpCisgICAgOiBtX2xvYWRQcm9n
cmVzcygwKQorICAgICwgbV9lY29yZUV2YXMoMCkKKyAgICAsIG1fd2ViVmlldygwKQoreworfQor
Cit2b2lkIEVXSzJVbml0VGVzdEJhc2U6OlNldFVwKCkKK3sKKyAgICBBU1NFUlRfR1QoZWNvcmVf
ZXZhc19pbml0KCksIDApOworCisgICAgdW5zaWduZWQgaW50IHdpZHRoID0gZW52aXJvbm1lbnQt
PmRlZmF1bHRXaWR0aCgpOworICAgIHVuc2lnbmVkIGludCBoZWlnaHQgPSBlbnZpcm9ubWVudC0+
ZGVmYXVsdEhlaWdodCgpOworCisgICAgaWYgKGVudmlyb25tZW50LT51c2VYMTFXaW5kb3coKSkK
KyAgICAgICAgbV9lY29yZUV2YXMgPSBlY29yZV9ldmFzX25ldygwLCAwLCAwLCB3aWR0aCwgaGVp
Z2h0LCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWNvcmVFdmFzID0gZWNvcmVfZXZhc19idWZm
ZXJfbmV3KHdpZHRoLCBoZWlnaHQpOworCisgICAgZWNvcmVfZXZhc19zaG93KG1fZWNvcmVFdmFz
KTsKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMpOworCisgICAg
bV93ZWJWaWV3ID0gZXdrX3ZpZXdfYWRkKGV2YXMpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSht
X3dlYlZpZXcsIHdpZHRoLCBoZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Nob3cobV93ZWJWaWV3
KTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQobV93ZWJWaWV3LCB0cnVlKTsKK30KKwordm9p
ZCBFV0syVW5pdFRlc3RCYXNlOjpUZWFyRG93bigpCit7CisgICAgZXZhc19vYmplY3RfZGVsKG1f
d2ViVmlldyk7CisgICAgZWNvcmVfZXZhc19mcmVlKG1fZWNvcmVFdmFzKTsKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7Cit9CisKK3ZvaWQgRVdLMlVuaXRUZXN0QmFzZTo6bG9hZFVybFN5bmMo
Y29uc3QgY2hhciogdXJsKQoreworICAgIG1fbG9hZFByb2dyZXNzID0gMDsKKworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtX3dlYlZpZXcsICJsb2FkLHByb2dyZXNzIiwgb25M
b2FkUHJvZ3Jlc3MsIHRoaXMpOworICAgIGV3a192aWV3X3VyaV9zZXQobV93ZWJWaWV3LCB1cmwp
OworCisgICAgd2hpbGUgKG1fbG9hZFByb2dyZXNzICE9IDEpCisgICAgICAgIGVjb3JlX21haW5f
bG9vcF9pdGVyYXRlKCk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwobV93
ZWJWaWV3LCAibG9hZCxwcm9ncmVzcyIsIG9uTG9hZFByb2dyZXNzKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgRVdLMlVuaXRUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc5NDY4ODE0MGQ3ZDJiZjkyODVhNzNmNDQ4M2FhMjk2ZTFhNjJh
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaApAQCAtMCwwICsxLDUxIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcgVVNBCisqLworCisjaWZuZGVmIEVXSzJVbml0VGVzdEJhc2VfaAorI2RlZmluZSBFV0sy
VW5pdFRlc3RCYXNlX2gKKworI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFdmFz
Lmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7
CisKK2NsYXNzIEVXSzJVbml0VGVzdEJhc2UgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK3B1
YmxpYzoKKyAgICB2b2lkIHNldExvYWRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgeyBtX2xvYWRQ
cm9ncmVzcyA9IHByb2dyZXNzOyB9CisgICAgRXZhc19PYmplY3QqIHdlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KKworcHJvdGVjdGVkOgorICAgIEVXSzJVbml0VGVzdEJhc2UoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpOworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpOwor
CisgICAgdm9pZCBsb2FkVXJsU3luYyhjb25zdCBjaGFyKiB1cmwpOworCitwcml2YXRlOgorICAg
IEV2YXNfT2JqZWN0KiBtX3dlYlZpZXc7CisgICAgRWNvcmVfRXZhcyogbV9lY29yZUV2YXM7CisK
KyAgICBmbG9hdCBtX2xvYWRQcm9ncmVzczsKK307CisKK30gLy8gbmFtZXNwYWNlIEVXSzJVbml0
VGVzdAorCisjZW5kaWYgLy8gRVdLMlVuaXRUZXN0QmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYx
Y2I1M2UwZmFiNmE0ZmViMDRmNTlmYzAyMWQ4MDBlYWFhMzUzMzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9Vbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQuaCIKKworbmFtZXNwYWNlIEVXSzJVbml0VGVzdCB7CisKK0VXSzJVbml0VGVzdEVudmlyb25t
ZW50OjpFV0syVW5pdFRlc3RFbnZpcm9ubWVudChib29sIHVzZVgxMVdpbmRvdykKKyAgICA6IG1f
ZGVmYXVsdFdpZHRoKDgwMCkKKyAgICAsIG1fZGVmYXVsdEhlaWdodCg2MDApCisgICAgLCBtX3Vz
ZVgxMVdpbmRvdyh1c2VYMTFXaW5kb3cpCit7Cit9CisKK2NvbnN0IGNoYXIqIEVXSzJVbml0VGVz
dEVudmlyb25tZW50OjpkZWZhdWx0VGVzdFBhZ2VVcmwoKSBjb25zdAoreworICAgIHJldHVybiAi
ZmlsZTovLyJURVNUX1JFU09VUkNFU19ESVIiL2RlZmF1bHRfdGVzdF9wYWdlLmh0bWwiOworfQor
Cit9IC8vIG5hbWVzcGFjZSBFV0syVW5pdFRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0
VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTA3NmJlYTBkNzRk
MDU0NzkzNDY3NmI4M2FlY2ExZTc4ZTllNjBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RF
bnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg
dGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisq
LworCisjaWZuZGVmIEVXSzJVbml0VGVzdEVudmlyb25tZW50X2gKKyNkZWZpbmUgRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNl
IEVXSzJVbml0VGVzdCB7CisKK2NsYXNzIEVXSzJVbml0VGVzdEVudmlyb25tZW50IDogcHVibGlj
IDo6dGVzdGluZzo6RW52aXJvbm1lbnQgeworcHVibGljOgorICAgIEVXSzJVbml0VGVzdEVudmly
b25tZW50KGJvb2wgdXNlWDExV2luZG93KTsKKworICAgIGJvb2wgdXNlWDExV2luZG93KCkgY29u
c3QgeyByZXR1cm4gbV91c2VYMTFXaW5kb3c7IH0KKyAgICBjb25zdCBjaGFyKiBkZWZhdWx0VGVz
dFBhZ2VVcmwoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGRlZmF1bHRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFdpZHRoOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBpbnQgZGVmYXVsdEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdEhlaWdodDsgfQor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkIGludCBtX2RlZmF1bHRXaWR0aDsKKyAgICB1bnNpZ25l
ZCBpbnQgbV9kZWZhdWx0SGVpZ2h0OworCisgICAgYm9vbCBtX3VzZVgxMVdpbmRvdzsKK307CisK
K30gLy8gbmFtZXNwYWNlIEVXSzJVbml0VGVzdAorCisjZW5kaWYgLy8gRVdLMlVuaXRUZXN0RW52
aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDZlOWMwNjlhMmUxZTIwODJlOTZlMWFiNTY5YmFkMDVmMmE3MzA4Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L1VuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0TWFpbi5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwK
KyAgICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x
MzA3IFVTQQorKi8KKworI2luY2x1ZGUgIkVXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJF
V0syVW5pdFRlc3RFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK0VXSzJV
bml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudCA9IDA7CisKK3N0YXRpYyBib29sIHBhcnNl
QXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBpbnQgdXNlWDExV2luZG93
ID0gMDsKKworICAgIHN0YXRpYyBjb25zdCBvcHRpb24gb3B0aW9uc1tdID0geworICAgICAgICB7
InVzZVgxMVdpbmRvdyIsIG5vX2FyZ3VtZW50LCAmdXNlWDExV2luZG93LCAxfSwKKyAgICAgICAg
ezAsIDAsIDAsIDB9CisgICAgfTsKKworICAgIHdoaWxlIChnZXRvcHRfbG9uZyhhcmdjLCBhcmd2
LCAiIiwgb3B0aW9ucywgMCkgIT0gLTEpIHsgfQorCisgICAgcmV0dXJuIHVzZVgxMVdpbmRvdzsK
K30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGJvb2wgdXNlWDEx
V2luZG93ID0gcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndik7CisKKyAgICA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKKworICAgIGVudmlyb25tZW50ID0gbmV3IEVXSzJV
bml0VGVzdEVudmlyb25tZW50KHVzZVgxMVdpbmRvdyk7CisgICAgdGVzdGluZzo6QWRkR2xvYmFs
VGVzdEVudmlyb25tZW50KGVudmlyb25tZW50KTsKKworICAgIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy9yZXNvdXJjZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9kZWZhdWx0X3Rlc3RfcGFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVkZDgxZTczMjNjZTgwZDZmMGMzMTFjOTRiODdkNDAzNTE1ZGQyZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJj
ZXMvZGVmYXVsdF90ZXN0X3BhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxIVE1MPgorPEJPRFk+
Cis8SDIgYWxpZ249ImNlbnRlciI+RUZMIFVuaXQgVGVzdHM8L0gyPgorPEgyIGFsaWduPSJjZW50
ZXIiPkRlZmF1bHQgVGVzdGluZyBXZWIgUGFnZTwvSDI+Cis8L0JPRFk+Cis8L0hUTUw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfdmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVlMTM0ZDM1ZDUwOGQ1MGFlNzE3N2U4ZDgzZjc1MmNj
ZTYzNmIzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT
ZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNB
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVu
dmlyb25tZW50LmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRU
ZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwg
ZXdrX3ZpZXdfdXJpX2dldCkKK3sKKyAgICBsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+ZGVmYXVs
dFRlc3RQYWdlVXJsKCkpOworICAgIEVYUEVDVF9TVFJFUShld2tfdmlld191cmlfZ2V0KHdlYlZp
ZXcoKSksIGVudmlyb25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwoKSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>