<?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>93127</bug_id>
          
          <creation_ts>2012-08-03 08:42:45 -0700</creation_ts>
          <short_desc>Adding APIs to Chromium WebKit API to allow for creating and monitoring frame hierarchy.</short_desc>
          <delta_ts>2012-08-06 11:42:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Nasko Oskov">nasko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686779</commentid>
    <comment_count>0</comment_count>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 08:42:45 -0700</bug_when>
    <thetext>Adding APIs to Chromium WebKit API to allow for creating and monitoring frame hierarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686794</commentid>
    <comment_count>1</comment_count>
      <attachid>156390</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 08:53:29 -0700</bug_when>
    <thetext>Created attachment 156390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686800</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 08:57:12 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686818</commentid>
    <comment_count>3</comment_count>
      <attachid>156390</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 09:17:35 -0700</bug_when>
    <thetext>Comment on attachment 156390
Patch

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

&gt; Source/WebKit/chromium/public/WebDocument.h:108
&gt; +    WEBKIT_EXPORT WebElement createElement(const WebString&amp;);

I&apos;d name this parameter.  Presumable it&apos;s the tag name?

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:594
&gt; +WebString WebFrameImpl::assignedName() const
&gt; +{
&gt; +    return m_frame-&gt;tree()-&gt;name();
&gt; +}

Can we change these API names to match the WebCore names?  That might make your patch a bit harder to land...

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2136
&gt; +      m_client-&gt;didCreateFrame(this, webframe.get());

four-space indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686821</commentid>
    <comment_count>4</comment_count>
      <attachid>156390</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 09:20:24 -0700</bug_when>
    <thetext>Comment on attachment 156390
Patch

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

This is really close, but I&apos;d like to see one more iteration.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:112
&gt; +    // A child frame was created in this frame.
&gt; +    virtual void didCreateFrame(WebFrame* parent, WebFrame* child) { }
&gt; +
&gt;      // This frame has been detached from the view.
&gt; -    //
&gt; -    // FIXME: Do not use this in new code. Currently this is used by code in
&gt; -    // Chromium that errantly caches WebKit objects.
&gt;      virtual void frameDetached(WebFrame*) { }
&gt;  
&gt;      // This frame is about to be closed.

Can you add a comment explaining the lifecycle of a frame w.r.t. these functions?  Presumably didCreateFrame and frameDetached are always called at the beginning and end of the lifecycle, respectively.  From our discussion, it sounds like willClose is called before frameDetached, but only in some situations...

&gt; Source/WebKit/chromium/public/WebFrameClient.h:406
&gt; -        WebFrame* source,
&gt; +        WebFrame* sourceFrame,
&gt; +        WebFrame* targetFrame,

Doesn&apos;t this break the API?  Do we need to land this change in stages with a stub?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686872</commentid>
    <comment_count>5</comment_count>
      <attachid>156390</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-03 09:56:54 -0700</bug_when>
    <thetext>Comment on attachment 156390
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:112
&gt;&gt;      // This frame is about to be closed.
&gt; 
&gt; Can you add a comment explaining the lifecycle of a frame w.r.t. these functions?  Presumably didCreateFrame and frameDetached are always called at the beginning and end of the lifecycle, respectively.  From our discussion, it sounds like willClose is called before frameDetached, but only in some situations...

we need to remove willClose from the API.  it is never what you want.  frameDetached should probably also be renamed at some point to didDetachFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687208</commentid>
    <comment_count>6</comment_count>
      <attachid>156470</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 15:43:25 -0700</bug_when>
    <thetext>Created attachment 156470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687213</commentid>
    <comment_count>7</comment_count>
      <attachid>156390</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 15:50:10 -0700</bug_when>
    <thetext>Comment on attachment 156390
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebDocument.h:108
&gt;&gt; +    WEBKIT_EXPORT WebElement createElement(const WebString&amp;);
&gt; 
&gt; I&apos;d name this parameter.  Presumable it&apos;s the tag name?

Add the name - tagName.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:112
&gt;&gt;&gt;      // This frame is about to be closed.
&gt;&gt; 
&gt;&gt; Can you add a comment explaining the lifecycle of a frame w.r.t. these functions?  Presumably didCreateFrame and frameDetached are always called at the beginning and end of the lifecycle, respectively.  From our discussion, it sounds like willClose is called before frameDetached, but only in some situations...
&gt; 
&gt; we need to remove willClose from the API.  it is never what you want.  frameDetached should probably also be renamed at some point to didDetachFrame.

I&apos;ve added comments to reflect the lifetime. willClose is called very very late, when we have committed the provisional load and closing out old data sources. It wasn&apos;t apparent at all from the naming and I&apos;d agree with Darin that this is not something you really want.

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:406
&gt;&gt; +        WebFrame* targetFrame,
&gt; 
&gt; Doesn&apos;t this break the API?  Do we need to land this change in stages with a stub?

Yes, you are totally right. My first mixed patch for Chrome and WebKit : ). I&apos;ve added a stub.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:594
&gt;&gt; +}
&gt; 
&gt; Can we change these API names to match the WebCore names?  That might make your patch a bit harder to land...

I&apos;ve added WebFrame::uniqueName. Once the change makes it over to the Chromium tree, I will change all callers to use that function and will subsequently rename the assignedName() to name(). Does that sound like a good plan?

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2136
&gt;&gt; +      m_client-&gt;didCreateFrame(this, webframe.get());
&gt; 
&gt; four-space indent

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687215</commentid>
    <comment_count>8</comment_count>
      <attachid>156470</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 15:52:42 -0700</bug_when>
    <thetext>Comment on attachment 156470
Patch

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

&gt; Source/WebKit/chromium/public/WebFrame.h:134
&gt;      // The name of this frame.
&gt;      virtual WebString name() const = 0;

Should we add a comment about how we&apos;re going to change this from uniqueName to assignedName ?

&gt; Source/WebKit/chromium/public/WebFrameClient.h:418
&gt;      virtual bool willCheckAndDispatchMessageEvent(
&gt;          WebFrame* source,
&gt;          WebSecurityOrigin target,
&gt; +        WebDOMMessageEvent event)
&gt; +    {
&gt; +        return willCheckAndDispatchMessageEvent(source, 0, target, event);
&gt; +    }
&gt; +
&gt; +    virtual bool willCheckAndDispatchMessageEvent(
&gt; +        WebFrame* sourceFrame,
&gt; +        WebFrame* targetFrame,
&gt; +        WebSecurityOrigin target,
&gt;          WebDOMMessageEvent) { return false; }

This seems backwards.  willCheckAndDispatchMessageEvent is called by WebKit, which means the new version needs to forward to the old version, not vice versa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687218</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 15:54:43 -0700</bug_when>
    <thetext>&gt; I&apos;ve added WebFrame::uniqueName. Once the change makes it over to the Chromium tree, I will change all callers to use that function and will subsequently rename the assignedName() to name(). Does that sound like a good plan?

yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687221</commentid>
    <comment_count>10</comment_count>
      <attachid>156470</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 15:56:28 -0700</bug_when>
    <thetext>Comment on attachment 156470
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:418
&gt;&gt;          WebDOMMessageEvent) { return false; }
&gt; 
&gt; This seems backwards.  willCheckAndDispatchMessageEvent is called by WebKit, which means the new version needs to forward to the old version, not vice versa.

I thought it calls through Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp, which I&apos;ve modified. Is it also called directly by WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687223</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 15:58:14 -0700</bug_when>
    <thetext>Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp is part of WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687240</commentid>
    <comment_count>12</comment_count>
      <attachid>156475</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 16:17:02 -0700</bug_when>
    <thetext>Created attachment 156475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687244</commentid>
    <comment_count>13</comment_count>
      <attachid>156470</attachid>
    <who name="Nasko Oskov">nasko</who>
    <bug_when>2012-08-03 16:18:20 -0700</bug_when>
    <thetext>Comment on attachment 156470
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrame.h:134
&gt;&gt;      virtual WebString name() const = 0;
&gt; 
&gt; Should we add a comment about how we&apos;re going to change this from uniqueName to assignedName ?

Done.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:418
&gt;&gt;&gt;          WebDOMMessageEvent) { return false; }
&gt;&gt; 
&gt;&gt; This seems backwards.  willCheckAndDispatchMessageEvent is called by WebKit, which means the new version needs to forward to the old version, not vice versa.
&gt; 
&gt; I thought it calls through Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp, which I&apos;ve modified. Is it also called directly by WebKit?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687257</commentid>
    <comment_count>14</comment_count>
      <attachid>156475</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 16:35:17 -0700</bug_when>
    <thetext>Comment on attachment 156475
Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:417
&gt; +        return willCheckAndDispatchMessageEvent(sourceFrame, target, event);

I would have marked the old willCheckAndDispatchMessageEvent function as deprecated, but hopefully you&apos;ll remove it soon enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687339</commentid>
    <comment_count>15</comment_count>
      <attachid>156475</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-03 19:05:08 -0700</bug_when>
    <thetext>Comment on attachment 156475
Patch

Attachment 156475 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13435195</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688238</commentid>
    <comment_count>16</comment_count>
      <attachid>156475</attachid>
    <who name="Albert J. Wong">ajwong</who>
    <bug_when>2012-08-06 10:13:58 -0700</bug_when>
    <thetext>Comment on attachment 156475
Patch

committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688313</commentid>
    <comment_count>17</comment_count>
      <attachid>156475</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 11:42:20 -0700</bug_when>
    <thetext>Comment on attachment 156475
Patch

Clearing flags on attachment: 156475

Committed r124790: &lt;http://trac.webkit.org/changeset/124790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688314</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 11:42:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156390</attachid>
            <date>2012-08-03 08:53:29 -0700</date>
            <delta_ts>2012-08-03 15:50:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93127-20120803085309.patch</filename>
            <type>text/plain</type>
            <size>10971</size>
            <attacher name="Nasko Oskov">nasko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM0ZmM4MzQ2MzI5NDgzY2RkNGEyN2VhNWE4N2M0ZGI0MjY1Y2JlYjUuLjM3MzhlZjc5N2JlMzZk
NTViZDA4YzZjOWI5NTk5ZDczOThhM2I5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDgtMDMgIE5hc2tvIE9za292ICA8bmFza29AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZGluZyBBUElzIHRvIENocm9taXVtIFdlYktpdCBBUEkgdG8gYWxs
b3cgZm9yIGNyZWF0aW5nIGFuZCBtb25pdG9yaW5nIGZyYW1lIGhpZXJhcmNoeS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgaW4gdGhl
IEFQSSB0byBtb25pdG9yIGFuZCBjcmVhdGUgZnJhbWUgaGllcmFyY2h5IHRvIGFsbG93IHJlcGxp
Y2F0aW5nIGl0CisgICAgICAgIGFjcm9zcyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIFdlYktpdC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJEb2N1bWVudC5oOgorICAgICAgICAoV2ViRG9jdW1lbnQp
OiBBZGRlZCBjcmVhdGVFbGVtZW50LgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOiBBZGRl
ZCBhc3NpZ25lZE5hbWUsIHRvIAorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgor
ICAgICAgICAoV2ViRnJhbWVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dDo6ZGlkQ3JlYXRlRnJhbWUpOiBBZGRlZCB0byBhbGxvdyBlbWJlZGRlcnMgdG8ga25vdyB3aGVu
IGZyYW1lcyBhcmUgY3JlYXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6Ondp
bGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQWRkZWQgdGhlIHRhcmdldCBmcmFtZSBh
cyBhIHBhcmFtZXRlci4KKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZS5oOgorICAgICAgICAqIHNy
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAg
KiBzcmMvV2ViRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudCk6IEFkZGVkIHRvIGFsbG93IGZvciBjcmVhdGluZyBmcmFtZSBlbGVtZW50cy4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6YXNzaWduZWROYW1lKTogUmV0dXJucyB0aGUgbmFt
ZSBnaXZlbiB0byBhIGZyYW1lLCBhcyBvcHBvc2VkIAorICAgICAgICB0byB0aGUgdW5pcXVlIG5h
bWUsIGdlbmVyYXRlZCBieSBXZWJLaXQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJhbWUpOiBBZGRlZCBjYWxsIHRvIHRoZSBm
cmFtZSBjbGllbnQncyBkaWRDcmVhdGVGcmFtZS4KKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBs
Lmg6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6YXBwZW5kQ2hpbGQpOiBBZGRlZCB0byBhbGxvdyBm
b3IgYWRkaW5nIGVsZW1lbnRzIHRvIHRoZSBET00uCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisKIDIwMTItMDgtMDIgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFdlYlZpZXdJbXBsOjpzaG93
VG91Y2hIaWdobGlnaHRRdWFkcyBpc24ndCBuZWVkZWQgZm9yIEFuZHJvaWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEb2N1bWVudC5oCmluZGV4IDQ5OTUxMzI5NDllNzdiZTM4
N2JjYWI1NjU1MTkwNTU0NWNjYWFkYWYuLmM3MWNhZDJlNWQ0ODUwZjcwNjFjMGNhNGI3MTFhZjA0
MTkyMzhiMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnQu
aApAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIFdlYkVsZW1l
bnQgZnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYkRPTUV2
ZW50IGNyZWF0ZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYgZXZlbnRUeXBlKTsKICAgICBXRUJLSVRf
RVhQT1JUIFdlYlJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCBXZWJFbGVtZW50IGNyZWF0ZUVsZW1lbnQoY29uc3QgV2ViU3RyaW5nJik7CiAK
ICAgICAvLyBBY2Nlc3NpYmlsaXR5IHN1cHBvcnQuIFRoZXNlIG1ldGhvZHMgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIG9uIHRoZQogICAgIC8vIHRvcC1sZXZlbCBkb2N1bWVudCwgYmVjYXVzZSBvbmUg
YWNjZXNzaWJpbGl0eSBjYWNoZSBzcGFucyBhbGwgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCmluZGV4IDAzOWFkNmY5OTY5ZmI2MTEyOThhMjc5MDk5YzAyNTYwMDcx
YmU3NjYuLjlhNGFjN2ExNjAyODE1ZTdkYmE1ODYwZDI2MGI1NzAwOTdiOTEyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtMTMwLDkgKzEzMCwxMiBAQCBw
dWJsaWM6CiAKICAgICAvLyBCYXNpYyBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgLy8gVGhlIG5hbWUgb2YgdGhpcyBm
cmFtZS4KKyAgICAvLyBUaGUgdW5pcXVlIG5hbWUgb2YgdGhpcyBmcmFtZS4KICAgICB2aXJ0dWFs
IFdlYlN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwogCisgICAgLy8gVGhlIG5hbWUgb2YgdGhpcyBm
cmFtZS4gSWYgbm8gbmFtZSBpcyBnaXZlbiwgZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGFzc2lnbmVkTmFtZSgpIGNvbnN0ID0gMDsKKwogICAgIC8vIFNl
dHMgdGhlIG5hbWUgb2YgdGhpcyBmcmFtZS4gRm9yIGNoaWxkIGZyYW1lcyAoZnJhbWVzIHRoYXQg
YXJlIG5vdCBhCiAgICAgLy8gdG9wLW1vc3QgZnJhbWUpIHRoZSBhY3R1YWwgbmFtZSBtYXkgaGF2
ZSBhIHN1ZmZpeCBhcHBlbmRlZCB0byBtYWtlIHRoZQogICAgIC8vIGZyYW1lIG5hbWUgdW5pcXVl
IHdpdGhpbiB0aGUgaGllcmFyY2h5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggYmMzMmQ2ZDg0ZjFhYjFlMThmYTVhNzFmNTAxMmRlN2Zm
ZWVhYzM0YS4uOGRkNWIwMTMxYzI4NTA2M2NiNWYxMzUxMzM5NWYxYmVhZjg0NGI1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC05Myw3
ICs5Myw3IEBAIHB1YmxpYzoKICAgICAvLyBNYXkgcmV0dXJuIG51bGwuCiAgICAgdmlydHVhbCBX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogY3JlYXRlQXBwbGljYXRpb25DYWNoZUhvc3QoV2ViRnJh
bWUqLCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCopIHsgcmV0dXJuIDA7IH0KIAotICAg
IAorCiAgICAgLy8gU2VydmljZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBBIGZyYW1lIHNwZWNpZmljIGNvb2tp
ZSBqYXIuICBNYXkgcmV0dXJuIG51bGwsIGluIHdoaWNoIGNhc2UKQEAgLTEwMywxMCArMTAzLDEw
IEBAIHB1YmxpYzoKIAogICAgIC8vIEdlbmVyYWwgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisgICAgLy8gQSBjaGlsZCBmcmFt
ZSB3YXMgY3JlYXRlZCBpbiB0aGlzIGZyYW1lLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cmFtZShXZWJGcmFtZSogcGFyZW50LCBXZWJGcmFtZSogY2hpbGQpIHsgfQorCiAgICAgLy8gVGhp
cyBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3LgotICAgIC8vCi0gICAgLy8g
RklYTUU6IERvIG5vdCB1c2UgdGhpcyBpbiBuZXcgY29kZS4gQ3VycmVudGx5IHRoaXMgaXMgdXNl
ZCBieSBjb2RlIGluCi0gICAgLy8gQ2hyb21pdW0gdGhhdCBlcnJhbnRseSBjYWNoZXMgV2ViS2l0
IG9iamVjdHMuCiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGV0YWNoZWQoV2ViRnJhbWUqKSB7IH0K
IAogICAgIC8vIFRoaXMgZnJhbWUgaXMgYWJvdXQgdG8gYmUgY2xvc2VkLgpAQCAtNDAyLDcgKzQw
Miw4IEBAIHB1YmxpYzoKICAgICAvLyBnaXZlcyB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFu
ZGxlIGl0IGluc3RlYWQgb2YgV2ViS2l0LiBSZXR1cm5zIHRydWUKICAgICAvLyBpZiB0aGUgZW1i
ZWRkZXIgaGFuZGxlZCBpdC4KICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hN
ZXNzYWdlRXZlbnQoCi0gICAgICAgIFdlYkZyYW1lKiBzb3VyY2UsCisgICAgICAgIFdlYkZyYW1l
KiBzb3VyY2VGcmFtZSwKKyAgICAgICAgV2ViRnJhbWUqIHRhcmdldEZyYW1lLAogICAgICAgICBX
ZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsCiAgICAgICAgIFdlYkRPTU1lc3NhZ2VFdmVudCkgeyBy
ZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTm9kZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCmlu
ZGV4IDUyODFkYjE5OTRhYzJkMzhjYmE0ZTAwNzYzZjc3MWFiYjU0NzU1MmMuLjkwMmIzNzY2OThm
NDM4MWJmYjg4ZjNkNjRkODRhMTk5NjE1NjllYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb2RlLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBP
UlQgV2ViTm9kZSBuZXh0U2libGluZygpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBo
YXNDaGlsZE5vZGVzKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJOb2RlTGlzdCBjaGls
ZE5vZGVzKCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGFwcGVuZENoaWxkKGNvbnN0IFdlYk5v
ZGUmIGNoaWxkKTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBjcmVhdGVNYXJrdXAoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNMaW5rKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCBib29sIGlzVGV4dE5vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGI2Nzc5OGU3NGU1
NjBhMjE2MzgwYmRlMGYxNmE4ZWUzZDZjMTNhMjguLjZlNmM0ZTI2NWViYWIwNjU1Y2I2ZGQzNTE4
NDE1NjZjMzkxNDUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtMTYwNiw3ICsxNjA2LDcgQEAgYm9vbCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAg
IGlmIChldmVudCAmJiBldmVudC0+c291cmNlKCkgJiYgZXZlbnQtPnNvdXJjZSgpLT5kb2N1bWVu
dCgpKQogICAgICAgICBzb3VyY2UgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShldmVudC0+c291
cmNlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpOwogICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGll
bnQoKS0+d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCi0gICAgICAgIHNvdXJjZSwg
V2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7Cisg
ICAgICAgIHNvdXJjZSwgbV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2Vi
RE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDc5MmIw
ZmQ0NzRhOTMxMzlhMDJkZDNmN2Y2OTUwYzI1MjgwZDFhNjkuLmIyOTQ0YTg2YTAyMGVmNGMyY2Mz
ZjhiMWRhZDk0Y2VhNjVjZjFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
b2N1bWVudC5jcHAKQEAgLTIyOSw2ICsyMjksMTUgQEAgV2ViUmVmZXJyZXJQb2xpY3kgV2ViRG9j
dW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
UmVmZXJyZXJQb2xpY3k+KGNvbnN0VW53cmFwPERvY3VtZW50PigpLT5yZWZlcnJlclBvbGljeSgp
KTsKIH0KIAorV2ViRWxlbWVudCBXZWJEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBXZWJT
dHJpbmcmIGVsZW1lbnROYW1lKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkVsZW1lbnQgZWxlbWVudCh1bndyYXA8RG9jdW1lbnQ+KCktPmNyZWF0ZUVsZW1lbnQoZWxlbWVu
dE5hbWUsIGVjKSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gV2ViRWxlbWVudCgpOwor
ICAgIHJldHVybiBlbGVtZW50OworfQorCiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkRvY3Vt
ZW50OjphY2Nlc3NpYmlsaXR5T2JqZWN0KCkgY29uc3QKIHsKICAgICBjb25zdCBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb25zdFVud3JhcDxEb2N1bWVudD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDllMmJhMmM0Y2NhOTg5ZDI3ZTIyY2Q3NTFm
Yjg1ZjE1NzFjMzRlNmUuLjc5MTBmZDE2N2Q1OWJkMThmOTMzODdlZDcwMTY0MzBmZmM1YWExZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtNTg4
LDYgKzU4OCwxMSBAQCBXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjpuYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCk7CiB9CiAKK1dlYlN0cmluZyBXZWJG
cmFtZUltcGw6OmFzc2lnbmVkTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRy
ZWUoKS0+bmFtZSgpOworfQorCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0TmFtZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUpCiB7CiAgICAgbV9mcmFtZS0+dHJlZSgpLT5zZXROYW1lKG5hbWUpOwpAQCAt
MjEyNyw2ICsyMTMyLDkgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVD
aGlsZEZyYW1lKAogICAgIGlmICghY2hpbGRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKKyAgICBpZiAobV9jbGllbnQpCisgICAgICBtX2NsaWVudC0+ZGlkQ3Jl
YXRlRnJhbWUodGhpcywgd2ViZnJhbWUuZ2V0KCkpOworCiAgICAgcmV0dXJuIGNoaWxkRnJhbWUu
cmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5o
CmluZGV4IDAwNmE4ZjUzNDY0ZDQ1NWZiNTI1OTQ1M2U2NGUzYjI2M2UwYTI1MTQuLmU4M2ZjNmUx
MmM3MzdlOTRlMjc3Y2RkODBiNGI4M2U2YTE3NDE4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFdlYkZyYW1lSW1w
bCA6IHB1YmxpYyBXZWJGcmFtZSwgcHVibGljIFJlZkNvdW50ZWQ8V2ViRnJhbWVJbXBsPiB7CiBw
dWJsaWM6CiAgICAgLy8gV2ViRnJhbWUgbWV0aG9kczoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBu
YW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgYXNzaWduZWROYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVh
bCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdl
Ykljb25VUkw+IGljb25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCAxNGRhMWQ1NzAzNzhiYzYwODQ1NjZjOGNkNjE0YzBi
ODJlZmMwN2E3Li5jNWU4MzZkNGExYzdjZDI1OTc4OTZiODI0OWUzYmVmYzNmODk0ODZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMTM2LDYgKzEzNiwxMyBAQCBX
ZWJOb2RlTGlzdCBXZWJOb2RlOjpjaGlsZE5vZGVzKCkKICAgICByZXR1cm4gV2ViTm9kZUxpc3Qo
bV9wcml2YXRlLT5jaGlsZE5vZGVzKCkpOwogfQogCitib29sIFdlYk5vZGU6OmFwcGVuZENoaWxk
KGNvbnN0IFdlYk5vZGUmIGNoaWxkKSAKK3sKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNv
ZGUgPSAwOworICAgIG1fcHJpdmF0ZS0+YXBwZW5kQ2hpbGQoY2hpbGQsIGV4Y2VwdGlvbkNvZGUp
OworICAgIHJldHVybiAhZXhjZXB0aW9uQ29kZTsKK30KKwogV2ViU3RyaW5nIFdlYk5vZGU6OmNy
ZWF0ZU1hcmt1cCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCht
X3ByaXZhdGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwCmluZGV4IDliNzQ1ZTAyOWEzMzJiOWE5NmJiN2JiYmNjYzhlYzRkODQ0MjNmNDQu
LmM2MjhkMDBhZmIyYzI0M2VlNWQ0MTA5ZGNkOWIyOWEwNjYzMDVhZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTgwNCw0ICs4MDQsMzUg
QEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0RnVsbEh0bWxPZlBhZ2UpCiAgICAgRVhQRUNUX1RS
VUUoc2VsZWN0aW9uSHRtbC5pc0VtcHR5KCkpOwogfQogCitjbGFzcyBUZXN0RGlkQ3JlYXRlRnJh
bWVXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CitwdWJsaWM6CisgICAg
VGVzdERpZENyZWF0ZUZyYW1lV2ViRnJhbWVDbGllbnQoKSA6IG1fZnJhbWVDb3VudCgwKSwgbV9w
YXJlbnQoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyYW1l
KFdlYkZyYW1lKiBwYXJlbnQsIFdlYkZyYW1lKiBjaGlsZCkgCisgICAgeworICAgICAgICBtX2Zy
YW1lQ291bnQrKzsKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgICAgIG1fcGFyZW50
ID0gcGFyZW50OworICAgIH0KKyAgICAKKyAgICBpbnQgbV9mcmFtZUNvdW50OworICAgIFdlYkZy
YW1lKiBtX3BhcmVudDsKK307CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpZENyZWF0ZUZyYW1l
KQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImlmcmFtZXNfdGVzdC5odG1sIik7
CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgidmlzaWJsZV9pZnJhbWUuaHRtbCIpOwor
ICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImludmlzaWJsZV9pZnJhbWUuaHRtbCIpOwor
ICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiKTsK
KworICAgIFRlc3REaWRDcmVhdGVGcmFtZVdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50Owor
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5k
TG9hZChtX2Jhc2VVUkwgKyAiaWZyYW1lc190ZXN0Lmh0bWwiLCBmYWxzZSwgJndlYkZyYW1lQ2xp
ZW50KTsKKworICAgIEVYUEVDVF9FUSh3ZWJGcmFtZUNsaWVudC5tX2ZyYW1lQ291bnQsIDMpOyAK
KyAgICBFWFBFQ1RfRVEod2ViRnJhbWVDbGllbnQubV9wYXJlbnQsIHdlYlZpZXctPm1haW5GcmFt
ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156470</attachid>
            <date>2012-08-03 15:43:25 -0700</date>
            <delta_ts>2012-08-03 16:18:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93127-20120803154305.patch</filename>
            <type>text/plain</type>
            <size>11703</size>
            <attacher name="Nasko Oskov">nasko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNhMTI4YThlM2E3MjNkZGJkODgwNjAyN2VkMWM3ZTdlNTI5MDQ3ZjkuLmNiZjA5YmM3YjQzODQ1
YzVlZDFkN2EyOGVjMzM3MWNmMjI5NzA5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDgtMDMgIE5hc2tvIE9za292ICA8bmFza29AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZGluZyBBUElzIHRvIENocm9taXVtIFdlYktpdCBBUEkgdG8gYWxs
b3cgZm9yIGNyZWF0aW5nIGFuZCBtb25pdG9yaW5nIGZyYW1lIGhpZXJhcmNoeS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgaW4gdGhl
IEFQSSB0byBtb25pdG9yIGFuZCBjcmVhdGUgZnJhbWUgaGllcmFyY2h5IHRvIGFsbG93IHJlcGxp
Y2F0aW5nIGl0CisgICAgICAgIGFjcm9zcyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIFdlYktpdC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJEb2N1bWVudC5oOgorICAgICAgICAoV2ViRG9jdW1lbnQp
OiBBZGRlZCBjcmVhdGVFbGVtZW50LgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOiBBZGRl
ZCBhc3NpZ25lZE5hbWUuCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJGcmFtZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpk
aWRDcmVhdGVGcmFtZSk6IEFkZGVkIHRvIGFsbG93IGVtYmVkZGVycyB0byBrbm93IHdoZW4gZnJh
bWVzIGFyZSBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6d2lsbENo
ZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQpOiBBZGRlZCB0aGUgdGFyZ2V0IGZyYW1lIGFzIGEg
cGFyYW1ldGVyLgorICAgICAgICAqIHB1YmxpYy9XZWJOb2RlLmg6CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIHNy
Yy9XZWJEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50OjpjcmVhdGVF
bGVtZW50KTogQWRkZWQgdG8gYWxsb3cgZm9yIGNyZWF0aW5nIGZyYW1lIGVsZW1lbnRzLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjphc3NpZ25lZE5hbWUpOiBSZXR1cm5zIHRoZSBuYW1lIGdp
dmVuIHRvIGEgZnJhbWUsIGFzIG9wcG9zZWQgCisgICAgICAgIHRvIHRoZSB1bmlxdWUgbmFtZSwg
Z2VuZXJhdGVkIGJ5IFdlYktpdC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6Y3JlYXRlQ2hpbGRGcmFtZSk6IEFkZGVkIGNhbGwgdG8gdGhlIGZyYW1l
IGNsaWVudCdzIGRpZENyZWF0ZUZyYW1lLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoK
KyAgICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYk5vZGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb2RlOjphcHBlbmRDaGlsZCk6IEFkZGVkIHRvIGFsbG93IGZvciBh
ZGRpbmcgZWxlbWVudHMgdG8gdGhlIERPTS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMi0wOC0wMyAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZWxpbWluYXRl
IHZpc2l0QmFzZUNsYXNzIG1ldGhvZCBmcm9tIE5NSS4gSXQgaW50cm9kdWNlcyB1bm5lY2Vzc2Fy
eSBjb21wbGV4aXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRvY3VtZW50
LmgKaW5kZXggNDk5NTEzMjk0OWU3N2JlMzg3YmNhYjU2NTUxOTA1NTQ1Y2NhYWRhZi4uZTBjNDQ0
MjUwYTllMDM5ZjBhNmNhNzgxNjE0ZTBiOWJhYzVkMGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEb2N1bWVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgog
ICAgIFdFQktJVF9FWFBPUlQgV2ViRWxlbWVudCBmdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0Owog
ICAgIFdFQktJVF9FWFBPUlQgV2ViRE9NRXZlbnQgY3JlYXRlRXZlbnQoY29uc3QgV2ViU3RyaW5n
JiBldmVudFR5cGUpOwogICAgIFdFQktJVF9FWFBPUlQgV2ViUmVmZXJyZXJQb2xpY3kgcmVmZXJy
ZXJQb2xpY3koKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkVsZW1lbnQgY3JlYXRlRWxl
bWVudChjb25zdCBXZWJTdHJpbmcmIHRhZ05hbWUpOwogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBz
dXBwb3J0LiBUaGVzZSBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUKICAgICAv
LyB0b3AtbGV2ZWwgZG9jdW1lbnQsIGJlY2F1c2Ugb25lIGFjY2Vzc2liaWxpdHkgY2FjaGUgc3Bh
bnMgYWxsIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAppbmRleCAw
MzlhZDZmOTk2OWZiNjExMjk4YTI3OTA5OWMwMjU2MDA3MWJlNzY2Li42YzQ0MDU3OWI0MjhkOGVm
YjY4MTlhNTM3NTlkMjRhZmQ5MWRlNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lLmgKQEAgLTEzMyw2ICsxMzMsMTIgQEAgcHVibGljOgogICAgIC8vIFRoZSBuYW1l
IG9mIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGlzIGZyYW1lLgorICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIHVuaXF1ZU5hbWUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBUaGUgbmFtZSBvZiB0aGlz
IGZyYW1lLiBJZiBubyBuYW1lIGlzIGdpdmVuLCBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCisg
ICAgdmlydHVhbCBXZWJTdHJpbmcgYXNzaWduZWROYW1lKCkgY29uc3QgPSAwOworCiAgICAgLy8g
U2V0cyB0aGUgbmFtZSBvZiB0aGlzIGZyYW1lLiBGb3IgY2hpbGQgZnJhbWVzIChmcmFtZXMgdGhh
dCBhcmUgbm90IGEKICAgICAvLyB0b3AtbW9zdCBmcmFtZSkgdGhlIGFjdHVhbCBuYW1lIG1heSBo
YXZlIGEgc3VmZml4IGFwcGVuZGVkIHRvIG1ha2UgdGhlCiAgICAgLy8gZnJhbWUgbmFtZSB1bmlx
dWUgd2l0aGluIHRoZSBoaWVyYXJjaHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCBiYzMyZDZkODRmMWFiMWUxOGZhNWE3MWY1MDEyZGU3
ZmZlZWFjMzRhLi5kN2U4MjQ0ZTAxYzYyNDZjNTYxZTJmMDMwYWNkOGQzY2UxNmQxNzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTkz
LDcgKzkzLDcgQEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbC4KICAgICB2aXJ0dWFs
IFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVhdGVBcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJG
cmFtZSosIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50KikgeyByZXR1cm4gMDsgfQogCi0g
ICAgCisKICAgICAvLyBTZXJ2aWNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEEgZnJhbWUgc3BlY2lmaWMgY29v
a2llIGphci4gIE1heSByZXR1cm4gbnVsbCwgaW4gd2hpY2ggY2FzZQpAQCAtMTAzLDEzICsxMDMs
MTUgQEAgcHVibGljOgogCiAgICAgLy8gR2VuZXJhbCBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICAvLyBUaGlzIGZyYW1l
IGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXcuCi0gICAgLy8KLSAgICAvLyBGSVhNRTog
RG8gbm90IHVzZSB0aGlzIGluIG5ldyBjb2RlLiBDdXJyZW50bHkgdGhpcyBpcyB1c2VkIGJ5IGNv
ZGUgaW4KLSAgICAvLyBDaHJvbWl1bSB0aGF0IGVycmFudGx5IGNhY2hlcyBXZWJLaXQgb2JqZWN0
cy4KKyAgICAvLyBBIGNoaWxkIGZyYW1lIHdhcyBjcmVhdGVkIGluIHRoaXMgZnJhbWUuIFRoaXMg
aXMgY2FsbGVkIHdoZW4gdGhlIGZyYW1lCisgICAgLy8gaXMgY3JlYXRlZCBhbmQgaW5pdGlhbGl6
ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyYW1lKFdlYkZyYW1lKiBwYXJlbnQsIFdl
YkZyYW1lKiBjaGlsZCkgeyB9CisKKyAgICAvLyBUaGlzIGZyYW1lIGhhcyBiZWVuIGRldGFjaGVk
IGZyb20gdGhlIHZpZXcsIGJ1dCBoYXMgbm90IGJlZW4gY2xvc2VkIHlldC4KICAgICB2aXJ0dWFs
IHZvaWQgZnJhbWVEZXRhY2hlZChXZWJGcmFtZSopIHsgfQogCi0gICAgLy8gVGhpcyBmcmFtZSBp
cyBhYm91dCB0byBiZSBjbG9zZWQuCisgICAgLy8gVGhpcyBmcmFtZSBpcyBhYm91dCB0byBiZSBj
bG9zZWQuIFRoaXMgaXMgY2FsbGVkIGFmdGVyIGZyYW1lRGV0YWNoZWQsCisgICAgLy8gd2hlbiB0
aGUgZG9jdW1lbnQgaXMgYmVpbmcgdW5sb2FkZWQsIGR1ZSB0byBuZXcgb25lIGNvbW1pdHRpbmcu
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZShXZWJGcmFtZSopIHsgfQogCiAgICAgLy8gTG9h
ZCBjb21tYW5kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC00MDQsNiArNDA2LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCiAgICAgICAgIFdlYkZyYW1lKiBzb3Vy
Y2UsCiAgICAgICAgIFdlYlNlY3VyaXR5T3JpZ2luIHRhcmdldCwKKyAgICAgICAgV2ViRE9NTWVz
c2FnZUV2ZW50IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbGxDaGVja0FuZERpc3Bh
dGNoTWVzc2FnZUV2ZW50KHNvdXJjZSwgMCwgdGFyZ2V0LCBldmVudCk7CisgICAgfQorCisgICAg
dmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAorICAgICAgICBX
ZWJGcmFtZSogc291cmNlRnJhbWUsCisgICAgICAgIFdlYkZyYW1lKiB0YXJnZXRGcmFtZSwKKyAg
ICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LAogICAgICAgICBXZWJET01NZXNzYWdlRXZl
bnQpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBBc2tzIHRoZSBlbWJlZGRlciBpZiBhIHNw
ZWNpZmljIHVzZXIgYWdlbnQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBnaXZlbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCmluZGV4IDUyODFkYjE5OTRhYzJkMzhjYmE0ZTAw
NzYzZjc3MWFiYjU0NzU1MmMuLjkwMmIzNzY2OThmNDM4MWJmYjg4ZjNkNjRkODRhMTk5NjE1Njll
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgKQEAgLTk4LDYgKzk4
LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2ViTm9kZSBuZXh0U2libGluZygpIGNv
bnN0OwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCBXZWJOb2RlTGlzdCBjaGlsZE5vZGVzKCk7CisgICAgV0VCS0lUX0VYUE9S
VCBib29sIGFwcGVuZENoaWxkKGNvbnN0IFdlYk5vZGUmIGNoaWxkKTsKICAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBjcmVhdGVNYXJrdXAoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgaXNMaW5rKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVGV4dE5vZGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCmluZGV4IGI2Nzc5OGU3NGU1NjBhMjE2MzgwYmRlMGYxNmE4ZWUzZDZjMTNh
MjguLjZlNmM0ZTI2NWViYWIwNjU1Y2I2ZGQzNTE4NDE1NjZjMzkxNDUwMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApA
QCAtMTYwNiw3ICsxNjA2LDcgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgIGlmIChldmVudCAmJiBldmVudC0+c291cmNl
KCkgJiYgZXZlbnQtPnNvdXJjZSgpLT5kb2N1bWVudCgpKQogICAgICAgICBzb3VyY2UgPSBXZWJG
cmFtZUltcGw6OmZyb21GcmFtZShldmVudC0+c291cmNlKCktPmRvY3VtZW50KCktPmZyYW1lKCkp
OwogICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQoKS0+d2lsbENoZWNrQW5kRGlzcGF0Y2hN
ZXNzYWdlRXZlbnQoCi0gICAgICAgIHNvdXJjZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwg
V2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7CisgICAgICAgIHNvdXJjZSwgbV93ZWJGcmFtZSwg
V2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7CiB9
CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDc5MmIwZmQ0NzRhOTMxMzlhMDJkZDNmN2Y2OTUwYzI1
MjgwZDFhNjkuLjY5MTcwMTcxNWIwZTNhNTBlOTA5NmIyYzliZTdiMjc4OGJlYjdiNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudC5jcHAKQEAgLTIyOSw2ICsyMjks
MTUgQEAgV2ViUmVmZXJyZXJQb2xpY3kgV2ViRG9jdW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29u
c3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUmVmZXJyZXJQb2xpY3k+KGNvbnN0VW53cmFw
PERvY3VtZW50PigpLT5yZWZlcnJlclBvbGljeSgpKTsKIH0KIAorV2ViRWxlbWVudCBXZWJEb2N1
bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBXZWJTdHJpbmcmIHRhZ05hbWUpCit7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViRWxlbWVudCBlbGVtZW50KHVud3JhcDxEb2N1bWVu
dD4oKS0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIFdlYkVsZW1lbnQoKTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCBXZWJEb2N1bWVudDo6YWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0CiB7
CiAgICAgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29uc3RVbndyYXA8RG9jdW1lbnQ+KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA5ZTJi
YTJjNGNjYTk4OWQyN2UyMmNkNzUxZmI4NWYxNTcxYzM0ZTZlLi5jNWYwNTFkM2M3ODE1ZmMxYzgw
ZjA3ZWE2NmY5YjlmYjNlODg0NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKQEAgLTU4OCw2ICs1ODgsMTYgQEAgV2ViU3RyaW5nIFdlYkZyYW1lSW1w
bDo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgp
OwogfQogCitXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjp1bmlxdWVOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCk7Cit9CisKK1dlYlN0cmluZyBX
ZWJGcmFtZUltcGw6OmFzc2lnbmVkTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUt
PnRyZWUoKS0+bmFtZSgpOworfQorCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0TmFtZShjb25zdCBX
ZWJTdHJpbmcmIG5hbWUpCiB7CiAgICAgbV9mcmFtZS0+dHJlZSgpLT5zZXROYW1lKG5hbWUpOwpA
QCAtMjEyNyw2ICsyMTM3LDkgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVJbXBsOjpjcmVh
dGVDaGlsZEZyYW1lKAogICAgIGlmICghY2hpbGRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5k
aWRDcmVhdGVGcmFtZSh0aGlzLCB3ZWJmcmFtZS5nZXQoKSk7CisKICAgICByZXR1cm4gY2hpbGRG
cmFtZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKaW5kZXggMDA2YThmNTM0NjRkNDU1ZmI1MjU5NDUzZTY0ZTNiMjYzZTBhMjUxNC4uNzAz
Y2EzOTk3NmQ5NDMyZGYxNWYzYmVmODhlOWRhMWU2YTQwZjk0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTcyLDYgKzcyLDggQEAgY2xhc3MgV2ViRnJh
bWVJbXBsIDogcHVibGljIFdlYkZyYW1lLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJGcmFtZUltcGw+
IHsKIHB1YmxpYzoKICAgICAvLyBXZWJGcmFtZSBtZXRob2RzOgogICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyB1bmlxdWVOYW1lKCkgY29u
c3Q7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgYXNzaWduZWROYW1lKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBsb25nIGxv
bmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYkljb25VUkw+
IGljb25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJOb2RlLmNwcAppbmRleCAxNGRhMWQ1NzAzNzhiYzYwODQ1NjZjOGNkNjE0YzBiODJlZmMwN2E3
Li5jNWU4MzZkNGExYzdjZDI1OTc4OTZiODI0OWUzYmVmYzNmODk0ODZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMTM2LDYgKzEzNiwxMyBAQCBXZWJOb2RlTGlz
dCBXZWJOb2RlOjpjaGlsZE5vZGVzKCkKICAgICByZXR1cm4gV2ViTm9kZUxpc3QobV9wcml2YXRl
LT5jaGlsZE5vZGVzKCkpOwogfQogCitib29sIFdlYk5vZGU6OmFwcGVuZENoaWxkKGNvbnN0IFdl
Yk5vZGUmIGNoaWxkKSAKK3sKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUgPSAwOwor
ICAgIG1fcHJpdmF0ZS0+YXBwZW5kQ2hpbGQoY2hpbGQsIGV4Y2VwdGlvbkNvZGUpOworICAgIHJl
dHVybiAhZXhjZXB0aW9uQ29kZTsKK30KKwogV2ViU3RyaW5nIFdlYk5vZGU6OmNyZWF0ZU1hcmt1
cCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0ZU1hcmt1cChtX3ByaXZhdGUu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3Bw
CmluZGV4IDliNzQ1ZTAyOWEzMzJiOWE5NmJiN2JiYmNjYzhlYzRkODQ0MjNmNDQuLmM2MjhkMDBh
ZmIyYzI0M2VlNWQ0MTA5ZGNkOWIyOWEwNjYzMDVhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTgwNCw0ICs4MDQsMzUgQEAgVEVTVF9G
KFdlYkZyYW1lVGVzdCwgR2V0RnVsbEh0bWxPZlBhZ2UpCiAgICAgRVhQRUNUX1RSVUUoc2VsZWN0
aW9uSHRtbC5pc0VtcHR5KCkpOwogfQogCitjbGFzcyBUZXN0RGlkQ3JlYXRlRnJhbWVXZWJGcmFt
ZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CitwdWJsaWM6CisgICAgVGVzdERpZENy
ZWF0ZUZyYW1lV2ViRnJhbWVDbGllbnQoKSA6IG1fZnJhbWVDb3VudCgwKSwgbV9wYXJlbnQoMCkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyYW1lKFdlYkZyYW1l
KiBwYXJlbnQsIFdlYkZyYW1lKiBjaGlsZCkgCisgICAgeworICAgICAgICBtX2ZyYW1lQ291bnQr
KzsKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgICAgIG1fcGFyZW50ID0gcGFyZW50
OworICAgIH0KKyAgICAKKyAgICBpbnQgbV9mcmFtZUNvdW50OworICAgIFdlYkZyYW1lKiBtX3Bh
cmVudDsKK307CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERpZENyZWF0ZUZyYW1lKQoreworICAg
IHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImlmcmFtZXNfdGVzdC5odG1sIik7CisgICAgcmVn
aXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgidmlzaWJsZV9pZnJhbWUuaHRtbCIpOworICAgIHJlZ2lz
dGVyTW9ja2VkSHR0cFVSTExvYWQoImludmlzaWJsZV9pZnJhbWUuaHRtbCIpOworICAgIHJlZ2lz
dGVyTW9ja2VkSHR0cFVSTExvYWQoInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiKTsKKworICAgIFRl
c3REaWRDcmVhdGVGcmFtZVdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OworICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jh
c2VVUkwgKyAiaWZyYW1lc190ZXN0Lmh0bWwiLCBmYWxzZSwgJndlYkZyYW1lQ2xpZW50KTsKKwor
ICAgIEVYUEVDVF9FUSh3ZWJGcmFtZUNsaWVudC5tX2ZyYW1lQ291bnQsIDMpOyAKKyAgICBFWFBF
Q1RfRVEod2ViRnJhbWVDbGllbnQubV9wYXJlbnQsIHdlYlZpZXctPm1haW5GcmFtZSgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156475</attachid>
            <date>2012-08-03 16:17:02 -0700</date>
            <delta_ts>2012-08-06 11:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93127-20120803161641.patch</filename>
            <type>text/plain</type>
            <size>12123</size>
            <attacher name="Nasko Oskov">nasko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGNhMTI4YThlM2E3MjNkZGJkODgwNjAyN2VkMWM3ZTdlNTI5MDQ3ZjkuLjYzMzlkOGMxM2UxODJl
OGY3MGQ3Y2Y4ZTZmODZjNDE4ZmM3MmM2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTItMDgtMDMgIE5hc2tvIE9za292ICA8bmFza29AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZGluZyBBUElzIHRvIENocm9taXVtIFdlYktpdCBBUEkgdG8gYWxs
b3cgZm9yIGNyZWF0aW5nIGFuZCBtb25pdG9yaW5nIGZyYW1lIGhpZXJhcmNoeS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMTI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgaW4gdGhl
IEFQSSB0byBtb25pdG9yIGFuZCBjcmVhdGUgZnJhbWUgaGllcmFyY2h5IHRvIGFsbG93IHJlcGxp
Y2F0aW5nIGl0CisgICAgICAgIGFjcm9zcyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIFdlYktpdC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJEb2N1bWVudC5oOgorICAgICAgICAoV2ViRG9jdW1lbnQp
OiBBZGRlZCBjcmVhdGVFbGVtZW50LgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZS5oOiBBZGRl
ZCBhc3NpZ25lZE5hbWUuCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJGcmFtZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpk
aWRDcmVhdGVGcmFtZSk6IEFkZGVkIHRvIGFsbG93IGVtYmVkZGVycyB0byBrbm93IHdoZW4gZnJh
bWVzIGFyZSBjcmVhdGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6d2lsbENo
ZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQpOiBBZGRlZCB0aGUgdGFyZ2V0IGZyYW1lIGFzIGEg
cGFyYW1ldGVyLgorICAgICAgICAqIHB1YmxpYy9XZWJOb2RlLmg6CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAqIHNy
Yy9XZWJEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50OjpjcmVhdGVF
bGVtZW50KTogQWRkZWQgdG8gYWxsb3cgZm9yIGNyZWF0aW5nIGZyYW1lIGVsZW1lbnRzLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjp1bmlxdWVOYW1lKTogQWRkZWQgdG8gbWlncmF0ZSBjYWxs
ZXJzIHRvIHRoZSBtYXRjaGluZyBXZWJDb3JlIEFQSS4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6YXNzaWduZWROYW1lKTogUmV0dXJucyB0aGUgbmFt
ZSBnaXZlbiB0byBhIGZyYW1lLCBhcyBvcHBvc2VkIAorICAgICAgICB0byB0aGUgdW5pcXVlIG5h
bWUsIGdlbmVyYXRlZCBieSBXZWJLaXQuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
Y3JlYXRlQ2hpbGRGcmFtZSk6IEFkZGVkIGNhbGwgdG8gdGhlIGZyYW1lIGNsaWVudCdzIGRpZENy
ZWF0ZUZyYW1lLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZy
YW1lSW1wbCk6CisgICAgICAgICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb2RlOjphcHBlbmRDaGlsZCk6IEFkZGVkIHRvIGFsbG93IGZvciBhZGRpbmcgZWxlbWVudHMg
dG8gdGhlIERPTS4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogdGVzdHMvV2ViRnJhbWVU
ZXN0LmNwcDoKKwogMjAxMi0wOC0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZWxpbWluYXRlIHZpc2l0QmFzZUNsYXNz
IG1ldGhvZCBmcm9tIE5NSS4gSXQgaW50cm9kdWNlcyB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRvY3VtZW50LmgKaW5kZXggNDk5NTEz
Mjk0OWU3N2JlMzg3YmNhYjU2NTUxOTA1NTQ1Y2NhYWRhZi4uZTBjNDQ0MjUwYTllMDM5ZjBhNmNh
NzgxNjE0ZTBiOWJhYzVkMGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEb2N1bWVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBP
UlQgV2ViRWxlbWVudCBmdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBP
UlQgV2ViRE9NRXZlbnQgY3JlYXRlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiBldmVudFR5cGUpOwog
ICAgIFdFQktJVF9FWFBPUlQgV2ViUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYkVsZW1lbnQgY3JlYXRlRWxlbWVudChjb25zdCBXZWJT
dHJpbmcmIHRhZ05hbWUpOwogCiAgICAgLy8gQWNjZXNzaWJpbGl0eSBzdXBwb3J0LiBUaGVzZSBt
ZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUKICAgICAvLyB0b3AtbGV2ZWwgZG9j
dW1lbnQsIGJlY2F1c2Ugb25lIGFjY2Vzc2liaWxpdHkgY2FjaGUgc3BhbnMgYWxsIG9mCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAppbmRleCAwMzlhZDZmOTk2OWZiNjEx
Mjk4YTI3OTA5OWMwMjU2MDA3MWJlNzY2Li4zZTk4OTI2NTQwNzRjOTFiZDAzMTYyOGUzM2I2MWI5
MDAyMzAzODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAg
LTEzMyw2ICsxMzMsMTYgQEAgcHVibGljOgogICAgIC8vIFRoZSBuYW1lIG9mIHRoaXMgZnJhbWUu
CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsKIAorICAgIC8vIFRoZSB1
bmlxdWUgbmFtZSBvZiB0aGlzIGZyYW1lLgorICAgIC8vCisgICAgLy8gVGhpcyBpcyB0ZW1wb3Jh
cmlseSBpZGVudGljYWwgdG8gdGhlIGFib3ZlIG5hbWUoKSBmdW5jdGlvbi4gT25jZSB0aGlzCisg
ICAgLy8gY2hhbmdlIG1ha2VzIGl0IG92ZXIgdG8gdGhlIENocm9taXVtIHRyZWUsIEkgd2lsbCBj
aGFuZ2UgYWxsIGNhbGxlcnMgdG8KKyAgICAvLyB1c2UgdGhpcyBmdW5jdGlvbiBhbmQgd2lsbCBz
dWJzZXF1ZW50bHkgbW92ZSBhc3NpZ25lZE5hbWUoKSB0byBuYW1lKCkuCisgICAgdmlydHVhbCBX
ZWJTdHJpbmcgdW5pcXVlTmFtZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIFRoZSBuYW1lIG9mIHRo
aXMgZnJhbWUuIElmIG5vIG5hbWUgaXMgZ2l2ZW4sIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4K
KyAgICB2aXJ0dWFsIFdlYlN0cmluZyBhc3NpZ25lZE5hbWUoKSBjb25zdCA9IDA7CisKICAgICAv
LyBTZXRzIHRoZSBuYW1lIG9mIHRoaXMgZnJhbWUuIEZvciBjaGlsZCBmcmFtZXMgKGZyYW1lcyB0
aGF0IGFyZSBub3QgYQogICAgIC8vIHRvcC1tb3N0IGZyYW1lKSB0aGUgYWN0dWFsIG5hbWUgbWF5
IGhhdmUgYSBzdWZmaXggYXBwZW5kZWQgdG8gbWFrZSB0aGUKICAgICAvLyBmcmFtZSBuYW1lIHVu
aXF1ZSB3aXRoaW4gdGhlIGhpZXJhcmNoeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGJjMzJkNmQ4NGYxYWIxZTE4ZmE1YTcxZjUwMTJk
ZTdmZmVlYWMzNGEuLmNjODkyM2Q4MGNlNzQ5MmFiNzE0ZTZmMWUxZTJkOTVmZWEyOWNiMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAt
OTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxsLgogICAgIHZpcnR1
YWwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIGNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdl
YkZyYW1lKiwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqKSB7IHJldHVybiAwOyB9CiAK
LSAgICAKKwogICAgIC8vIFNlcnZpY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gQSBmcmFtZSBzcGVjaWZpYyBj
b29raWUgamFyLiAgTWF5IHJldHVybiBudWxsLCBpbiB3aGljaCBjYXNlCkBAIC0xMDMsMTMgKzEw
MywxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW5lcmFsIG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIC8vIFRoaXMgZnJh
bWUgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldy4KLSAgICAvLwotICAgIC8vIEZJWE1F
OiBEbyBub3QgdXNlIHRoaXMgaW4gbmV3IGNvZGUuIEN1cnJlbnRseSB0aGlzIGlzIHVzZWQgYnkg
Y29kZSBpbgotICAgIC8vIENocm9taXVtIHRoYXQgZXJyYW50bHkgY2FjaGVzIFdlYktpdCBvYmpl
Y3RzLgorICAgIC8vIEEgY2hpbGQgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gdGhpcyBmcmFtZS4gVGhp
cyBpcyBjYWxsZWQgd2hlbiB0aGUgZnJhbWUKKyAgICAvLyBpcyBjcmVhdGVkIGFuZCBpbml0aWFs
aXplZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJhbWUoV2ViRnJhbWUqIHBhcmVudCwg
V2ViRnJhbWUqIGNoaWxkKSB7IH0KKworICAgIC8vIFRoaXMgZnJhbWUgaGFzIGJlZW4gZGV0YWNo
ZWQgZnJvbSB0aGUgdmlldywgYnV0IGhhcyBub3QgYmVlbiBjbG9zZWQgeWV0LgogICAgIHZpcnR1
YWwgdm9pZCBmcmFtZURldGFjaGVkKFdlYkZyYW1lKikgeyB9CiAKLSAgICAvLyBUaGlzIGZyYW1l
IGlzIGFib3V0IHRvIGJlIGNsb3NlZC4KKyAgICAvLyBUaGlzIGZyYW1lIGlzIGFib3V0IHRvIGJl
IGNsb3NlZC4gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgZnJhbWVEZXRhY2hlZCwKKyAgICAvLyB3aGVu
IHRoZSBkb2N1bWVudCBpcyBiZWluZyB1bmxvYWRlZCwgZHVlIHRvIG5ldyBvbmUgY29tbWl0dGlu
Zy4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbENsb3NlKFdlYkZyYW1lKikgeyB9CiAKICAgICAvLyBM
b2FkIGNvbW1hbmRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQwNiw2ICs0MDgsMTUgQEAgcHVibGljOgogICAgICAgICBXZWJTZWN1
cml0eU9yaWdpbiB0YXJnZXQsCiAgICAgICAgIFdlYkRPTU1lc3NhZ2VFdmVudCkgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudCgKKyAgICAgICAgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLAorICAgICAgICBXZWJGcmFtZSog
dGFyZ2V0RnJhbWUsCisgICAgICAgIFdlYlNlY3VyaXR5T3JpZ2luIHRhcmdldCwKKyAgICAgICAg
V2ViRE9NTWVzc2FnZUV2ZW50IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KHNvdXJjZUZyYW1lLCB0YXJnZXQsIGV2ZW50KTsKKyAg
ICB9CisKICAgICAvLyBBc2tzIHRoZSBlbWJlZGRlciBpZiBhIHNwZWNpZmljIHVzZXIgYWdlbnQg
c2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBnaXZlbgogICAgIC8vIFVSTC4gTm9uLWVtcHR5IHN0cmlu
Z3MgaW5kaWNhdGUgYW4gb3ZlcnJpZGUgc2hvdWxkIGJlIHVzZWQuIE90aGVyd2lzZSwKICAgICAv
LyBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OnVzZXJBZ2VudCgpIHdpbGwgYmUgY2FsbGVkIHRvIHBy
b3ZpZGUgb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Tm9kZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCmluZGV4IDUy
ODFkYjE5OTRhYzJkMzhjYmE0ZTAwNzYzZjc3MWFiYjU0NzU1MmMuLjkwMmIzNzY2OThmNDM4MWJm
Yjg4ZjNkNjRkODRhMTk5NjE1NjllYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJOb2RlLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2Vi
Tm9kZSBuZXh0U2libGluZygpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNDaGls
ZE5vZGVzKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJOb2RlTGlzdCBjaGlsZE5vZGVz
KCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGFwcGVuZENoaWxkKGNvbnN0IFdlYk5vZGUmIGNo
aWxkKTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBjcmVhdGVNYXJrdXAoKSBjb25zdDsK
ICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNMaW5rKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzVGV4dE5vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGI2Nzc5OGU3NGU1NjBhMjE2
MzgwYmRlMGYxNmE4ZWUzZDZjMTNhMjguLjZlNmM0ZTI2NWViYWIwNjU1Y2I2ZGQzNTE4NDE1NjZj
MzkxNDUwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcApAQCAtMTYwNiw3ICsxNjA2LDcgQEAgYm9vbCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAogICAgIGlmIChl
dmVudCAmJiBldmVudC0+c291cmNlKCkgJiYgZXZlbnQtPnNvdXJjZSgpLT5kb2N1bWVudCgpKQog
ICAgICAgICBzb3VyY2UgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShldmVudC0+c291cmNlKCkt
PmRvY3VtZW50KCktPmZyYW1lKCkpOwogICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQoKS0+
d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCi0gICAgICAgIHNvdXJjZSwgV2ViU2Vj
dXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7CisgICAgICAg
IHNvdXJjZSwgbV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVz
c2FnZUV2ZW50KGV2ZW50KSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnQuY3BwCmluZGV4IDc5MmIwZmQ0NzRh
OTMxMzlhMDJkZDNmN2Y2OTUwYzI1MjgwZDFhNjkuLjY5MTcwMTcxNWIwZTNhNTBlOTA5NmIyYzli
ZTdiMjc4OGJlYjdiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVu
dC5jcHAKQEAgLTIyOSw2ICsyMjksMTUgQEAgV2ViUmVmZXJyZXJQb2xpY3kgV2ViRG9jdW1lbnQ6
OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViUmVmZXJy
ZXJQb2xpY3k+KGNvbnN0VW53cmFwPERvY3VtZW50PigpLT5yZWZlcnJlclBvbGljeSgpKTsKIH0K
IAorV2ViRWxlbWVudCBXZWJEb2N1bWVudDo6Y3JlYXRlRWxlbWVudChjb25zdCBXZWJTdHJpbmcm
IHRhZ05hbWUpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViRWxlbWVudCBl
bGVtZW50KHVud3JhcDxEb2N1bWVudD4oKS0+Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBlYykpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFdlYkVsZW1lbnQoKTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKwogV2ViQWNjZXNzaWJpbGl0eU9iamVjdCBXZWJEb2N1bWVudDo6YWNjZXNzaWJp
bGl0eU9iamVjdCgpIGNvbnN0CiB7CiAgICAgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29u
c3RVbndyYXA8RG9jdW1lbnQ+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAppbmRleCA5ZTJiYTJjNGNjYTk4OWQyN2UyMmNkNzUxZmI4NWYxNTcxYzM0ZTZl
Li5jNWYwNTFkM2M3ODE1ZmMxYzgwZjA3ZWE2NmY5YjlmYjNlODg0NmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTU4OCw2ICs1ODgsMTYgQEAg
V2ViU3RyaW5nIFdlYkZyYW1lSW1wbDo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUt
PnRyZWUoKS0+dW5pcXVlTmFtZSgpOwogfQogCitXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjp1bmlx
dWVOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1l
KCk7Cit9CisKK1dlYlN0cmluZyBXZWJGcmFtZUltcGw6OmFzc2lnbmVkTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpOworfQorCiB2b2lkIFdlYkZyYW1l
SW1wbDo6c2V0TmFtZShjb25zdCBXZWJTdHJpbmcmIG5hbWUpCiB7CiAgICAgbV9mcmFtZS0+dHJl
ZSgpLT5zZXROYW1lKG5hbWUpOwpAQCAtMjEyNyw2ICsyMTM3LDkgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogICAgIGlmICghY2hpbGRGcmFtZS0+
dHJlZSgpLT5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVGcmFtZSh0aGlzLCB3ZWJmcmFtZS5nZXQoKSk7
CisKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggMDA2YThmNTM0NjRkNDU1ZmI1MjU5NDUz
ZTY0ZTNiMjYzZTBhMjUxNC4uNzAzY2EzOTk3NmQ5NDMyZGYxNWYzYmVmODhlOWRhMWU2YTQwZjk0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTcyLDYg
KzcyLDggQEAgY2xhc3MgV2ViRnJhbWVJbXBsIDogcHVibGljIFdlYkZyYW1lLCBwdWJsaWMgUmVm
Q291bnRlZDxXZWJGcmFtZUltcGw+IHsKIHB1YmxpYzoKICAgICAvLyBXZWJGcmFtZSBtZXRob2Rz
OgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYlN0
cmluZyB1bmlxdWVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJTdHJpbmcgYXNzaWduZWRO
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7
CiAgICAgdmlydHVhbCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViVmVjdG9yPFdlYkljb25VUkw+IGljb25VUkxzKGludCBpY29uVHlwZXMpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCAxNGRhMWQ1NzAzNzhiYzYwODQ1
NjZjOGNkNjE0YzBiODJlZmMwN2E3Li5jNWU4MzZkNGExYzdjZDI1OTc4OTZiODI0OWUzYmVmYzNm
ODk0ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcApAQCAtMTM2LDYg
KzEzNiwxMyBAQCBXZWJOb2RlTGlzdCBXZWJOb2RlOjpjaGlsZE5vZGVzKCkKICAgICByZXR1cm4g
V2ViTm9kZUxpc3QobV9wcml2YXRlLT5jaGlsZE5vZGVzKCkpOwogfQogCitib29sIFdlYk5vZGU6
OmFwcGVuZENoaWxkKGNvbnN0IFdlYk5vZGUmIGNoaWxkKSAKK3sKKyAgICBFeGNlcHRpb25Db2Rl
IGV4Y2VwdGlvbkNvZGUgPSAwOworICAgIG1fcHJpdmF0ZS0+YXBwZW5kQ2hpbGQoY2hpbGQsIGV4
Y2VwdGlvbkNvZGUpOworICAgIHJldHVybiAhZXhjZXB0aW9uQ29kZTsKK30KKwogV2ViU3RyaW5n
IFdlYk5vZGU6OmNyZWF0ZU1hcmt1cCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNy
ZWF0ZU1hcmt1cChtX3ByaXZhdGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IDliNzQ1ZTAyOWEzMzJiOWE5NmJiN2JiYmNjYzhl
YzRkODQ0MjNmNDQuLmM2MjhkMDBhZmIyYzI0M2VlNWQ0MTA5ZGNkOWIyOWEwNjYzMDVhZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTgw
NCw0ICs4MDQsMzUgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0RnVsbEh0bWxPZlBhZ2UpCiAg
ICAgRVhQRUNUX1RSVUUoc2VsZWN0aW9uSHRtbC5pc0VtcHR5KCkpOwogfQogCitjbGFzcyBUZXN0
RGlkQ3JlYXRlRnJhbWVXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Citw
dWJsaWM6CisgICAgVGVzdERpZENyZWF0ZUZyYW1lV2ViRnJhbWVDbGllbnQoKSA6IG1fZnJhbWVD
b3VudCgwKSwgbV9wYXJlbnQoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyYW1lKFdlYkZyYW1lKiBwYXJlbnQsIFdlYkZyYW1lKiBjaGlsZCkgCisgICAgewor
ICAgICAgICBtX2ZyYW1lQ291bnQrKzsKKyAgICAgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAg
ICAgIG1fcGFyZW50ID0gcGFyZW50OworICAgIH0KKyAgICAKKyAgICBpbnQgbV9mcmFtZUNvdW50
OworICAgIFdlYkZyYW1lKiBtX3BhcmVudDsKK307CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIERp
ZENyZWF0ZUZyYW1lKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImlmcmFtZXNf
dGVzdC5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgidmlzaWJsZV9pZnJh
bWUuaHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImludmlzaWJsZV9pZnJh
bWUuaHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoInplcm9fc2l6ZWRfaWZy
YW1lLmh0bWwiKTsKKworICAgIFRlc3REaWRDcmVhdGVGcmFtZVdlYkZyYW1lQ2xpZW50IHdlYkZy
YW1lQ2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiaWZyYW1lc190ZXN0Lmh0bWwiLCBmYWxzZSwg
JndlYkZyYW1lQ2xpZW50KTsKKworICAgIEVYUEVDVF9FUSh3ZWJGcmFtZUNsaWVudC5tX2ZyYW1l
Q291bnQsIDMpOyAKKyAgICBFWFBFQ1RfRVEod2ViRnJhbWVDbGllbnQubV9wYXJlbnQsIHdlYlZp
ZXctPm1haW5GcmFtZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>