<?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>109980</bug_id>
          
          <creation_ts>2013-02-15 15:59:54 -0800</creation_ts>
          <short_desc>[WK2] Calls to WKPageLoadURL() when WebProcess was terminated may fail</short_desc>
          <delta_ts>2013-04-15 18:14:39 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>109842</dependson>
          <blocked>110743</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Adenilson Cavalcanti Silva">savagobr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834437</commentid>
    <comment_count>0</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-15 15:59:54 -0800</bug_when>
    <thetext>Steps:
- load a page with WKPageLoadURL()
- kill WebProcess with WKPageTerminate()
- try loading a page using again WKPageLoadURL()

The expected result would be WebProcess being re-created and page loading succeed. But in a test, it fails to re-create WebProcess and thus loading the page.

This sounds like a good opportunity to create a new test to stress the following scenarios:
a) Load -&gt; Crash -&gt; Load
b) Load -&gt; Crash -&gt; Load (but from the crash handler)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835841</commentid>
    <comment_count>1</comment_count>
      <attachid>188966</attachid>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-18 17:10:52 -0800</bug_when>
    <thetext>Created attachment 188966
First version (not for commit, tests are timing out ATM)

Not for commit, tests are timing out ATM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835883</commentid>
    <comment_count>2</comment_count>
      <attachid>188966</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-18 18:32:45 -0800</bug_when>
    <thetext>Comment on attachment 188966
First version (not for commit, tests are timing out ATM)

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:39
&gt; +

No need for the blank line.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:97
&gt; +void didCrash(WKPageRef page, const void* clientInfo)
&gt; +{
&gt; +    WebKit2CrashLoader* testHelper = const_cast&lt;WebKit2CrashLoader*&gt;(static_cast&lt;const WebKit2CrashLoader*&gt;(clientInfo));
&gt; +
&gt; +    // On second crash, we try to load from the crash handler.
&gt; +    EXPECT_TRUE(testHelper-&gt;firstSuccessfulLoad);
&gt; +    testHelper-&gt;loadUrl();
&gt; +}

I would move this definition to just above LoadPageOnCrashHandler.
This would reduce the span between definition and usage.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:99
&gt; +TEST_F(WebKit2CrashLoader, LoadPageAfterCrash)

I am not a fan of TEST_F. I&apos;d prefer something explicit with less GoogleTest magic.

The test case name should also be strictly WebKit2 in order to easily select tests for running.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:110
&gt; +TEST_F(WebKit2CrashLoader, LoadPageOnCrashHandler)

LoadPageInCrashHandler?

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:118
&gt; +{
&gt; +    // We install a crash handler, it should load a page.
&gt; +    loaderClient.processDidCrash = didCrash;
&gt; +    loadUrl();
&gt; +    Util::run(&amp;firstSuccessfulLoad);
&gt; +    crashWebProcess();
&gt; +    Util::run(&amp;secondSuccessfulLoad);
&gt; +}

This tests requires a bit more comments. It is not obvious how the test work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836638</commentid>
    <comment_count>3</comment_count>
      <attachid>189135</attachid>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-19 12:09:58 -0800</bug_when>
    <thetext>Created attachment 189135
Changes: comments, empty line, no longer using gtest magick.

Implemented reviewer&apos;s suggestions. The tests are timing out (not sure if the bug is in the tests itself or in WK2).

After the first load succeeded, next page load will fail and WebProcess won&apos;t be re-created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836721</commentid>
    <comment_count>4</comment_count>
      <attachid>189135</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-19 13:28:45 -0800</bug_when>
    <thetext>Comment on attachment 189135
Changes: comments, empty line, no longer using gtest magick.

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:92
&gt; +// First test will load a blank page and next kill WebProcess, the expected
&gt; +// result is that a call to page load should spawn a new WebProcess.

You should say &quot;This test&quot; instead of &quot;First test&quot;.
Rationale:
-If someone add a test in this file, the comments get out of date.
-We should not imply there is an order of testing. Testing the test in any order should be the same.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:103
&gt; +// Crash handler, used only by the second test.

&quot;the second test&quot; -&gt; LoadPageInCrashHandler

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:108
&gt; +    // In the second test, we try to load from the crash handler.

ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp:113
&gt; +// This is similar to the first test (i.e. we will load a page and

&quot;the first test&quot;-&gt;LoadPageAfterCrash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839963</commentid>
    <comment_count>5</comment_count>
      <attachid>189826</attachid>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-22 14:18:37 -0800</bug_when>
    <thetext>Created attachment 189826
Fixes on comments

Fixes on comments, not to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840234</commentid>
    <comment_count>6</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-22 18:35:59 -0800</bug_when>
    <thetext>I think I figured it out what is happening. What would be expected is:

terminateProcess() --&gt; loadURL() --&gt; reattachtoWebProcess()

But what really is happening:

terminateProcess() --&gt; loadURL() --&gt; processDidCrash()


At the time that loadURL() is executed, the teardown of WebProcess is not completed yet (i.e. processDidCrash() hasn&apos;t executed).

While loading a URL, the test for the state of webProcess  is done calling isValid() that will return true (after all, it is set to false only at a later stage in processDidCrash()).

Simply forcing the execution of reattachToWebProcess() is not a solution, because execution flow will eventually return to processDidCrash(). Plus, it would fail in several points thanks to the fact that there is already associated receivers to the webProcess data structures.

I see at least 2 ways to deal with this scenario:

a) Have a flag to mark that we are in a undefined state (i.e. between terminateProcess() and processDidCrash(). That could be used by loadURL() to decide if/when to reattachToWebProcess() and later used by processDidCrash() to change the execution flow.

b) Move some (or most) of the teardown code in processDidCrash() to terminateProcess(). Not sure about the deep consequences of this (i.e. how long does it take to close connections, kill processes, etc) and how that would impact UIProcess.


Any ideas about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840246</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-22 18:53:28 -0800</bug_when>
    <thetext>Interesting findings.

Having terminateProcess() perform all the necessary cleaning before getting processDidCrash() seems reasonable to me.
Alexey, do you foresee any problem with this?

The good news is that should not affect users. The bad news is, it will make testing a pain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840365</commentid>
    <comment_count>8</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-23 06:51:24 -0800</bug_when>
    <thetext>Maybe an alternative would be to move the code in processDidCrash() to a private function (i.e. processTearDown()) and have it be called by loadURL() if we are in the undefined state.

It could use a flag to know the state (i.e. m_isAboutToCrash) that is set at terminateProcess() exit.

In normal cases, it would work like:
a) terminateProcess() sets flag to true
b) processDidCrash() reset flag and calls processTearDown().


And in the case stressed by the test:
a) terminateProcess() sets the flag to true; 
b) loadURL() tests for the flag and calls processTearDown() so reattachToWebprocess() will work fine
c) processDidCrash() tests for the flag and returns after reseting it (and will *not need* to call processTearDown())

What you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840366</commentid>
    <comment_count>9</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-23 06:56:02 -0800</bug_when>
    <thetext>I forgot to comment that at &apos;b&apos; step (i.e. loadURL()), if we are in the undefined state, after calling processTearDown(), it will reset the control flag.

Otherwise, processDidCrash() won&apos;t be able to know if it can avoid calling processTearDown().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840466</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-23 14:50:19 -0800</bug_when>
    <thetext>I think that processDidCrash() should not be called after WKPageTerminate(), simply because there is no crash. WKPageTerminate() should perform all necessary cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840844</commentid>
    <comment_count>11</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-25 03:33:08 -0800</bug_when>
    <thetext>Opening bug #110743 for writing the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840845</commentid>
    <comment_count>12</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-02-25 03:36:32 -0800</bug_when>
    <thetext>Alexey

We can change the code to not execute processDidCrash() at calls to terminateProcess().

But, it still needs access to a way for cleaning up WebProcess associated resources, as it will be executed when the process indeed crashed (but was not terminated by a API call). i.e. kill -9 $(pidof WebProcess)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876191</commentid>
    <comment_count>13</comment_count>
    <who name="Adenilson Cavalcanti Silva">savagobr</who>
    <bug_when>2013-04-15 18:14:39 -0700</bug_when>
    <thetext>This test was used in the final patch of issue 110743 (landed in revision 148312).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188966</attachid>
            <date>2013-02-18 17:10:52 -0800</date>
            <delta_ts>2013-02-19 12:09:58 -0800</delta_ts>
            <desc>First version (not for commit, tests are timing out ATM)</desc>
            <filename>0001-load-crash.patch</filename>
            <type>text/plain</type>
            <size>12523</size>
            <attacher name="Adenilson Cavalcanti Silva">savagobr</attacher>
            
              <data encoding="base64">RnJvbSBmOGFkNTM0YzIyOTQ3ODdjMzhhYmM3YWQ1OTcyZDc3ZDExYTA3MDFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVuaWxzb24gQ2F2YWxjYW50aSA8Y2F2YWxjYW50aWlAZ21h
aWwuY29tPgpEYXRlOiBNb24sIDE4IEZlYiAyMDEzIDIyOjAzOjEyIC0wMzAwClN1YmplY3Q6IFtQ
QVRDSF0gQWRkaW5nIGEgbmV3IHRlc3Qgc3VpdGUgd2l0aCAyIHRlc3RzIGZvciBzdHJlc3Npbmcg
bG9hZGluZwogb24gV2ViUHJvY2VzcyBjcmFzaC4KClNpZ25lZC1vZmYtYnk6IEFkZW5pbHNvbiBD
YXZhbGNhbnRpIDxjYXZhbGNhbnRpaUBnbWFpbC5jb20+Ci0tLQogVG9vbHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsrKysrCiBUb29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8ICAgIDEgKwogVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZSAgICAgICAgICAgICAgfCAgICAxICsKIC4u
Li9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgIHwgICAgNCAr
CiAuLi4vVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3BwICAgICAgICAgICAgICB8ICAx
MjEgKysrKysrKysrKysrKysrKysrKysKIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XZWJLaXQyLnBybyAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRp
b25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3BwCgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ3ZmY0NmYuLjlhNzE0MDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxMy0wMi0xOCAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dLMl0gQ2FsbHMgdG8gV0tQYWdlTG9hZFVSTCgpIHdoZW4g
V2ViUHJvY2VzcyB3YXMgdGVybWluYXRlZCBtYXkgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTgwCisKKyAgICAgICAgQWRkaW5nIGEgbmV3
IHRlc3Qgc3VpdGUgdG8gY2hlY2sgaWYgbG9hZGluZyBhIHBhZ2UganVzdCBhZnRlciAKKyAgICAg
ICAgV2ViUHJvY2VzcyBoYXMgY3Jhc2hlZCAob3Igd2FzIHRlcm1pbmF0ZWQpIHdvcmtzLiAKKwor
ICAgICAgICBUaGlzIHN1aXRlIGhhcyAyIHRlc3RzLCBvbmUgdGhhdCB3aWxsIGV4ZWN1dGUgc3Rl
cHMgKExvYWQsIENyYXNoLCBMb2FkKQorICAgICAgICB3aXRoaW4gdGhlIHRlc3QgZnVuY3Rpb24g
YW5kIG90aGVyIHRoYXQgd2lsbCBleGVjdXRlIExvYWQgYXQgdGhlIAorICAgICAgICBjcmFzaCBo
YW5kbGVyIGZ1bmN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3BwOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoV2ViS2l0MkNyYXNoTG9hZGVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OldlYktpdDJDcmFzaExvYWRlcjo6V2ViS2l0MkNyYXNoTG9hZGVyKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJDcmFzaExvYWRlcjo6bG9hZFVybCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyQ3Jhc2hMb2FkZXI6OmNyYXNoV2ViUHJvY2Vz
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmRpZENyYXNoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYktpdDIucHJvOgorCiAy
MDEzLTAyLTE4ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA3ZDc2NWU0Li4yNGEzNGQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAg
LTE1MSw2ICsxNTEsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJLaXQyX1NPVVJD
RVMgPSBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAgXAogCVRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3Rv
cnlVUkwuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZENhbmNl
bGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0xvYWRQYWdlT25DcmFzaC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1JlbG9hZFBhZ2VBZnRlckNyYXNoLmNwcCBcCiAJVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Jlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIFwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDNiY2I4OWIuLmY0MzUyNmMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjcsNiArNjcsNyBAQCBzZXQo
dGVzdF93ZWJraXQyX2FwaV9CSU5BUklFUwogICAgIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrV2lucwogICAgIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5v
bkRpcmVjdG9yeVVSTAogICAgIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjawor
ICAgIExvYWRQYWdlT25DcmFzaAogICAgIE1vdXNlTW92ZUFmdGVyQ3Jhc2gKICAgICBSZWxvYWRQ
YWdlQWZ0ZXJDcmFzaAogICAgIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2UyYmQwMi4uMDIxZDQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTkwLDYgKzkwLDcgQEAKIAkJODFCNTAxOTMxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFC
NTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovOyB9OwogCQk4QTJD
NzUwRTE2Q0VEOTU1MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTJDNzUwRDE2Q0VEOTU1
MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi87IH07CiAJCThBM0FGOTNC
MTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTNBRjkzQTE2QzlFRDI3MDBEMjQ4
QzEgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwICovOyB9OworCQk4QUEyOEMxQTE2RDJGQTdC
MDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBQTI4QzE5MTZEMkZBN0IwMDJGRjREQiAvKiBMb2FkUGFn
ZU9uQ3Jhc2guY3BwICovOyB9OwogCQk5MzBBRDQwMjE1MDY5OEQwMDA2Nzk3MEYgLyogbG90cy1v
Zi10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMwQUQ0MDExNTA2OThCMzAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sICov
OyB9OwogCQk5MzE4Nzc4OTE1RUVDNTc3MDBBOUNDRTMgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9ySW1hZ2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUY0RUNBMTUwNkYwMzUwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwICovOyB9OwogCQk5MzYxMDAyOTE0REM5NUE3MDA2
MTM3OUQgLyogbG90cy1vZi1pZnJhbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlEIC8qIGxv
dHMtb2YtaWZyYW1lcy5odG1sICovOyB9OwpAQCAtMzUxLDYgKzM1Miw3IEBACiAJCTgxQjUwMTky
MTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ0J1aWxkZXIuY3BwOyBwYXRoID0gV1RGL1N0cmluZ0J1
aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTJDNzUwRDE2Q0VEOTU1
MDAyNEYzNTIgLyogUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBh
Z2VBZnRlckNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bG9hZFBhZ2VBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEFB
MjhDMTkxNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkUGFnZU9uQ3Jhc2guY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogVGVzdFdlYktp
dEFQSSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gVGVz
dFdlYktpdEFQSTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMwQUQ0
MDExNTA2OThCMzAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImxvdHMtb2YtdGV4dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtaWZyYW1lcy5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MCw2ICs2NTIsNyBAQAogCQkJCTUyQ0I0NzQwMTQ0
OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlV
UkwuY3BwICovLAogCQkJCTMzREM4OTEwMTQxOTUzQTMwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWRO
b1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwICovLAogCQkJCTMzREM4OTEzMTQxOTU3OUYwMDc0
N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcCAq
LywKKwkJCQk4QUEyOEMxOTE2RDJGQTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAq
LywKIAkJCQkzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5j
cHAgKi8sCiAJCQkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jh
c2hfQnVuZGxlLmNwcCAqLywKIAkJCQk5M0YxREIzMDE0REEyMDc2MDAyNEMzNjIgLyogTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCAqLywKQEAgLTEwMjMsNiArMTAyNiw3IEBACiAJ
CQkJMjYzMDBCMTgxNjc1NUNEOTAwNjY4ODZEIC8qIExpc3RIYXNoU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEQzg5MTEx
NDE5NTNBMzAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk4QUEyOEMxQTE2RDJGQTdCMDAyRkY0REIgLyogTG9hZFBh
Z2VPbkNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI0MDM5RjlEMTVFNkQ4QjMwMDcyNTVE
NiAvKiBNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTQ5N0I0MTU4NTdGMEMw
MEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyMjBEQTAxNTVC
MjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvTG9hZFBhZ2VPbkNyYXNoLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA1OTVkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTG9hZFBhZ2VPbkNyYXNoLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBZGVuaWxzb24gQ2F2YWxjYW50aSA8Y2F2YWxjYW50aWlA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRl
ICJUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWQoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKTsKK3N0YXRpYyB2b2lkIGRpZENyYXNo
KFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopOworCitjbGFzcyBXZWJLaXQyQ3Jhc2hMb2FkZXIgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisKKyAgICBXZWJLaXQyQ3Jhc2hMb2FkZXIo
KQorICAgICAgICA6IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpCisgICAgICAg
ICwgd2ViVmlldyhjb250ZXh0LmdldCgpKQorICAgICAgICAsIHVybChhZG9wdFdLKFdLVVJMQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJhYm91dDpibGFuayIpKSkKKyAgICAgICAgLCBmaXJzdFN1Y2Nl
c3NmdWxMb2FkKGZhbHNlKQorICAgICAgICAsIHNlY29uZFN1Y2Nlc3NmdWxMb2FkKGZhbHNlKQor
ICAgIHsKKyAgICAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKKyAgICAgICAgbG9hZGVyQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgICAgICBs
b2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZDsKKyAgICAg
ICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVu
dCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkVXJsKCkKKyAgICB7CisgICAgICAgIFdLUGFnZUxv
YWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisgICAgfQorCisgICAgdm9pZCBjcmFz
aFdlYlByb2Nlc3MoKQorICAgIHsKKyAgICAgICAgV0tQYWdlVGVybWluYXRlKHdlYlZpZXcucGFn
ZSgpKTsKKyAgICB9CisKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQ7Cisg
ICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldzsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsOworCisgICAgYm9vbCBmaXJz
dFN1Y2Nlc3NmdWxMb2FkOworICAgIGJvb2wgc2Vjb25kU3VjY2Vzc2Z1bExvYWQ7Cit9OworCit2
b2lkIGRpZEZpbmlzaExvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXZWJLaXQyQ3Jh
c2hMb2FkZXIqIHRlc3RIZWxwZXIgPSBjb25zdF9jYXN0PFdlYktpdDJDcmFzaExvYWRlcio+KHN0
YXRpY19jYXN0PGNvbnN0IFdlYktpdDJDcmFzaExvYWRlcio+KGNsaWVudEluZm8pKTsKKworICAg
IC8vIEZpcnN0IGxvYWQgd29ya2VkLCBsZXQncyBjcmFzaCBXZWJQcm9jZXNzLgorICAgIGlmICgh
dGVzdEhlbHBlci0+Zmlyc3RTdWNjZXNzZnVsTG9hZCkgeworICAgICAgICB0ZXN0SGVscGVyLT5m
aXJzdFN1Y2Nlc3NmdWxMb2FkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIFNlY29uZCBsb2FkIHdvcmtlZCwgd2UgYXJlIGRvbmUuCisgICAgRVhQRUNUX1RSVUUodGVz
dEhlbHBlci0+Zmlyc3RTdWNjZXNzZnVsTG9hZCk7CisgICAgaWYgKCF0ZXN0SGVscGVyLT5zZWNv
bmRTdWNjZXNzZnVsTG9hZCkgeworICAgICAgICB0ZXN0SGVscGVyLT5zZWNvbmRTdWNjZXNzZnVs
TG9hZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgZGlkQ3Jhc2go
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV2ViS2l0MkNy
YXNoTG9hZGVyKiB0ZXN0SGVscGVyID0gY29uc3RfY2FzdDxXZWJLaXQyQ3Jhc2hMb2FkZXIqPihz
dGF0aWNfY2FzdDxjb25zdCBXZWJLaXQyQ3Jhc2hMb2FkZXIqPihjbGllbnRJbmZvKSk7CisKKyAg
ICAvLyBPbiBzZWNvbmQgY3Jhc2gsIHdlIHRyeSB0byBsb2FkIGZyb20gdGhlIGNyYXNoIGhhbmRs
ZXIuCisgICAgRVhQRUNUX1RSVUUodGVzdEhlbHBlci0+Zmlyc3RTdWNjZXNzZnVsTG9hZCk7Cisg
ICAgdGVzdEhlbHBlci0+bG9hZFVybCgpOworfQorCitURVNUX0YoV2ViS2l0MkNyYXNoTG9hZGVy
LCBMb2FkUGFnZUFmdGVyQ3Jhc2gpCit7CisgICAgLy8gTG9hZCBhIGJsYW5rIHBhZ2UgYW5kIG5l
eHQga2lsbHMgV2ViUHJvY2VzcywgYSBjYWxsIHRvCisgICAgLy8gbG9hZCBzaG91bGQgc3Bhd24g
YSBXZWJQcm9jZXNzLgorICAgIGxvYWRVcmwoKTsKKyAgICBVdGlsOjpydW4oJmZpcnN0U3VjY2Vz
c2Z1bExvYWQpOworICAgIGNyYXNoV2ViUHJvY2VzcygpOworICAgIGxvYWRVcmwoKTsKKyAgICBV
dGlsOjpydW4oJnNlY29uZFN1Y2Nlc3NmdWxMb2FkKTsKK30KKworVEVTVF9GKFdlYktpdDJDcmFz
aExvYWRlciwgTG9hZFBhZ2VPbkNyYXNoSGFuZGxlcikKK3sKKyAgICAvLyBXZSBpbnN0YWxsIGEg
Y3Jhc2ggaGFuZGxlciwgaXQgc2hvdWxkIGxvYWQgYSBwYWdlLgorICAgIGxvYWRlckNsaWVudC5w
cm9jZXNzRGlkQ3Jhc2ggPSBkaWRDcmFzaDsKKyAgICBsb2FkVXJsKCk7CisgICAgVXRpbDo6cnVu
KCZmaXJzdFN1Y2Nlc3NmdWxMb2FkKTsKKyAgICBjcmFzaFdlYlByb2Nlc3MoKTsKKyAgICBVdGls
OjpydW4oJnNlY29uZFN1Y2Nlc3NmdWxMb2FkKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
V2ViS2l0Mi5wcm8gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViS2l0Mi5w
cm8KaW5kZXggOTQ1MmE1YS4uMWQwNjM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMTksNiArMTksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwIFwK
ICAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIFwKICAg
ICBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwIFwKKyAgICBMb2FkUGFn
ZU9uQ3Jhc2guY3BwIFwKICAgICBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBcCiAgICAgUGFnZUxv
YWRCYXNpYy5jcHAgXAogICAgIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9y
RnJhbWUuY3BwIFwKLS0gCjEuNy43LjUgKEFwcGxlIEdpdC0yNikKCg==
</data>
<flag name="review"
          id="209225"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189135</attachid>
            <date>2013-02-19 12:09:58 -0800</date>
            <delta_ts>2013-02-19 13:28:45 -0800</delta_ts>
            <desc>Changes: comments, empty line, no longer using gtest magick.</desc>
            <filename>0002-load-crash-tests.patch</filename>
            <type>text/plain</type>
            <size>12921</size>
            <attacher name="Adenilson Cavalcanti Silva">savagobr</attacher>
            
              <data encoding="base64">RnJvbSAzYTczZjU5NzdmMTc0MDYzNjA1MmZmOTViNjg1OTI3M2I0MmZiZDBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVuaWxzb24gQ2F2YWxjYW50aSA8Y2F2YWxjYW50aWlAZ21h
aWwuY29tPgpEYXRlOiBUdWUsIDE5IEZlYiAyMDEzIDE3OjAyOjI2IC0wMzAwClN1YmplY3Q6IFtQ
QVRDSF0gUGF0Y2ggd2l0aCBuZXcgQ0wgYW5kIHdpdGggcmV2aWV3ZXIncyBzdWdnZXN0ZWQgY2hh
bmdlcy4KClNpZ25lZC1vZmYtYnk6IEFkZW5pbHNvbiBDYXZhbGNhbnRpIDxjYXZhbGNhbnRpaUBn
bWFpbC5jb20+Ci0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDI4ICsrKysrCiBUb29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZSAgICAgICAgICAgICAgfCAgICAxICsKIC4uLi9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogICAgICAgIHwgICAgNCArCiAuLi4vVGVzdHMvV2ViS2l0Mi9Mb2Fk
UGFnZU9uQ3Jhc2guY3BwICAgICAgICAgICAgICB8ICAxMjcgKysrKysrKysrKysrKysrKysrKysK
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJLaXQyLnBybyAgICAgIHwgICAg
MSArCiA2IGZpbGVzIGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2Fk
UGFnZU9uQ3Jhc2guY3BwCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGQ3ZmY0NmYuLjEwNGYwNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wMi0xOSAgQWRl
bmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dL
Ml0gQ2FsbHMgdG8gV0tQYWdlTG9hZFVSTCgpIHdoZW4gV2ViUHJvY2VzcyB3YXMgdGVybWluYXRl
ZCBtYXkgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA5OTgwCisKKyAgICAgICAgQWRkaW5nIGEgbmV3IHRlc3QgZmlsZSB0byBjaGVjayBpZiBs
b2FkaW5nIGEgcGFnZSBqdXN0IGFmdGVyCisgICAgICAgIFdlYlByb2Nlc3MgaGFzIGNyYXNoZWQg
KG9yIHdhcyB0ZXJtaW5hdGVkKSB3b3Jrcy4KKworICAgICAgICBUaGlzIGZpbGUgaGFzIDIgdGVz
dHMsIG9uZSB0aGF0IHdpbGwgZXhlY3V0ZSBzdGVwcyAoTG9hZCwgQ3Jhc2gsIExvYWQpCisgICAg
ICAgIHdpdGhpbiB0aGUgdGVzdCBmdW5jdGlvbiBhbmQgb3RoZXIgdGhhdCB3aWxsIGV4ZWN1dGUg
TG9hZCBhdCB0aGUKKyAgICAgICAgY3Jhc2ggaGFuZGxlciBmdW5jdGlvbi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05V
bWFrZWZpbGUuYW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZFBhZ2VP
bkNyYXNoLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFdl
YktpdDJDcmFzaExvYWRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyQ3Jhc2hM
b2FkZXI6OldlYktpdDJDcmFzaExvYWRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJL
aXQyQ3Jhc2hMb2FkZXI6OmxvYWRVcmwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0
MkNyYXNoTG9hZGVyOjpjcmFzaFdlYlByb2Nlc3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRpZENyYXNoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvV2ViS2l0Mi5wcm86CisKIDIwMTMtMDItMTggIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDdkNzY1ZTQuLjI0YTM0ZDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMTUxLDYgKzE1MSw3IEBAIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfVGVzdFdlYktpdDJfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tX
aW5zLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9Mb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3Bw
IFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZFBhZ2VPbkNyYXNoLmNw
cCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vdXNlTW92ZUFmdGVyQ3Jh
c2guY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVsb2FkUGFnZUFm
dGVyQ3Jhc2guY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzaXpl
V2luZG93QWZ0ZXJDcmFzaC5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggM2JjYjg5Yi4uZjQzNTI2YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC02Nyw2ICs2Nyw3IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCiAgICAg
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zCiAgICAgTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMCiAgICAgTG9hZENhbmNlbGVk
Tm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrCisgICAgTG9hZFBhZ2VPbkNyYXNoCiAgICAgTW91c2VN
b3ZlQWZ0ZXJDcmFzaAogICAgIFJlbG9hZFBhZ2VBZnRlckNyYXNoCiAgICAgUmVzaXplV2luZG93
QWZ0ZXJDcmFzaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZTJiZDAyLi4wMjFkNDI0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTAsNiArOTAsNyBAQAogCQk4MUI1MDE5MzE0MEYy
MzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5n
QnVpbGRlci5jcHAgKi87IH07CiAJCThBMkM3NTBFMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVX
aW5kb3dBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDhBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNy
YXNoLmNwcCAqLzsgfTsKIAkJOEEzQUY5M0IxNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VB
ZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAg
Ki87IH07CisJCThBQTI4QzFBMTZEMkZBN0IwMDJGRjREQiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFBMjhDMTkx
NkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi87IH07CiAJCTkzMEFENDAy
MTUwNjk4RDAwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3
MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi87IH07CiAJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5Q0NF
MyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0ExNTA2RjAzNTAw
N0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAgKi87
IH07CiAJCTkzNjEwMDI5MTREQzk1QTcwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYx
MDAyODE0REM5NTdCMDA2MTM3OUQgLyogbG90cy1vZi1pZnJhbWVzLmh0bWwgKi87IH07CkBAIC0z
NTEsNiArMzUyLDcgQEAKIAkJODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nQnVpbGRl
ci5jcHA7IHBhdGggPSBXVEYvU3RyaW5nQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThBMkM3NTBEMTZDRUQ5NTUwMDI0RjM1MiAvKiBSZXNpemVXaW5kb3dBZnRlckNy
YXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVdpbmRv
d0FmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QTNBRjkzQTE2
QzlFRDI3MDBEMjQ4QzEgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4QUEyOEMxOTE2RDJGQTdCMDAyRkY0REIgLyogTG9hZFBh
Z2VPbkNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRQ
YWdlT25DcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4
NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0QVBJICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBUZXN0V2ViS2l0QVBJOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10
ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90cy1vZi10ZXh0Lmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzYxMDAyODE0REM5NTdCMDA2MTM3OUQg
LyogbG90cy1vZi1pZnJhbWVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90
cy1vZi1pZnJhbWVzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjUwLDYg
KzY1Miw3IEBACiAJCQkJNTJDQjQ3NDAxNDQ4RkI5MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgKi8sCiAJCQkJMzNEQzg5MTAxNDE5NTNB
MzAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgKi8s
CiAJCQkJMzNEQzg5MTMxNDE5NTc5RjAwNzQ3RUY3IC8qIExvYWRDYW5jZWxlZE5vU2VydmVyUmVk
aXJlY3RDYWxsYmFja19CdW5kbGUuY3BwICovLAorCQkJCThBQTI4QzE5MTZEMkZBN0IwMDJGRjRE
QiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwICovLAogCQkJCTMzQkU1QUY0MTM3QjVBNkMwMDcwNTgx
MyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCAqLywKIAkJCQkzM0JFNUFGODEzN0I1QUFFMDA3
MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovLAogCQkJCTkzRjFEQjMw
MTREQTIwNzYwMDI0QzM2MiAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwICov
LApAQCAtMTAyMyw2ICsxMDI2LDcgQEAKIAkJCQkyNjMwMEIxODE2NzU1Q0Q5MDA2Njg4NkQgLyog
TGlzdEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJDQjQ3NDExNDQ4RkI5MzAwODcz
OTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzM0RDODkxMTE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVk
Tm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCThBQTI4QzFB
MTZEMkZBN0IwMDJGRjREQiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjQwMzlGOUQxNUU2RDhCMzAwNzI1NUQ2IC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0Q1NDk3QjQxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMTIyMERBMDE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNh
YmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRQYWdlT25DcmFzaC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiN2IyNQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2gu
Y3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkZW5pbHNv
biBDYXZhbGNhbnRpIDxjYXZhbGNhbnRpaUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQg
ZGlkRmluaXNoTG9hZChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCopOworc3RhdGljIHZvaWQgZGlkQ3Jhc2goV0tQYWdlUmVmLCBjb25zdCB2b2lkKik7CisKK2Ns
YXNzIFdlYktpdDJDcmFzaExvYWRlciB7CitwdWJsaWM6CisgICAgV2ViS2l0MkNyYXNoTG9hZGVy
KCkKKyAgICAgICAgOiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKQorICAgICAg
ICAsIHdlYlZpZXcoY29udGV4dC5nZXQoKSkKKyAgICAgICAgLCB1cmwoYWRvcHRXSyhXS1VSTENy
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWJvdXQ6YmxhbmsiKSkpCisgICAgICAgICwgZmlyc3RTdWNj
ZXNzZnVsTG9hZChmYWxzZSkKKyAgICAgICAgLCBzZWNvbmRTdWNjZXNzZnVsTG9hZChmYWxzZSkK
KyAgICB7CisgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xp
ZW50KSk7CisgICAgICAgIGxvYWRlckNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICAgICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWQ7CisgICAg
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGll
bnQpOworICAgIH0KKworICAgIHZvaWQgbG9hZFVybCgpCisgICAgeworICAgICAgICBXS1BhZ2VM
b2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgY3Jh
c2hXZWJQcm9jZXNzKCkKKyAgICB7CisgICAgICAgIFdLUGFnZVRlcm1pbmF0ZSh3ZWJWaWV3LnBh
Z2UoKSk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0Owor
ICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CisgICAgUGxhdGZvcm1XZWJWaWV3
IHdlYlZpZXc7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybDsKKworICAgIGJvb2wgZmly
c3RTdWNjZXNzZnVsTG9hZDsKKyAgICBib29sIHNlY29uZFN1Y2Nlc3NmdWxMb2FkOworfTsKKwor
Ly8gVGhpcyBpcyBzaGFyZWQgZm9yIGJvdGggdGVzdHMsIHNpbmNlIHdlIGFyZSBnb2luZyB0byBo
YXZlIDIgbG9hZCBldmVudHMKKy8vIGludGVydHdpbmVkIGJ5IGEgY3Jhc2ggKGkuZS4gTG9hZCAt
PiBDcmFzaCAtPiBMb2FkKS4KK3ZvaWQgZGlkRmluaXNoTG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIFdlYktpdDJDcmFzaExvYWRlciogdGVzdEhlbHBlciA9IGNvbnN0X2Nhc3Q8V2Vi
S2l0MkNyYXNoTG9hZGVyKj4oc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0MkNyYXNoTG9hZGVyKj4o
Y2xpZW50SW5mbykpOworCisgICAgLy8gRmlyc3QgbG9hZCB3b3JrZWQsIGxldCdzIGNyYXNoIFdl
YlByb2Nlc3MuCisgICAgaWYgKCF0ZXN0SGVscGVyLT5maXJzdFN1Y2Nlc3NmdWxMb2FkKSB7Cisg
ICAgICAgIHRlc3RIZWxwZXItPmZpcnN0U3VjY2Vzc2Z1bExvYWQgPSB0cnVlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gU2Vjb25kIGxvYWQgd29ya2VkLCB3ZSBhcmUgZG9uZS4K
KyAgICBFWFBFQ1RfVFJVRSh0ZXN0SGVscGVyLT5maXJzdFN1Y2Nlc3NmdWxMb2FkKTsKKyAgICBp
ZiAoIXRlc3RIZWxwZXItPnNlY29uZFN1Y2Nlc3NmdWxMb2FkKSB7CisgICAgICAgIHRlc3RIZWxw
ZXItPnNlY29uZFN1Y2Nlc3NmdWxMb2FkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKworLy8gRmlyc3QgdGVzdCB3aWxsIGxvYWQgYSBibGFuayBwYWdlIGFuZCBuZXh0IGtpbGwg
V2ViUHJvY2VzcywgdGhlIGV4cGVjdGVkCisvLyByZXN1bHQgaXMgdGhhdCBhIGNhbGwgdG8gcGFn
ZSBsb2FkIHNob3VsZCBzcGF3biBhIG5ldyBXZWJQcm9jZXNzLgorVEVTVChXZWJLaXQyLCBMb2Fk
UGFnZUFmdGVyQ3Jhc2gpCit7CisgICAgV2ViS2l0MkNyYXNoTG9hZGVyIGhlbHBlcjsKKyAgICBo
ZWxwZXIubG9hZFVybCgpOworICAgIFV0aWw6OnJ1bigmaGVscGVyLmZpcnN0U3VjY2Vzc2Z1bExv
YWQpOworICAgIGhlbHBlci5jcmFzaFdlYlByb2Nlc3MoKTsKKyAgICBoZWxwZXIubG9hZFVybCgp
OworICAgIFV0aWw6OnJ1bigmaGVscGVyLnNlY29uZFN1Y2Nlc3NmdWxMb2FkKTsKK30KKworLy8g
Q3Jhc2ggaGFuZGxlciwgdXNlZCBvbmx5IGJ5IHRoZSBzZWNvbmQgdGVzdC4KK3ZvaWQgZGlkQ3Jh
c2goV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV2ViS2l0
MkNyYXNoTG9hZGVyKiB0ZXN0SGVscGVyID0gY29uc3RfY2FzdDxXZWJLaXQyQ3Jhc2hMb2FkZXIq
PihzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXQyQ3Jhc2hMb2FkZXIqPihjbGllbnRJbmZvKSk7CisK
KyAgICAvLyBJbiB0aGUgc2Vjb25kIHRlc3QsIHdlIHRyeSB0byBsb2FkIGZyb20gdGhlIGNyYXNo
IGhhbmRsZXIuCisgICAgRVhQRUNUX1RSVUUodGVzdEhlbHBlci0+Zmlyc3RTdWNjZXNzZnVsTG9h
ZCk7CisgICAgdGVzdEhlbHBlci0+bG9hZFVybCgpOworfQorCisvLyBUaGlzIGlzIHNpbWlsYXIg
dG8gdGhlIGZpcnN0IHRlc3QgKGkuZS4gd2Ugd2lsbCBsb2FkIGEgcGFnZSBhbmQKKy8vIG5leHQg
a2lsbCBXZWJQcm9jZXNzKSwgYnV0IHRoaXMgdGltZSB0aGUgY2FsbCB0byBsb2FkIGEgcGFnZQor
Ly8gaXMgZG9uZSBpbiB0aGUgY3Jhc2ggaGFuZGxlciBmdW5jdGlvbi4KK1RFU1QoV2ViS2l0Miwg
TG9hZFBhZ2VJbkNyYXNoSGFuZGxlcikKK3sKKyAgICBXZWJLaXQyQ3Jhc2hMb2FkZXIgaGVscGVy
OworICAgIGhlbHBlci5sb2FkZXJDbGllbnQucHJvY2Vzc0RpZENyYXNoID0gZGlkQ3Jhc2g7Cisg
ICAgaGVscGVyLmxvYWRVcmwoKTsKKyAgICBVdGlsOjpydW4oJmhlbHBlci5maXJzdFN1Y2Nlc3Nm
dWxMb2FkKTsKKyAgICBoZWxwZXIuY3Jhc2hXZWJQcm9jZXNzKCk7CisgICAgVXRpbDo6cnVuKCZo
ZWxwZXIuc2Vjb25kU3VjY2Vzc2Z1bExvYWQpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9X
ZWJLaXQyLnBybyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJLaXQyLnBy
bwppbmRleCA5NDUyYTVhLi4xZDA2Mzc5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0xOSw2ICsxOSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAgXAog
ICAgIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgXAogICAg
IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgXAorICAgIExvYWRQYWdl
T25DcmFzaC5jcHAgXAogICAgIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwIFwKICAgICBQYWdlTG9h
ZEJhc2ljLmNwcCBcCiAgICAgUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JG
cmFtZS5jcHAgXAotLSAKMS43LjcuNSAoQXBwbGUgR2l0LTI2KQoK
</data>
<flag name="review"
          id="209445"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189826</attachid>
            <date>2013-02-22 14:18:37 -0800</date>
            <delta_ts>2013-02-22 14:27:09 -0800</delta_ts>
            <desc>Fixes on comments</desc>
            <filename>0003-load-crash-tests.patch</filename>
            <type>text/plain</type>
            <size>12837</size>
            <attacher name="Adenilson Cavalcanti Silva">savagobr</attacher>
            
              <data encoding="base64">RnJvbSA4MGU5OGViOTBmNWM0ODc5NTFmMDc5NDhhNjQ2ZjAzZWU4ZDAzNjc0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGVuaWxzb24gQ2F2YWxjYW50aSA8Y2F2YWxjYW50aWlAZ21h
aWwuY29tPgpEYXRlOiBGcmksIDIyIEZlYiAyMDEzIDE4OjEyOjI0IC0wNDAwClN1YmplY3Q6IFtQ
QVRDSF0gRml4ZXMgb24gY29tbWVudHMgcGVyIHJldmlld2VyJ3MgcmVxdWVzdC4KClNpZ25lZC1v
ZmYtYnk6IEFkZW5pbHNvbiBDYXZhbGNhbnRpIDxjYXZhbGNhbnRpaUBnbWFpbC5jb20+Ci0tLQog
VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4
ICsrKysrCiBUb29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZSAgICAgICAg
ICAgICAgfCAgICAxICsKIC4uLi9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogICAgICAgIHwgICAgNCArCiAuLi4vVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3Bw
ICAgICAgICAgICAgICB8ICAxMjUgKysrKysrKysrKysrKysrKysrKysKIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJLaXQyLnBybyAgICAgIHwgICAgMSArCiA2IGZpbGVzIGNo
YW5nZWQsIDE2MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRQYWdlT25DcmFzaC5jcHAKCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjc0NTczZi4uMmYwNDY2NyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMxIEBACisyMDEzLTAyLTIyICBBZGVuaWxzb24gQ2F2YWxjYW50aSAgPGNhdmFsY2FudGlp
QGdtYWlsLmNvbT4KKworICAgICAgICBbV0syXSBDYWxscyB0byBXS1BhZ2VMb2FkVVJMKCkgd2hl
biBXZWJQcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIG1heSBmYWlsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk5ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBuZXcgdGVzdCBmaWxlIHRvIGNo
ZWNrIGlmIGxvYWRpbmcgYSBwYWdlIGp1c3QgYWZ0ZXIgV2ViUHJvY2VzcworICAgICAgICBoYXMg
Y3Jhc2hlZCAob3Igd2FzIHRlcm1pbmF0ZWQpIHdvcmtzLgorCisgICAgICAgIFRoaXMgZmlsZSBo
YXMgMiB0ZXN0cywgb25lIHRoYXQgd2lsbCBleGVjdXRlIHN0ZXBzIChMb2FkLCBDcmFzaCwgTG9h
ZCkKKyAgICAgICAgd2l0aGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGFuZCBvdGhlciB0aGF0IHdpbGwg
ZXhlY3V0ZSBMb2FkIGF0IHRoZQorICAgICAgICBjcmFzaCBoYW5kbGVyIGZ1bmN0aW9uLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9Mb2FkUGFnZU9uQ3Jhc2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEkpOgorICAgICAgICAoV2ViS2l0MkNyYXNoTG9hZGVyKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OldlYktpdDJDcmFzaExvYWRlcjo6V2ViS2l0MkNyYXNoTG9hZGVyKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJDcmFzaExvYWRlcjo6bG9hZFVybCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyQ3Jhc2hMb2FkZXI6OmNyYXNoV2ViUHJvY2Vzcyk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkQ3Jhc2gpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJLaXQyLnBybzoKKwogMjAxMy0w
Mi0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gQ2hhbmdlZCBnbWFuJ3MgcHJpbWFyeSBhZGRyZXNzIGZvciBhdXRvLWNvbXBsZXRlIGlu
IEJ1Z3ppbGxhLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggN2Q3NjVlNC4uMjRh
MzRkMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0xNTEsNiArMTUxLDcgQEAg
UHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViS2l0Ml9TT1VSQ0VTID0gXAogCVRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGFDYWxsYmFja1dpbnMuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCBcCiAJVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJl
Y3RDYWxsYmFjay5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2Fk
UGFnZU9uQ3Jhc2guY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91
c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9SZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9SZXNpemVXaW5kb3dBZnRlckNyYXNoLmNwcCBcCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCAzYmNiODliLi5mNDM1MjZjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTY3LDYgKzY3LDcgQEAgc2V0KHRlc3Rfd2Via2l0Ml9hcGlf
QklOQVJJRVMKICAgICBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFj
a1dpbnMKICAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwKICAg
ICBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2sKKyAgICBMb2FkUGFnZU9uQ3Jh
c2gKICAgICBNb3VzZU1vdmVBZnRlckNyYXNoCiAgICAgUmVsb2FkUGFnZUFmdGVyQ3Jhc2gKICAg
ICBSZXNpemVXaW5kb3dBZnRlckNyYXNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzNzMz
ZGYuLmFlMGJjZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MCw2ICs5MCw3IEBACiAJ
CTgxQjUwMTkzMTQwRjIzMjMwMEQ5RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQjUwMTkyMTQwRjIzMjMwMEQ5
RUI1OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJOEEyQzc1MEUxNkNFRDk1NTAwMjRG
MzUyIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEEyQzc1MEQxNkNFRDk1NTAwMjRGMzUyIC8qIFJlc2l6
ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwICovOyB9OwogCQk4QTNBRjkzQjE2QzlFRDI3MDBEMjQ4QzEg
LyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOEEzQUY5M0ExNkM5RUQyNzAwRDI0OEMxIC8qIFJlbG9hZFBhZ2VB
ZnRlckNyYXNoLmNwcCAqLzsgfTsKKwkJOEFBMjhDMUExNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQ
YWdlT25DcmFzaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4QUEyOEMxOTE2RDJGQTdCMDAyRkY0REIgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCAqLzsg
fTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEFENDAx
MTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKIAkJOTMxODc3ODkx
NUVFQzU3NzAwQTlDQ0UzIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FG
NEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
SW1hZ2VzLmNwcCAqLzsgfTsKIAkJOTM2MTAwMjkxNERDOTVBNzAwNjEzNzlEIC8qIGxvdHMtb2Yt
aWZyYW1lcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNjEwMDI4MTREQzk1N0IwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRt
bCAqLzsgfTsKQEAgLTM1Niw2ICszNTcsNyBAQAogCQk4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTgg
LyogU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBTdHJpbmdCdWlsZGVyLmNwcDsgcGF0aCA9IFdURi9TdHJpbmdCdWlsZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEEyQzc1MEQxNkNFRDk1NTAwMjRGMzUyIC8qIFJlc2l6
ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0ZXJDcmFzaC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWxvYWRQYWdlQWZ0ZXJDcmFz
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThBQTI4QzE5MTZEMkZBN0IwMDJG
RjREQiAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTG9hZFBhZ2VPbkNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIFRlc3RXZWJLaXRBUEkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhl
Y3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFRlc3RXZWJLaXRBUEk7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzMEFENDAxMTUwNjk4QjMwMDY3OTcw
RiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb3Rz
LW9mLXRleHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNjEwMDI4MTRE
Qzk1N0IwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJsb3RzLW9mLWlmcmFtZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02NTgsNiArNjYwLDcgQEAKIAkJCQk1MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyog
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCAqLywKIAkJCQkz
M0RDODkxMDE0MTk1M0EzMDA3NDdFRjcgLyogTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENh
bGxiYWNrLmNwcCAqLywKIAkJCQkzM0RDODkxMzE0MTk1NzlGMDA3NDdFRjcgLyogTG9hZENhbmNl
bGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgKi8sCisJCQkJOEFBMjhDMTkx
NkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgKi8sCiAJCQkJMzNCRTVBRjQx
MzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICovLAogCQkJCTMzQkU1
QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgKi8s
CiAJCQkJOTNGMURCMzAxNERBMjA3NjAwMjRDMzYyIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dC5jcHAgKi8sCkBAIC0xMDM3LDYgKzEwNDAsNyBAQAogCQkJCTI2MzAwQjE4MTY3NTVD
RDkwMDY2ODg2RCAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkNCNDc0
MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0
b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzREM4OTExMTQxOTUzQTMwMDc0N0VGNyAv
KiBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOEFBMjhDMUExNkQyRkE3QjAwMkZGNERCIC8qIExvYWRQYWdlT25DcmFzaC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNDAzOUY5RDE1RTZEOEIzMDA3MjU1RDYgLyogTWF0aEV4dHJhcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDU0OTdCNDE1ODU3RjBDMDBCNUJDMzAgLyogTWVkaWFU
aW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjIwREEwMTU1QjI1NDgwMDEzRTJGQyAvKiBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRQ
YWdlT25DcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZFBh
Z2VPbkNyYXNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzg1NGQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xv
YWRQYWdlT25DcmFzaC5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQWRlbmlsc29uIENhdmFsY2FudGkgPGNhdmFsY2FudGlpQGdtYWlsLmNvbT4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKik7CisKK2NsYXNzIFdlYktpdDJDcmFzaExvYWRlciB7CitwdWJsaWM6
CisgICAgV2ViS2l0MkNyYXNoTG9hZGVyKCkKKyAgICAgICAgOiBjb250ZXh0KEFkb3B0V0ssIFdL
Q29udGV4dENyZWF0ZSgpKQorICAgICAgICAsIHdlYlZpZXcoY29udGV4dC5nZXQoKSkKKyAgICAg
ICAgLCB1cmwoYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWJvdXQ6Ymxhbmsi
KSkpCisgICAgICAgICwgZmlyc3RTdWNjZXNzZnVsTG9hZChmYWxzZSkKKyAgICAgICAgLCBzZWNv
bmRTdWNjZXNzZnVsTG9hZChmYWxzZSkKKyAgICB7CisgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xp
ZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisgICAgICAgIGxvYWRlckNsaWVudC5jbGll
bnRJbmZvID0gdGhpczsKKyAgICAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWQ7CisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2Vi
Vmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQpOworICAgIH0KKworICAgIHZvaWQgbG9hZFVybCgp
CisgICAgeworICAgICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkp
OworICAgIH0KKworICAgIHZvaWQgY3Jhc2hXZWJQcm9jZXNzKCkKKyAgICB7CisgICAgICAgIFdL
UGFnZVRlcm1pbmF0ZSh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0OworICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGll
bnQ7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXc7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHVybDsKKworICAgIGJvb2wgZmlyc3RTdWNjZXNzZnVsTG9hZDsKKyAgICBib29sIHNlY29u
ZFN1Y2Nlc3NmdWxMb2FkOworfTsKKworLy8gVGhpcyBpcyBzaGFyZWQgZm9yIGJvdGggdGVzdHMs
IHNpbmNlIHdlIGFyZSBnb2luZyB0byBoYXZlIDIgbG9hZCBldmVudHMKKy8vIGludGVydHdpbmVk
IGJ5IGEgY3Jhc2ggKGkuZS4gTG9hZCAtPiBDcmFzaCAtPiBMb2FkKS4KK3ZvaWQgZGlkRmluaXNo
TG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdlYktpdDJDcmFzaExvYWRlciogdGVz
dEhlbHBlciA9IGNvbnN0X2Nhc3Q8V2ViS2l0MkNyYXNoTG9hZGVyKj4oc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViS2l0MkNyYXNoTG9hZGVyKj4oY2xpZW50SW5mbykpOworCisgICAgLy8gRmlyc3QgbG9h
ZCB3b3JrZWQsIGxldCdzIGNyYXNoIFdlYlByb2Nlc3MuCisgICAgaWYgKCF0ZXN0SGVscGVyLT5m
aXJzdFN1Y2Nlc3NmdWxMb2FkKSB7CisgICAgICAgIHRlc3RIZWxwZXItPmZpcnN0U3VjY2Vzc2Z1
bExvYWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU2Vjb25kIGxv
YWQgd29ya2VkLCB3ZSBhcmUgZG9uZS4KKyAgICBFWFBFQ1RfVFJVRSh0ZXN0SGVscGVyLT5maXJz
dFN1Y2Nlc3NmdWxMb2FkKTsKKyAgICBpZiAoIXRlc3RIZWxwZXItPnNlY29uZFN1Y2Nlc3NmdWxM
b2FkKSB7CisgICAgICAgIHRlc3RIZWxwZXItPnNlY29uZFN1Y2Nlc3NmdWxMb2FkID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworLy8gVGhpcyB0ZXN0IHdpbGwgbG9hZCBhIGJs
YW5rIHBhZ2UgYW5kIG5leHQga2lsbCBXZWJQcm9jZXNzLCB0aGUgZXhwZWN0ZWQKKy8vIHJlc3Vs
dCBpcyB0aGF0IGEgY2FsbCB0byBwYWdlIGxvYWQgc2hvdWxkIHNwYXduIGEgbmV3IFdlYlByb2Nl
c3MuCitURVNUKFdlYktpdDIsIExvYWRQYWdlQWZ0ZXJDcmFzaCkKK3sKKyAgICBXZWJLaXQyQ3Jh
c2hMb2FkZXIgaGVscGVyOworICAgIGhlbHBlci5sb2FkVXJsKCk7CisgICAgVXRpbDo6cnVuKCZo
ZWxwZXIuZmlyc3RTdWNjZXNzZnVsTG9hZCk7CisgICAgaGVscGVyLmNyYXNoV2ViUHJvY2Vzcygp
OworICAgIGhlbHBlci5sb2FkVXJsKCk7CisgICAgVXRpbDo6cnVuKCZoZWxwZXIuc2Vjb25kU3Vj
Y2Vzc2Z1bExvYWQpOworfQorCisvLyBDcmFzaCBoYW5kbGVyLCB1c2VkIG9ubHkgYnkgdGhlIHRl
c3QgYmVsb3cuCitzdGF0aWMgdm9pZCBkaWRDcmFzaChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBXZWJLaXQyQ3Jhc2hMb2FkZXIqIHRlc3RIZWxwZXIgPSBj
b25zdF9jYXN0PFdlYktpdDJDcmFzaExvYWRlcio+KHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdDJD
cmFzaExvYWRlcio+KGNsaWVudEluZm8pKTsKKworICAgIC8vIFRoZSB0ZXN0IGJlbG93IGV4cGVj
dHMgdGhlIGNyYXNoIGhhbmRsZXIgdG8gbG9hZCBhIHBhZ2UuCisgICAgRVhQRUNUX1RSVUUodGVz
dEhlbHBlci0+Zmlyc3RTdWNjZXNzZnVsTG9hZCk7CisgICAgdGVzdEhlbHBlci0+bG9hZFVybCgp
OworfQorCisvLyBIZXJlIHdlIHdpbGwgbG9hZCBhIHBhZ2UgYW5kIG5leHQga2lsbCBXZWJQcm9j
ZXNzLCBidXQgdGhpcyB0aW1lIHRoZQorLy8gY2FsbCB0byBsb2FkIGEgcGFnZSBpcyBkb25lIGlu
IHRoZSBjcmFzaCBoYW5kbGVyIGZ1bmN0aW9uLgorVEVTVChXZWJLaXQyLCBMb2FkUGFnZUluQ3Jh
c2hIYW5kbGVyKQoreworICAgIFdlYktpdDJDcmFzaExvYWRlciBoZWxwZXI7CisgICAgaGVscGVy
LmxvYWRlckNsaWVudC5wcm9jZXNzRGlkQ3Jhc2ggPSBkaWRDcmFzaDsKKyAgICBoZWxwZXIubG9h
ZFVybCgpOworICAgIFV0aWw6OnJ1bigmaGVscGVyLmZpcnN0U3VjY2Vzc2Z1bExvYWQpOworICAg
IGhlbHBlci5jcmFzaFdlYlByb2Nlc3MoKTsKKyAgICBVdGlsOjpydW4oJmhlbHBlci5zZWNvbmRT
dWNjZXNzZnVsTG9hZCk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYktpdDIucHJvIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDk0NTJh
NWEuLjFkMDYzNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XZWJLaXQyLnBybworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2Vi
S2l0Mi5wcm8KQEAgLTE5LDYgKzE5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgSW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zLmNwcCBcCiAgICAgTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCBcCiAgICAgTG9hZENhbmNlbGVk
Tm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCBcCisgICAgTG9hZFBhZ2VPbkNyYXNoLmNwcCBc
CiAgICAgTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgXAogICAgIFBhZ2VMb2FkQmFzaWMuY3BwIFwK
ICAgICBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcCBcCi0t
IAoxLjcuMTAuNAoK
</data>
<flag name="review"
          id="210374"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="210375"
          type_id="3"
          status="-"
          setter="savagobr"
    />
          </attachment>
      

    </bug>

</bugzilla>