<?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>51040</bug_id>
          
          <creation_ts>2010-12-14 09:38:11 -0800</creation_ts>
          <short_desc>Error event in &lt;script&gt; element shouldn&apos;t bubble</short_desc>
          <delta_ts>2011-04-20 05:45:46 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>8519</blocked>
    
    <blocked>58981</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>ian</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>pfeldman</cc>
    
    <cc>rniwa</cc>
    
    <cc>sullivan</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322012</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-14 09:38:11 -0800</bug_when>
    <thetext>According to section 4.3.1 of HTML5 spec(http://www.w3.org/TR/html5/scripting-1.html#script):

&quot;If the src attribute&apos;s value[of &lt;sctipt&gt; element] is the empty string or if it could not be resolved, then the user agent must queue a task to fire a simple event named error at the element, and abort these steps.&quot;

...

&quot;Executing a script block: When the steps above require that the script block be executed, the user agent must act as follows:

If the load resulted in an error (for example a DNS error, or an HTTP 404 error)
Executing the script block must just consist of firing a simple event named error at the element.&quot;


&quot;firing a simple event&quot; means that the event is not bubbling(http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322014</commentid>
    <comment_count>1</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-14 09:42:02 -0800</bug_when>
    <thetext>fast/events/onerror-bubbling.html was introduced in http://trac.webkit.org/changeset/14007 and it&apos;s not clear why the event was expected to bubble for scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322019</commentid>
    <comment_count>2</comment_count>
      <attachid>76543</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-14 09:50:19 -0800</bug_when>
    <thetext>Created attachment 76543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322049</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 10:55:30 -0800</bug_when>
    <thetext>&gt;  it&apos;s not clear why the event was expected to bubble for scripts.

ChangeLog says: &quot;The DOM spec says the event should bubble, and that&apos;s how it works in Firefox.&quot; Is that incorrect? Did you test IE and Firefox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322184</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-14 13:59:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt;  it&apos;s not clear why the event was expected to bubble for scripts.
&gt; 
&gt; ChangeLog says: &quot;The DOM spec says the event should bubble, and that&apos;s how it works in Firefox.&quot; Is that incorrect? 

I think the author is talking about this section http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents which contains the following sentence:

&quot;
error
The error event occurs when an image does not load properly or when an error occurs during script execution. This event is valid for OBJECT elements, BODY elements, and FRAMESET element.
Bubbles: Yes
Cancelable: No
Context Info: None
&quot;
Note that SCRIPT element is not mentioned while HTML5 spec explicitly describes its behavior. 


&gt; Did you test IE and Firefox?
Both old and new version of the test fail in IE9 and FF3.6.12 They don&apos;t seem to invoke onerror handler on the script elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322189</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:06:12 -0800</bug_when>
    <thetext>Is it possible to make a test that works in IE and Firefox? A regression test that only works in WebKit isn&apos;t very future proof.

If no other browser ever invokes onerror on a script element, them maybe HTML5 should be changed to match WebKit as the only implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322199</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-14 14:21:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Is it possible to make a test that works in IE and Firefox? A regression test that only works in WebKit isn&apos;t very future proof.
&gt; 
I&apos;m not sure I&apos;m following you here. The test doesn&apos;t pass in IE/FF since they don&apos;t support script.onerror, in their case we could produce a result that would state that the feature is not implemented in these browsers. Can you elaborate on what you mean by &quot;making a test that works in IE and Firefox&quot;?

&gt; If no other browser ever invokes onerror on a script element, them maybe HTML5 should be changed to match WebKit as the only implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322230</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:41:25 -0800</bug_when>
    <thetext>OK - if they don&apos;t support script.onerror at all, then we should check with HTML5 working group about making its behavior match WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322526</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-15 00:09:41 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; OK - if they don&apos;t support script.onerror at all, then we should check with HTML5 working group about making its behavior match WebKit.

One more problem with that is that according to the spec window.onerror handler is a function accepting three arguments(message, filename, line number), &quot;error&quot; event listeners on window will exect ErrorEvent as a parameter while the error event fired for &lt;script&gt; elements is a simple event, i.e. it&apos;s an instance of Event and as such doesn&apos;t contain additional data such as message, url and line number which would have to be provided to window.onerror should script.onerror bubble.  At the same time script.onerror is supposed to be called on script load errors(for example a DNS error, or an HTTP 404 error)  and there is no additional file name/line number in that case.

window.onerror is supported in IE and Firefox and we hardly can change its specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322528</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-15 00:19:20 -0800</bug_when>
    <thetext>Adding Ian who may know why it&apos;s been decided to make &lt;script onerror&gt; a simple event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322696</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-15 10:59:17 -0800</bug_when>
    <thetext>I&apos;m also wondering about SVGScriptElement&apos;s error event. It doesn&apos;t bubble to document element&apos;s onerror in Opera, but does in WebKit. I don&apos;t know what SVG spec says, but if we can HTML and SVG &lt;script&gt; have compatible semantics, that would probably be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322772</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-15 13:03:06 -0800</bug_when>
    <thetext>I think the behavior of the error event of SVGScriptElement should be consistent with that of HTMLScriptElement. Description of the SVG script element is quite vague (http://www.w3.org/TR/SVG11/script.html#ScriptElement):&quot;A ‘script’ element is equivalent to the ‘script’ element in HTML&quot;


(In reply to comment #10)
&gt; I&apos;m also wondering about SVGScriptElement&apos;s error event. It doesn&apos;t bubble to document element&apos;s onerror in Opera, but does in WebKit. I don&apos;t know what SVG spec says, but if we can HTML and SVG &lt;script&gt; have compatible semantics, that would probably be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387703</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-18 07:33:12 -0700</bug_when>
    <thetext>Could you add a window.onerror = function(msg, file, line) { Fail(); } to the test? As you pointed out, load events bubbling up to window.onerror is the real problem with WebKit&apos;s current behavior. Based on behavior of all the other major UAs, I suspect that web devs would be surprised to catch a loading error here as opposed to a scripting error. Nor is it a sane API for the arguments to change. For this reason, I also think the spec is intentional about specifying no bubbling for script loading errors.

Regarding SVGScriptElement, I agree it makes sense to make it match HTMLScriptElement in this regard. In fact, it might be nice if createScriptErrorEvent() were moved to ScriptElement so that it could be shared by SVGScriptElement, HTMLScriptElement and HTMLScriptRunner.

AP, unless you still see issues, I&apos;m happy to review this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388530</commentid>
    <comment_count>13</comment_count>
      <attachid>90209</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-19 09:01:07 -0700</bug_when>
    <thetext>Created attachment 90209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388534</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-19 09:01:41 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Could you add a window.onerror = function(msg, file, line) { Fail(); } to the test? 

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388540</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-19 09:19:31 -0700</bug_when>
    <thetext>The test looks good. What about the bit about SVGScriptElement and possible refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389131</commentid>
    <comment_count>16</comment_count>
      <attachid>90326</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-20 02:55:30 -0700</bug_when>
    <thetext>Created attachment 90326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389132</commentid>
    <comment_count>17</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-20 02:57:03 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; The test looks good. What about the bit about SVGScriptElement and possible refactoring?

Done. ScriptElement::dispatchErrorEvent is not virtual any more and has common implementation for both SVG and HTML. The error event doesn&apos;t bubble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389137</commentid>
    <comment_count>18</comment_count>
      <attachid>90326</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-04-20 03:24:54 -0700</bug_when>
    <thetext>Comment on attachment 90326
Patch

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

&gt; Source/WebCore/svg/SVGScriptElement.cpp:57
&gt; +    else if (attr-&gt;name() == HTMLNames::onerrorAttr)

Adding support for the onerror attribute on SVG scripts should be called out in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389147</commentid>
    <comment_count>19</comment_count>
      <attachid>90328</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-20 04:36:47 -0700</bug_when>
    <thetext>Created attachment 90328
Patch for landing

Fixed ChangeLog entry as Tony suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389151</commentid>
    <comment_count>20</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-04-20 04:52:48 -0700</bug_when>
    <thetext>Committed r84357: &lt;http://trac.webkit.org/changeset/84357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389162</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 05:45:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84357 might have broken Qt Linux Release
The following tests are not passing:
http/tests/misc/unloadable-script.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76543</attachid>
            <date>2010-12-14 09:50:19 -0800</date>
            <delta_ts>2011-04-19 09:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51040-20101214205017.patch</filename>
            <type>text/plain</type>
            <size>4558</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYWI0NjNhNmEzZGVmYWViMjkyZjdmZWVlYzQ5NzY1YTJkODQ4YWQ4Li5mMWM4YWQ1
YmVlNmQ0YTdjZThmMzk0OGUwMmVkZDgzNWVmNGI0ZGZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTItMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXJyb3IgZXZlbnQg
aW4gPHNjcmlwdD4gZWxlbWVudCBzaG91bGRuJ3QgYnViYmxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTA0MAorCisgICAgICAgICogZmFzdC9ldmVu
dHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMv
b25lcnJvci1idWJibGluZy5odG1sOgorCiAyMDEwLTEyLTE0ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gTW9yZSBjaHJvbWl1
bSByZWJhc2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJy
b3ItYnViYmxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJv
ci1idWJibGluZy1leHBlY3RlZC50eHQKaW5kZXggYWU3MDAxYTBiMjc1MzgxNmNiZjEyMTZiZDc0
MmY2N2FlNDJiMmQ3NC4uNzAyMDc5OTVjNjc2ZTQxZGU4Njg0M2U1MDhlNDdlNWM4OGJjNGMwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy1l
eHBlY3RlZC50eHQKQEAgLTEsMyArMSwyIEBACi1QQVNTOiBpbmxpbmUgc2NyaXB0IGxvYWQgZXJy
b3IgYnViYmxlZAotUEFTUzogZHluYW1pYyBzY3JpcHQgbG9hZCBlcnJvciBidWJibGVkCitQQVNT
OiBzY3JpcHQgZXJyb3IgaGFuZGxlciBpbnZva2VkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbAppbmRleCBhNzliOWRmNmY2MzIzM2ZmYjA1OGQ0ODc3
ZGQ3OTEwYzAzMWM4ZWUzLi4xYmYxZmMwMDIxZjU4NmU5N2Q2MGJjYWE0ZDRkZjkzZjgzOGU1OGUz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmVycm9yLWJ1YmJsaW5nLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy5odG1sCkBA
IC0yMCw3ICsyMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KICAgICAgICAgCiAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIGRpdi5zZXRBdHRyaWJ1
dGUoIm9uZXJyb3IiLCAicHJpbnQoJ1BBU1M6IGR5bmFtaWMgc2NyaXB0IGxvYWQgZXJyb3IgYnVi
YmxlZCcpOyBcCisgICAgZGl2LnNldEF0dHJpYnV0ZSgib25lcnJvciIsICJwcmludCgnRkFJTEVE
OiBkeW5hbWljIHNjcmlwdCBsb2FkIGVycm9yIGJ1YmJsZWQnKTsgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOyIpOwogICAgIApAQCAtMzEsMTMgKzMxLDI0IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgIC8vIGZvcmNlIHRoZSBzY3JpcHQgdG8gbG9hZAogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2KTsKIH0KKworZnVuY3Rpb24gc2NyaXB0T25lcnJvcigpCit7CisgICAgcHJpbnQo
J1BBU1M6IHNjcmlwdCBlcnJvciBoYW5kbGVyIGludm9rZWQnKTsKKworICAgIC8vIEFsbG93IGV2
ZW50IGJ1YmJsaW5nIHBoYXNlIHRvIGNvbXBsZXRlLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSwgMCk7Cit9CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0idGVzdCgpOyI+CiA8aHI+CiA8ZGl2IGlkPSdj
b25zb2xlJz48L2Rpdj4KLTxkaXYgb25lcnJvcj0icHJpbnQoJ1BBU1M6IGlubGluZSBzY3JpcHQg
bG9hZCBlcnJvciBidWJibGVkJykiPgotICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dyZWdUaGVC
dW5ueS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IG9uZXJyb3I9InByaW50KCdGQUlMRUQ6IGlubGluZSBz
Y3JpcHQgbG9hZCBlcnJvciBidWJibGVkJykiPgorICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dy
ZWdUaGVCdW5ueS5qcyIgb25lcnJvcj0ic2NyaXB0T25lcnJvcigpIj48L3NjcmlwdD4KIDwvZGl2
PgogCiA8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhYmYxNWM4ZWQ1OGIxOGRlNjg1N2M4MGMxN2NlYzQ2ODZmZGRlMzYuLjc2
N2ExZDYxNWJhNjZlYjgyNWNhZDI5NzBhYzZkYjU1YjUzYzI2MTggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTAtMTItMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXJyb3IgZXZlbnQgaW4g
PHNjcmlwdD4gZWxlbWVudCBzaG91bGRuJ3QgYnViYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTA0MAorCisgICAgICAgICogaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZGlz
cGF0Y2hFcnJvckV2ZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcmlwdEVycm9yRXZlbnQpOgorCiAyMDEw
LTEyLTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApp
bmRleCA2MDNiMmE4ZWVkYmU3NTJlZjcyZDFhZTMyYWFiOWVkODVmMDM2YzYxLi5kNWE1MjVlZDJi
ZmMwZWQyZmZmMTg4Yzk4ZTcyMjE4NWE0NTBkNjIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudCgpCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVu
dCgpCiB7Ci0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJv
ckV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIFBhc3NSZWZQdHI8
RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5j
cHAKaW5kZXggNzk3OGEwZjdhN2RiNDY5MzM0NmIxZWYzY2M2N2ExYjk4ZDk0NTJkYi4uMzIxNmY4
NjBhNDVlMmI4ZDc0NzM4NzRhMDZlMTczZThiODhlNzJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGlubGluZSBQYXNzUmVmUHRy
PEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQoKQogCiBpbmxpbmUgUGFzc1JlZlB0cjxFdmVu
dD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCiB7Ci0gICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKTsKIH0KIAogU2Ny
aXB0U291cmNlQ29kZSBIVE1MU2NyaXB0UnVubmVyOjpzb3VyY2VGcm9tUGVuZGluZ1NjcmlwdChj
b25zdCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQsIGJvb2wmIGVycm9yT2NjdXJyZWQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90209</attachid>
            <date>2011-04-19 09:01:07 -0700</date>
            <delta_ts>2011-04-20 02:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51040-20110419200104.patch</filename>
            <type>text/plain</type>
            <size>4731</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyMzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNWVhYmZkODdlOTZjY2RiZTAwMjA3
YzZlMmIzN2VlZGRjMzE5OGZlLi4xZDlmMmI2MzRmOTI1ZTc1YzBkOTExMzAyOWI5MmFlZTk0YmFi
YmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTItMTQgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXJyb3IgZXZlbnQgaW4gPHNjcmlwdD4gZWxlbWVudCBzaG91bGRuJ3Qg
YnViYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTA0MAorCisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy5odG1sOgorCiAyMDEx
LTA0LTE5ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmVy
cm9yLWJ1YmJsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJy
b3ItYnViYmxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFlNzAwMWEwYjI3NTM4MTZjYmYxMjE2YmQ3
NDJmNjdhZTQyYjJkNzQuLjcwMjA3OTk1YzY3NmU0MWRlODY4NDNlNTA4ZTQ3ZTVjODhiYzRjMDgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmct
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMiBAQAotUEFTUzogaW5saW5lIHNjcmlwdCBsb2FkIGVy
cm9yIGJ1YmJsZWQKLVBBU1M6IGR5bmFtaWMgc2NyaXB0IGxvYWQgZXJyb3IgYnViYmxlZAorUEFT
Uzogc2NyaXB0IGVycm9yIGhhbmRsZXIgaW52b2tlZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9vbmVycm9yLWJ1YmJsaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9vbmVycm9yLWJ1YmJsaW5nLmh0bWwKaW5kZXggYTc5YjlkZjZmNjMyMzNmZmIwNThkNDg3
N2RkNzkxMGMwMzFjOGVlMy4uMmIxNDQ3YjRlY2I1M2RjNWZlNjM3YjU2NGNjMjkwZjYxNWI4OTYw
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbApA
QCAtMjAsNyArMjAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAgICAgICAgIAogICAgIHZh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBkaXYuc2V0QXR0cmli
dXRlKCJvbmVycm9yIiwgInByaW50KCdQQVNTOiBkeW5hbWljIHNjcmlwdCBsb2FkIGVycm9yIGJ1
YmJsZWQnKTsgXAorICAgIGRpdi5zZXRBdHRyaWJ1dGUoIm9uZXJyb3IiLCAicHJpbnQoJ0ZBSUxF
RDogZHluYW1pYyBzY3JpcHQgbG9hZCBlcnJvciBidWJibGVkJyk7IFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIFwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsiKTsKICAgICAKQEAgLTMxLDEzICszMSwyOCBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAvLyBmb3JjZSB0aGUgc2NyaXB0IHRvIGxvYWQKICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRpdik7CiB9CisKK2Z1bmN0aW9uIHNjcmlwdE9uZXJyb3IoKQoreworICAgIHByaW50
KCdQQVNTOiBzY3JpcHQgZXJyb3IgaGFuZGxlciBpbnZva2VkJyk7CisKKyAgICAvLyBBbGxvdyBl
dmVudCBidWJibGluZyBwaGFzZSB0byBjb21wbGV0ZS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDApOworfQorCit3
aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgIHByaW50KCdGQUlMRUQ6IHdpbmRvdy5v
bmVycm9yIGhhbmRsZXIgaW52b2tlZCcpOworfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBv
bmxvYWQ9InRlc3QoKTsiPgogPGhyPgogPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Ci08ZGl2IG9u
ZXJyb3I9InByaW50KCdQQVNTOiBpbmxpbmUgc2NyaXB0IGxvYWQgZXJyb3IgYnViYmxlZCcpIj4K
LSAgICA8c2NyaXB0IHNyYz0iZmlsZTovLy9HcmVnVGhlQnVubnkuanMiPjwvc2NyaXB0PgorPGRp
diBvbmVycm9yPSJwcmludCgnRkFJTEVEOiBpbmxpbmUgc2NyaXB0IGxvYWQgZXJyb3IgYnViYmxl
ZCcpIj4KKyAgICA8c2NyaXB0IHNyYz0iZmlsZTovLy9HcmVnVGhlQnVubnkuanMiIG9uZXJyb3I9
InNjcmlwdE9uZXJyb3IoKSI+PC9zY3JpcHQ+CiA8L2Rpdj4KIAogPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDU4MjllMzg1NDRkZTBjZjMwZDQwNDkyM2UxNmE4ZDYxZjdmM2U4MGIuLmZhNDk2OWEyOGM0
MTQxZTM1Yzc2NDhiMmNmY2E2MzJhMTNjNDkyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMC0xMi0xNCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFcnJvciBldmVu
dCBpbiA8c2NyaXB0PiBlbGVtZW50IHNob3VsZG4ndCBidWJibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDQwCisKKyAgICAgICAgKiBodG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50
OjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2NyaXB0RXJyb3JFdmVudCk6CisK
IDIwMTEtMDQtMTkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUb255IEdlbnRpbGNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuY3BwCmluZGV4IGI1NmIzNzU5NTI1ZGM1ODM2YWRiYTkyNzQ5OGE0Mzc5ZGU5
MWY4MzAuLmM2NThlOTMyNDYxMDFhNzdkZGE5N2NiYzA3MDQ2MGNjNDAxZTkwNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogCiB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50OjpkaXNwYXRjaEVycm9yRXZlbnQoKQogewotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggNzMx
MjMzNGMzOWFjNjFiNzgxZjkzMDZiZTBmZGUwZTU2ZTZiNjQxZS4uYjk2YTJjYWY0Y2QyMjk1ZWVk
NDBiNWQ2YmViMjhhZTJjYTI2NDdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgaW5saW5lIFBhc3NSZWZQ
dHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpCiAKIGlubGluZSBQYXNzUmVmUHRyPEV2
ZW50PiBjcmVhdGVTY3JpcHRFcnJvckV2ZW50KCkKIHsKLSAgICByZXR1cm4gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOwogfQogCiBT
Y3JpcHRTb3VyY2VDb2RlIEhUTUxTY3JpcHRSdW5uZXI6OnNvdXJjZUZyb21QZW5kaW5nU2NyaXB0
KGNvbnN0IFBlbmRpbmdTY3JpcHQmIHNjcmlwdCwgYm9vbCYgZXJyb3JPY2N1cnJlZCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90326</attachid>
            <date>2011-04-20 02:55:30 -0700</date>
            <delta_ts>2011-04-20 03:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51040-20110420135527.patch</filename>
            <type>text/plain</type>
            <size>16602</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQyMzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNWVhYmZkODdlOTZjY2RiZTAwMjA3
YzZlMmIzN2VlZGRjMzE5OGZlLi5mNTgzNTg4ZmM2ODgxOTllYWMyOWU3NzU1YWQzYmU2NjJjYTVj
Yjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMjAgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXJyb3IgZXZlbnQgaW4gPHNjcmlwdD4gZWxlbWVudCBzaG91bGRuJ3Qg
YnViYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTA0MAorCisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy5odG1sOgorICAgICAg
ICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRz
LnN2ZzogZXJyb3IgZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiB0aGUKKyAgICAgICAgY29ycmVzcG9u
ZGluZyBTVkdTY3JpcHRFbGVtZW50IGFuZCBzaG91bGRuJ3QgYnViYmxlLCBzbyB0aGUgZ2xvYmFs
IGVycm9yIGhhbmRsZXIgc2hvdWxkCisgICAgICAgIG5ldmVyIGJlIGludm9rZWQgZm9yIHNjcmlw
dCBsb2FkIGVycm9ycy4gVGhpcyBiZWhhdmlvdXIgaXMgY29uc2lzdGVudCB3aXRoIEhUTUxTY3Jp
cHRFbGVtZW50IGVsZW1lbnQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Nj
cmlwdC1vbmVycm9yLWJ1YmJsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3Zn
L2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9yLWJ1YmJsaW5nLnN2ZzogQWRkZWQu
CisKIDIwMTEtMDQtMTkgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL29uZXJyb3ItYnViYmxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKaW5kZXggYWU3MDAxYTBiMjc1MzgxNmNi
ZjEyMTZiZDc0MmY2N2FlNDJiMmQ3NC4uNzAyMDc5OTVjNjc2ZTQxZGU4Njg0M2U1MDhlNDdlNWM4
OGJjNGMwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJi
bGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1i
dWJibGluZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwyIEBACi1QQVNTOiBpbmxpbmUgc2NyaXB0
IGxvYWQgZXJyb3IgYnViYmxlZAotUEFTUzogZHluYW1pYyBzY3JpcHQgbG9hZCBlcnJvciBidWJi
bGVkCitQQVNTOiBzY3JpcHQgZXJyb3IgaGFuZGxlciBpbnZva2VkCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbAppbmRleCBhNzliOWRmNmY2MzIzM2Zm
YjA1OGQ0ODc3ZGQ3OTEwYzAzMWM4ZWUzLi4yYjE0NDdiNGVjYjUzZGM1ZmU2MzdiNTY0Y2MyOTBm
NjE1Yjg5NjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmVycm9yLWJ1
YmJsaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGlu
Zy5odG1sCkBAIC0yMCw3ICsyMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KICAgICAgICAg
CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoIm9uZXJyb3IiLCAicHJpbnQoJ1BBU1M6IGR5bmFtaWMgc2NyaXB0IGxvYWQg
ZXJyb3IgYnViYmxlZCcpOyBcCisgICAgZGl2LnNldEF0dHJpYnV0ZSgib25lcnJvciIsICJwcmlu
dCgnRkFJTEVEOiBkeW5hbWljIHNjcmlwdCBsb2FkIGVycm9yIGJ1YmJsZWQnKTsgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOyIpOwogICAgIApAQCAtMzEsMTMgKzMxLDI4IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIC8vIGZvcmNlIHRoZSBzY3JpcHQgdG8gbG9hZAogICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIH0KKworZnVuY3Rpb24gc2NyaXB0T25lcnJvcigpCit7Cisg
ICAgcHJpbnQoJ1BBU1M6IHNjcmlwdCBlcnJvciBoYW5kbGVyIGludm9rZWQnKTsKKworICAgIC8v
IEFsbG93IGV2ZW50IGJ1YmJsaW5nIHBoYXNlIHRvIGNvbXBsZXRlLgorICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSwgMCk7
Cit9CisKK3dpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgcHJpbnQoJ0ZBSUxFRDog
d2luZG93Lm9uZXJyb3IgaGFuZGxlciBpbnZva2VkJyk7Cit9CiA8L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5IG9ubG9hZD0idGVzdCgpOyI+CiA8aHI+CiA8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4K
LTxkaXYgb25lcnJvcj0icHJpbnQoJ1BBU1M6IGlubGluZSBzY3JpcHQgbG9hZCBlcnJvciBidWJi
bGVkJykiPgotICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dyZWdUaGVCdW5ueS5qcyI+PC9zY3Jp
cHQ+Cis8ZGl2IG9uZXJyb3I9InByaW50KCdGQUlMRUQ6IGlubGluZSBzY3JpcHQgbG9hZCBlcnJv
ciBidWJibGVkJykiPgorICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dyZWdUaGVCdW5ueS5qcyIg
b25lcnJvcj0ic2NyaXB0T25lcnJvcigpIj48L3NjcmlwdD4KIDwvZGl2PgogCiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LWxv
YWQtYW5kLWVycm9yLWV2ZW50cy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVs
ZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmcKaW5kZXggNzdmNGE5MzFmMWM2
ODUyM2E4MjEyN2E1MzkwNDM1NzIxYjEyMDNkNC4uNTgwMzQwN2Q0NTIyY2RjMWM1ZWM5MTAzZGMz
ZDMyODE0ODNjOTA2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRF
bGVtZW50L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMuc3ZnCisrKyBiL0xheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLnN2
ZwpAQCAtMSw1ICsxLDUgQEAKIDw/eG1sIHZlcnNpb249IjEuMCI/PgotPHN2ZyB3aWR0aD0iMTAw
JSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5z
OnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczp4aHRtbD0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRsZXIoZXZ0KSIg
b25sb2FkPSJ0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIiBvbmVycm9yPSJ0ZXN0R2xvYmFsRXJyb3JIYW5kbGVyTm90RmlyZWQo
ZXZ0KSIgb25sb2FkPSJ0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSI+CiA8ZGVmcz4KIDx0aXRsZT4m
bHQ7U0NSSVBUJmd0OyBsb2FkIGFuZCBlcnJvciBldmVudHM8L3RpdGxlPgogPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgpAQCAtMTUsNiArMTUsMTAgQEAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIAorZnVuY3Rpb24gdGVzdEdsb2JhbEVycm9ySGFuZGxlck5vdEZpcmVkKGV2dCkgewor
ICAgIHN0YXR1c19bZXZ0LnRhcmdldC5pZF0gKz0gIkciOworfQorCiBmdW5jdGlvbiB0ZXN0TG9h
ZEV2ZW50Tm90RmlyZWQoKSB7CiAgICAgc2hvdWxkQ29udGludWUgPSAwOwogfQpAQCAtOTYsNiAr
MTAwLDcgQEAgZnVuY3Rpb24gY29udGludWVEeW5hbWljVGVzdDEoKSB7CiAgICAgICAgIGxvYWRF
dmVudEhhbmRsZXIobG9hZEV2ZW50KTsKICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoJ2NvbnRp
bnVlRHluYW1pY1Rlc3QyKCknLCAwKTsKICAgICB9OworICAgIHNjcmlwdEVsZW1lbnQub25lcnJv
ciA9IGVycm9yRXZlbnRIYW5kbGVyOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImRlZnMiKVswXS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsgIAogfQpAQCAtMTA2LDE1
ICsxMTEsMTYgQEAgZnVuY3Rpb24gY29udGludWVEeW5hbWljVGVzdDIoKSB7CiAgICAgc2NyaXB0
RWxlbWVudC50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2NyaXB0IjsKICAgICBzY3JpcHRFbGVt
ZW50LmhyZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvbm90LWV4aXN0YW50LmpzIjsKICAgICBzY3Jp
cHRFbGVtZW50LmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuYmFzZVZhbCA9IHRydWU7CisgICAg
c2NyaXB0RWxlbWVudC5vbmVycm9yID0gZXJyb3JFdmVudEhhbmRsZXI7CiAKICAgICBsYXN0VGVz
dCA9IDE7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5hcHBl
bmRDaGlsZChzY3JpcHRFbGVtZW50KTsgIAogfQogPC9zY3JpcHQ+Ci08c2NyaXB0IGlkPSIwIiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZEV2ZW50SGFuZGxlcihldnQpIiB4bGlu
azpocmVmPSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgaWQ9IjEiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZD0idHJ1ZSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5rOmhyZWY9InJl
c291cmNlcy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3R0b28uanMiLz4KLTxzY3JpcHQgaWQ9IjIiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5r
OmhyZWY9InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IGlkPSIz
IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9InRydWUi
IG9ubG9hZD0ibG9hZEV2ZW50SGFuZGxlcihldnQpOyBsYXN0VGVzdEJlZm9yZVJvb3RFbGVtZW50
TG9hZGVkKCk7IiB4bGluazpocmVmPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiLz4KKzxzY3Jp
cHQgaWQ9IjAiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRs
ZXIoZXZ0KSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5rOmhyZWY9InJlc291
cmNlcy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0iMSIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmVycm9yPSJlcnJvckV2ZW50SGFuZGxlcihldnQpIiBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJ0cnVlIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIo
ZXZ0KSIgeGxpbms6aHJlZj0icmVzb3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdHRvby5qcyIv
PgorPHNjcmlwdCBpZD0iMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmVycm9yPSJlcnJvckV2
ZW50SGFuZGxlcihldnQpIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6aHJl
Zj0icmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjMiIHR5
cGU9InRleHQvamF2YXNjcmlwdCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRsZXIoZXZ0KSIgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0idHJ1ZSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2
dCk7IGxhc3RUZXN0QmVmb3JlUm9vdEVsZW1lbnRMb2FkZWQoKTsiIHhsaW5rOmhyZWY9InJlc291
cmNlcy9zY3JpcHQtbG9hZC5qcyIvPgogPC9kZWZzPgogPGZvcmVpZ25PYmplY3Q+CiBUZXN0IGxv
YWQgYW5kIGVycm9yIGV2ZW50IGhhbmRsaW5nIHdpdGggU1ZHU2NyaXB0RWxlbWVudApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9y
LWJ1YmJsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxl
bWVudC9zY3JpcHQtb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNh
MGQ0ZjQxMmE1YjQ2MDg3ZDA5ZmIzY2NhY2U0M2M3ODM3MjYzNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtb25lcnJvci1idWJi
bGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgImVycm9yIiBldmVu
dCBpcyBkaXNwYXRjaGVkIHRvIFNWR1NjcmlwdEVsZW1lbnQgb25lcnJvciBoYW5kbGVyIGFuZCBk
b2Vzbid0IGJ1YmJsZS4KK1BBU1M6IHNjcmlwdCBvbmVycm9yIGl2b2tlZCBmb3Igc2NyaXB0IGlk
ID0gMAorUEFTUzogc2NyaXB0IG9uZXJyb3IgaXZva2VkIGZvciBzY3JpcHQgaWQgPSAxCitQQVNT
OiBvbmVycm9yIGludm9rZWQgb24gYSBkeW5hbWljIHNjcmlwdAorRE9ORS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtb25lcnJvci1idWJi
bGluZy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LW9u
ZXJyb3ItYnViYmxpbmcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjN2U5NjAzZjg5MDdmNTI3NDFkN2M4ZDhj
YWE3ZDhiYjQwZjEzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NW
R1NjcmlwdEVsZW1lbnQvc2NyaXB0LW9uZXJyb3ItYnViYmxpbmcuc3ZnCkBAIC0wLDAgKzEsNjMg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAl
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCIgb25lcnJvcj0ic3ZnT25FcnJvckhhbmRsZXIoZXZ0KSI+Cis8ZGVmcz4KKzx0aXRs
ZT4mbHQ7U0NSSVBUJmd0OyBlcnJvciBldmVudCBidWJibGluZzwvdGl0bGU+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+Cit2YXIgbWVzc2FnZXMgPSBbXTsKKworZnVuY3Rpb24gYWRk
UmVzdWx0KG1lc3NhZ2UpCit7CisgICAgbWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK30KKworZnVu
Y3Rpb24gcHJpbnQobWVzc2FnZSkgCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJodG1sOmRpdiIp
OworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGls
ZChwYXJhZ3JhcGgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gc3ZnT25FcnJvckhhbmRsZXIo
ZSkgeworICAgIGFkZFJlc3VsdCgiRkFJTDogc3ZnLm9uZXJyb3IgaW52b2tlZCAiICsgZS5tZXNz
YWdlICsgIiAiICsgZS5maWxlbmFtZSArICI6IiArIGUubGluZW5vKTsKK30KKworZnVuY3Rpb24g
c2NyaXB0T25FcnJvckhhbmRsZXIoaWQpIHsKKyAgICBhZGRSZXN1bHQoIlBBU1M6IHNjcmlwdCBv
bmVycm9yIGl2b2tlZCBmb3Igc2NyaXB0IGlkID0gIiArIGlkICsgIiIpOworfQorCitmdW5jdGlv
biB0ZXN0T25FcnJvckluRHluYW1pY1NjcmlwdCgpIHsKKyAgICB2YXIgc2NyaXB0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAi
c3ZnOnNjcmlwdCIpOworICAgIHNjcmlwdEVsZW1lbnQuaWQgPSAzOworICAgIHNjcmlwdEVsZW1l
bnQudHlwZS5iYXNlVmFsID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgc2NyaXB0RWxlbWVudC5o
cmVmLmJhc2VWYWwgPSAicmVzb3VyY2VzL2RvZXNub3RleGlzdC5qcyI7CisKKyAgICBzY3JpcHRF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFk
ZFJlc3VsdCgiUEFTUzogb25lcnJvciBpbnZva2VkIG9uIGEgZHluYW1pYyBzY3JpcHQiKTsKKyAg
ICAgICAgc2V0VGltZW91dChlbmRUZXN0LCAwKTsKKyAgICB9LCB0cnVlKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxl
bWVudCk7IAorfQorCitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAgIGFkZFJlc3VsdCgiRE9ORS4i
KTsKKyAgICBtZXNzYWdlcy5mb3JFYWNoKHByaW50KTsgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSIwIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9u
ZXJyb3I9InNjcmlwdE9uRXJyb3JIYW5kbGVyKDApIiB4bGluazpocmVmPSJyZXNvdXJjZXMvY2Vy
dGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjEiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgb25lcnJvcj0ic2NyaXB0T25FcnJvckhhbmRsZXIoMSkiIHhsaW5rOmhy
ZWY9InJlc291cmNlcy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3R0b28uanMiIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ9InRydWUiIC8+Cis8c2NyaXB0IGlkPSIyIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIG9ubG9hZD0idGVzdE9uRXJyb3JJbkR5bmFtaWNTY3JpcHQoKSIgeGxpbms6aHJlZj0icmVz
b3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzwvZGVmcz4KKzxmb3JlaWduT2JqZWN0
PgorVGVzdCB0aGF0ICJlcnJvciIgZXZlbnQgaXMgZGlzcGF0Y2hlZCB0byBTVkdTY3JpcHRFbGVt
ZW50IG9uZXJyb3IgaGFuZGxlciBhbmQgZG9lc24ndCBidWJibGUuCis8eGh0bWw6aHIvPgorPHho
dG1sOnAgaWQ9InJlc3VsdHMiPjwveGh0bWw6cD4KKzwvZm9yZWlnbk9iamVjdD4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDU4MjllMzg1NDRkZTBjZjMwZDQwNDkyM2UxNmE4ZDYxZjdmM2U4MGIuLmZh
MTM4ZjUxYzI1MTgyOWMyNzVjNTNjMGYwMzE0M2IwOWY2Zjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMS0wNC0yMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
cnJvciBldmVudCBpbiA8c2NyaXB0PiBlbGVtZW50IHNob3VsZG4ndCBidWJibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDQwCisKKyAgICAgICAg
VGVzdDogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9yLWJ1YmJsaW5nLnN2
ZworCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KTogdGhlIG1ldGhvZCBub3cgaGFzIHNh
bWUgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBzY3JpcHQKKyAgICAgICAgZWxlbWVudHMsIHNjcmlw
dCBsb2FkIGVycm9yIGV2ZW50IGRvZXNuJyBidWJibGUuCisgICAgICAgICogZG9tL1NjcmlwdEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNj
cmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVj
dXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN2Zy9TVkdTY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAy
MDExLTA0LTE5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVG9ueSBHZW50aWxjb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCmluZGV4IDVkZDZiN2QxYTNiM2QzNzNmZTBkOGQ1NDE2YmM2NmNiNGM3ZGI0MDAuLjE2NjA4
Njg5MDU1Y2IzODZkMTg4MmZkOWZiMTI1ZjY5NDdjZjAyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTEzNSw2ICsxMzUsMTEgQEAgc3RhdGljIGJvb2wgaXNMZWdhY3lT
dXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKICAgICBy
ZXR1cm4gbGFuZ3VhZ2VzLmNvbnRhaW5zKGxhbmd1YWdlKTsKIH0KIAordm9pZCBTY3JpcHRFbGVt
ZW50OjpkaXNwYXRjaEVycm9yRXZlbnQoKQoreworICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKwogYm9vbCBTY3JpcHRFbGVtZW50Ojppc1NjcmlwdFR5cGVTdXBwb3J0ZWQoTGVnYWN5VHlw
ZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpc0xl
Z2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSgpIGlzIG5vdCB2YWxpZCBIVE1MNS4gSXQg
aXMgdXNlZCBoZXJlIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhp
c3RpbmcgbGF5b3V0IHRlc3RzLiBUaGUgc3BlY2lmaWMgdmlvbGF0aW9ucyBhcmU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCA5Y2U2NmU1ZGRiZjQzNGM2YmRiOWJmMWI1MGVlMDE2
YzczNDM0OTliLi4zYjVmNjg2NjcwMjM1MDY0N2JjZWU3YzAyYjRlYzNlOTAwNGFlMzE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gWE1MIHBhcnNlciBjYWxscyB0aGVzZQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExv
YWRFdmVudCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCkgPSAw
OworICAgIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgYm9vbCBpc1NjcmlwdFR5cGVT
dXBwb3J0ZWQoTGVnYWN5VHlwZVN1cHBvcnQpIGNvbnN0OwogCiAgICAgYm9vbCBoYXZlRmlyZWRM
b2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhdmVGaXJlZExvYWQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYjU2YjM3NTk1MjVkYzU4MzZhZGJh
OTI3NDk4YTQzNzlkZTkxZjgzMC4uMTY4ZTZkMjMyYmEyYTg5Y2M4NDE3YTExOGVkZDIxYWFiNjQz
MmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE4
NSwxMSArMTg1LDYgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQo
KQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAotdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hF
cnJvckV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7Ci19Ci0KIFBhc3NSZWZQdHI8RWxlbWVudD4g
SFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVsZW1lbnQo
dGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2UsIGFscmVhZHlTdGFydGVkKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCBjYmU3MjU4YzM2MjNiYmRjZTk3
OWM3NDJjNDg4OGQ4ZTNkYTY5MDdlLi44NWRhZDYwY2E2NmRjOTQzZTI1NmNlNWZmOTI2NzBjOGI3
MTQyZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCkBAIC02NSw3
ICs2NSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJpYnV0ZSgp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50
PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3Q7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRl
eCA3MzEyMzM0YzM5YWM2MWI3ODFmOTMwNmJlMGZkZTBlNTZlNmI2NDFlLi5kOTg3YTRlM2EzNjE1
ZDExNmViNzdhMGNmYWIxN2I3YTIzOTExMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcApAQCAtODYsMTEgKzg2LDYgQEAgaW5saW5lIFBh
c3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpCiAgICAgcmV0dXJuIEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotaW5s
aW5lIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVNjcmlwdEVycm9yRXZlbnQoKQotewotICAgIHJl
dHVybiBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSk7
Ci19Ci0KIFNjcmlwdFNvdXJjZUNvZGUgSFRNTFNjcmlwdFJ1bm5lcjo6c291cmNlRnJvbVBlbmRp
bmdTY3JpcHQoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0LCBib29sJiBlcnJvck9jY3VycmVk
KSBjb25zdAogewogICAgIGlmIChzY3JpcHQuY2FjaGVkU2NyaXB0KCkpIHsKQEAgLTEzOCw3ICsx
MzMsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlz
cGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgICAgICBOZXN0aW5nTGV2ZWxJbmNy
ZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAg
ICAgICAgIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc3Ry
dWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKG1fZG9jdW1lbnQpOwogICAgICAgICBpZiAoZXJy
b3JPY2N1cnJlZCkKLSAgICAgICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoY3JlYXRlU2Ny
aXB0RXJyb3JFdmVudCgpKTsKKyAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXJy
b3JFdmVudCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpc0V4ZWN1dGlu
Z1NjcmlwdCgpKTsKICAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHQoc291
cmNlQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMDBi
ODVhNWQ4YTA4ODE2OWQxNzYxOTBmYWVjMGM1MzQ1YzM1NGMzNS4uYWVkODU4YmE3YWE0NTY3OWJi
NzQwM2YxMTkwMjBmMzAzMTUzNjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcApAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNiArNTQsOCBAQCB2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIAogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpCiAgICAgICAgIHNldFR5cGUoYXR0
ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IEhUTUxOYW1lczo6b25l
cnJvckF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0NCwxMSArMjQ4LDYgQEAgdm9p
ZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgfQogfQogCi12b2lk
IFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JFdmVudCgpCi17Ci0gICAgZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSkp
OwotfQotCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBjb25zdAogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwg
YWxyZWFkeVN0YXJ0ZWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5k
ZXggMDNjYzczM2JkM2M0ZmU2Y2JiMjI1ZGMyNzI5OWUzMzE1YjZiZjQ2Mi4uNWU2MjgwMGZhNzRh
NGFkZjUwOTUzZTRkMmU5N2I2NjljZjE4MzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oCkBAIC03MSw3ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhh
c1NvdXJjZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9h
ZEV2ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogCiAgICAg
UGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxk
cmVuKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="83065"
          type_id="1"
          status="+"
          setter="tonyg"
    />
    <flag name="commit-queue"
          id="83066"
          type_id="3"
          status="-"
          setter="tonyg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90328</attachid>
            <date>2011-04-20 04:36:47 -0700</date>
            <delta_ts>2011-04-20 04:36:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>error-bubble</filename>
            <type>text/plain</type>
            <size>15848</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNWVhYmZkLi5mNTgzNTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQt
MjAgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXJyb3IgZXZlbnQgaW4gPHNjcmlw
dD4gZWxlbWVudCBzaG91bGRuJ3QgYnViYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTA0MAorCisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJv
ci1idWJibGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvb25lcnJvci1i
dWJibGluZy5odG1sOgorICAgICAgICAqIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQt
bG9hZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZzogZXJyb3IgZXZlbnQgaXMgZGlzcGF0Y2hlZCBvbiB0
aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBTVkdTY3JpcHRFbGVtZW50IGFuZCBzaG91bGRuJ3Qg
YnViYmxlLCBzbyB0aGUgZ2xvYmFsIGVycm9yIGhhbmRsZXIgc2hvdWxkCisgICAgICAgIG5ldmVy
IGJlIGludm9rZWQgZm9yIHNjcmlwdCBsb2FkIGVycm9ycy4gVGhpcyBiZWhhdmlvdXIgaXMgY29u
c2lzdGVudCB3aXRoIEhUTUxTY3JpcHRFbGVtZW50IGVsZW1lbnQuCisgICAgICAgICogc3ZnL2Rv
bS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9yLWJ1YmJsaW5nLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9y
LWJ1YmJsaW5nLnN2ZzogQWRkZWQuCisKIDIwMTEtMDQtMTkgIEpvaG4gS25vdHRlbmJlbHQgIDxq
a25vdHRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKaW5k
ZXggYWU3MDAxYS4uNzAyMDc5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
b25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwyIEBACi1QQVNTOiBp
bmxpbmUgc2NyaXB0IGxvYWQgZXJyb3IgYnViYmxlZAotUEFTUzogZHluYW1pYyBzY3JpcHQgbG9h
ZCBlcnJvciBidWJibGVkCitQQVNTOiBzY3JpcHQgZXJyb3IgaGFuZGxlciBpbnZva2VkCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZXJyb3ItYnViYmxpbmcuaHRtbAppbmRleCBhNzli
OWRmLi4yYjE0NDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmVycm9y
LWJ1YmJsaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25lcnJvci1idWJi
bGluZy5odG1sCkBAIC0yMCw3ICsyMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIH0KICAgICAg
ICAgCiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIGRp
di5zZXRBdHRyaWJ1dGUoIm9uZXJyb3IiLCAicHJpbnQoJ1BBU1M6IGR5bmFtaWMgc2NyaXB0IGxv
YWQgZXJyb3IgYnViYmxlZCcpOyBcCisgICAgZGl2LnNldEF0dHJpYnV0ZSgib25lcnJvciIsICJw
cmludCgnRkFJTEVEOiBkeW5hbWljIHNjcmlwdCBsb2FkIGVycm9yIGJ1YmJsZWQnKTsgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyIpOwogICAgIApAQCAtMzEsMTMgKzMxLDI4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgIC8vIGZvcmNlIHRoZSBzY3JpcHQgdG8gbG9hZAogICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIH0KKworZnVuY3Rpb24gc2NyaXB0T25lcnJvcigpCit7
CisgICAgcHJpbnQoJ1BBU1M6IHNjcmlwdCBlcnJvciBoYW5kbGVyIGludm9rZWQnKTsKKworICAg
IC8vIEFsbG93IGV2ZW50IGJ1YmJsaW5nIHBoYXNlIHRvIGNvbXBsZXRlLgorICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSwg
MCk7Cit9CisKK3dpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgcHJpbnQoJ0ZBSUxF
RDogd2luZG93Lm9uZXJyb3IgaGFuZGxlciBpbnZva2VkJyk7Cit9CiA8L3NjcmlwdD4KIDwvaGVh
ZD4KIDxib2R5IG9ubG9hZD0idGVzdCgpOyI+CiA8aHI+CiA8ZGl2IGlkPSdjb25zb2xlJz48L2Rp
dj4KLTxkaXYgb25lcnJvcj0icHJpbnQoJ1BBU1M6IGlubGluZSBzY3JpcHQgbG9hZCBlcnJvciBi
dWJibGVkJykiPgotICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dyZWdUaGVCdW5ueS5qcyI+PC9z
Y3JpcHQ+Cis8ZGl2IG9uZXJyb3I9InByaW50KCdGQUlMRUQ6IGlubGluZSBzY3JpcHQgbG9hZCBl
cnJvciBidWJibGVkJykiPgorICAgIDxzY3JpcHQgc3JjPSJmaWxlOi8vL0dyZWdUaGVCdW5ueS5q
cyIgb25lcnJvcj0ic2NyaXB0T25lcnJvcigpIj48L3NjcmlwdD4KIDwvZGl2PgogCiA8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Njcmlw
dEVsZW1lbnQvc2NyaXB0LWxvYWQtYW5kLWVycm9yLWV2ZW50cy5zdmcKaW5kZXggNzdmNGE5My4u
NTgwMzQwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50
L3NjcmlwdC1sb2FkLWFuZC1lcnJvci1ldmVudHMuc3ZnCisrKyBiL0xheW91dFRlc3RzL3N2Zy9k
b20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtbG9hZC1hbmQtZXJyb3ItZXZlbnRzLnN2ZwpAQCAt
MSw1ICsxLDUgQEAKIDw/eG1sIHZlcnNpb249IjEuMCI/PgotPHN2ZyB3aWR0aD0iMTAwJSIgaGVp
Z2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRsZXIoZXZ0KSIgb25sb2Fk
PSJ0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSI+Cis8c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEw
MCUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIiBvbmVycm9yPSJ0ZXN0R2xvYmFsRXJyb3JIYW5kbGVyTm90RmlyZWQoZXZ0KSIg
b25sb2FkPSJ0ZXN0TG9hZEV2ZW50Tm90RmlyZWQoKSI+CiA8ZGVmcz4KIDx0aXRsZT4mbHQ7U0NS
SVBUJmd0OyBsb2FkIGFuZCBlcnJvciBldmVudHM8L3RpdGxlPgogPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgpAQCAtMTUsNiArMTUsMTAgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0K
IAorZnVuY3Rpb24gdGVzdEdsb2JhbEVycm9ySGFuZGxlck5vdEZpcmVkKGV2dCkgeworICAgIHN0
YXR1c19bZXZ0LnRhcmdldC5pZF0gKz0gIkciOworfQorCiBmdW5jdGlvbiB0ZXN0TG9hZEV2ZW50
Tm90RmlyZWQoKSB7CiAgICAgc2hvdWxkQ29udGludWUgPSAwOwogfQpAQCAtOTYsNiArMTAwLDcg
QEAgZnVuY3Rpb24gY29udGludWVEeW5hbWljVGVzdDEoKSB7CiAgICAgICAgIGxvYWRFdmVudEhh
bmRsZXIobG9hZEV2ZW50KTsKICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoJ2NvbnRpbnVlRHlu
YW1pY1Rlc3QyKCknLCAwKTsKICAgICB9OworICAgIHNjcmlwdEVsZW1lbnQub25lcnJvciA9IGVy
cm9yRXZlbnRIYW5kbGVyOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRl
ZnMiKVswXS5hcHBlbmRDaGlsZChzY3JpcHRFbGVtZW50KTsgIAogfQpAQCAtMTA2LDE1ICsxMTEs
MTYgQEAgZnVuY3Rpb24gY29udGludWVEeW5hbWljVGVzdDIoKSB7CiAgICAgc2NyaXB0RWxlbWVu
dC50eXBlLmJhc2VWYWwgPSAidGV4dC9qYXZhc2NyaXB0IjsKICAgICBzY3JpcHRFbGVtZW50Lmhy
ZWYuYmFzZVZhbCA9ICJyZXNvdXJjZXMvbm90LWV4aXN0YW50LmpzIjsKICAgICBzY3JpcHRFbGVt
ZW50LmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuYmFzZVZhbCA9IHRydWU7CisgICAgc2NyaXB0
RWxlbWVudC5vbmVycm9yID0gZXJyb3JFdmVudEhhbmRsZXI7CiAKICAgICBsYXN0VGVzdCA9IDE7
CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRlZnMiKVswXS5hcHBlbmRDaGls
ZChzY3JpcHRFbGVtZW50KTsgIAogfQogPC9zY3JpcHQ+Ci08c2NyaXB0IGlkPSIwIiB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0ibG9hZEV2ZW50SGFuZGxlcihldnQpIiB4bGluazpocmVm
PSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
aWQ9IjEiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD0i
dHJ1ZSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5rOmhyZWY9InJlc291cmNl
cy9jZXJ0YWlubHlkb2Vzbm90ZXhpc3R0b28uanMiLz4KLTxzY3JpcHQgaWQ9IjIiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5rOmhyZWY9
InJlc291cmNlcy9zY3JpcHQtbG9hZC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IGlkPSIzIiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9InRydWUiIG9ubG9h
ZD0ibG9hZEV2ZW50SGFuZGxlcihldnQpOyBsYXN0VGVzdEJlZm9yZVJvb3RFbGVtZW50TG9hZGVk
KCk7IiB4bGluazpocmVmPSJyZXNvdXJjZXMvc2NyaXB0LWxvYWQuanMiLz4KKzxzY3JpcHQgaWQ9
IjAiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRsZXIoZXZ0
KSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCkiIHhsaW5rOmhyZWY9InJlc291cmNlcy9j
ZXJ0YWlubHlkb2Vzbm90ZXhpc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0iMSIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBvbmVycm9yPSJlcnJvckV2ZW50SGFuZGxlcihldnQpIiBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPSJ0cnVlIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIg
eGxpbms6aHJlZj0icmVzb3VyY2VzL2NlcnRhaW5seWRvZXNub3RleGlzdHRvby5qcyIvPgorPHNj
cmlwdCBpZD0iMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBvbmVycm9yPSJlcnJvckV2ZW50SGFu
ZGxlcihldnQpIiBvbmxvYWQ9ImxvYWRFdmVudEhhbmRsZXIoZXZ0KSIgeGxpbms6aHJlZj0icmVz
b3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgb25lcnJvcj0iZXJyb3JFdmVudEhhbmRsZXIoZXZ0KSIgZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZD0idHJ1ZSIgb25sb2FkPSJsb2FkRXZlbnRIYW5kbGVyKGV2dCk7IGxh
c3RUZXN0QmVmb3JlUm9vdEVsZW1lbnRMb2FkZWQoKTsiIHhsaW5rOmhyZWY9InJlc291cmNlcy9z
Y3JpcHQtbG9hZC5qcyIvPgogPC9kZWZzPgogPGZvcmVpZ25PYmplY3Q+CiBUZXN0IGxvYWQgYW5k
IGVycm9yIGV2ZW50IGhhbmRsaW5nIHdpdGggU1ZHU2NyaXB0RWxlbWVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1vbmVycm9yLWJ1YmJs
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9z
Y3JpcHQtb25lcnJvci1idWJibGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzNhMGQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtb25lcnJvci1idWJibGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHRoYXQgImVycm9yIiBldmVudCBpcyBkaXNwYXRjaGVk
IHRvIFNWR1NjcmlwdEVsZW1lbnQgb25lcnJvciBoYW5kbGVyIGFuZCBkb2Vzbid0IGJ1YmJsZS4K
K1BBU1M6IHNjcmlwdCBvbmVycm9yIGl2b2tlZCBmb3Igc2NyaXB0IGlkID0gMAorUEFTUzogc2Ny
aXB0IG9uZXJyb3IgaXZva2VkIGZvciBzY3JpcHQgaWQgPSAxCitQQVNTOiBvbmVycm9yIGludm9r
ZWQgb24gYSBkeW5hbWljIHNjcmlwdAorRE9ORS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtb25lcnJvci1idWJibGluZy5zdmcgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LW9uZXJyb3ItYnViYmxpbmcu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjN2U5NjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0LW9u
ZXJyb3ItYnViYmxpbmcuc3ZnCkBAIC0wLDAgKzEsNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/
PgorPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4
bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgb25lcnJvcj0ic3ZnT25F
cnJvckhhbmRsZXIoZXZ0KSI+Cis8ZGVmcz4KKzx0aXRsZT4mbHQ7U0NSSVBUJmd0OyBlcnJvciBl
dmVudCBidWJibGluZzwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cit2
YXIgbWVzc2FnZXMgPSBbXTsKKworZnVuY3Rpb24gYWRkUmVzdWx0KG1lc3NhZ2UpCit7CisgICAg
bWVzc2FnZXMucHVzaChtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkgCit7
CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCIsICJodG1sOmRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworfQorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gc3ZnT25FcnJvckhhbmRsZXIoZSkgeworICAgIGFkZFJlc3VsdCgiRkFJ
TDogc3ZnLm9uZXJyb3IgaW52b2tlZCAiICsgZS5tZXNzYWdlICsgIiAiICsgZS5maWxlbmFtZSAr
ICI6IiArIGUubGluZW5vKTsKK30KKworZnVuY3Rpb24gc2NyaXB0T25FcnJvckhhbmRsZXIoaWQp
IHsKKyAgICBhZGRSZXN1bHQoIlBBU1M6IHNjcmlwdCBvbmVycm9yIGl2b2tlZCBmb3Igc2NyaXB0
IGlkID0gIiArIGlkICsgIiIpOworfQorCitmdW5jdGlvbiB0ZXN0T25FcnJvckluRHluYW1pY1Nj
cmlwdCgpIHsKKyAgICB2YXIgc2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnOnNjcmlwdCIpOworICAgIHNjcmlw
dEVsZW1lbnQuaWQgPSAzOworICAgIHNjcmlwdEVsZW1lbnQudHlwZS5iYXNlVmFsID0gInRleHQv
amF2YXNjcmlwdCI7CisgICAgc2NyaXB0RWxlbWVudC5ocmVmLmJhc2VWYWwgPSAicmVzb3VyY2Vz
L2RvZXNub3RleGlzdC5qcyI7CisKKyAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFkZFJlc3VsdCgiUEFTUzogb25lcnJvciBp
bnZva2VkIG9uIGEgZHluYW1pYyBzY3JpcHQiKTsKKyAgICAgICAgc2V0VGltZW91dChlbmRUZXN0
LCAwKTsKKyAgICB9LCB0cnVlKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJkZWZzIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7IAorfQorCitmdW5jdGlvbiBl
bmRUZXN0KCkgeworICAgIGFkZFJlc3VsdCgiRE9ORS4iKTsKKyAgICBtZXNzYWdlcy5mb3JFYWNo
KHByaW50KTsgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSIwIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9uZXJyb3I9InNjcmlwdE9uRXJyb3JIYW5k
bGVyKDApIiB4bGluazpocmVmPSJyZXNvdXJjZXMvY2VydGFpbmx5ZG9lc25vdGV4aXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjEiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgb25lcnJvcj0i
c2NyaXB0T25FcnJvckhhbmRsZXIoMSkiIHhsaW5rOmhyZWY9InJlc291cmNlcy9jZXJ0YWlubHlk
b2Vzbm90ZXhpc3R0b28uanMiIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ9InRydWUiIC8+Cis8
c2NyaXB0IGlkPSIyIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG9ubG9hZD0idGVzdE9uRXJyb3JJ
bkR5bmFtaWNTY3JpcHQoKSIgeGxpbms6aHJlZj0icmVzb3VyY2VzL3NjcmlwdC1sb2FkLmpzIj48
L3NjcmlwdD4KKzwvZGVmcz4KKzxmb3JlaWduT2JqZWN0PgorVGVzdCB0aGF0ICJlcnJvciIgZXZl
bnQgaXMgZGlzcGF0Y2hlZCB0byBTVkdTY3JpcHRFbGVtZW50IG9uZXJyb3IgaGFuZGxlciBhbmQg
ZG9lc24ndCBidWJibGUuCis8eGh0bWw6aHIvPgorPHhodG1sOnAgaWQ9InJlc3VsdHMiPjwveGh0
bWw6cD4KKzwvZm9yZWlnbk9iamVjdD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MjllMzguLjRh
N2U0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wNC0yMCAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFcnJvciBldmVudCBpbiA8c2NyaXB0PiBlbGVtZW50IHNo
b3VsZG4ndCBidWJibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMDQwCisKKyAgICAgICAgVGVzdDogc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3Nj
cmlwdC1vbmVycm9yLWJ1YmJsaW5nLnN2ZworCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50
KTogdGhlIG1ldGhvZCBub3cgaGFzIHNhbWUgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBzY3JpcHQK
KyAgICAgICAgZWxlbWVudHMsIHNjcmlwdCBsb2FkIGVycm9yIGV2ZW50IGRvZXNuJyBidWJibGUu
CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQp
OgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NjcmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogU1ZHIHNjcmlwdCBlbGVt
ZW50IG5vdyBzdXBwb3J0cyBvbmVycm9yCisgICAgICAgIGhhbmxkZXIgd2hpY2ggYmVoYXZlcyB0
aGUgc2FtZSB3YXkgYXMgb25lcnJvciBpbiBIVE1MIHNjcmlwdCBlbGVtZW50OiBpdCdzIGludm9r
ZWQgd2hlbgorICAgICAgICBzY3JpcHQgbG9hZGluZyBmYWlscyBhbmQgdGhlIGV2ZW50IGRvZXNu
J3QgYnViYmxlLgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisKIDIwMTEtMDQt
MTkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBUb255IEdlbnRpbGNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5k
ZXggNWRkNmI3ZC4uMTY2MDg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApA
QCAtMTM1LDYgKzEzNSwxMSBAQCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3Jp
cHRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogICAgIHJldHVybiBsYW5ndWFnZXMu
Y29udGFpbnMobGFuZ3VhZ2UpOwogfQogCit2b2lkIFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJy
b3JFdmVudCgpCit7CisgICAgbV9lbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCiBib29sIFNjcmlw
dEVsZW1lbnQ6OmlzU2NyaXB0VHlwZVN1cHBvcnRlZChMZWdhY3lUeXBlU3VwcG9ydCBzdXBwb3J0
TGVnYWN5VHlwZXMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGlzTGVnYWN5U3VwcG9ydGVkSmF2
YVNjcmlwdExhbmd1YWdlKCkgaXMgbm90IHZhbGlkIEhUTUw1LiBJdCBpcyB1c2VkIGhlcmUgdG8g
bWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBsYXlvdXQgdGVz
dHMuIFRoZSBzcGVjaWZpYyB2aW9sYXRpb25zIGFyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVu
dC5oCmluZGV4IDljZTY2ZTUuLjNiNWY2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRo
ZXNlCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9IDA7CisgICAgdm9pZCBkaXNwYXRjaEVycm9y
RXZlbnQoKTsKICAgICBib29sIGlzU2NyaXB0VHlwZVN1cHBvcnRlZChMZWdhY3lUeXBlU3VwcG9y
dCkgY29uc3Q7CiAKICAgICBib29sIGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1faGF2ZUZpcmVkTG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcAppbmRleCBiNTZiMzc1Li4xNjhlNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcApAQCAtMTg1LDExICsxODUsNiBAQCB2b2lkIEhUTUxTY3JpcHRFbGVt
ZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCi12b2lkIEhUTUxT
Y3JpcHRFbGVtZW50OjpkaXNwYXRjaEVycm9yRXZlbnQoKQotewotICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKLX0K
LQogUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgYWxy
ZWFkeVN0YXJ0ZWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IGNiZTcyNTguLjg1ZGFkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmgKQEAgLTY1LDcgKzY1LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzU291
cmNlQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZl
bnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAKICAgICBQYXNz
UmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4o
KSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwCmluZGV4IDczMTIzMzQuLmQ5ODdhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC04NiwxMSArODYsNiBAQCBpbmxp
bmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0TG9hZEV2ZW50KCkKICAgICByZXR1cm4g
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpOwogfQog
Ci1pbmxpbmUgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU2NyaXB0RXJyb3JFdmVudCgpCi17Ci0g
ICAgcmV0dXJuIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZh
bHNlKTsKLX0KLQogU2NyaXB0U291cmNlQ29kZSBIVE1MU2NyaXB0UnVubmVyOjpzb3VyY2VGcm9t
UGVuZGluZ1NjcmlwdChjb25zdCBQZW5kaW5nU2NyaXB0JiBzY3JpcHQsIGJvb2wmIGVycm9yT2Nj
dXJyZWQpIGNvbnN0CiB7CiAgICAgaWYgKHNjcmlwdC5jYWNoZWRTY3JpcHQoKSkgewpAQCAtMTM4
LDcgKzEzMyw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRB
bmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmIHBlbmRpCiAgICAgICAgIE5lc3RpbmdMZXZl
bEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0TmVzdGluZ0xldmVs
KTsKICAgICAgICAgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9kb2N1bWVudCk7CiAgICAgICAgIGlm
IChlcnJvck9jY3VycmVkKQotICAgICAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVh
dGVTY3JpcHRFcnJvckV2ZW50KCkpOworICAgICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0
Y2hFcnJvckV2ZW50KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGlzRXhl
Y3V0aW5nU2NyaXB0KCkpOwogICAgICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZXhlY3V0ZVNjcmlw
dChzb3VyY2VDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAppbmRl
eCAwMGI4NWE1Li5hZWQ4NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw2ICs1NCw4IEBAIHZvaWQgU1ZHU2NyaXB0
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogCiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikKICAgICAgICAgc2V0VHlwZShhdHRyLT52
YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gSFRNTE5hbWVzOjpvbmVycm9y
QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0LDExICsyNDgsNiBAQCB2b2lkIFNW
R1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KCkKICAgICB9CiB9CiAKLXZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKLXsKLSAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7Ci19
Ci0KIFBhc3NSZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0
aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJl
YWR5U3RhcnRlZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCAw
M2NjNzMzLi41ZTYyODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAg
LTcxLDcgKzcxLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzU291cmNlQXR0cmli
dXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAKICAgICBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBjb25zdDsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>