<?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>33533</bug_id>
          
          <creation_ts>2010-01-12 06:43:55 -0800</creation_ts>
          <short_desc>window.onload never fires if page contains an &lt;iframe&gt; with a bad scheme or whose load is cancelled by returning null from resource load delegate&apos;s willSendRequest</short_desc>
          <delta_ts>2010-01-14 12:40:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>179821</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 06:43:55 -0800</bug_when>
    <thetext>If a page contains an &lt;iframe&gt; whose load is cancelled by returning null from IWebResourceLoadDelegate::willSendRequest, the load event will never be fired for that page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179826</commentid>
    <comment_count>1</comment_count>
      <attachid>46373</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 06:47:14 -0800</bug_when>
    <thetext>Created attachment 46373
Test case

To reproduce, apply the following patch, build, and run WebKitAPITest.exe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179828</commentid>
    <comment_count>2</comment_count>
      <attachid>46374</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 07:00:17 -0800</bug_when>
    <thetext>Created attachment 46374
Revised test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179830</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 07:25:52 -0800</bug_when>
    <thetext>This happens on Mac, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179831</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 07:26:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/7533333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179835</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 07:57:56 -0800</bug_when>
    <thetext>Working backwards:

* When the main document finishes parsing, we don&apos;t send onload because we detect that some child frames are still loading (in FrameLoader::checkCompleted [1]). The child that hasn&apos;t finished loading is the only subframe in the document: the one whose load the resource load delegate blocked.
* The child frame thinks it&apos;s still loading because its m_isComplete member was set to false in FrameLoader::loadSubframe [2].

But in fact the child frame has already finished loading. It finished before the call to FrameLoaderClient::createFrame completed [3], and m_isComplete was set to true. But then it was immediately set back to false in FrameLoader::loadSubframe [2].

Setting m_isComplete to false in loadSubframe seems to date all the way back to r7272 (!) [4]. At one point there was a comment questioning whether this was really needed [5], but it got removed during some refactoring [6].

1. http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp?rev=53140#L1098
2. http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp?rev=53140#L406
3. http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp?rev=53140#L399
4. http://trac.webkit.org/changeset/7272#file1
5. http://trac.webkit.org/changeset/12638#file12
6. http://trac.webkit.org/changeset/17652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179837</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 08:05:49 -0800</bug_when>
    <thetext>Given the description in comment 5, I wondered what happens with &lt;iframe src=&quot;about:blank&quot;&gt;. I would have expected it to behave in a similarly buggy manner. But FrameLoader::loadSubframe knows that about:blank loads synchronously, and calls FrameLoader::checkCompleted again on the subframe before returning [1], which sets m_isComplete back to true.

So maybe we need to teach FrameLoader::checkCompleted that other URLs can potentially load synchronously.

1. http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp?rev=53140#L415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179839</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 08:13:40 -0800</bug_when>
    <thetext>I wondered if m_isComplete is set to false for asynchronously-loading frames after FrameLoaderClient::createFrame returns (in which case setting it to false in FrameLoader::loadSubframe would be unnecessary). But it is set to true, beneath FrameLoader::init (via Document::cancelParsing -&gt; Document::close -&gt; FrameLoader::checkCompleted).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180020</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-12 16:18:27 -0800</bug_when>
    <thetext>The following change seems to fix the bug and doesn&apos;t make any regression tests fail. It seems right to me. Maybe I can get Anders or some similarly loader-educated person to take a look.

@@ -412,16 +412,7 @@ Frame* FrameLoader::loadSubframe(HTMLFrameOwnerElement* ownerElement, const KURL

     checkCallImplicitClose();

-    // In these cases, the synchronous load would have finished
-    // before we could connect the signals, so make sure to send the
-    // completed() signal for the child by hand
-    // FIXME: In this case the Frame will have finished loading before
-    // it&apos;s being added to the child list. It would be a good idea to
-    // create the child first, then invoke the loader separately.
-    if (url.isEmpty() || url == blankURL()) {
-        frame-&gt;loader()-&gt;completed();
-        frame-&gt;loader()-&gt;checkCompleted();
-    }
+    frame-&gt;loader()-&gt;checkCompleted();

     return frame.get();
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180280</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-13 10:23:16 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The following change seems to fix the bug and doesn&apos;t make any regression tests
&gt; fail.

Scratch that. It makes many tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180325</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-13 12:08:25 -0800</bug_when>
    <thetext>I&apos;m now testing a modified fix that calls checkCompleted() whenever state() != FrameStateComplete. It looks promising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180352</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-13 12:44:49 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;m now testing a modified fix that calls checkCompleted() whenever state() !=
&gt; FrameStateComplete. It looks promising.

This approach seems to fix the bug. It also caused a progression in http/tests/loading/bad-scheme-subframe.html. Apparently onload was never firing in that case, either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180383</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-13 13:30:08 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; I&apos;m now testing a modified fix that calls checkCompleted() whenever state() !=
&gt; &gt; FrameStateComplete. It looks promising.
&gt; 
&gt; This approach seems to fix the bug. It also caused a progression in
&gt; http/tests/loading/bad-scheme-subframe.html. Apparently onload was never firing
&gt; in that case, either.

Looks like bad schemes end up calling [listener ignore] from
-decidePolicyForNavigationAction:::::, which in turn results in a null
ResourceRequest (just like when one returns nil from
-webView:resource:willSendRequest::).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180388</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-13 13:53:11 -0800</bug_when>
    <thetext>I think I&apos;ll end up writing three tests:

1) Contains an &lt;iframe&gt; for which the resource load delegate returns nil from willSendRequest
2) Contains an &lt;iframe&gt; for which the policy delegate calls [listener ignore]
3) Contains an &lt;iframe&gt; with a bad URL scheme

In all cases, the test will succeed if onload is fired.

I&apos;m going to have to add new API to make (1) possible. I believe (2) is already possible using layoutTestController.setCustomPolicyDelegate(true), and (3) is clearly already possible as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180783</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 10:45:15 -0800</bug_when>
    <thetext>For those playing along at home, the checkCompleted() call in the synchronous load case in loadSubframe was added in r8316: &lt;http://trac.webkit.org/changeset/8316&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180784</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 10:47:52 -0800</bug_when>
    <thetext>And setting m_isComplete to false was added in r1035 when khtml_part.cpp was first added to the repository (it was called m_bCompleted then). &lt;http://trac.webkit.org/changeset/1035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180803</commentid>
    <comment_count>16</comment_count>
      <attachid>46590</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:09:38 -0800</bug_when>
    <thetext>Created attachment 46590
Treat all synchronous loads equally in FrameLoader::loadSubframe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180806</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:10:52 -0800</bug_when>
    <thetext>Adding some more loader-familiar people to the CC list in hopes that they will have thoughts on this patch!

Really the only question I have is: is checking frame-&gt;loader()-&gt;state() == FrameStateCompleted the best way to check if a synchronous load completed beneath FrameLoaderClient::createFrame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180811</commentid>
    <comment_count>18</comment_count>
      <attachid>46590</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-14 11:18:08 -0800</bug_when>
    <thetext>Comment on attachment 46590
Treat all synchronous loads equally in FrameLoader::loadSubframe

Since the new layouttestcontroller voodoo is only on windows and mac for now, you should add the tests that rely on it to the skipped list for the other platforms (unless I&apos;m missing something as to why they wouldn&apos;t fail)

r+ with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180813</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:21:26 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 46590 [details])
&gt; Since the new layouttestcontroller voodoo is only on windows and mac for now,
&gt; you should add the tests that rely on it to the skipped list for the other
&gt; platforms (unless I&apos;m missing something as to why they wouldn&apos;t fail)
&gt; 
&gt; r+ with that change.

onload-bad-scheme-for-frame.html is definitely valid for all platforms (it doesn&apos;t require any DRT support).

The other two tests should pass on other platforms, too. The tests only fail if the DRT support exists and the FrameLoader change *is not* present. If DRT doesn&apos;t have the required support, the subframe loads will be asynchronous and won&apos;t trigger this bug.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180818</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:31:35 -0800</bug_when>
    <thetext>Committed r53277: &lt;http://trac.webkit.org/changeset/53277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180823</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 11:45:52 -0800</bug_when>
    <thetext>This caused two failures on Qt:
http://build.webkit.org/results/Qt%20Linux%20Release/r53277%20(6000)/results.html

It looks like they just need to be skipped because Qt is missing the required layoutTestController method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180824</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:47:24 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; This caused two failures on Qt:
&gt; http://build.webkit.org/results/Qt%20Linux%20Release/r53277%20(6000)/results.html
&gt; 
&gt; It looks like they just need to be skipped because Qt is missing the required
&gt; layoutTestController method?

I guess Qt isn&apos;t using WebKitTools/DumpRenderTree/LayoutTestController.cpp?

I think our policy is to check in failing results and file a bug rather than skip the test for cases like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180825</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 11:48:26 -0800</bug_when>
    <thetext>Yes, I believe Qt has their own separate LayoutTestController for historical reasons.  I should file a bug about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180831</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 11:53:57 -0800</bug_when>
    <thetext>I ended up skipping the tests because Qt already had entries in the skipped file for, e.g., setCustomPolicyDelegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180834</commentid>
    <comment_count>25</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-01-14 11:58:41 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; I ended up skipping the tests because Qt already had entries in the skipped
&gt; file for, e.g., setCustomPolicyDelegate.

Thx for http://trac.webkit.org/changeset/53277 .
You find the best way to solve this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180857</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-14 12:40:14 -0800</bug_when>
    <thetext>Added onload-policy-ignore-for-frame.html to the GTK+ Skipped file in r53286.

Guess I should have listened to Brady. :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46373</attachid>
            <date>2010-01-12 06:47:14 -0800</date>
            <delta_ts>2010-01-12 07:00:17 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>out.patch</filename>
            <type>text/plain</type>
            <size>8060</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2ViVmlld0Rlc3Ry
dWN0aW9uLmNwcCBiL1dlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2ViVmlld0Rlc3Ry
dWN0aW9uLmNwcAppbmRleCA2YzA5ZTZmLi5mMzUyZTk3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9XZWJLaXRBUElUZXN0L3Rlc3RzL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvV2ViS2l0QVBJVGVzdC90ZXN0cy9XZWJWaWV3RGVzdHJ1Y3Rpb24uY3BwCkBAIC0yNCw2
ICsyNCw4IEBACiAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+
CkBAIC0yMTIsNiArMjE0LDcgQEAgVEVTVChXZWJWaWV3RGVzdHJ1Y3Rpb24sIENsb3NlVGhlbkRl
c3Ryb3lIb3N0V2luZG93KQogICAgIGZpbmlzaFdlYlZpZXdEZXN0cnVjdGlvblRlc3Qod2ViVmll
dywgdmlld1dpbmRvdyk7CiB9CiAKKyNpZiAwCiAvLyBUZXN0cyB0aGF0IGNhbGxpbmcgSVdlYlZp
ZXc6Om1haW5GcmFtZSBhZnRlciBjYWxsaW5nIElXZWJWaWV3OjpjbG9zZSBkb2Vzbid0IGNyYXNo
LiA8aHR0cDovL3dlYmtpdC5vcmcvYi8zMjg2OD4KIFRFU1QoV2ViVmlld0Rlc3RydWN0aW9uLCBN
YWluRnJhbWVBZnRlckNsb3NlKQogewpAQCAtMjI2LDUgKzIyOSwxNTggQEAgVEVTVChXZWJWaWV3
RGVzdHJ1Y3Rpb24sIE1haW5GcmFtZUFmdGVyQ2xvc2UpCiAKICAgICBmaW5pc2hXZWJWaWV3RGVz
dHJ1Y3Rpb25UZXN0KHdlYlZpZXcsIHZpZXdXaW5kb3cpOwogfQorI2VuZGlmCisKK2NsYXNzIERl
bGVnYXRlIDogcHVibGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIENPTVB0cjxEZWxlZ2F0ZT4gY3Jl
YXRlKCkgeyByZXR1cm4gbmV3IERlbGVnYXRlOyB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlELCB2b2lkKiogcHB2T2JqZWN0KTsK
KyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOworICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpOworCitwcml2YXRlOgorICAgIERl
bGVnYXRlKCkgOiBtX3JlZkNvdW50KDApIHsgfQorICAgIH5EZWxlZ2F0ZSgpIHsgfQorCisgICAg
Ly8gSVdlYkZyYW1lTG9hZERlbGVnYXRlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoSVdlYlZpZXcqLCBJV2ViRnJh
bWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvcihJV2ViVmlldyosIElXZWJFcnJvciosIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1Q
TDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVRpdGxlKElXZWJW
aWV3KiwgQlNUUiB0aXRsZSwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKElXZWJWaWV3
KiwgT0xFX0hBTkRMRSBoQml0bWFwLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmluaXNoTG9hZEZvckZy
YW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZhaWxMb2FkV2l0aEVycm9yKElXZWJW
aWV3KiwgSVdlYkVycm9yKiwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTChJV2ViVmlldyosIEJTVFIgdXJsLCBkb3VibGUgZGVsYXlTZWNvbmRzLCBE
QVRFIGZpcmVEYXRlLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZShJV2ViVmlldyosIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsQ2xvc2VGcmFtZShJV2ViVmlldyos
IElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoSVdlYlZpZXcqLCBK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVjdCkgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENsZWFy
V2luZG93T2JqZWN0KElXZWJWaWV3KiwgSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dT
Y3JpcHRPYmplY3QsIElXZWJGcmFtZSopOworCisgICAgLy8gSVdlYlJlc291cmNlTG9hZERlbGVn
YXRlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdChJV2ViVmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYkRhdGFTb3VyY2Uq
LCB1bnNpZ25lZCBsb25nKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFNlbmRSZXF1ZXN0KElXZWJWaWV3KiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBJV2ViVVJMUmVxdWVzdCosIElXZWJVUkxSZXNwb25zZSosIElXZWJE
YXRhU291cmNlKiwgSVdlYlVSTFJlcXVlc3QqKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJV2ViVmlldyos
IHVuc2lnbmVkIGxvbmcsIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSosIElXZWJEYXRh
U291cmNlKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElXZWJWaWV3Kiwg
dW5zaWduZWQgbG9uZywgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiwgSVdlYkRhdGFT
b3VyY2UqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVJlc3BvbnNlKElXZWJWaWV3KiwgdW5zaWduZWQgbG9uZywg
SVdlYlVSTFJlc3BvbnNlKiwgSVdlYkRhdGFTb3VyY2UqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGgoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBVSU5ULCBJV2ViRGF0YVNvdXJjZSopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25n
LCBJV2ViRGF0YVNvdXJjZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcihJV2ViVmlldyos
IHVuc2lnbmVkIGxvbmcsIElXZWJFcnJvciosIElXZWJEYXRhU291cmNlKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBsdWdJbkZh
aWxlZFdpdGhFcnJvcihJV2ViVmlldyosIElXZWJFcnJvciosIElXZWJEYXRhU291cmNlKikgeyBy
ZXR1cm4gRV9OT1RJTVBMOyB9CisKKyAgICBVSU5UIG1fcmVmQ291bnQ7Cit9OworCitIUkVTVUxU
IERlbGVnYXRlOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkK
K3sKKyAgICBpZiAoIXBwdk9iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAq
cHB2T2JqZWN0ID0gMDsKKworICAgIGlmIChJc0VxdWFsSUlEKHJpaWQsIF9fdXVpZG9mKElVbmtu
b3duKSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRnJhbWVMb2FkRGVs
ZWdhdGUqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsSUlEKHJpaWQsIF9fdXVpZG9mKElX
ZWJGcmFtZUxvYWREZWxlZ2F0ZSkpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVdlYkZyYW1lTG9hZERlbGVnYXRlKj4odGhpcyk7CisgICAgZWxzZSBpZiAoSXNFcXVhbElJRChy
aWlkLCBfX3V1aWRvZihJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgKnBwdk9i
amVjdCA9IHN0YXRpY19jYXN0PElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSo+KHRoaXMpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CisKKyAgICBBZGRSZWYoKTsKKyAg
ICByZXR1cm4gU19PSzsKK30KKworVUxPTkcgRGVsZWdhdGU6OkFkZFJlZigpCit7CisgICAgcmV0
dXJuICsrbV9yZWZDb3VudDsKK30KKworVUxPTkcgRGVsZWdhdGU6OlJlbGVhc2UoKQoreworICAg
IFVMT05HIG5ld1JlZkNvdW50ID0gLS1tX3JlZkNvdW50OworICAgIGlmICghbmV3UmVmQ291bnQp
CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIHJldHVybiBuZXdSZWZDb3VudDsKK30KKworc3Rh
dGljIGJvb2wgbG9hZGVkOworCitzdGF0aWMgSlNWYWx1ZVJlZiBsb2FkZWRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBsb2FkZWQgPSB0cnVlOworICAgIFBvc3RRdWl0
TWVzc2FnZSgwKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKK30KKwor
SFJFU1VMVCBEZWxlZ2F0ZTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3QoSVdlYlZpZXcqIHdlYlZpZXcs
IEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB3aW5kb3dTY3JpcHRPYmplY3QsIElX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgQ09NUHRyPElXZWJGcmFtZT4gbWFpbkZyYW1lOworICAg
IGlmIChGQUlMRUQod2ViVmlldy0+bWFpbkZyYW1lKCZtYWluRnJhbWUpKSkKKyAgICAgICAgcmV0
dXJuIEVfRkFJTDsKKworICAgIGlmIChmcmFtZSAhPSBtYWluRnJhbWUpCisgICAgICAgIHJldHVy
biBTX09LOworCisgICAgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiBmdW5jdGlvbnNbXSA9IHsKKyAg
ICAgICAgeyAibG9hZGVkIiwgbG9hZGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAwLCAw
LCAwIH0KKyAgICB9OworICAgIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmaW5pdGlvbiA9IGtK
U0NsYXNzRGVmaW5pdGlvbkVtcHR5OworICAgIGNsYXNzRGVmaW5pdGlvbi5jbGFzc05hbWUgPSAi
V2ViS2l0QVBJVGVzdCI7CisgICAgY2xhc3NEZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IGZ1
bmN0aW9uczsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eU5hbWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ3ZWJLaXRBUElUZXN0IikpOworICAg
IEpTQ2xhc3NSZWYganNDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7Cisg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCB3aW5kb3dTY3JpcHRPYmplY3QsIHByb3Bl
cnR5TmFtZS5nZXQoKSwgSlNPYmplY3RNYWtlKGNvbnRleHQsIGpzQ2xhc3MsIDApLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAw
KTsKKyAgICBKU0NsYXNzUmVsZWFzZShqc0NsYXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwor
SFJFU1VMVCBEZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KElXZWJWaWV3KiwgdW5zaWduZWQgbG9u
ZywgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxSZXNwb25zZSosIElXZWJEYXRhU291
cmNlKiwgSVdlYlVSTFJlcXVlc3QqKiBuZXdSZXF1ZXN0KQoreworICAgIEJTVFIgdXJsOworICAg
IGlmIChGQUlMRUQocmVxdWVzdC0+VVJMKCZ1cmwpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsK
KworICAgIGlmICghd2NzY21wKHVybCwgTCJibG9ja2VkLXVybDovLyIpKSB7CisgICAgICAgICpu
ZXdSZXF1ZXN0ID0gMDsKKyAgICAgICAgcmV0dXJuIFNfT0s7CisgICAgfQorCisgICAgKm5ld1Jl
cXVlc3QgPSByZXF1ZXN0OworICAgIHJlcXVlc3QtPkFkZFJlZigpOworICAgIHJldHVybiBTX09L
OworfQorCitURVNUKFdlYlJlc291cmNlTG9hZERlbGVnYXRlLCBDYW5jZWxJRnJhbWVPbkxvYWQp
Cit7CisgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIEhvc3RXaW5kb3cgd2luZG93
OworICAgIEhXTkQgdmlld1dpbmRvdzsKKyAgICBjcmVhdGVBbmRJbml0aWFsaXplV2ViVmlldyh3
ZWJWaWV3LCB3aW5kb3csIHZpZXdXaW5kb3cpOworCisgICAgQ09NUHRyPERlbGVnYXRlPiBkZWxl
Z2F0ZSA9IERlbGVnYXRlOjpjcmVhdGUoKTsKKyAgICBURVNUX0FTU0VSVChTVUNDRUVERUQod2Vi
Vmlldy0+c2V0RnJhbWVMb2FkRGVsZWdhdGUoZGVsZWdhdGUuZ2V0KCkpKSk7CisgICAgVEVTVF9B
U1NFUlQoU1VDQ0VFREVEKHdlYlZpZXctPnNldFJlc291cmNlTG9hZERlbGVnYXRlKGRlbGVnYXRl
LmdldCgpKSkpOworCisgICAgQ09NUHRyPElXZWJGcmFtZT4gZnJhbWU7CisgICAgVEVTVF9BU1NF
UlQoU1VDQ0VFREVEKHdlYlZpZXctPm1haW5GcmFtZSgmZnJhbWUpKSk7CisKKyAgICAvLyBUaGUg
Zmlyc3Qgc3RyaW5nIGZhaWxzIHRoZSB0ZXN0LiBUaGUgc2Vjb25kIG9uZSBwYXNzZXMgaXQuCisj
aWYgMQorICAgIEJTVFIgaHRtbFN0cmluZyA9IFN5c0FsbG9jU3RyaW5nKEwiPHNjcmlwdD53aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7IHdlYktpdEFQSVRlc3QubG9hZGVkKCkgfTwvc2NyaXB0
PjxpZnJhbWUgc3JjPSdibG9ja2VkLXVybDovLyc+PC9pZnJhbWU+Iik7CisjZWxzZQorICAgIEJT
VFIgaHRtbFN0cmluZyA9IFN5c0FsbG9jU3RyaW5nKEwiPHNjcmlwdD53aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7IHdlYktpdEFQSVRlc3QubG9hZGVkKCkgfTwvc2NyaXB0PiIpOworI2VuZGlm
CisKKyAgICBURVNUX0FTU0VSVChTVUNDRUVERUQoZnJhbWUtPmxvYWRIVE1MU3RyaW5nKGh0bWxT
dHJpbmcsIDApKSk7CisgICAgU3lzRnJlZVN0cmluZyhodG1sU3RyaW5nKTsKKworICAgIHJ1bk1l
c3NhZ2VQdW1wKDMwMDApOworCisgICAgVEVTVF9BU1NFUlQobG9hZGVkKTsKK30KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0QVBJVGVzdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46374</attachid>
            <date>2010-01-12 07:00:17 -0800</date>
            <delta_ts>2010-01-14 11:09:31 -0800</delta_ts>
            <desc>Revised test case</desc>
            <filename>out.patch</filename>
            <type>text/plain</type>
            <size>8866</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2ViVmlld0Rlc3Ry
dWN0aW9uLmNwcCBiL1dlYktpdFRvb2xzL1dlYktpdEFQSVRlc3QvdGVzdHMvV2ViVmlld0Rlc3Ry
dWN0aW9uLmNwcAppbmRleCA2YzA5ZTZmLi45NmM1M2NmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9XZWJLaXRBUElUZXN0L3Rlc3RzL1dlYlZpZXdEZXN0cnVjdGlvbi5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvV2ViS2l0QVBJVGVzdC90ZXN0cy9XZWJWaWV3RGVzdHJ1Y3Rpb24uY3BwCkBAIC0yNCw2
ICsyNCw4IEBACiAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+
CkBAIC02OCwxMCArNzAsMTEgQEAgc3RhdGljIHZvaWQgY3JlYXRlQW5kSW5pdGlhbGl6ZVdlYlZp
ZXcoQ09NUHRyPElXZWJWaWV3PiYgb3V0V2ViVmlldywgSG9zdFdpbmRvdyYKIHN0YXRpYyB2b2lk
IHJ1bk1lc3NhZ2VQdW1wKERXT1JEIHRpbWVvdXRNaWxsaXNlY29uZHMpCiB7CiAgICAgRFdPUkQg
c3RhcnRUaWNrQ291bnQgPSBHZXRUaWNrQ291bnQoKTsKLSAgICBNU0cgbXNnOwotICAgIEJPT0wg
cmVzdWx0OwotICAgIHdoaWxlICgocmVzdWx0ID0gUGVla01lc3NhZ2VXKCZtc2csIDAsIDAsIDAs
IFBNX1JFTU9WRSkpICYmIEdldFRpY2tDb3VudCgpIC0gc3RhcnRUaWNrQ291bnQgPD0gdGltZW91
dE1pbGxpc2Vjb25kcykgewotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgIHdoaWxlIChH
ZXRUaWNrQ291bnQoKSAtIHN0YXJ0VGlja0NvdW50IDw9IHRpbWVvdXRNaWxsaXNlY29uZHMpIHsK
KyAgICAgICAgTVNHIG1zZzsKKyAgICAgICAgaWYgKFBlZWtNZXNzYWdlVygmbXNnLCAwLCAwLCAw
LCBQTV9SRU1PVkUpID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChtc2cu
bWVzc2FnZSA9PSBXTV9RVUlUKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFRyYW5zbGF0
ZU1lc3NhZ2UoJm1zZyk7CiAgICAgICAgIERpc3BhdGNoTWVzc2FnZSgmbXNnKTsKQEAgLTIxMiw2
ICsyMTUsNyBAQCBURVNUKFdlYlZpZXdEZXN0cnVjdGlvbiwgQ2xvc2VUaGVuRGVzdHJveUhvc3RX
aW5kb3cpCiAgICAgZmluaXNoV2ViVmlld0Rlc3RydWN0aW9uVGVzdCh3ZWJWaWV3LCB2aWV3V2lu
ZG93KTsKIH0KIAorI2lmIDAKIC8vIFRlc3RzIHRoYXQgY2FsbGluZyBJV2ViVmlldzo6bWFpbkZy
YW1lIGFmdGVyIGNhbGxpbmcgSVdlYlZpZXc6OmNsb3NlIGRvZXNuJ3QgY3Jhc2guIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzMyODY4PgogVEVTVChXZWJWaWV3RGVzdHJ1Y3Rpb24sIE1haW5GcmFtZUFm
dGVyQ2xvc2UpCiB7CkBAIC0yMjYsNSArMjMwLDE2MiBAQCBURVNUKFdlYlZpZXdEZXN0cnVjdGlv
biwgTWFpbkZyYW1lQWZ0ZXJDbG9zZSkKIAogICAgIGZpbmlzaFdlYlZpZXdEZXN0cnVjdGlvblRl
c3Qod2ViVmlldywgdmlld1dpbmRvdyk7CiB9CisjZW5kaWYKKworY2xhc3MgRGVsZWdhdGUgOiBw
dWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRlLCBwdWJsaWMgSVdlYlJlc291cmNlTG9hZERlbGVn
YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ09NUHRyPERlbGVnYXRlPiBjcmVhdGUoKSB7IHJl
dHVybiBuZXcgRGVsZWdhdGU7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CisgICAgdmlydHVhbCBVTE9ORyBT
VERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKCk7CisKK3ByaXZhdGU6CisgICAgRGVsZWdhdGUoKSA6
IG1fcmVmQ291bnQoMCkgeyB9CisgICAgfkRlbGVnYXRlKCkgeyB9CisKKyAgICAvLyBJV2ViRnJh
bWVMb2FkRGVsZWdhdGUKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmlldyosIElXZWJGcmFtZSopIHsgcmV0
dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShJV2ViVmll
dyosIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yKElXZWJW
aWV3KiwgSVdlYkVycm9yKiwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENvbW1pdExvYWRGb3JGcmFtZShJ
V2ViVmlldyosIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlVGl0bGUoSVdlYlZpZXcqLCBCU1RS
IHRpdGxlLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oSVdlYlZpZXcqLCBPTEVfSEFO
RExFIGhCaXRtYXAsIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoSVdlYlZp
ZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmFpbExvYWRXaXRoRXJyb3IoSVdlYlZpZXcqLCBJV2Vi
RXJyb3IqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJh
bWUoSVdlYlZpZXcqLCBJV2ViRnJhbWUqKSB7IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRv
VVJMKElXZWJWaWV3KiwgQlNUUiB1cmwsIGRvdWJsZSBkZWxheVNlY29uZHMsIERBVEUgZmlyZURh
dGUsIElXZWJGcmFtZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKElXZWJW
aWV3KiwgSVdlYkZyYW1lKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHdpbGxDbG9zZUZyYW1lKElXZWJWaWV3KiwgSVdlYkZyYW1l
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZShJV2ViVmlldyosIEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYgd2luZG93U2NyaXB0T2JqZWN0KSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2xlYXJXaW5kb3dPYmpl
Y3QoSVdlYlZpZXcqLCBKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVj
dCwgSVdlYkZyYW1lKik7CisKKyAgICAvLyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaWRlbnRpZmllckZvckluaXRpYWxSZXF1
ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqLCBJV2ViRGF0YVNvdXJjZSosIHVuc2lnbmVk
IGxvbmcpIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB3aWxsU2VuZFJlcXVlc3QoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlVSTFJlc3BvbnNlKiwgSVdlYkRhdGFTb3VyY2Uq
LCBJV2ViVVJMUmVxdWVzdCoqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElXZWJWaWV3KiwgdW5zaWduZWQg
bG9uZywgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiwgSVdlYkRhdGFTb3VyY2UqKSB7
IHJldHVybiBFX05PVElNUEw7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBs
b25nLCBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqLCBJV2ViRGF0YVNvdXJjZSopIHsg
cmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkaWRSZWNlaXZlUmVzcG9uc2UoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBJV2ViVVJMUmVz
cG9uc2UqLCBJV2ViRGF0YVNvdXJjZSopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlQ29udGVudExlbmd0aChJV2Vi
VmlldyosIHVuc2lnbmVkIGxvbmcsIFVJTlQsIElXZWJEYXRhU291cmNlKikgeyByZXR1cm4gRV9O
T1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlz
aExvYWRpbmdGcm9tRGF0YVNvdXJjZShJV2ViVmlldyosIHVuc2lnbmVkIGxvbmcsIElXZWJEYXRh
U291cmNlKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yKElXZWJWaWV3KiwgdW5zaWduZWQg
bG9uZywgSVdlYkVycm9yKiwgSVdlYkRhdGFTb3VyY2UqKSB7IHJldHVybiBFX05PVElNUEw7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGx1Z0luRmFpbGVkV2l0aEVy
cm9yKElXZWJWaWV3KiwgSVdlYkVycm9yKiwgSVdlYkRhdGFTb3VyY2UqKSB7IHJldHVybiBFX05P
VElNUEw7IH0KKworICAgIFVJTlQgbV9yZWZDb3VudDsKK307CisKK0hSRVNVTFQgRGVsZWdhdGU6
OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQoreworICAgIGlm
ICghcHB2T2JqZWN0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICpwcHZPYmplY3Qg
PSAwOworCisgICAgaWYgKElzRXF1YWxJSUQocmlpZCwgX191dWlkb2YoSVVua25vd24pKSkKKyAg
ICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElXZWJGcmFtZUxvYWREZWxlZ2F0ZSo+KHRo
aXMpOworICAgIGVsc2UgaWYgKElzRXF1YWxJSUQocmlpZCwgX191dWlkb2YoSVdlYkZyYW1lTG9h
ZERlbGVnYXRlKSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRnJhbWVM
b2FkRGVsZWdhdGUqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsSUlEKHJpaWQsIF9fdXVp
ZG9mKElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSkpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8SVdlYlJlc291cmNlTG9hZERlbGVnYXRlKj4odGhpcyk7CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVybiBT
X09LOworfQorCitVTE9ORyBEZWxlZ2F0ZTo6QWRkUmVmKCkKK3sKKyAgICByZXR1cm4gKyttX3Jl
ZkNvdW50OworfQorCitVTE9ORyBEZWxlZ2F0ZTo6UmVsZWFzZSgpCit7CisgICAgVUxPTkcgbmV3
UmVmQ291bnQgPSAtLW1fcmVmQ291bnQ7CisgICAgaWYgKCFuZXdSZWZDb3VudCkKKyAgICAgICAg
ZGVsZXRlIHRoaXM7CisgICAgcmV0dXJuIG5ld1JlZkNvdW50OworfQorCitzdGF0aWMgYm9vbCBs
b2FkZWQ7CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGxvYWRlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGxvYWRlZCA9IHRydWU7CisgICAgUG9zdFF1aXRNZXNzYWdlKDAp
OworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworfQorCitIUkVTVUxUIERl
bGVnYXRlOjpkaWRDbGVhcldpbmRvd09iamVjdChJV2ViVmlldyogd2ViVmlldywgSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9iamVjdCwgSVdlYkZyYW1lKiBm
cmFtZSkKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1lPiBtYWluRnJhbWU7CisgICAgaWYgKEZBSUxF
RCh3ZWJWaWV3LT5tYWluRnJhbWUoJm1haW5GcmFtZSkpKQorICAgICAgICByZXR1cm4gRV9GQUlM
OworCisgICAgaWYgKGZyYW1lICE9IG1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIFNfT0s7CisK
KyAgICBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9uc1tdID0geworICAgICAgICB7ICJs
b2FkZWQiLCBsb2FkZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7IDAsIDAsIDAgfQorICAg
IH07CisgICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZp
bml0aW9uRW1wdHk7CisgICAgY2xhc3NEZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJXZWJLaXRBUElU
ZXN0IjsKKyAgICBjbGFzc0RlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gZnVuY3Rpb25zOwor
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIndlYktpdEFQSVRlc3QiKSk7CisgICAgSlNDbGFzc1Jl
ZiBqc0NsYXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKKyAgICBKU09iamVj
dFNldFByb3BlcnR5KGNvbnRleHQsIHdpbmRvd1NjcmlwdE9iamVjdCwgcHJvcGVydHlOYW1lLmdl
dCgpLCBKU09iamVjdE1ha2UoY29udGV4dCwganNDbGFzcywgMCksIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsIDApOworICAgIEpT
Q2xhc3NSZWxlYXNlKGpzQ2xhc3MpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIERl
bGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoSVdlYlZpZXcqLCB1bnNpZ25lZCBsb25nLCBJV2ViVVJM
UmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiwgSVdlYkRhdGFTb3VyY2UqLCBJV2Vi
VVJMUmVxdWVzdCoqIG5ld1JlcXVlc3QpCit7CisgICAgQlNUUiB1cmw7CisgICAgaWYgKEZBSUxF
RChyZXF1ZXN0LT5VUkwoJnVybCkpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgaWYg
KCF3Y3NjbXAodXJsLCBMImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIikpIHsKKyAgICAgICAgKm5l
d1JlcXVlc3QgPSAwOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisKKyAgICAqbmV3UmVx
dWVzdCA9IHJlcXVlc3Q7CisgICAgcmVxdWVzdC0+QWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7
Cit9CisKK1RFU1QoV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUsIENhbmNlbElGcmFtZU9uTG9hZCkK
K3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgSG9zdFdpbmRvdyB3aW5kb3c7
CisgICAgSFdORCB2aWV3V2luZG93OworICAgIGNyZWF0ZUFuZEluaXRpYWxpemVXZWJWaWV3KHdl
YlZpZXcsIHdpbmRvdywgdmlld1dpbmRvdyk7CisKKyAgICBDT01QdHI8RGVsZWdhdGU+IGRlbGVn
YXRlID0gRGVsZWdhdGU6OmNyZWF0ZSgpOworICAgIFRFU1RfQVNTRVJUKFNVQ0NFRURFRCh3ZWJW
aWV3LT5zZXRGcmFtZUxvYWREZWxlZ2F0ZShkZWxlZ2F0ZS5nZXQoKSkpKTsKKworICAgIC8vIFJl
bW92aW5nIHRoaXMgbGluZSBpcyBlbm91Z2ggYnkgaXRzZWxmIHRvIG1ha2UgdGhlIHRlc3QgcGFz
cy4KKyNpZiAxCisgICAgVEVTVF9BU1NFUlQoU1VDQ0VFREVEKHdlYlZpZXctPnNldFJlc291cmNl
TG9hZERlbGVnYXRlKGRlbGVnYXRlLmdldCgpKSkpOworI2VuZGlmCisKKyAgICBDT01QdHI8SVdl
YkZyYW1lPiBmcmFtZTsKKyAgICBURVNUX0FTU0VSVChTVUNDRUVERUQod2ViVmlldy0+bWFpbkZy
YW1lKCZmcmFtZSkpKTsKKworICAgIC8vIEFub3RoZXIgd2F5IHRvIG1ha2UgdGhlIHRlc3QgcGFz
cyBpcyB0byBzd2l0Y2ggdG8gdXNpbmcgdGhlIHNlY29uZCBIVE1MIHN0cmluZyBiZWxvdy4KKyNp
ZiAxCisgICAgQlNUUiBodG1sU3RyaW5nID0gU3lzQWxsb2NTdHJpbmcoTCI8c2NyaXB0PndpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpIHsgd2ViS2l0QVBJVGVzdC5sb2FkZWQoKSB9PC9zY3JpcHQ+
PGlmcmFtZSBzcmM9J2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vJz48L2lmcmFtZT4iKTsKKyNlbHNl
CisgICAgQlNUUiBodG1sU3RyaW5nID0gU3lzQWxsb2NTdHJpbmcoTCI8c2NyaXB0PndpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsgd2ViS2l0QVBJVGVzdC5sb2FkZWQoKSB9PC9zY3JpcHQ+Iik7
CisjZW5kaWYKKworICAgIFRFU1RfQVNTRVJUKFNVQ0NFRURFRChmcmFtZS0+bG9hZEhUTUxTdHJp
bmcoaHRtbFN0cmluZywgMCkpKTsKKyAgICBTeXNGcmVlU3RyaW5nKGh0bWxTdHJpbmcpOworCisg
ICAgcnVuTWVzc2FnZVB1bXAoMzAwMCk7CisKKyAgICBURVNUX0FTU0VSVChsb2FkZWQpOworfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXRBUElUZXN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46590</attachid>
            <date>2010-01-14 11:09:38 -0800</date>
            <delta_ts>2010-01-14 11:18:07 -0800</delta_ts>
            <desc>Treat all synchronous loads equally in FrameLoader::loadSubframe</desc>
            <filename>bug-33533-20100114140940.patch</filename>
            <type>text/plain</type>
            <size>19137</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NTUwMjYzLi5jZWU2MDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTAtMDEt
MTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCB0ZXN0cyB0
aGF0IHNob3cgdGhhdCBvbmxvYWQgc3RpbGwgZmlyZXMgaW4gdmFyaW91cyBzaXR1YXRpb25zIHdp
dGgKKyAgICAgICAgc3ViZnJhbWVzCisKKyAgICAgICAgVGVzdHMgZm9yIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzMzNTMzPiB3aW5kb3cub25sb2FkIG5ldmVyIGZpcmVzIGlmCisgICAgICAgIHBhZ2Ug
Y29udGFpbnMgYW4gPGlmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2UgbG9hZCBpcyBj
YW5jZWxsZWQKKyAgICAgICAgYnkgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2FkIGRl
bGVnYXRlJ3Mgd2lsbFNlbmRSZXF1ZXN0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9vbmxvYWQtYmFkLXNjaGVtZS1mb3ItZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9vbmxvYWQtYmFk
LXNjaGVtZS1mb3ItZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgIFRlc3RzIHRoYXQgb25sb2Fk
IHN0aWxsIGZpcmVzIHdoZW4gYSBzdWJmcmFtZSB3aXRoIGFuIHVucmVjb2duaXplZAorICAgICAg
ICBzY2hlbWUgaXMgaW4gdGhlIHBhZ2UuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9vbmxvYWQt
cG9saWN5LWlnbm9yZS1mb3ItZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgIFRlc3RzIHRoYXQgb25sb2FkIHN0aWxsIGZpcmVzIHdoZW4gdGhlIHBvbGljeSBkZWxl
Z2F0ZSBzYXlzIHRvIGlnbm9yZQorICAgICAgICB0aGUgaW5pdGlhbCBsb2FkIG9mIGEgc3ViZnJh
bWUuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9vbmxvYWQtd2lsbFNlbmRSZXF1ZXN0LW51bGwt
Zm9yLWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvb25s
b2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
VGVzdHMgdGhhdCBvbmxvYWQgc3RpbGwgZmlyZXMgd2hlbiB0aGUgcmVzb3VyY2UgbG9hZCBkZWxl
Z2F0ZSByZXR1cm5zCisgICAgICAgIG51bGwgZnJvbSB3aWxsU2VuZFJlcXVlc3QgZm9yIHRoZSBp
bml0aWFsIGxvYWQgb2YgYSBzdWJmcmFtZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGlu
Zy9iYWQtc2NoZW1lLXN1YmZyYW1lLWV4cGVjdGVkLnR4dDogVXBkYXRlZCByZXN1bHQKKyAgICAg
ICAgdG8gc2hvdyB0aGF0IHdlIG5vdyBmaXJlIG9ubG9hZCBmb3IgdGhlIG1haW4gZnJhbWUgaW4g
dGhpcyBjYXNlLiAoVGhpcworICAgICAgICBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBvbmxv
YWQtYmFkLXNjaGVtZS1mb3ItZnJhbWUuaHRtbCwgYnV0IGl0CisgICAgICAgIHN0aWxsIHNlZW1z
IHVzZWZ1bCB0byBoYXZlIHRoYXQgbmV3LCBtb3JlIGV4cGxpY2l0LCB0ZXN0LikKKworMjAxMC0w
MS0xNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAgRml4IGEgdHlw
byBpbiBlZGl0aW5nL3NlbGVjdGlvbi9pbmFjdGl2ZS1zZWxlY3Rpb24uaHRtbAogCiAgICAgICAg
IEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzMzNjc2PiBFeGNlcHRpb24gd2hlbiBvcGVuaW5n
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtYmFkLXNjaGVtZS1m
b3ItZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25sb2FkLWJh
ZC1zY2hlbWUtZm9yLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZTM3MGFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvb25sb2FkLWJhZC1zY2hlbWUtZm9yLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1Rlc3QgZm9yIHdpbmRvdy5vbmxvYWQgbmV2ZXIgZmlyZXMgaWYgcGFnZSBjb250YWlu
cyBhbiA8aWZyYW1lPiB3aXRoIGEgYmFkIHNjaGVtZSBvciB3aG9zZSBsb2FkIGlzIGNhbmNlbGxl
ZCBieSByZXR1cm5pbmcgbnVsbCBmcm9tIHJlc291cmNlIGxvYWQgZGVsZWdhdGUncyB3aWxsU2Vu
ZFJlcXVlc3QuIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91IHNob3VsZCBzZWUgdGhlIHdvcmQgIlBB
U1NFRCIgYmVsb3cuCisKK1BBU1NFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9vbmxvYWQtYmFkLXNjaGVtZS1mb3ItZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL29ubG9hZC1iYWQtc2NoZW1lLWZvci1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ0NzBmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9vbmxvYWQtYmFkLXNjaGVtZS1mb3ItZnJhbWUuaHRtbApAQCAtMCwwICsx
LDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3Qg
Zm9yIEJ1ZyAzMzUzMzogd2luZG93Lm9ubG9hZCBuZXZlciBmaXJlcyBpZiBwYWdlIGNvbnRhaW5z
IGFuICZsdDtpZnJhbWU+IHdpdGggYSBiYWQgc2NoZW1lIG9yIHdob3NlIGxvYWQgaXMgY2FuY2Vs
bGVkIGJ5IHJldHVybmluZyBudWxsIGZyb20gcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSdzIHdpbGxT
ZW5kUmVxdWVzdDwvdGl0bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAg
ICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIlRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gaW4gRHVt
cFJlbmRlclRyZWUuIjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIlBBU1NFRCI7CisgICAgICAgIH07CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRw
Oi8vd2Via2l0Lm9yZy9iLzMzNTMzIj53aW5kb3cub25sb2FkIG5ldmVyIGZpcmVzIGlmIHBhZ2Ug
Y29udGFpbnMgYW4KKyAgICAmbHQ7aWZyYW1lPiB3aXRoIGEgYmFkIHNjaGVtZSBvciB3aG9zZSBs
b2FkIGlzIGNhbmNlbGxlZCBieSByZXR1cm5pbmcgbnVsbCBmcm9tIHJlc291cmNlIGxvYWQKKyAg
ICBkZWxlZ2F0ZSdzIHdpbGxTZW5kUmVxdWVzdDwvYT4uIElmIHRoZSB0ZXN0IHBhc3NlcywgeW91
IHNob3VsZCBzZWUgdGhlIHdvcmQgIlBBU1NFRCIgYmVsb3cuPC9wPgorICAgIDxkaXYgaWQ9cmVz
dWx0PkZBSUxFRDwvZGl2PgorICAgIDxpZnJhbWUgc3JjPSJ0aGlzLWlzLWRlZmluaXRlbHktYS1i
YWQtdXJpLXNjaGVtZToiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZyYW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29ubG9hZC1wb2xpY3ktaWdub3Jl
LWZvci1mcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTIyZmFkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL29u
bG9hZC1wb2xpY3ktaWdub3JlLWZvci1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitQb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8gbG9hZCBodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyB3aXRoIG5hdmlnYXRpb24gdHlwZSAnb3RoZXInCitUZXN0IGZvciB3aW5kb3cub25sb2FkIG5l
dmVyIGZpcmVzIGlmIHBhZ2UgY29udGFpbnMgYW4gPGlmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUg
b3Igd2hvc2UgbG9hZCBpcyBjYW5jZWxsZWQgYnkgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJj
ZSBsb2FkIGRlbGVnYXRlJ3Mgd2lsbFNlbmRSZXF1ZXN0LiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlv
dSBzaG91bGQgc2VlIHRoZSB3b3JkICJQQVNTRUQiIGJlbG93LgorCitQQVNTRUQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25sb2FkLXBvbGljeS1pZ25vcmUtZm9yLWZy
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1m
b3ItZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mjg5YjBj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25sb2FkLXBvbGlj
eS1pZ25vcmUtZm9yLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5UZXN0IGZvciBCdWcgMzM1MzM6IHdpbmRvdy5v
bmxvYWQgbmV2ZXIgZmlyZXMgaWYgcGFnZSBjb250YWlucyBhbiAmbHQ7aWZyYW1lPiB3aXRoIGEg
YmFkIHNjaGVtZSBvciB3aG9zZSBsb2FkIGlzIGNhbmNlbGxlZCBieSByZXR1cm5pbmcgbnVsbCBm
cm9tIHJlc291cmNlIGxvYWQgZGVsZWdhdGUncyB3aWxsU2VuZFJlcXVlc3Q8L3RpdGxlPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUpOworICAg
ICAgICB9CisKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICAg
ICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIER1bXBS
ZW5kZXJUcmVlLiI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJQQVNTRUQiOworICAgICAgICB9OworICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDov
L3dlYmtpdC5vcmcvYi8zMzUzMyI+d2luZG93Lm9ubG9hZCBuZXZlciBmaXJlcyBpZiBwYWdlIGNv
bnRhaW5zIGFuCisgICAgJmx0O2lmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2UgbG9h
ZCBpcyBjYW5jZWxsZWQgYnkgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2FkCisgICAg
ZGVsZWdhdGUncyB3aWxsU2VuZFJlcXVlc3Q8L2E+LiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSBz
aG91bGQgc2VlIHRoZSB3b3JkICJQQVNTRUQiIGJlbG93LjwvcD4KKyAgICA8ZGl2IGlkPXJlc3Vs
dD5GQUlMRUQ8L2Rpdj4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8i
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtd2lsbFNlbmRSZXF1ZXN0LW51bGwt
Zm9yLWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lZTM3MGFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvb25s
b2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACitUZXN0IGZvciB3aW5kb3cub25sb2FkIG5ldmVyIGZpcmVzIGlmIHBhZ2UgY29udGFp
bnMgYW4gPGlmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2UgbG9hZCBpcyBjYW5jZWxs
ZWQgYnkgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlJ3Mgd2lsbFNl
bmRSZXF1ZXN0LiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSBzaG91bGQgc2VlIHRoZSB3b3JkICJQ
QVNTRUQiIGJlbG93LgorCitQQVNTRUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2Zjc0YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9vbmxvYWQtd2lsbFNlbmRSZXF1ZXN0
LW51bGwtZm9yLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5UZXN0IGZvciBCdWcgMzM1MzM6IHdpbmRvdy5vbmxv
YWQgbmV2ZXIgZmlyZXMgaWYgcGFnZSBjb250YWlucyBhbiAmbHQ7aWZyYW1lPiB3aXRoIGEgYmFk
IHNjaGVtZSBvciB3aG9zZSBsb2FkIGlzIGNhbmNlbGxlZCBieSByZXR1cm5pbmcgbnVsbCBmcm9t
IHJlc291cmNlIGxvYWQgZGVsZWdhdGUncyB3aWxsU2VuZFJlcXVlc3Q8L3RpdGxlPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKHRydWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAg
ICAgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIGluIER1
bXBSZW5kZXJUcmVlLiI7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJQQVNTRUQiOworICAgICAgICB9OworICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0
cDovL3dlYmtpdC5vcmcvYi8zMzUzMyI+d2luZG93Lm9ubG9hZCBuZXZlciBmaXJlcyBpZiBwYWdl
IGNvbnRhaW5zIGFuCisgICAgJmx0O2lmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2Ug
bG9hZCBpcyBjYW5jZWxsZWQgYnkgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2FkCisg
ICAgZGVsZWdhdGUncyB3aWxsU2VuZFJlcXVlc3Q8L2E+LiBJZiB0aGUgdGVzdCBwYXNzZXMsIHlv
dSBzaG91bGQgc2VlIHRoZSB3b3JkICJQQVNTRUQiIGJlbG93LjwvcD4KKyAgICA8ZGl2IGlkPXJl
c3VsdD5GQUlMRUQ8L2Rpdj4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy5leGFtcGxlLmNv
bS8iPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL2JhZC1zY2hlbWUtc3ViZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2JhZC1zY2hlbWUtc3ViZnJhbWUtZXhwZWN0ZWQu
dHh0CmluZGV4IGYxZTYzNjguLjk1N2YxYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy9iYWQtc2NoZW1lLXN1YmZyYW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFkLXNjaGVtZS1zdWJmcmFtZS1leHBlY3RlZC50
eHQKQEAgLTEsNiArMSw3IEBACiBtYWluIGZyYW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogbWFpbiBmcmFtZSAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25s
b2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKIFRo
aXMgaXMgYSB0ZXN0IG9mIGxvYWQgY2FsbGJhY2tzLiBJdCBpcyBvbmx5IHVzZWZ1bCBpbnNpZGUg
dGhlIHJlZ3Jlc3Npb24gdGVzdCB0b29sLgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY3Y2FjNWQuLjMxYmUwYmEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTAtMDEtMTQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFRyZWF0IGFsbCBzeW5jaHJvbm91cyBsb2FkcyBlcXVhbGx5IGluIEZyYW1lTG9hZGVyOjpsb2Fk
U3ViZnJhbWUKKworICAgICAgICBPbmx5IGxvYWRzIG9mIHRoZSBlbXB0eSBVUkwgb3IgYWJvdXQ6
Ymxhbmsgd2VyZSBiZWluZyB0cmVhdGVkIGFzCisgICAgICAgIHN5bmNocm9ub3VzIGxvYWRzLiBC
dXQgb3RoZXIgbG9hZHMgY2FuIGJlIHN5bmNocm9ub3VzIChlLmcuLCB3aGVuIHdlCisgICAgICAg
IHJlY2VpdmUgYSBudWxsIFJlc291cmNlUmVxdWVzdCBmcm9tIHJlcXVlc3RGcm9tRGVsZWdhdGUg
b3Igd2hlbiBhCisgICAgICAgIHBvbGljeSBkZWNpc2lvbiBvZiAiaWdub3JlIiBpcyBtYWRlKS4g
V2Ugbm93IHRyZWF0IHRob3NlIGxvYWRzIHRoZQorICAgICAgICBzYW1lIHdheSB3ZSB0cmVhdGVk
IGVtcHR5IFVSTHMgYW5kIGFib3V0OmJsYW5rLgorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzMzNTMzPiB3aW5kb3cub25sb2FkIG5ldmVyIGZpcmVzIGlmIHBhZ2UKKyAgICAg
ICAgY29udGFpbnMgYW4gPGlmcmFtZT4gd2l0aCBhIGJhZCBzY2hlbWUgb3Igd2hvc2UgbG9hZCBp
cyBjYW5jZWxsZWQgYnkKKyAgICAgICAgcmV0dXJuaW5nIG51bGwgZnJvbSByZXNvdXJjZSBsb2Fk
IGRlbGVnYXRlJ3Mgd2lsbFNlbmRSZXF1ZXN0CisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9hZGVy
L29ubG9hZC1iYWQtc2NoZW1lLWZvci1mcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xv
YWRlci9vbmxvYWQtcG9saWN5LWlnbm9yZS1mb3ItZnJhbWUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9sb2FkZXIvb25sb2FkLXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1mcmFtZS5odG1sCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRTdWJm
cmFtZSk6CisgICAgICAgICAgLSBEZXRlY3Qgc3luY2hyb25vdXMgbG9hZHMgYnkgY2hlY2tpbmcg
dGhlIHN1YmZyYW1lJ3MgbG9hZGVyJ3MKKyAgICAgICAgICAgIHN0YXRlLCByYXRoZXIgdGhhbiBi
eSBjaGVja2luZyBpdHMgVVJMCisgICAgICAgICAgLSBSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGwg
dG8gY29tcGxldGVkKCksIHNpbmNlIGNoZWNrQ29tcGxldGVkKCkKKyAgICAgICAgICAgIHdpbGwg
Y2FsbCBjb21wbGV0ZWQoKSBpZiBuZWVkZWQgKHRoZSBjYWxsIHRvIGNvbXBsZXRlZCgpIHdhcyBh
ZGRlZAorICAgICAgICAgICAgZmlyc3QgYW5kIHdhc24ndCByZW1vdmVkIHdoZW4gdGhlIGNhbGwg
dG8gY2hlY2tDb21wbGV0ZWQoKSB3YXMKKyAgICAgICAgICAgIGFkZGVkIGluIHI4MzE2KQorICAg
ICAgICAgIC0gQWRkZWQgbW9yZSBjb21tZW50cyBhYm91dCB0aGUgc3RyYW5nZSB0aGluZyB0aGlz
IGZ1bmN0aW9uIGRvZXMKKyAgICAgICAgICAgIHdpdGggdGhlIHN1YmZyYW1lJ3MgbG9hZGVyCisK
IDIwMTAtMDEtMTQgIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDMxNGNhMzMuLjI2NTQ1ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQw
Myw2ICs0MDMsMTIgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIAorICAgIC8vIEFsbCBuZXcgZnJhbWVzIHdpbGwgaGF2ZSBtX2lzQ29tcGxl
dGUgc2V0IHRvIHRydWUgYXQgdGhpcyBwb2ludCBkdWUgdG8gc3luY2hyb25vdXNseSBsb2FkaW5n
CisgICAgLy8gYW4gZW1wdHkgZG9jdW1lbnQgaW4gRnJhbWVMb2FkZXI6OmluaXQoKS4gQnV0IG1h
bnkgZnJhbWVzIHdpbGwgbm93IGJlIHN0YXJ0aW5nIGFuCisgICAgLy8gYXN5bmNocm9ub3VzIGxv
YWQgb2YgdXJsLCBzbyB3ZSBzZXQgbV9pc0NvbXBsZXRlIHRvIGZhbHNlIGFuZCB0aGVuIGNoZWNr
IGlmIHRoZSBsb2FkIGlzCisgICAgLy8gYWN0dWFsbHkgY29tcGxldGVkIGJlbG93LiAoTm90ZSB0
aGF0IHdlIHNldCBtX2lzQ29tcGxldGUgdG8gZmFsc2UgZXZlbiBmb3Igc3luY2hyb25vdXMKKyAg
ICAvLyBsb2Fkcywgc28gdGhhdCBjaGVja0NvbXBsZXRlZCgpIGJlbG93IHdvbid0IGJhaWwgZWFy
bHkuKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgcmVtb3ZlIHRoaXMgZW50aXJlbHk/IG1faXNDb21w
bGV0ZSBub3JtYWxseSBnZXRzIHNldCB0byBmYWxzZSB3aGVuIGEgbG9hZCBpcyBjb21taXR0ZWQu
CiAgICAgZnJhbWUtPmxvYWRlcigpLT5tX2lzQ29tcGxldGUgPSBmYWxzZTsKICAgIAogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCk7CkBAIC00MTIs
MTYgKzQxOCwxNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTAogICAgIAogICAgIGNoZWNrQ2Fs
bEltcGxpY2l0Q2xvc2UoKTsKICAgICAKKyAgICAvLyBTb21lIGxvYWRzIGFyZSBwZXJmb3JtZWQg
c3luY2hyb25vdXNseSAoZS5nLiwgYWJvdXQ6YmxhbmsgYW5kIGxvYWRzCisgICAgLy8gY2FuY2Vs
bGVkIGJ5IHJldHVybmluZyBhIG51bGwgUmVzb3VyY2VSZXF1ZXN0IGZyb20gcmVxdWVzdEZyb21E
ZWxlZ2F0ZSkuCiAgICAgLy8gSW4gdGhlc2UgY2FzZXMsIHRoZSBzeW5jaHJvbm91cyBsb2FkIHdv
dWxkIGhhdmUgZmluaXNoZWQKICAgICAvLyBiZWZvcmUgd2UgY291bGQgY29ubmVjdCB0aGUgc2ln
bmFscywgc28gbWFrZSBzdXJlIHRvIHNlbmQgdGhlIAotICAgIC8vIGNvbXBsZXRlZCgpIHNpZ25h
bCBmb3IgdGhlIGNoaWxkIGJ5IGhhbmQKKyAgICAvLyBjb21wbGV0ZWQoKSBzaWduYWwgZm9yIHRo
ZSBjaGlsZCBieSBoYW5kIGFuZCBtYXJrIHRoZSBsb2FkIGFzIGJlaW5nCisgICAgLy8gY29tcGxl
dGUuCiAgICAgLy8gRklYTUU6IEluIHRoaXMgY2FzZSB0aGUgRnJhbWUgd2lsbCBoYXZlIGZpbmlz
aGVkIGxvYWRpbmcgYmVmb3JlIAogICAgIC8vIGl0J3MgYmVpbmcgYWRkZWQgdG8gdGhlIGNoaWxk
IGxpc3QuIEl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvCiAgICAgLy8gY3JlYXRlIHRoZSBjaGls
ZCBmaXJzdCwgdGhlbiBpbnZva2UgdGhlIGxvYWRlciBzZXBhcmF0ZWx5LgotICAgIGlmICh1cmwu
aXNFbXB0eSgpIHx8IHVybCA9PSBibGFua1VSTCgpKSB7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIo
KS0+Y29tcGxldGVkKCk7CisgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3RhdGUoKSA9PSBGcmFt
ZVN0YXRlQ29tcGxldGUpCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hlY2tDb21wbGV0ZWQo
KTsKLSAgICB9CiAKICAgICByZXR1cm4gZnJhbWUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMGVlZTIzYS4u
N2Q0ZDBiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTAxLTE0ICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXIgQVBJ
IHRvIGZvcmNlCisgICAgICAgIC13ZWJWaWV3OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDo6IHRv
IHJldHVybiBudWxsCisKKyAgICAgICAgRW5hYmxlcyB0ZXN0cyBmb3IgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMzM1MzM+IHdpbmRvdy5vbmxvYWQgbmV2ZXIKKyAgICAgICAgZmlyZXMgaWYgcGFnZSBj
b250YWlucyBhbiA8aWZyYW1lPiB3aXRoIGEgYmFkIHNjaGVtZSBvciB3aG9zZSBsb2FkIGlzCisg
ICAgICAgIGNhbmNlbGxlZCBieSByZXR1cm5pbmcgbnVsbCBmcm9tIHJlc291cmNlIGxvYWQgZGVs
ZWdhdGUncworICAgICAgICB3aWxsU2VuZFJlcXVlc3QKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6IEluaXRpYWxpemUgbmV3IG1lbWJlci4KKyAgICAgICAgKHNldFdpbGxTZW5kUmVx
dWVzdFJldHVybnNOdWxsQ2FsbGJhY2spOiBDYWxsIHRocm91Z2ggdG8KKyAgICAgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKTogQWRkZWQgbmV3IGZ1bmN0aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDogQWRkZWQKKyAgICAgICAgbV93aWxsU2VuZFJlcXVlc3RS
ZXR1cm5zTnVsbC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwpOgorICAgICAgICBBZGRlZCBzdGFuZGFyZCBhY2Nlc3NvcnMu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJl
c291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICBSZXR1cm4gbnVs
bCBpZiBMYXlvdXRUZXN0Q29udHJvbGxlciBzYXlzIHRvLgorCiAyMDEwLTAxLTE0ICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTcyZDYxMC4uZmU5Mzk4NCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtNjYsNiArNjYsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRy
b2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbgogICAgICwgbV90ZXN0
UmVwYWludChmYWxzZSkKICAgICAsIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseShmYWxz
ZSkKICAgICAsIG1fd2FpdFRvRHVtcChmYWxzZSkKKyAgICAsIG1fd2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGwoZmFsc2UpCiAgICAgLCBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRp
cmVjdChmYWxzZSkKICAgICAsIG1fd2luZG93SXNLZXkodHJ1ZSkKICAgICAsIG1fYWx3YXlzQWNj
ZXB0Q29va2llcyhmYWxzZSkKQEAgLTkxMSw2ICs5MTIsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBjcm9zcy1wbGF0Zm9ybSBp
bXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0V2lsbFNlbmRS
ZXF1ZXN0UmV0dXJuc051bGwoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0p
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBjcm9zcy1w
bGF0Zm9ybSBpbXBsZW1lbnRhdGlvbgpAQCAtMTMwNyw2ICsxMzIwLDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWQiLCBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsIiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCBzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRXaW5kb3dJc0tleSIsIHNldFdpbmRvd0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2hvd1dlYkluc3BlY3RvciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKaW5kZXggN2UxOGRjZS4uNTFlOTI5YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xNzYsNiArMTc2LDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0V2FpdFRvRHVtcChib29sIHdhaXRUb0R1bXApOwogICAgIHZv
aWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwogCisgICAgYm9vbCB3aWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGw7IH0KKyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGJvb2wgcmV0
dXJuc051bGwpIHsgbV93aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IHJldHVybnNOdWxsOyB9
CisKICAgICBib29sIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0OyB9CiAgICAg
dm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QoYm9vbCByZXR1cm5z
TnVsbCkgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCA9IHJldHVybnNO
dWxsOyB9CiAKQEAgLTI0OSw2ICsyNTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90ZXN0UmVw
YWludDsKICAgICBib29sIG1fdGVzdFJlcGFpbnRTd2VlcEhvcml6b250YWxseTsKICAgICBib29s
IG1fd2FpdFRvRHVtcDsgLy8gVHJ1ZSBpZiB3YWl0VW50aWxEb25lKCkgaGFzIGJlZW4gY2FsbGVk
LCBidXQgbm90aWZ5RG9uZSgpIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkLgorICAgIGJvb2wgbV93
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsKICAgICBib29sIG1fd2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGxPblJlZGlyZWN0OwogICAgIGJvb2wgbV93aW5kb3dJc0tleTsKICAgICBib29sIG1f
YWx3YXlzQWNjZXB0Q29va2llczsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCAzYWFiYTU5Li42ZjgyZTAxIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9h
ZERlbGVnYXRlLm1tCkBAIC0xMjksNiArMTI5LDkgQEAKICAgICAgICAgcHJpbnRmKCIlc1xuIiwg
W3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQogCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKwogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCgpICYmIHJlZGlyZWN0UmVzcG9uc2UpIHsK
ICAgICAgICAgcHJpbnRmKCJSZXR1cm5pbmcgbnVsbCBmb3IgdGhpcyByZWRpcmVjdFxuIik7CiAg
ICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcAppbmRleCAwZWRmNjliLi4xOWJmODRhIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5jcHAKQEAgLTI0Myw2ICsyNDMsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0KAogICAgICAgICAgICAg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVkaXJlY3RSZXNwb25zZSkuY19zdHIo
KSk7CiAgICAgfQogCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSkgeworICAgICAgICAqbmV3UmVxdWVzdCA9IDA7Cisg
ICAgICAgIHJldHVybiBTX09LOworICAgIH0KKwogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCgpICYmIHJl
ZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAgcHJpbnRmKCJSZXR1cm5pbmcgbnVsbCBmb3IgdGhp
cyByZWRpcmVjdFxuIik7CiAgICAgICAgICpuZXdSZXF1ZXN0ID0gMDsK
</data>
<flag name="review"
          id="28887"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>