<?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>24696</bug_id>
          
          <creation_ts>2009-03-19 01:22:09 -0700</creation_ts>
          <short_desc>Enable mixed content detection</short_desc>
          <delta_ts>2009-09-04 10:26:32 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114291</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-03-19 01:22:09 -0700</bug_when>
    <thetext>In order to properly compute our mixed content state, we need to attach some additional security information to resource requests.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114292</commentid>
    <comment_count>1</comment_count>
      <attachid>28749</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-03-19 01:25:46 -0700</bug_when>
    <thetext>Created attachment 28749
patchzor

I don&apos;t actually have a way to build the WebKit chromium port, so hopefully this actually compiles...  Also, I&apos;ll take suggestions on better names.  Later in the pipeline, we call these variables frame_origin and main_frame_origin....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114959</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-03-24 10:54:22 -0700</bug_when>
    <thetext>Adam, is this really only helpful for Chromium?  Could other ports not benefit from having security context information here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114984</commentid>
    <comment_count>3</comment_count>
      <attachid>28749</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-03-24 11:44:28 -0700</bug_when>
    <thetext>Comment on attachment 28749
patchzor

&gt; Adam, is this really only helpful for Chromium?  Could other ports not benefit
&gt; from having security context information here?

You&apos;re right, we should move this to ResourceRequestBase.  You need this information to correctly compute the mixed content state for HTTPS.  I think we haven&apos;t noticed this before because Safari doesn&apos;t have a mixed content indicator.  Clearing review flag while I work up a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114987</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-24 11:57:34 -0700</bug_when>
    <thetext>When you add this field, please make sure to update  
  ResourceRequest::adopt
  ResourceRequest::copyData()
to handle it as well.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122257</commentid>
    <comment_count>5</comment_count>
      <attachid>30522</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-20 23:06:28 -0700</bug_when>
    <thetext>Created attachment 30522
patch v2

Here is a second attempt.  ap and I discussed this patch on #webkit.  He thought it might be better to use the willSendRequest to do the mixed content check on the theory that the client should be making these policy decisions.  fishd thought this approach was better because checking the mixed content policy in willSendRequest adds a synchronous IPC message to the browser process in chromium, which affects performance.

There seems to be some amount of precedence for adding security context information to ResourceRequests.  For example, we already have the mainDocumentURL (which is actually very quirky).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122313</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-21 03:39:26 -0700</bug_when>
    <thetext>The reason I suggested this was that clients are already making very similar policy decisions, e.g. in DocumentThreadableLoader::willSendRequest().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122352</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-21 07:52:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The reason I suggested this was that clients are already making very similar
&gt; policy decisions, e.g. in DocumentThreadableLoader::willSendRequest().

In this case, we need browser-wide information to make the right decision.  A user might have opted into allowing mixed content for a particular origin in another tab by clicking through a dialog or info bar, which is why we need to ask browser (and can&apos;t figure it out at renderer level).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122615</commentid>
    <comment_count>8</comment_count>
      <attachid>30522</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 02:09:16 -0700</bug_when>
    <thetext>Comment on attachment 30522
patch v2

Unflagging. Adam and I discussed some alternate design approaches, and Adam will discuss with further people in turn, so it&apos;s too early to review until we decide if this is the right design approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122981</commentid>
    <comment_count>9</comment_count>
      <attachid>30635</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-24 15:03:44 -0700</bug_when>
    <thetext>Created attachment 30635
Patch (via client interface)

Here&apos;s a patch based on discussions with mjs.  Is there any way to write a LayoutTest for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125106</commentid>
    <comment_count>10</comment_count>
      <attachid>30635</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-10 00:45:26 -0700</bug_when>
    <thetext>Comment on attachment 30635
Patch (via client interface)

Argument names are not needed in headers unless they add clarity.  None of the ones you add here do...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125107</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-10 00:48:23 -0700</bug_when>
    <thetext>&gt; Argument names are not needed in headers unless they add clarity.  None of the
&gt; ones you add here do...

Yeah, &quot;const KURL&amp; url&quot; isn&apos;t very insightful, huh?  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126680</commentid>
    <comment_count>12</comment_count>
      <attachid>30635</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-18 01:41:34 -0700</bug_when>
    <thetext>Comment on attachment 30635
Patch (via client interface)

I&apos;m concerned that this patch doesn&apos;t add any testable functionality -- i think we need to have some mechanism to validate the behaviour in build bots before it gets landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126706</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-18 09:10:53 -0700</bug_when>
    <thetext>&gt; I&apos;m concerned that this patch doesn&apos;t add any testable functionality

What&apos;s the best way to do that?  Maybe plumb the notifications to DumpRenderTree so it can print some sort of message?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126819</commentid>
    <comment_count>14</comment_count>
      <attachid>30635</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 17:14:35 -0700</bug_when>
    <thetext>Comment on attachment 30635
Patch (via client interface)

In order to test this, you&apos;d need to add delegate callbacks to WebKit.  Like any other WebChromeClient.mm implementation.  These would have to be private delegate calls, probably on the policy delegate.  And then you&apos;d have to have DRT&apos;s policy delegate implement them and log.

A lot of work... but mostly boiler plate, and seems like the easiest way I know to test.

Then you&apos;d need to add some mixed-content tests in the http tests.

r- since Olliver said above that this was blocked by lack of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127205</commentid>
    <comment_count>15</comment_count>
      <attachid>31607</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-21 02:08:49 -0700</bug_when>
    <thetext>Created attachment 31607
Step 1: FrameLoaderClient methods (work-in-progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127206</commentid>
    <comment_count>16</comment_count>
      <attachid>31608</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-21 02:09:20 -0700</bug_when>
    <thetext>Created attachment 31608
Step 2: WebFrameLoadDelegate methods (work-in-progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127207</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-21 02:12:35 -0700</bug_when>
    <thetext>Based on an IRC conversation with Maciej about how to plumb these notifications, I&apos;ve uploaded two work-in-progress patches that contain only plumbing.  Are these on the right track?  Is it legit to add methods to WebFrameLoadDelegatePrivate and IWebFrameLoadDelegatePrivate?  How do those interact with legacy delegates that don&apos;t have those methods?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141768</commentid>
    <comment_count>18</comment_count>
      <attachid>38350</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 22:30:30 -0700</bug_when>
    <thetext>Created attachment 38350
Step 4: Tests!


---
 11 files changed, 137 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141769</commentid>
    <comment_count>19</comment_count>
      <attachid>38351</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 22:30:34 -0700</bug_when>
    <thetext>Created attachment 38351
Step 3: Detection logic


---
 6 files changed, 63 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141770</commentid>
    <comment_count>20</comment_count>
      <attachid>38352</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 22:30:38 -0700</bug_when>
    <thetext>Created attachment 38352
Step 2: Delegate callbacks and DumpRenderTree changes.


---
 15 files changed, 251 insertions(+), 9 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141771</commentid>
    <comment_count>21</comment_count>
      <attachid>38353</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 22:30:42 -0700</bug_when>
    <thetext>Created attachment 38353
Step 1: FrameLoaderClient methods


---
 18 files changed, 155 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141774</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 22:31:49 -0700</bug_when>
    <thetext>Let&apos;s see...  I had some snarky comment here before about testing on Mac but not on the other platforms.  I expect carnage when landing this change, but that&apos;s what they pay me the big bucks for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142119</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-22 08:39:21 -0700</bug_when>
    <thetext>I should also say that there are a bunch of mixed content corner cases that these patches don&apos;t cover.  The goal here is to get the APIs in place and have something minimally functional.  We can handle the strange cases (e.g., redirects) in follow up bugs to ensure that we get good test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144408</commentid>
    <comment_count>24</comment_count>
      <attachid>38350</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:40:47 -0700</bug_when>
    <thetext>Comment on attachment 38350
Step 4: Tests!

Seems a better testing infrastructure would be if we could query if a certain callback ever was called instead of dumping every one. :(

Would be helpful to list what the name of the callback is supposed to be:
+This test loads a secure iframe that loads an insecure iframe. We should *not* trigger a delegate callback because the frame&apos;s origin is *not* contaminated.

so that people looking at your test have some prayer of knowing what to look for. :)

I&apos;m surprised this is not default:
 9     layoutTestController.setCloseRemainingWindowsWhenComplete(true);

I&apos;m surprised boring.html is not just replaced by &quot;about:blank&quot; or a data url?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144409</commentid>
    <comment_count>25</comment_count>
      <attachid>38351</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:43:00 -0700</bug_when>
    <thetext>Comment on attachment 38351
Step 3: Detection logic

Hum... I think I see now why you didn&apos;t use data: urls or about:blank in your previous test.

         static bool isMixedContent(SecurityOrigin* context, const KURL&amp; url);
 312         void checkIfDisplayInsecureContent(SecurityOrigin* context, const KURL&amp; url);
 313         void checkIfRunInsecureContent(SecurityOrigin* context, const KURL&amp; url);
no arg names needed.

In general this looks fine to me though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144410</commentid>
    <comment_count>26</comment_count>
      <attachid>38352</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:46:34 -0700</bug_when>
    <thetext>Comment on attachment 38352
Step 2: Delegate callbacks and DumpRenderTree changes.

Most roundabout method to print a string, ever:
         NSString *string = [NSString stringWithFormat:@&quot;didDisplayInsecureContent&quot;];
 361         printf (&quot;%s\n&quot;, [string UTF8String]);

Not only could you have used @&quot;string&quot; to make a literal, or just printf(&quot;mystring\n&quot;).  Instead you went for full style points. ;)

In general this looks fine though.  So fixing your string printing nit is all i see.  (That said, that one nit makes me question the rest of the mac code. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144411</commentid>
    <comment_count>27</comment_count>
      <attachid>38353</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 00:47:31 -0700</bug_when>
    <thetext>Comment on attachment 38353
Step 1: FrameLoaderClient methods

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144492</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-03 06:14:22 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Most roundabout method to print a string, ever:
[...]
&gt; In general this looks fine though.  So fixing your string printing nit is all i
&gt; see.  (That said, that one nit makes me question the rest of the mac code. :)

I have zero understanding of how Objective-C++ works.  I just adapted some printing code from elsewhere in this file.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144621</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-03 16:00:03 -0700</bug_when>
    <thetext>Committed r48032: &lt;http://trac.webkit.org/changeset/48032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144623</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-03 16:02:00 -0700</bug_when>
    <thetext>Objective-C++ is just a c++ file you can write obj-c in, or alternatively an obj-c file in which you can write c++ in.  Obj-C is relatively simple once you get over the message passing syntax.  Obj-C is a strict super-set of C.

[object messsageNamePartOne:argument moreMessageName:argument2]

this just turns into:
objc_msgsend(object, &quot;messageNamePartOne:moreMessageName:&quot;, argument, argument2);

That&apos;s all. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144631</commentid>
    <comment_count>31</comment_count>
      <attachid>38353</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-03 16:13:01 -0700</bug_when>
    <thetext>Comment on attachment 38353
Step 1: FrameLoaderClient methods

Landed step 1 in
http://trac.webkit.org/changeset/48032 and
http://trac.webkit.org/changeset/48033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144744</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-04 01:18:22 -0700</bug_when>
    <thetext>I&apos;m not sure if this is still supposed to have patches marked for review or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144811</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-04 08:31:39 -0700</bug_when>
    <thetext>Oh, i think bugzilla-tool closed this by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144826</commentid>
    <comment_count>34</comment_count>
      <attachid>38352</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-04 09:35:02 -0700</bug_when>
    <thetext>Comment on attachment 38352
Step 2: Delegate callbacks and DumpRenderTree changes.

Landed in http://trac.webkit.org/changeset/48051 with some subsequent fixes for the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144860</commentid>
    <comment_count>35</comment_count>
      <attachid>38351</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-04 10:26:13 -0700</bug_when>
    <thetext>Comment on attachment 38351
Step 3: Detection logic

This bug is too long.  I&apos;m going to move the remaining work to another bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28749</attachid>
            <date>2009-03-19 01:25:46 -0700</date>
            <delta_ts>2009-05-20 23:06:28 -0700</delta_ts>
            <desc>patchzor</desc>
            <filename>resource-origin.patch</filename>
            <type>text/plain</type>
            <size>2611</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTgyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c29tZSBzZWN1cml0eSBjb250ZXh0IHRvIFJlc291cmNlUmVxdWVzdCBzbyB3ZSBjYW4gcHJvcGVy
bHkgY29tcHV0ZQorICAgICAgICBvdXIgbWl4ZWQgY29udGVudCBzdGF0ZS4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0OjptYWluRG9jdW1lbnRTZWN1cml0eU9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNldE1haW5Eb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KToKKwogMjAwOS0wMy0xOSAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5j
YT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlz
aW9uIDQxODI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNl
UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTAgQEAKIAogI2luY2x1ZGUg
IkNTdHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRnJh
bWU7Ci0KICAgICBzdHJ1Y3QgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVz
dEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBUYXJnZXRUeXBlIHsKQEAgLTk5LDYg
Kzk4LDE1IEBACiAgICAgICAgIEtVUkwgcG9saWN5VVJMKCkgY29uc3QgeyByZXR1cm4gbV9wb2xp
Y3lVUkw7IH0KICAgICAgICAgdm9pZCBzZXRQb2xpY3lVUkwoY29uc3QgS1VSTCYgcG9saWN5VVJM
KSB7IG1fcG9saWN5VVJMID0gcG9saWN5VVJMOyB9CiAKKyAgICAgICAgLy8gVGhlIHNlY3VydHkg
b3JpZ2luIG9mIHRoZSBmcmFtZSB0aGF0IGluaXRhdGVkIHRoaXMgcmVzb3VyY2UgcmVxdWVzdC4K
KyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikgeyBtX3NlY3VyaXR5T3JpZ2luID0gc2Vj
dXJpdHlPcmlnaW47IH0KKworICAgICAgICAvLyBUaGUgc2VjdXJ0eSBvcmlnaW4gb2YgdGhlIHRv
cC1sZXZlbCBmcmFtZSB0aGF0IGNvbnRhaW5zIHRoZSBmcmFtZQorICAgICAgICAvLyB0aGF0IGlu
aXRhdGVkIHRoaXMgcmVzb3VyY2UgcmVxdWVzdC4KKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG1h
aW5Eb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbi5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE1haW5Eb2N1bWVudFNlY3Vy
aXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBtYWluRG9jdW1lbnRTZWN1cml0eU9yaWdpbikgeyBt
X21haW5Eb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gbWFpbkRvY3VtZW50U2VjdXJpdHlPcmlnaW47
IH0KKwogICAgICAgICAvLyBUaGUgcHJvY2VzcyBpZCBvZiB0aGUgcHJvY2VzcyBmcm9tIHdoaWNo
IHRoaXMgcmVxdWVzdCBvcmlnaW5hdGVkLiBJbgogICAgICAgICAvLyB0aGUgY2FzZSBvZiBvdXQt
b2YtcHJvY2VzcyBwbHVnaW5zLCB0aGlzIGFsbG93cyB0byBsaW5rIGJhY2sgdGhlCiAgICAgICAg
IC8vIHJlcXVlc3QgdG8gdGhlIHBsdWdpbiBwcm9jZXNzIChhcyBpdCBpcyBwcm9jZXNzZWQgdGhy
b3VnaCBhIHJlbmRlcgpAQCAtMTI2LDYgKzEzNCw4IEBACiAgICAgICAgIFRhcmdldFR5cGUgbV90
YXJnZXRUeXBlOwogICAgICAgICBDU3RyaW5nIG1fc2VjdXJpdHlJbmZvOwogICAgICAgICBLVVJM
IG1fcG9saWN5VVJMOworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlP
cmlnaW47CisgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9tYWluRG9jdW1lbnRTZWN1
cml0eU9yaWdpbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30522</attachid>
            <date>2009-05-20 23:06:28 -0700</date>
            <delta_ts>2009-05-24 15:03:44 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>0001-origin-context.patch</filename>
            <type>text/plain</type>
            <size>6346</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSA0N2ZmNTk5NmFhOTE5N2I5OWI3YWMxY2U4OWU0ODc1YjI2NzdkYzk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCAyMCBNYXkgMjAwOSAyMjo1OTo1NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG9yaWdp
biBjb250ZXh0CgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjIgKysrKysrKysrKysKIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCAgICAgICAgICAgICAgICB8ICAgIDcgKysrLQogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIHwgICA0MiArKysrKysrKysrKysrKysrKysrKysrCiBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oICAgfCAgIDEyICsr
KysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDViZTI3MzguLjJlZjhmMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAKIDIwMDktMDUtMjAgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2
OTYKKworICAgICAgICBBZGQgc29tZSBzZWN1cml0eSBjb250ZXh0IGluZm9ybWF0aW9uIHRvIFJl
c291cmNlUmVxdWVzdHMuICBUaGlzCisgICAgICAgIGluZm9ybWF0aW9uIGlzIHVzZWZ1bCBmb3Ig
ZGV0ZWN0aW5nIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgbWl4ZWQKKyAgICAgICAgY29udGVudCAo
ZS5nLiwgYW4gSFRUUCBzY3JpcHQgbG9hZGVkIGluIGFuIEhUVFBTIGZyYW1lKS4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6YWRvcHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29w
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZG9jdW1lbnRP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0RG9jdW1l
bnRPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6bWFpbkRv
Y3VtZW50T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnNl
dE1haW5Eb2N1bWVudE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjplcXVhbElnbm9yaW5nSGVh
ZGVyRmllbGRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaDoKKworMjAwOS0wNS0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KIAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU3MDYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBlMmZjN2JhLi5hNDgyOThjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yMTcsNyArMjE3LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAKICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwogICAgIH0KLSAgICAKKworICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXF1ZXN0LnNldERvY3VtZW50T3JpZ2luKGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICBpZiAoRG9jdW1lbnQqIG1h
aW5Eb2N1bWVudCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCkpCisgICAgICAg
IHJlcXVlc3Quc2V0TWFpbkRvY3VtZW50T3JpZ2luKG1haW5Eb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSk7CisKICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXgg
ZWJiNWQxNS4uYjQ3OWQ2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNDIsNiArNDIsOCBAQCBhdXRvX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KGF1dG9fcHRyPENyb3NzVGhyZWFkUmVz
b3VyYwogICAgIHJlcXVlc3QtPnNldFVSTChkYXRhLT5tX3VybCk7CiAgICAgcmVxdWVzdC0+c2V0
Q2FjaGVQb2xpY3koZGF0YS0+bV9jYWNoZVBvbGljeSk7CiAgICAgcmVxdWVzdC0+c2V0VGltZW91
dEludGVydmFsKGRhdGEtPm1fdGltZW91dEludGVydmFsKTsKKyAgICByZXF1ZXN0LT5zZXREb2N1
bWVudE9yaWdpbihkYXRhLT5tX2RvY3VtZW50T3JpZ2luKTsKKyAgICByZXF1ZXN0LT5zZXRNYWlu
RG9jdW1lbnRPcmlnaW4oZGF0YS0+bV9tYWluRG9jdW1lbnRPcmlnaW4pOwogICAgIHJlcXVlc3Qt
PnNldE1haW5Eb2N1bWVudFVSTChkYXRhLT5tX21haW5Eb2N1bWVudFVSTCk7CiAgICAgcmVxdWVz
dC0+c2V0SFRUUE1ldGhvZChkYXRhLT5tX2h0dHBNZXRob2QpOwogCkBAIC03Miw2ICs3NCw4IEBA
IGF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6Y29weURhdGEoKSBjb25zdAogICAgIGRhdGEtPm1fdXJsID0gdXJsKCkuY29weSgpOwog
ICAgIGRhdGEtPm1fY2FjaGVQb2xpY3kgPSBjYWNoZVBvbGljeSgpOwogICAgIGRhdGEtPm1fdGlt
ZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsKCk7CisgICAgZGF0YS0+bV9kb2N1bWVudE9y
aWdpbiA9IGRvY3VtZW50T3JpZ2luKCkuY29weSgpOworICAgIGRhdGEtPm1fbWFpbkRvY3VtZW50
T3JpZ2luID0gbWFpbkRvY3VtZW50T3JpZ2luKCkuY29weSgpOwogICAgIGRhdGEtPm1fbWFpbkRv
Y3VtZW50VVJMID0gbWFpbkRvY3VtZW50VVJMKCkuY29weSgpOwogICAgIGRhdGEtPm1faHR0cE1l
dGhvZCA9IGh0dHBNZXRob2QoKS5jb3B5KCk7CiAgICAgZGF0YS0+bV9odHRwSGVhZGVycy5hZG9w
dChodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKSk7CkBAIC0xNjEsNiArMTY1LDM4IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0
SW50ZXJ2YWwpCiAgICAgICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQog
Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVxdWVzdEJhc2U6OmRvY3VtZW50T3JpZ2luKCkgY29u
c3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgcmV0dXJuIG1f
ZG9jdW1lbnRPcmlnaW47IAorfQorCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldERvY3Vt
ZW50T3JpZ2luKGNvbnN0IFN0cmluZyYgZG9jdW1lbnRPcmlnaW4pCit7IAorICAgIHVwZGF0ZVJl
c291cmNlUmVxdWVzdCgpOyAKKyAgICAKKyAgICBtX2RvY3VtZW50T3JpZ2luID0gZG9jdW1lbnRP
cmlnaW47IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOworfQor
Citjb25zdCBTdHJpbmcmIFJlc291cmNlUmVxdWVzdEJhc2U6Om1haW5Eb2N1bWVudE9yaWdpbigp
IGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAorICAgIAorICAgIHJldHVy
biBtX21haW5Eb2N1bWVudE9yaWdpbjsgCit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
c2V0TWFpbkRvY3VtZW50T3JpZ2luKGNvbnN0IFN0cmluZyYgbWFpbkRvY3VtZW50T3JpZ2luKQor
eyAKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCisgICAgCisgICAgbV9tYWluRG9jdW1l
bnRPcmlnaW4gPSBtYWluRG9jdW1lbnRPcmlnaW47IAorICAgIAorICAgIG1fcGxhdGZvcm1SZXF1
ZXN0VXBkYXRlZCA9IGZhbHNlOworfQorCiBjb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjptYWluRG9jdW1lbnRVUkwoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OyAKQEAgLTI5NCw2ICszMzAsMTIgQEAgYm9vbCBlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKGNv
bnN0IFJlc291cmNlUmVxdWVzdEJhc2UmIGEsIGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAo
YS50aW1lb3V0SW50ZXJ2YWwoKSAhPSBiLnRpbWVvdXRJbnRlcnZhbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCisgICAgaWYgKGEuZG9jdW1lbnRPcmlnaW4oKSAhPSBiLmRvY3VtZW50
T3JpZ2luKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoYS5tYWluRG9j
dW1lbnRPcmlnaW4oKSAhPSBiLm1haW5Eb2N1bWVudE9yaWdpbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCiAgICAgaWYgKGEubWFpbkRvY3VtZW50VVJMKCkgIT0gYi5tYWluRG9jdW1l
bnRVUkwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggOTA1NGRhNC4uYTRhNjhhZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBA
IC03MSw5ICs3MSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGRvdWJsZSB0aW1l
b3V0SW50ZXJ2YWwoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91
YmxlIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgICAgIAorICAgICAgICBjb25zdCBTdHJpbmcmIGRv
Y3VtZW50T3JpZ2luKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0RG9jdW1lbnRPcmlnaW4oY29u
c3QgU3RyaW5nJiBkb2N1bWVudE9yaWdpbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtYWlu
RG9jdW1lbnRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRPcmln
aW4oY29uc3QgU3RyaW5nJiBtYWluRG9jdW1lbnRPcmlnaW4pOworCisgICAgICAgIC8vIFdBUk5J
Tkc6IFRoaXMgaXMgbm90IGFsd2F5cyB0aGUgVVJMIG9mIHRoZSBtYWluIGRvY3VtZW50LgorICAg
ICAgICAvLyAgICAgICAgICBTZWUgRnJhbWVMb2Flci5jcHAuICA6KAogICAgICAgICBjb25zdCBL
VVJMJiBtYWluRG9jdW1lbnRVUkwoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRNYWluRG9jdW1l
bnRVUkwoY29uc3QgS1VSTCYgbWFpbkRvY3VtZW50VVJMKTsKLSAgICAgICAgCisKICAgICAgICAg
Y29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SFRUUE1l
dGhvZChjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QpOwogICAgICAgICAKQEAgLTE0Myw2ICsxNTEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQ
b2xpY3kgbV9jYWNoZVBvbGljeTsKICAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOwor
ICAgICAgICBTdHJpbmcgbV9kb2N1bWVudE9yaWdpbjsKKyAgICAgICAgU3RyaW5nIG1fbWFpbkRv
Y3VtZW50T3JpZ2luOwogICAgICAgICBLVVJMIG1fbWFpbkRvY3VtZW50VVJMOwogICAgICAgICBT
dHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZp
ZWxkczsKLS0gCjEuNi4wLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30635</attachid>
            <date>2009-05-24 15:03:44 -0700</date>
            <delta_ts>2009-06-21 02:08:49 -0700</delta_ts>
            <desc>Patch (via client interface)</desc>
            <filename>0001-Detect-mixed-content.patch</filename>
            <type>text/plain</type>
            <size>20125</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBkZTE1YjY0ZDEzYTMzYWU3NDgxNjgzMmU2YmNiMjUzMzc5MzYxYWZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogU3VuLCAyNCBNYXkgMjAwOSAxNDo1OToyOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIERldGVj
dCBtaXhlZCBjb250ZW50CgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMjQgKysrKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9sb2FkZXIv
RG9jTG9hZGVyLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArKysrKwogV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggICAgICAgICAgICAgICAgIHwgICAgMyArKwogV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcCAgICAgICAgIHwgICAgNSArKysrCiBXZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgICAgICAgICAgfCAgICA2ICsrKysrCiBXZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsrKysrKysrKysr
KysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9DaHJvbWUuaCAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDcgKysrKysrCiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggICAgICAgICAg
ICAgICAgICAgfCAgIDE0ICsrKysrKysrKysrKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrCiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgfCAgIDEwICsrKysrKysrKwogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgIHwgICAgMyArKwogV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysK
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggICB8ICAgIDMgKysK
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tICB8ICAgMTAgKysr
KysrKysrCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDEzICsrKysrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcCAgIHwgICAxMCArKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oICAgICB8ICAgIDMgKysKIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrCiBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgfCAgIDEwICsrKysrKysrKwogV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCAgIHwgICAgMyArKwogV2ViS2l0L3d4L0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysKIFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcCAgICB8ICAgMTAgKysrKysrKysr
CiBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oICAgICAgfCAgICAzICsr
CiAyMyBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQw
NDE0NTIuLjI5MjMwY2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMDUtMjQgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTYK
KworICAgICAgICBOb3RpZnkgY2xpZW50IHdoZW4gd2UgbG9hZCBtaXhlZCBjb250ZW50LgorCisg
ICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2Fk
ZXI6OmNoZWNrQ2FjaGVPYmplY3RTdGF0dXMpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmlzTWl4ZWRDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50
KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMDktMDUtMjIgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2Vs
ZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9j
TG9hZGVyLmNwcAppbmRleCBjMGUzZjZmLi5iMzViYzMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9Eb2NMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApAQCAtMzA5LDYgKzMxMCwx
MSBAQCB2b2lkIERvY0xvYWRlcjo6Y2hlY2tDYWNoZU9iamVjdFN0YXR1cyhDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiAKICAgICAvLyBGSVhNRTogSWYgdGhlIFdlYktpdCBjbGllbnQgY2hhbmdl
cyBvciBjYW5jZWxzIHRoZSByZXF1ZXN0LCBXZWJDb3JlIGRvZXMgbm90IHJlc3BlY3QgdGhpcyBh
bmQgY29udGludWVzIHRoZSBsb2FkLgogICAgIGZyYW1lKCktPmxvYWRlcigpLT5sb2FkZWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShyZXNvdXJjZSk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZSgpLT5kb2N1bWVudCgpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCk7
CisgICAgaWYgKGRvY3VtZW50ICYmIHBhZ2UpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jaGVj
a0lmUnVuSW5zZWN1cmVDb250ZW50KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBLVVJMKHJl
c291cmNlLT51cmwoKSkpOwogfQogCiB2b2lkIERvY0xvYWRlcjo6aW5jcmVtZW50UmVxdWVzdENv
dW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggNjIwYzBlMC4uN2EwM2ZlYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKQEAgLTEwMCw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmLCBG
cmFtZSopIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudChQYWdlKikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5k
b3dTb29uKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1l
KiwgY29uc3QgU3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzOWU1YjkwLi5hZGE4MDVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTE3Nyw2ICsxNzcsMTEgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc28KICAgICAvLyBE
b24ndCBzZXQgdGhpcyBvbiB0aGUgZmlyc3QgcmVxdWVzdC4gSXQgaXMgc2V0IHdoZW4gdGhlIG1h
aW4gbG9hZCB3YXMgc3RhcnRlZC4KICAgICBtX2RvY3VtZW50TG9hZGVyLT5zZXRSZXF1ZXN0KG5l
d1JlcXVlc3QpOwogCisgICAgRnJhbWUqIHRvcCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7Cisg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAodG9wICE9IG1fZnJhbWUg
JiYgcGFnZSAmJiB0b3AtPmRvY3VtZW50KCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIG5ld1JlcXVlc3QudXJsKCkpOworCiAgICAgLy8gRklYTUU6IElkZWFsbHkgd2UnZCBzdG9w
IHRoZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRpb24gcG9saWN5IGRl
bGVnYXRlCiAgICAgLy8gbGlzdGVuZXIuIEJ1dCB0aGVyZSdzIG5vIHdheSB0byBkbyB0aGF0IGlu
IHByYWN0aWNlLiBTbyBpbnN0ZWFkIHdlIGNhbmNlbCBsYXRlciBpZiB0aGUKICAgICAvLyBsaXN0
ZW5lciB0ZWxscyB1cyB0by4gSW4gcHJhY3RpY2UgdGhhdCBtZWFucyB0aGUgbmF2aWdhdGlvbiBw
b2xpY3kgbmVlZHMgdG8gYmUgZGVjaWRlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDA0N2NjNmQuLjNmMWNmZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTEx
Miw2ICsxMTMsMTEgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICBSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlm
ICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlv
dXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSAmJiBtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PndpbGxTZW5kUmVxdWVzdCh0aGlzLCBuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoZG9jdW1lbnQgJiYgcGFnZSkKKyAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpOwogfQogCiB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA4NmRlODJlLi5iNDFm
MTIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcApAQCAtMjQxLDYgKzI0MSwzMyBAQCBib29sIENocm9tZTo6cnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJhbWUqIGZyYW1lKQog
ICAgIHJldHVybiBtX2NsaWVudC0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1lc3NhZ2Us
IGZyYW1lKTsKIH0KIAorYm9vbCBDaHJvbWU6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgaWYgKGNvbnRleHQtPnByb3RvY29s
KCkgIT0gImh0dHBzIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gV2Ugb25seSBjYXJlIGFi
b3V0IEhUVFBTIHNlY3VyaXR5IG9yaWdpbnMuCisKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImh0
dHBzIikgfHwgdXJsLnByb3RvY29sSXMoImFib3V0IikgfHwgdXJsLnByb3RvY29sSXMoImRhdGEi
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gTG9hZGluZyB0aGVzZSBwcm90b2NvbHMgaXMg
c2VjdXJlLgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2hyb21lOjpjaGVja0lmRGlz
cGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsKQoreworICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQobV9wYWdl
KTsKK30KKwordm9pZCBDaHJvbWU6OmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAoIWlzTWl4ZWRDb250
ZW50KGNvbnRleHQsIHVybCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRS
dW5JbnNlY3VyZUNvbnRlbnQoY29udGV4dCk7Cit9CisKIHZvaWQgQ2hyb21lOjpjbG9zZVdpbmRv
d1Nvb24oKQogewogICAgIG1fY2xpZW50LT5jbG9zZVdpbmRvd1Nvb24oKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCBjMjZl
NDUwLi41MDZlNDM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5oCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNs
YXNzIEludFJlY3Q7CisgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBQYWdlOworICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFN0cmluZzsKIAogICAgIHN0cnVjdCBGcmFtZUxv
YWRSZXF1ZXN0OwpAQCAtMTAyLDYgKzEwNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKTsKICAgICAgICAgYm9vbCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSog
ZnJhbWUpOwogCisgICAgICAgIHZvaWQgY2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCk7CisgICAgICAgIHZvaWQgY2hl
Y2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VS
TCYgdXJsKTsKKwogICAgICAgICB2b2lkIGNsb3NlV2luZG93U29vbigpOwogCiAgICAgICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CkBAIC0xMjksNiAr
MTM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcml2YXRlOgorICAg
ICAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwg
Y29uc3QgS1VSTCYgdXJsKTsKKwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9t
ZUNsaWVudCogbV9jbGllbnQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA5NDMyYTM4Li5l
MDM4M2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFn
ZTsKKyAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xh
c3MgV2lkZ2V0OwogCkBAIC0xMDYsNiArMTA3LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSkgPSAwOwogCisgICAgICAgIC8vIFRoZSBpbmRp
Y2F0ZWQgc2VjdXJpdHkgb3JpZ2luIGhhcyBkaXNwbGF5ZWQgaW5hY3RpdmUgY29udGVudCAoc3Vj
aAorICAgICAgICAvLyBhcyBhbiBpbWFnZSkgZnJvbSBhbiBpbnNlY3VyZSBzb3VyY2UuICBUaGUg
Y2hyb21lIHNob3VsZCB1cGRhdGUgdGhlCisgICAgICAgIC8vIHNlY3VpcnR5IGluZGljYXRvcnMg
Zm9yIHRoaXMgcGFnZSBhcHByb3ByaWF0ZWx5LiAgSW5hY3RpdmUgY29udGVudAorICAgICAgICAv
LyBjYW5ub3Qgc3ByZWFkIHRvIG90aGVyIHBhZ2VzLCBzbyB0aGUgY2hyb21lIG5lZWQgbm90IHVw
ZGF0ZSBzZWN1cml0eQorICAgICAgICAvLyBpbmRpY2F0b3JzIGZvciBvdGhlciBwYWdlcy4KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoUGFnZSogcGFnZSkg
PSAwOworCisgICAgICAgIC8vIFRoZSBpbmRpY2F0ZWQgc2VjdXJpdHkgb3JpZ2luIGhhcyBydW4g
YWN0aXZlIGNvbnRlbnQgKHN1Y2ggYXMgYQorICAgICAgICAvLyBzY3JpcHQpIGZyb20gYW4gaW5z
ZWN1cmUgc291cmNlLiAgVGhlIGNocm9tZSBzaG91bGQgdXBkYXRlIGFsbCB0aGUKKyAgICAgICAg
Ly8gc2VjdXJpdHkgaW5kaWNhdG9ycyBmb3IgdGhpcyBvcmlnaW4gYXBwcm9wcmlhdGVseS4gIE5v
dGUgdGhhdCB0aGUKKyAgICAgICAgLy8gaW5zZWN1cmUgY29udGVudCBjYW4gc3ByZWFkIHRvIG90
aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikgPSAwOworCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKSA9IDA7CiAgICAgICAgIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgPSAw
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAyM2Y4OTg2Li5lZGI5ODU0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA1LTI0
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0Njk2CisKKyAgICAgICAgSW1wbGVtZW50IHN0dWIgY2FsbGJhY2tzIGZvciBt
aXhlZCBjb250ZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAy
MDA5LTA1LTIyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggZDlkMDQ5MS4uNzdjN2NmMyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMjMzLDYgKzIzMywx
NiBAQCBib29sIENocm9tZUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnQ6OmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoUGFnZSogcGFnZSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgor
fQorCit2b2lkIENocm9tZUNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KK30KKwogYm9vbCBD
aHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIG1lc3NhZ2UsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKIHsKICAgICByZXR1cm4gcnVu
SmF2YVNjcmlwdENvbmZpcm0oZnJhbWUsIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYjMxNTIzMi4uNTlhMjEyZiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC03NCw2ICs3NCw5IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlLCBXZWJDb3JlOjpGcmFt
ZSogZnJhbWUpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlBhZ2UqIHBhZ2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOworCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGU2Mzg2YzAuLjZmMDNmOGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDUt
MjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQ2OTYKKworICAgICAgICBJbXBsZW1lbnQgc3R1YiBjYWxsYmFja3MgZm9y
IG1peGVkIGNvbnRlbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorCiAyMDA5LTA1LTIy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggN2FkNTFmNS4uZDlhMDc0NCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC03OCw2ICs3OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7CiAgICAgdmlydHVhbCBib29s
IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3Nh
Z2UsIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudChXZWJDb3JlOjpQYWdlKiBwYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOwor
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJ1bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRl
eCBiN2M0MDdhLi4yY2E0ZjUyIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5tbQpAQCAtMzE3LDYgKzMxNywxNiBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJhbWUq
CiAgICAgcmV0dXJuIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbih0cnVlLCBtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlOmluaXRpYXRlZEJ5RnJhbWU6KSwgbWVzc2FnZSwga2l0KGZyYW1lKSk7CiB9CiAKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFBhZ2UqIHBhZ2UpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KK30KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgbWUuCit9CisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjbG9zZVdp
bmRvd1Nvb24oKQogewogICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBwYXJlbnQgV2ViVmll
dyBmcm9tIFdlYlZpZXdTZXRzIGhlcmUsIGJlZm9yZSBpdCBhY3R1YWxseQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZmQwYjFkNy4u
MjgyNjg5MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDUtMjQgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9nPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgorCisg
ICAgICAgIEltcGxlbWVudCBzdHViIGNhbGxiYWNrcyBmb3IgbWl4ZWQgY29udGVudC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMDktMDUtMjEgIEFudG9u
aW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAKaW5kZXggZDAwMTAzNS4uMDI3OTdhOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC0yNTEsNiArMjUxLDE2IEBAIGJvb2wgQ2hy
b21lQ2xpZW50UXQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEZyYW1lKiBmCiAgICAgcmV0dXJuIHJ1bkphdmFTY3JpcHRDb25maXJtKGZyYW1lLCBt
ZXNzYWdlKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRRdDo6ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudChQYWdlKiBwYWdlKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCit9CisKIHZvaWQgQ2hyb21l
Q2xpZW50UXQ6OmNsb3NlV2luZG93U29vbigpCiB7CiAgICAgbV93ZWJQYWdlLT5tYWluRnJhbWUo
KS0+ZC0+ZnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBkOGYyNjQ0Li42ZjYzYTAyIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtODksNiArODksOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKTsKICAgICAgICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEZyYW1lKiBmcmFtZSk7CiAKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoUGFnZSogcGFnZSk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbik7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpOwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggM2FlZDQ0Ni4uNDJjZWFjZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0w
NS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIEltcGxlbWVudCBzdHViIGNhbGxiYWNrcyBm
b3IgbWl4ZWQgY29udGVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCiAyMDA5LTA1
LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCmluZGV4IDRjMzg0NDkuLmQ3YzM2ODQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTMyMCw2ICszMjAsMTYgQEAgYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEZyYW1lKgogICAgIHJldHVybiAhIXJlc3VsdDsKIH0KIAordm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoUGFnZSogcGFnZSkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBtZS4KK30KKwogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNsb3NlV2luZG93
U29vbigpCiB7CiAgICAgLy8gV2UgbmVlZCB0byByZW1vdmUgdGhlIHBhcmVudCBXZWJWaWV3IGZy
b20gV2ViVmlld1NldHMgaGVyZSwgYmVmb3JlIGl0IGFjdHVhbGx5CmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MTcxZTM1Li4yM2UyMzE2IDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTgxLDYgKzgx
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSwgV2ViQ29yZTo6RnJhbWUqIGZyYW1lKTsKIAor
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlBhZ2Uq
IHBhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbik7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dT
b29uKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZy
YW1lKiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hh
bmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAzMzkzMzc2Li40Y2IwNTNlIDEwMDY0
NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAwOS0wNS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIEltcGxl
bWVudCBzdHViIGNhbGxiYWNrcyBmb3IgbWl4ZWQgY29udGVudC4KKworICAgICAgICAqIFdlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50V3g6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50V3g6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5oOgorCiAyMDA5LTA1LTIyICBLZXZpbiBXYXR0ZXJzICA8a2V2
aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmll
ci4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCAwMmFj
ZTI2Li4wNGZmNzk3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
Y3BwCkBAIC0yMjgsNiArMjI4LDE2IEBAIGJvb2wgQ2hyb21lQ2xpZW50V3g6OnJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIHN0cmluZywKICAgICByZXR1cm4gZGlhbG9n
LlNob3dNb2RhbCgpID09IHd4WUVTOwogfQogCit2b2lkIENocm9tZUNsaWVudFd4OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KFBhZ2UqIHBhZ2UpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBtZS4KK30KKwordm9pZCBDaHJvbWVDbGllbnRXeDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KK30K
Kwogdm9pZCBDaHJvbWVDbGllbnRXeDo6Y2xvc2VXaW5kb3dTb29uKCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guaCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKaW5kZXgg
ODU3YWI2YS4uOGE1MTBmZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hy
b21lQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChQYWdlKiBwYWdlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOwor
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKLS0gCjEuNi4w
LjEKCg==
</data>
<flag name="review"
          id="15504"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31607</attachid>
            <date>2009-06-21 02:08:49 -0700</date>
            <delta_ts>2009-08-20 22:30:22 -0700</delta_ts>
            <desc>Step 1: FrameLoaderClient methods (work-in-progress)</desc>
            <filename>0001-FrameLoaderClient-methods.patch</filename>
            <type>text/plain</type>
            <size>15126</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAyMjYwOThhMzRhZDY5MzM1MDM3NWQ2Y2NmNzU0MjU5NzUyMWNhODRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogU3VuLCAyMSBKdW4gMjAwOSAwMDozMTo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEZyYW1l
TG9hZGVyQ2xpZW50IG1ldGhvZHMuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysrCiBXZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKystCiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oICAgICAgICAgICAgICAgICB8ICAgIDkgKysrKysr
KysrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTMgKysrKysrKysrKysrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAgfCAgIDEwICsrKysrKysrKysKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCAgIHwgICAgMyArKysKIFdlYktpdC9tYWMvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysrCiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggICB8ICAgIDMg
KysrCiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tICB8
ICAgMTAgKysrKysrKysrKwogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEzICsrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCAgIHwgICAxMCArKysrKysrKysrCiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oICAgICB8ICAgIDMgKysrCiBXZWJL
aXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysr
KysrKysrKysrKwogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgfCAgIDEwICsrKysrKysrKysKIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCAgIHwgICAgMyArKysKIFdlYktpdC93eC9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKysrKysrKysrKysrCiBXZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcCAgICB8ICAgMTAgKysrKysrKysr
KwogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oICAgICAgfCAg
ICAzICsrKwogMTggZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAyODg5YzE3Li40NGY5MGM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0Njk2CisKKyAgICAgICAgQWRkZWQgbWl4ZWQgY29udGVudCBtZXRob2RzIHRvIEZyYW1lTG9h
ZGVyQ2xpZW50LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAy
MDA5LTA2LTE5ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NjggCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCmluZGV4IDgxZWJmMWYuLmE1YzhmNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBA
IC0yNjgsNyArMjY4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKikgeyB9CiAgICAgdmlydHVh
bCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChQYWdlKikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiopIHsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwg
aW50KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBXaWRnZXQqIGNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFdpZGdldCogY3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJuIDA7IH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGI4NjIwMDIuLjRkODI4ODkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTYzLDYgKzE2MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5
SXRlbSopIGNvbnN0ID0gMDsKIAorICAgICAgICAvLyBUaGlzIGZyYW1lIGhhcyBkaXNwbGF5ZWQg
aW5hY3RpdmUgY29udGVudCAoc3VjaCBhcyBhbiBpbWFnZSkgZnJvbSBhbgorICAgICAgICAvLyBp
bnNlY3VyZSBzb3VyY2UuICBJbmFjdGl2ZSBjb250ZW50IGNhbm5vdCBzcHJlYWQgdG8gb3RoZXIg
ZnJhbWVzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
ID0gMDsKKworICAgICAgICAvLyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdpbiBoYXMgcnVu
IGFjdGl2ZSBjb250ZW50IChzdWNoIGFzIGEKKyAgICAgICAgLy8gc2NyaXB0KSBmcm9tIGFuIGlu
c2VjdXJlIHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4KKyAgICAg
ICAgLy8gc3ByZWFkIHRvIG90aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKSA9IDA7
CisKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAw
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCA0MzQxNDU1Li43NWYyNmUzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA2LTIx
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0Njk2CisKKyAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgbWl4ZWQg
Y29udGVudCBtZXRob2RzIG9mIEZyYW1lTG9hZGVyQ2xpZW50LiAKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDA5LTA2LTIwICBK
YW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBhbmQgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCBmMDc3NmY5Li45
MzJlMTAzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcApAQCAtNjI1LDYgKzYyNSwxNiBAQCBib29sIEZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgcmV0
dXJuIGl0ZW0gIT0gMDsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjptYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
aW5kZXggZjg1YzYzYS4uNTAxMGMzOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMTM2LDYgKzEzNiw5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0
TGlua3MoKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKwogICAgICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGM0ODc3NWUuLmIyMWM1MGEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMDktMDYtMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTYKKworICAgICAgICBTdHViIGltcGxl
bWVudGF0aW9ucyBvZiBtaXhlZCBjb250ZW50IG1ldGhvZHMgb2YgRnJhbWVMb2FkZXJDbGllbnQu
IAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorCiAyMDA5
LTA2LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDg4NGRmMzEuLjBmMjMzNzkgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE0NCw2ICsxNDQs
OSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KaW5kZXggMmZiNzhlOC4uNWNiY2E4NiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC04MzMsNiArODMzLDE2IEBAIGJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSogaXRlbSkgY29uc3QKICAgICByZXR1cm4gW1t2aWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzp2aWV3IHNob3VsZEdvVG9IaXN0b3J5SXRlbTp3ZWJJdGVtXTsKIH0KIAordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFtOU0Vy
cm9yIF93ZWJLaXRFcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJy
b3JDYW5jZWxsZWQgVVJMOnJlcXVlc3QudXJsKCldOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYzJlZDQ3NS4uNjM2YjM3NiAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDYtMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTYKKworICAgICAgICBTdHVi
IGltcGxlbWVudGF0aW9ucyBvZiBtaXhlZCBjb250ZW50IG1ldGhvZHMgb2YgRnJhbWVMb2FkZXJD
bGllbnQuIAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
ZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oOgorCiAyMDA5LTA2LTE5ICBEYW5pZWwgVGVza2UgPHF0LWluZm9Abm9raWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGM2YzRiOWUu
LjE0MjIxNWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAKQEAgLTY1MCw2ICs2NTAsMTYgQEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0
OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKml0ZW0pIGNvbnMK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpzYXZlVmlld1N0YXRlVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBp
dGVtKQogewogICAgIFFXZWJIaXN0b3J5SXRlbSBoaXN0b3J5SXRlbShuZXcgUVdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZShpdGVtKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAppbmRleCA0ZDJkY2JjLi4zMTQ4NDc3IDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTE1MSw2ICsxNTEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5UmVkaXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3Rv
cnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiopOworCiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjEwY2VlYS4uZGFjNjgwZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAwOS0wNi0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50
YXRpb25zIG9mIG1peGVkIGNvbnRlbnQgbWV0aG9kcyBvZiBGcmFtZUxvYWRlckNsaWVudC4gCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDA5LTA2
LTIwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiMzdhMGQxLi5jODg2N2U4IDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNTE0LDYg
KzUxNCwxNiBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0
ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKK3sKKyAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiopCit7CisgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgUmVmUHRyPFdlYkRvY3VtZW50TG9h
ZGVyPiBsb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCBlN2UzYzMyLi5iNTA1MzU3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05MSw2ICs5MSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qKTsKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5n
ZUxvZwppbmRleCA3YmJhNjlhLi42MjQ0Yzc0IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wNi0y
MSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIG1peGVk
IGNvbnRlbnQgbWV0aG9kcyBvZiBGcmFtZUxvYWRlckNsaWVudC4gCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRXeDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDA5LTA2LTA5
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIHd4
IGJ1aWxkIGZpeCwgYWRkaW5nIEpTQ29yZS9hc3NlbWJsZXIgdG8gdGhlIGxpc3Qgb2YgaW5jbHVk
ZSBkaXJzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmNwcAppbmRleCBmYzFhYzUzLi4yNTdjYWI1IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAtNTM2LDYgKzUzNiwxNiBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50V3g6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXeDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRl
VG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
IGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCmluZGV4IGRl
NmMxZGQuLjNlMjBlNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmgKQEAgLTE1MCw2ICsxNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlz
dG9yeUl0ZW0qKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0Owog
ICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICAg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwotLSAKMS42LjAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31608</attachid>
            <date>2009-06-21 02:09:20 -0700</date>
            <delta_ts>2009-08-20 22:30:26 -0700</delta_ts>
            <desc>Step 2: WebFrameLoadDelegate methods (work-in-progress)</desc>
            <filename>0002-Plumb-to-delegate.patch</filename>
            <type>text/plain</type>
            <size>14166</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBjZmJiNWQ3ZTE5MTBmYWEyZWVhOWY1ZjJlY2NmY2I5MDhmZTMxOGM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogU3VuLCAyMSBKdW4gMjAwOSAwMjowNjo0NSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFBsdW1i
IHRvIGRlbGVnYXRlLgoKLS0tCiBXZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKwogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSAgfCAgIDE1ICsrKysrKy0KIC4uLi9tYWMvV2ViVmlldy9X
ZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIHwgICAgMiArCiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmggICB8ICAgMzkgKysrKysrKysrKysr
KysrKysrKwogV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEzICsrKysrKwogLi4uL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZS5pZGwgICAgfCAgICA1ICsrCiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCB8ICAgMjYgKysrKysrKysrKystCiBXZWJLaXRUb29scy9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysKIC4uLi9EdW1w
UmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gICAgICAgIHwgICAxNiArKysrKysr
KwogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgICAgICAgfCAg
IDQwICsrKysrKysrKysrKysrKysrKystCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuaCB8ICAgIDcgKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODYgaW5z
ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKCmRpZmYgLS1naXQgYS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGIyMWM1MGEuLmRi
OTEzYWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC00LDYgKzQsMjAgQEAKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTYKIAorICAgICAgICBQbHVtYiBtaXhlZCBjb250ZW50
IG5vdGlmaWNhdGlvbnMgdG8gV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaDogQWRkZWQuCisKKzIwMDktMDYtMjEg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQ2OTYKKwogICAgICAgICBTdHViIGltcGxlbWVudGF0aW9ucyBvZiBtaXhlZCBj
b250ZW50IG1ldGhvZHMgb2YgRnJhbWVMb2FkZXJDbGllbnQuIAogCiAgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDVjYmNhODYuLjA2Yjg1MzMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtNjgsNiArNjgsNyBAQAogI2ltcG9ydCAiV2ViUG9saWN5RGVsZWdhdGVQcml2YXRl
LmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAj
aW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTgzNSwxMiArODM2LDIwIEBAIGJvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRl
bSkgY29uc3QKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJl
Q29udGVudCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAKKyAgICBXZWJGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFt
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKKyAgICBpZiAoaW1wbGVtZW50
YXRpb25zLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYykKKyAgICAgICAgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1
bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50
KFNlY3VyaXR5T3JpZ2luKikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihB
ZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJp
dHlPcmlnaW46b3JpZ2luXSk7CisKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyht
X3dlYkZyYW1lLmdldCgpKTsgICAKKyAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUlt
cGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKKyAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSdW5J
bnNlY3VyZUNvbnRlbnRGdW5jKQorICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaCBiL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCmluZGV4IDdiOWUwMzUu
LmE0Yzg3ODIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGluZy5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oCkBAIC02Niw2ICs2Niw4IEBAIHN0cnVjdCBXZWJGcmFtZUxv
YWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewogICAgIElNUCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRJbkZyYW1lRnVuYzsKICAgICBJTVAgZGlkUmVjZWl2ZUljb25Gb3JGcmFt
ZUZ1bmM7CiAgICAgSU1QIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lRnVuYzsKKyAgICBJ
TVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CisgICAgSU1QIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVu
dGF0aW9uQ2FjaGUgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9h
ZERlbGVnYXRlUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzI3ODEK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
ZGFtIEJhcnRoLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV2ViRnJh
bWVMb2FkRGVsZWdhdGUuaD4KKworQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCitAaW50ZXJm
YWNlIE5TT2JqZWN0IChXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCisKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudDsKKworLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworCitAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGRhYzY4MGYuLjRhMTExYjUg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC00LDYgKzQsMTkgQEAKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQ2OTYKIAorICAgICAgICBQbHVtYiBtaXhlZCBjb250ZW50IG5vdGlm
aWNhdGlvbnMgdG8gSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS4KKworICAgICAgICAqIElu
dGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5pZGw6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisKKzIwMDktMDYtMjEgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQ2OTYKKwogICAgICAgICBTdHViIGltcGxlbWVudGF0aW9ucyBvZiBtaXhlZCBjb250
ZW50IG1ldGhvZHMgb2YgRnJhbWVMb2FkZXJDbGllbnQuIAogCiAgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaWRsIGIvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaWRsCmluZGV4IDQ5OTcxNmMu
LmYxZmNiOGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlLmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAgaW1wb3J0ICJJV2ViVmll
dy5pZGwiOwogCiBpbnRlcmZhY2UgSVdlYkZyYW1lOwogaW50ZXJmYWNlIElXZWJWaWV3OworaW50
ZXJmYWNlIElXZWJTZWN1cml0eU9yaWdpbjsKIAogWwogICAgIG9iamVjdCwKQEAgLTUyLDQgKzUz
LDggQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUgOiBJVW5rbm93bgog
ICAgIEhSRVNVTFQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoW2luXSBJV2ViVmlldyog
c2VuZGVyLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgSFJFU1VMVCBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lKFtpbl0gSVdlYlZpZXcqIHNlbmRlciwgW2luXSBJ
V2ViRnJhbWUqIGZyYW1lKTsKKworICAgIEhSRVNVTFQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dChbaW5dIElXZWJWaWV3KiBzZW5kZXIpOworCisgICAgSFJFU1VMVCBkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoW2luXSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIElXZWJTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggYzg4NjdlOC4uYTJjMGFkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTUxNiwxMiArNTE2
LDMyIEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSopIGNvbnN0CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKQogewotICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworICAgIENPTVB0cjxJV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworICAgIGlmIChGQUlMRUQod2Vi
Vmlldy0+cmVzb3VyY2VMb2FkRGVsZWdhdGUoJnJlc291cmNlTG9hZERlbGVnYXRlKSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRl
PiByZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUoUXVlcnksIHJlc291cmNlTG9hZERlbGVnYXRl
KTsKKyAgICBpZiAoIXJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLT5kaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KHdlYlZpZXcpCiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bklu
c2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiopCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgQ09NUHRyPElXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJp
dHlPcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2Uob3JpZ2luKTsKKwor
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRy
PElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7CisgICAgaWYg
KEZBSUxFRCh3ZWJWaWV3LT5yZXNvdXJjZUxvYWREZWxlZ2F0ZSgmcmVzb3VyY2VMb2FkRGVsZWdh
dGUpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJSZXNvdXJjZUxvYWREZWxl
Z2F0ZVByaXZhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZShRdWVyeSwgcmVzb3VyY2VM
b2FkRGVsZWdhdGUpOworICAgIGlmICghcmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUtPmRpZFJ1bklu
c2VjdXJlQ29udGVudCh3ZWJWaWV3LCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSkKIH0KIAogUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUwMmE3OTYuLjdhMzE1NDIgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAwOS0wNi0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIEFkZCB0
ZXN0aW5nIGluc3RydW1lbnRhdGlvbiBmb3IgbWl4ZWQgY29udGVudC4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bRnJhbWVM
b2FkRGVsZWdhdGUgd2ViVmlldzpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2Vi
VmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKGRlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5oOgorCiAyMDA5LTA2LTIwICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBhbmQgWGFuIExvcGV6
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVn
YXRlLm1tCmluZGV4IDk3NWQ5NTEuLmZkOGFhM2QgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTM0Nyw0ICszNDcsMjAg
QEAKICAgICB9CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Cit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJv
bGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQiXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAg
IH0KK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFJ1bkluc2VjdXJl
Q29udGVudDooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICBpZiAoIWRvbmUgJiYg
Z0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAg
ICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZGlkUnVu
SW5zZWN1cmVDb250ZW50OiAlQCAlQCAlQCIsIFtvcmlnaW4gcHJvdG9jb2xdLCBbb3JpZ2luIGhv
c3RdLCBbb3JpZ2luIHBvcnRdXTsKKyAgICAgICAgcHJpbnRmICgiJXNcbiIsIFtzdHJpbmcgVVRG
OFN0cmluZ10pOworICAgIH0KK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMDA2ZTAyNC4uNWQyNmVh
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuY3BwCkBAIC03Niw4ICs3Niw3IEBAIHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIHN0cmluZyBmcmFtZU5hbWUg
PSAod2ViRnJhbWUgPT0gbWFpbkZyYW1lKSA/ICJtYWluIGZyYW1lIiA6ICJmcmFtZSI7CiAgICAg
ZnJhbWVOYW1lICs9ICIgXCIiICsgQlNUUnRvU3RyaW5nKGZyYW1lTmFtZUJTVFIpICsgIlwiIjsg
CiAKLSAgICBTeXNGcmVlU3RyaW5nKGZyYW1lTmFtZUJTVFIpOwotCisgICAgU3lzRnJlZVN0cmlu
ZyhmcmFtZU5hbWVCU1RSKTsgCiAgICAgcmV0dXJuIGZyYW1lTmFtZTsKIH0KIApAQCAtMzExLDMg
KzMxMCw0MCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYQogewogICAgIHJldHVybiBTX09LOwog
fQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCAKKyAgICAvKiBbaW5dICovIElXZWJWaWV3ICpzZW5kZXIpCit7
CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENh
bGxiYWNrcygpKQorICAgICAgICBwcmludGYoImRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRcbiIp
OworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJh
bWVMb2FkRGVsZWdhdGU6OmRpZFJ1bkluc2VjdXJlQ29udGVudCggCisgICAgLyogW2luXSAqLyBJ
V2ViVmlldyAqc2VuZGVyLAorICAgIC8qIFtpbl0gKi8gSVdlYlNlY3VyaXR5T3JpZ2luICpvcmln
aW4pCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIEJTVFIgcHJvdG9jb2xCU1RSOworICAgICAgICBp
ZiAoRkFJTEVEKG9yaWdpbi0+cHJvdG9jb2woJnByb3RvY29sQlNUUikpKQorICAgICAgICAgICAg
cmV0dXJuIFNfT0s7CisgICAgICAgIHN0cmluZyBwcm90b2NvbCA9IEJTVFJ0b1N0cmluZyhwcm90
b2NvbEJTVFIpOworICAgICAgICBTeXNGcmVlU3RyaW5nKHByb3RvY29sQlNUUik7IAorCisgICAg
ICAgIEJTVFIgaG9zdEJTVFI7CisgICAgICAgIGlmIChGQUlMRUQob3JpZ2luLT5ob3N0KCZob3N0
QlNUUikpKQorICAgICAgICAgICAgcmV0dXJuIFNfT0s7CisgICAgICAgIHN0cmluZyBob3N0ID0g
QlNUUnRvU3RyaW5nKGhvc3RCU1RSKTsKKyAgICAgICAgU3lzRnJlZVN0cmluZyhob3N0QlNUUik7
IAorCisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvcnQ7CisgICAgICAgIGlmIChGQUlMRUQob3Jp
Z2luLT5wb3J0KCZwb3J0KSkpCisgICAgICAgICAgICByZXR1cm4gU19PSzsKKworICAgICAgICBw
cmludGYoImRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6ICVzICVzICVkXG4iLCBwcm90b2NvbC5j
X3N0cigpLCBob3N0LmNfc3RyKCksIHBvcnQpOworICAgIH0KKworICAgIHJldHVybiBTX09LOwor
fQorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5oCmluZGV4IDQ2NTNiZWEuLjRiMTk4OTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCkBAIC0xMzEsNiArMTMxLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqc2VuZGVyLAogICAgICAgICAv
KiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoIAorICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICpzZW5kZXIpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFJ1bkluc2VjdXJlQ29udGVudCggCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKnNlbmRlciwKKyAgICAgICAgLyogW2luXSAqLyBJV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdp
bik7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRG9uZShJV2ViRXJyb3Iq
LCBJV2ViRnJhbWUqKTsKIAotLSAKMS42LjAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38350</attachid>
            <date>2009-08-20 22:30:30 -0700</date>
            <delta_ts>2009-09-03 00:40:47 -0700</delta_ts>
            <desc>Step 4: Tests!</desc>
            <filename>bug-24696-20090820223029.patch</filename>
            <type>text/plain</type>
            <size>9744</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZGE4Nzc4Li5jYWE3Y2JkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDgt
MjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjQ2OTYKKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgdGhlIG1peGVkIGNv
bnRlbnQgY2FsbGJhY2tzLiAgVGhlcmUncyBhIGxvdCBtb3JlIHRvCisgICAgICAgIHRlc3QsIGJ1
dCB0aGVzZSBhcmUgYSBzdGFydC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2luc2VjdXJlLWlmcmFtZS1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJh
bWUtaW4taWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
bWl4ZWRDb250ZW50L2luc2VjdXJlLWlmcmFtZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1
cmUtaWZyYW1lLWluLW1haW4tZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLWlmcmFtZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L2luc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2JvcmluZy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvZnJh
bWUtd2l0aC1pbnNlY3VyZS1mcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1pbnNlY3VyZS1zY3Jp
cHQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRl
bnQvcmVzb3VyY2VzL3NjcmlwdC5qczogQWRkZWQuCisKIDIwMDktMDgtMTkgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1pZnJhbWUtaW4taWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWlmcmFtZS1pbi1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZWNmMWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4taWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE5IEBACitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTAtLT4vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9y
RnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi88IS0tZnJhbWUwLS0+
LS0+IiAtIGRpZFJlY2VpdmVUaXRsZTogNDA0IE5vdCBGb3VuZAorZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlz
aExvYWRGb3JGcmFtZQorVGhpcyB0ZXN0IGxvYWRzIGEgc2VjdXJlIGlmcmFtZSB0aGF0IGxvYWRz
IGFuIGluc2VjdXJlIGlmcmFtZS4gV2Ugc2hvdWxkICpub3QqIHRyaWdnZXIgYSBkZWxlZ2F0ZSBj
YWxsYmFjayBiZWNhdXNlIHRoZSBmcmFtZSdzIG9yaWdpbiBpcyAqbm90KiBjb250YW1pbmF0ZWQu
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLWlmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMGEwNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNl
Y3VyZS1pZnJhbWUtaW4taWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8Ym9k
eT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IGxv
YWRzIGEgc2VjdXJlIGlmcmFtZSB0aGF0IGxvYWRzIGFuIGluc2VjdXJlIGlmcmFtZS4gIFdlIHNo
b3VsZAorKm5vdCogdHJpZ2dlciBhIGRlbGVnYXRlIGNhbGxiYWNrIGJlY2F1c2UgdGhlIGZyYW1l
J3Mgb3JpZ2luIGlzICpub3QqCitjb250YW1pbmF0ZWQuPC9wPgorPGlmcmFtZSBzcmM9Imh0dHBz
Oi8vMTI3LjAuMC4xOjg0NDMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFtZS13
aXRoLWluc2VjdXJlLWZyYW1lLmh0bWwiOworPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQv
aW5zZWN1cmUtaWZyYW1lLWluLW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1haW4t
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEy
ZGU2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNiBAQAorbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBm
cmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZQorZGlkRGlzcGxheUluc2VjdXJlQ29udGVudAorbWFpbiBmcmFtZSAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkUmVjZWl2ZVRpdGxlOiA0MDQgTm90IEZvdW5kCitm
cmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIg
LSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lCitUaGlzIHRlc3Qgb3BlbnMgYSB3aW5kb3cgaWZyYW1lIHRoYXQgbG9hZHMgYW4gaW5z
ZWN1cmUgaWZyYW1lLiBXZSBzaG91bGQgdHJpZ2dlciBhIGRlbGVnYXRlIGNhbGxiYWNrIGJlY2F1
c2UgdGhlIHdpbmRvdyBpcyBkaXNwbGF5aW5nIGluc2VjdXJlIGNvbnRlbnQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1p
ZnJhbWUtaW4tbWFpbi1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1haW4tZnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2YyNGFhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZy
YW1lLWluLW1haW4tZnJhbWUuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxib2R5Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxs
YmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZSh0cnVlKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5j
dGlvbiAoZSkgeworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4K
KzxwPlRoaXMgdGVzdCBvcGVucyBhIHdpbmRvdyBpZnJhbWUgdGhhdCBsb2FkcyBhbiBpbnNlY3Vy
ZSBpZnJhbWUuICBXZSBzaG91bGQKK3RyaWdnZXIgYSBkZWxlZ2F0ZSBjYWxsYmFjayBiZWNhdXNl
IHRoZSB3aW5kb3cgaXMgZGlzcGxheWluZyBpbnNlY3VyZQorY29udGVudC48L3A+Cis8c2NyaXB0
Pgord2luZG93Lm9wZW4oImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L3Jlc291cmNlcy9mcmFtZS13aXRoLWluc2VjdXJlLWZyYW1lLmh0bWwiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLWlmcmFtZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3Vy
ZS1zY3JpcHQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMTcyYjg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLWlmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZGlkUnVuSW5zZWN1cmVD
b250ZW50CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRp
ZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCitUaGlzIHRlc3QgbG9hZHMgYSBzZWN1cmUgaWZyYW1lIHRoYXQgbG9h
ZHMgYW4gaW5zZWN1cmUgc2NyaXB0LiBXZSBzaG91bGQgdHJpZ2dlciBhIGRlbGVnYXRlIGNhbGxi
YWNrIGJlY2F1c2UgdGhlIGZyYW1lJ3Mgb3JpZ2luIGlzIGNvbnRhbWluYXRlZC4KKworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNl
Y3VyZS1zY3JpcHQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4taWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcyZDNiOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLXNjcmlw
dC1pbi1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxib2R5PgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZyYW1l
TG9hZENhbGxiYWNrcygpOworfQorPC9zY3JpcHQ+Cis8cD5UaGlzIHRlc3QgbG9hZHMgYSBzZWN1
cmUgaWZyYW1lIHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgc2NyaXB0LiAgV2Ugc2hvdWxkCit0cmln
Z2VyIGEgZGVsZWdhdGUgY2FsbGJhY2sgYmVjYXVzZSB0aGUgZnJhbWUncyBvcmlnaW4gaXMgY29u
dGFtaW5hdGVkLjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1pbnNlY3VyZS1zY3JpcHQuaHRt
bCI7Cis+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvYm9yaW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMv
Ym9yaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg1NzQyMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L3Jlc291cmNlcy9ib3JpbmcuaHRtbApAQCAtMCwwICsxLDYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KK1RoaXMgaXMgYSBib3JpbmcgZnJhbWUuCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1pbnNlY3VyZS1mcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdp
dGgtaW5zZWN1cmUtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40M2NlNzYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtZnJhbWUuaHRt
bApAQCAtMCwwICsxLDggQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBmcmFtZUxvYWRlZCgpIHsKKyAg
aWYgKHdpbmRvdy5vcGVuZXIpCisgICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZSgnZG9uZScs
ICcqJyk7Cit9Cis8L3NjcmlwdD4KKzxpZnJhbWUgb25sb2FkPSJmcmFtZUxvYWRlZCgpIgorICAg
ICAgICBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9zZWN1cml0eS9taXhlZENvbnRleHQvcmVz
b3VyY2VzL2JvcmluZy5odG1sIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFtZS13aXRoLWluc2Vj
dXJlLXNjcmlwdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtc2NyaXB0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU2Nzg3YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFt
ZS13aXRoLWluc2VjdXJlLXNjcmlwdC5odG1sCkBAIC0wLDAgKzEgQEAKKzxzY3JpcHQgc3JjPSJo
dHRwOi8vMTI3LjAuMC4xOjgwODAvc2VjdXJpdHkvbWl4ZWRDb250ZXh0L3Jlc291cmNlcy9zY3Jp
cHQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL3NjcmlwdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9zY3JpcHQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwZjczNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9zY3Jp
cHQuanMKQEAgLTAsMCArMSBAQAorZG9jdW1lbnQud3JpdGUoIlNjcmlwdCBsb2FkZWQuIik7
</data>
<flag name="review"
          id="19387"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38351</attachid>
            <date>2009-08-20 22:30:34 -0700</date>
            <delta_ts>2009-09-04 10:26:13 -0700</delta_ts>
            <desc>Step 3: Detection logic</desc>
            <filename>bug-24696-20090820223033.patch</filename>
            <type>text/plain</type>
            <size>5398</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODUxZmM1Zi4uNzk4M2NlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTQsNiArNCwyNiBAQAogCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgogCisgICAgICAgIENhbGwgdGhlIEZyYW1l
TG9hZGVyQ2xpZW50IHdoZW4gd2UgbG9hZCBtaXhlZCBjb250ZW50LgorCisgICAgICAgICogbG9h
ZGVyL0RvY0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OmNoZWNrQ2Fj
aGVPYmplY3RTdGF0dXMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aXNNaXhlZENvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisK
KzIwMDktMDgtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2OTYKKwogICAgICAgICBBZGRlZCBtaXhlZCBjb250ZW50
IG1ldGhvZHMgdG8gRnJhbWVMb2FkZXJDbGllbnQuCiAKICAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmg6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwIGIvV2Vi
Q29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAppbmRleCAwYjcyZjk0Li40ODQ0M2FmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Rv
Y0xvYWRlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIApA
QCAtMzEyLDYgKzMxMyw5IEBAIHZvaWQgRG9jTG9hZGVyOjpjaGVja0NhY2hlT2JqZWN0U3RhdHVz
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgV2ViS2l0
IGNsaWVudCBjaGFuZ2VzIG9yIGNhbmNlbHMgdGhlIHJlcXVlc3QsIFdlYkNvcmUgZG9lcyBub3Qg
cmVzcGVjdCB0aGlzIGFuZCBjb250aW51ZXMgdGhlIGxvYWQuCiAgICAgZnJhbWUoKS0+bG9hZGVy
KCktPmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKHJlc291cmNlKTsKKworICAgIGlmIChE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLT5kb2N1bWVudCgpKQorICAgICAgICBmcmFtZSgp
LT5sb2FkZXIoKS0+Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChkb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSwgS1VSTChyZXNvdXJjZS0+dXJsKCkpKTsKIH0KIAogdm9pZCBEb2NMb2FkZXI6Omlu
Y3JlbWVudFJlcXVlc3RDb3VudCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMTM1NGIxMi4u
NmM4NTliMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTcxNCw2ICsxNzE0LDMzIEBAIFN0
cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwogfQogCitib29s
IEZyYW1lTG9hZGVyOjppc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29u
c3QgS1VSTCYgdXJsKQoreworICAgIGlmIChjb250ZXh0LT5wcm90b2NvbCgpICE9ICJodHRwcyIp
CisgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBIVFRQUyBzZWN1
cml0eSBvcmlnaW5zLgorCisgICAgaWYgKHVybC5wcm90b2NvbElzKCJodHRwcyIpIHx8IHVybC5w
cm90b2NvbElzKCJhYm91dCIpIHx8IHVybC5wcm90b2NvbElzKCJkYXRhIikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsgIC8vIExvYWRpbmcgdGhlc2UgcHJvdG9jb2xzIGlzIHNlY3VyZS4KKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0lmRGlzcGxheUluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQorewor
ICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKK30KKwordm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4
dCwgdXJsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZFJ1bkluc2VjdXJl
Q29udGVudChjb250ZXh0KTsKK30KKwogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQogewog
ICAgIHJldHVybiBtX29wZW5lcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDdhZTlmZjAuLmIwYmNm
MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzA3LDYgKzMwNywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsK
ICAgICAgICAgdm9pZCByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOwogCisgICAgICAgIC8vIE1peGVk
IGNvbnRlbnQgcmVsYXRlZCBmdW5jdGlvbnMuCisgICAgICAgIHN0YXRpYyBib29sIGlzTWl4ZWRD
b250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwpOworICAgICAg
ICB2b2lkIGNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwpOworICAgICAgICB2b2lkIGNoZWNrSWZSdW5JbnNlY3VyZUNv
bnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCk7CisKICAgICAg
ICAgRnJhbWUqIG9wZW5lcigpOwogICAgICAgICB2b2lkIHNldE9wZW5lcihGcmFtZSopOwogICAg
ICAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA2Yzg0M2U5Li5hM2U5MGZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTE3Miw2ICsxNzIsMTAgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc28K
ICAgICAvLyBEb24ndCBzZXQgdGhpcyBvbiB0aGUgZmlyc3QgcmVxdWVzdC4gSXQgaXMgc2V0IHdo
ZW4gdGhlIG1haW4gbG9hZCB3YXMgc3RhcnRlZC4KICAgICBtX2RvY3VtZW50TG9hZGVyLT5zZXRS
ZXF1ZXN0KG5ld1JlcXVlc3QpOwogCisgICAgRnJhbWUqIHRvcCA9IG1fZnJhbWUtPnRyZWUoKS0+
dG9wKCk7CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKQorICAgICAgICBmcmFtZUxvYWRlcigpLT5j
aGVja0lmRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIG5ld1JlcXVlc3QudXJsKCkpOworCiAgICAgLy8gRklYTUU6IElkZWFsbHkgd2UnZCBz
dG9wIHRoZSBJL08gdW50aWwgd2UgaGVhciBiYWNrIGZyb20gdGhlIG5hdmlnYXRpb24gcG9saWN5
IGRlbGVnYXRlCiAgICAgLy8gbGlzdGVuZXIuIEJ1dCB0aGVyZSdzIG5vIHdheSB0byBkbyB0aGF0
IGluIHByYWN0aWNlLiBTbyBpbnN0ZWFkIHdlIGNhbmNlbCBsYXRlciBpZiB0aGUKICAgICAvLyBs
aXN0ZW5lciB0ZWxscyB1cyB0by4gSW4gcHJhY3RpY2UgdGhhdCBtZWFucyB0aGUgbmF2aWdhdGlv
biBwb2xpY3kgbmVlZHMgdG8gYmUgZGVjaWRlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDA0N2NjNmQuLjA5NDg2MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTExMiw2ICsxMTIsOSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwoKSAmJiAhbmV3UmVxdWVzdC5pc051bGwo
KSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVybCgpICYmIG1fY2xpZW50KQogICAgICAg
ICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOworCisgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgIGZyYW1lTG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpOwogfQogCiB2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38352</attachid>
            <date>2009-08-20 22:30:38 -0700</date>
            <delta_ts>2009-09-04 09:35:23 -0700</delta_ts>
            <desc>Step 2: Delegate callbacks and DumpRenderTree changes.</desc>
            <filename>bug-24696-20090820223037.patch</filename>
            <type>text/plain</type>
            <size>19394</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmUwOTYxMy4uNWZlN2M4MyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTQsNiArNCwyMCBAQAogCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgogCisgICAgICAgIFBs
dW1iIG1peGVkIGNvbnRlbnQgbm90aWZpY2F0aW9ucyB0byBXZWJGcmFtZUxvYWREZWxlZ2F0ZVBy
aXZhdGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRl
bnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oOiBBZGRl
ZC4KKworMjAwOS0wOC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5NgorCiAgICAgICAgIFN0dWIgaW1wbGVtZW50
YXRpb25zIG9mIG1peGVkIGNvbnRlbnQgbWV0aG9kcyBvZiBGcmFtZUxvYWRlckNsaWVudC4gCiAK
ICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXgg
MWUxN2YwYy4uYzVlMGVjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC02OCw2ICs2OCw3IEBACiAjaW1wb3J0ICJXZWJQb2xp
Y3lEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0
ICJXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5J
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgpAQCAtODQzLDEyICs4
NDQsMjAgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVt
KEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAorICAg
IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25z
ID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwor
ICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jKQor
ICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50OikpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdl
YlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKKworICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAorICAgIFdlYkZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOworICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMpCisgICAgICAgIENhbGxGcmFtZUxv
YWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJ1bkluc2VjdXJlQ29udGVudDopLCB3ZWJTZWN1
cml0eU9yaWdpbi5nZXQoKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
Zy5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgKaW5kZXggNDFlNDRlMC4uYjgwOTllYSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKKysrIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKQEAgLTY3LDYgKzY3LDggQEAg
c3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSB7CiAgICAgSU1Q
IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWVGdW5jOwogICAgIElNUCBkaWRS
ZWNlaXZlSWNvbkZvckZyYW1lRnVuYzsKICAgICBJTVAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWVGdW5jOworICAgIElNUCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYzsKKyAgICBJ
TVAgZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYzsKIH07CiAKIHN0cnVjdCBXZWJTY3JpcHREZWJ1
Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODBmYTA4YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFkYW0gQmFydGguICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZUxvYWREZWxlZ2F0ZS5oPgorCitAY2xhc3MgV2ViU2VjdXJpdHlP
cmlnaW47CisKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0
ZSkKKworLSAodm9pZCl3ZWJWaWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDooV2ViVmlldyAq
KXdlYlZpZXc7CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUnVuSW5z
ZWN1cmVDb250ZW50OihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbjsKKworQGVuZApkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCAzYTNjYjU5Li43ZDEyNjdlIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTM3MSw2ICsxMzcxLDggQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNF
TCBzKQogICAgIGNhY2hlLT53aWxsQ2xvc2VGcmFtZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUs
IEBzZWxlY3Rvcih3ZWJWaWV3OndpbGxDbG9zZUZyYW1lOikpOwogICAgIGNhY2hlLT53aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0VG9VUkxEZWxheUZpcmVEYXRlRm9yRnJhbWVGdW5jID0gZ2V0TWV0
aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6ZGVsYXk6ZmlyZURhdGU6Zm9yRnJhbWU6KSk7CiAgICAgY2FjaGUtPndpbmRvd1Njcmlw
dE9iamVjdEF2YWlsYWJsZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZTopKTsKKyAgICBjYWNoZS0+ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKKyAgICBjYWNoZS0+ZGlkUnVuSW5zZWN1
cmVDb250ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlk
UnVuSW5zZWN1cmVDb250ZW50OikpOwogfQogCiAtICh2b2lkKV9jYWNoZVNjcmlwdERlYnVnRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggYmM1MTk3My4uOTQzNzJlMiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTQsNiAr
NCwyMSBAQAogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDY5NgogCisgICAgICAgIFBsdW1iIG1peGVkIGNvbnRlbnQgbm90aWZpY2F0aW9ucyB0byBJ
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2Vi
RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFj
ZXMvV2ViS2l0LmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KToKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qOgor
CisyMDA5LTA4LTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk2CisKICAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlv
bnMgb2YgbWl4ZWQgY29udGVudCBtZXRob2RzIG9mIEZyYW1lTG9hZGVyQ2xpZW50LiAKIAogICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5p
ZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MWMwMjQKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZTIuaWRsCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBET19OT19JTVBP
UlRTCitpbXBvcnQgIm9haWRsLmlkbCI7CitpbXBvcnQgIm9jaWRsLmlkbCI7CitpbXBvcnQgIklX
ZWJGcmFtZS5pZGwiOworaW1wb3J0ICJJV2ViVmlldy5pZGwiOworI2VuZGlmCisKK2ludGVyZmFj
ZSBJV2ViRnJhbWU7CitpbnRlcmZhY2UgSVdlYlZpZXc7CitpbnRlcmZhY2UgSVdlYlNlY3VyaXR5
T3JpZ2luOworCitbCisgICAgb2JqZWN0LAorICAgIG9sZWF1dG9tYXRpb24sCisgICAgdXVpZCg0
MTQ4QzlGOC05NEQ5LTQ3OUEtQkNGMS1DMTVFNTI2OUNDQzEpLAorICAgIHBvaW50ZXJfZGVmYXVs
dCh1bmlxdWUpCitdCitpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIgOiBJ
VW5rbm93bgoreworICAgIEhSRVNVTFQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChbaW5dIElX
ZWJWaWV3KiBzZW5kZXIpOworCisgICAgSFJFU1VMVCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoW2lu
XSBJV2ViVmlldyogc2VuZGVyLCBbaW5dIElXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKK30K
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsIGIvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKaW5kZXggMjlkMDhkNC4uNzQ4NmYwMiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL1dlYktpdC5pZGwKQEAgLTg0LDYgKzg0LDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwog
I2luY2x1ZGUgIklXZWJGcmFtZS5pZGwiCiAjaW5jbHVkZSAiSVdlYkZyYW1lTG9hZERlbGVnYXRl
LmlkbCIKICNpbmNsdWRlICJJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmlkbCIKKyNpbmNs
dWRlICJJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwiCiAjaW5jbHVkZSAiSVdlYkZy
YW1lUHJpdmF0ZS5pZGwiCiAjaW5jbHVkZSAiSVdlYkZyYW1lVmlldy5pZGwiCiAjaW5jbHVkZSAi
SVdlYkhUTUxSZXByZXNlbnRhdGlvbi5pZGwiCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDAzYzNhMGIuLjJiYTA0ODUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC01MzEsMTIgKzUzMSwzMiBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdAogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKIHsKLSAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKKyAg
ICBDT01QdHI8SVdlYlJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZTsK
KyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnJlc291cmNlTG9hZERlbGVnYXRlKCZyZXNvdXJjZUxv
YWREZWxlZ2F0ZSkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlJlc291cmNl
TG9hZERlbGVnYXRlUHJpdmF0ZTI+IHJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZShRdWVyeSwg
cmVzb3VyY2VMb2FkRGVsZWdhdGUpOworICAgIGlmICghcmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUt
PmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQod2ViVmlldykKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biogb3JpZ2luKQogewotICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBDT01QdHI8SVdlYlNlY3Vy
aXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJ
bnN0YW5jZShvcmlnaW4pOworCisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndl
YlZpZXcoKTsKKyAgICBDT01QdHI8SVdlYlJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxv
YWREZWxlZ2F0ZTsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnJlc291cmNlTG9hZERlbGVnYXRl
KCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8
SVdlYlJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZTI+IHJlc291cmNlTG9hZERlbGVnYXRlUHJp
dmF0ZShRdWVyeSwgcmVzb3VyY2VMb2FkRGVsZWdhdGUpOworICAgIGlmICghcmVzb3VyY2VMb2Fk
RGVsZWdhdGVQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNvdXJjZUxvYWREZWxl
Z2F0ZVByaXZhdGUtPmRpZFJ1bkluc2VjdXJlQ29udGVudCh3ZWJWaWV3LCB3ZWJTZWN1cml0eU9y
aWdpbi5nZXQoKSkKIH0KIAogUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qIGIvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL0ludGVyZmFjZXMudmNwcm9qCmluZGV4IDlmMWVlMmYuLmI0YzY4MjkgMTAw
NjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9JbnRlcmZhY2VzLnZjcHJvagorKysg
Yi9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovSW50ZXJmYWNlcy52Y3Byb2oKQEAgLTcwNCw2ICs3
MDQsMjYgQEAKIAkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0K
KwkJCVJlbGF0aXZlUGF0aD0iLi5cSW50ZXJmYWNlc1xJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2
YXRlMi5pZGwiDQorCQkJPg0KKwkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiINCisJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCT4NCisJCQkJPFRv
b2wNCisJCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCS8+DQorCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4NCisJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN
CisJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCT4NCisJCQkJPFRvb2wNCisJCQkJ
CU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCS8+DQorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CTwvRmlsZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlxJbnRlcmZhY2VzXElXZWJG
cmFtZVByaXZhdGUuaWRsIg0KIAkJCT4NCiAJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
Yzc3NjIyMi4uNTcyMTY0MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTA4LTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0Njk2CisKKyAgICAgICAgQWRkIHRlc3RpbmcgaW5zdHJ1bWVudGF0aW9uIGZvciBtaXhl
ZCBjb250ZW50LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVn
YXRlLm1tOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3Ol0pOgorICAgICAg
ICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJ1bkluc2VjdXJlQ29udGVudDpdKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoRnJhbWVM
b2FkRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRl
OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRl
OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5oOgorCiAyMDA5LTA4LTE5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDJi
MDcwYWQuLmEyZmJkM2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEzNSw2ICsxMzUsMTMgQEAgc3RhdGljIEpTVmFs
dWVSZWYgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBGcmFtZUxvYWRDYWxsYmFja3NDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEZyYW1lTG9hZENh
bGxiYWNrcyh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtOTY1LDYgKzk3Miw3IEBAIEpTU3Rh
dGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAg
ICAgICB7ICJkdW1wRGF0YWJhc2VDYWxsYmFja3MiLCBkdW1wRGF0YWJhc2VDYWxsYmFja3NDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wRWRpdGluZ0NhbGxiYWNrcyIsIGR1bXBFZGl0
aW5nQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcyIsIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzIiwgZHVtcEZyYW1lTG9hZENhbGxiYWNr
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5
cGVzIiwgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXNDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJkdW1wU2VsZWN0aW9uUmVjdCIsIGR1bXBTZWxlY3Rpb25SZWN0Q2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBTb3VyY2VBc1dl
YkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IDVmMWMwZmUuLmJlYmNkYmIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0
ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJIVE1MVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1VS
TEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oPgog
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogQGludGVyZmFjZSBOU1VSTFJlcXVlc3QgKFBy
aXZhdGVUaGluZ3NXZVNob3VsZG50UmVhbGx5VXNlKQpAQCAtMzUzLDQgKzM1NCwyMCBAQAogICAg
IH0KIH0KIAorLSAodm9pZCl3ZWJWaWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDooV2ViVmll
dyAqKXNlbmRlcgoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Il07Cisg
ICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9Cit9CisK
Ky0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6
KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3Ry
aW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRpZFJ1bkluc2VjdXJl
Q29udGVudCJdOworICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7
CisgICAgfQorfQorCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCBlOTdlMzEzLi45Y2I5MWJlIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5j
cHAKQEAgLTc2LDggKzc2LDcgQEAgc3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KElXZWJGcmFtZSogd2ViRnJhbWUpCiAgICAgc3RyaW5nIGZyYW1lTmFtZSA9ICh3ZWJGcmFt
ZSA9PSBtYWluRnJhbWUpID8gIm1haW4gZnJhbWUiIDogImZyYW1lIjsKICAgICBmcmFtZU5hbWUg
Kz0gIiBcIiIgKyBCU1RSdG9TdHJpbmcoZnJhbWVOYW1lQlNUUikgKyAiXCIiOyAKIAotICAgIFN5
c0ZyZWVTdHJpbmcoZnJhbWVOYW1lQlNUUik7Ci0KKyAgICBTeXNGcmVlU3RyaW5nKGZyYW1lTmFt
ZUJTVFIpOyAKICAgICByZXR1cm4gZnJhbWVOYW1lOwogfQogCkBAIC0xMDEsNiArMTAwLDggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZ2F0ZTo6UXVlcnlJbnRlcmZh
Y2UoUkVGSUlEIHJpaWQsIHZvaWQqKgogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SVdlYkZyYW1lTG9hZERlbGVnYXRlKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQo
cmlpZCwgSUlEX0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpKQogICAgICAgICAqcHB2T2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSo+KHRoaXMpOwor
ICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQ
cml2YXRlMikpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJV2ViRnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlMio+KHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CiAKQEAgLTM1MSwzICszNTIsMjMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmEK
IHsKICAgICByZXR1cm4gU19PSzsKIH0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFt
ZUxvYWREZWxlZ2F0ZTo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCggCisgICAgLyogW2luXSAq
LyBJV2ViVmlldyAqc2VuZGVyKQoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRmKCJkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50XG4iKTsKKworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoIAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKnNlbmRlciwKKyAgICAvKiBbaW5dICovIElX
ZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luKQoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVz
dENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcHJpbnRmKCJk
aWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKaW5k
ZXggY2E2MDk0MS4uY2EzMjhiYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOwogY2xhc3MgR0NDb250cm9sbGVyOwogCi1jbGFzcyBGcmFtZUxv
YWREZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUsIHB1YmxpYyBJV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlIHsKK2NsYXNzIEZyYW1lTG9hZERlbGVnYXRlIDogcHVibGlj
IElXZWJGcmFtZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUsIHB1YmxpYyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiB7CiBwdWJsaWM6CiAgICAg
RnJhbWVMb2FkRGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5GcmFtZUxvYWREZWxlZ2F0ZSgpOwpA
QCAtMTMzLDYgKzEzMywxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcg
KnNlbmRlciwKICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIC8v
IElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoIAorICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICpzZW5kZXIpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFJ1bkluc2VjdXJlQ29udGVudCggCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKnNlbmRlciwKKyAgICAgICAgLyogW2luXSAqLyBJV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdp
bik7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRG9uZShJV2ViRXJyb3Iq
LCBJV2ViRnJhbWUqKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38353</attachid>
            <date>2009-08-20 22:30:42 -0700</date>
            <delta_ts>2009-09-03 16:13:00 -0700</delta_ts>
            <desc>Step 1: FrameLoaderClient methods</desc>
            <filename>bug-24696-20090820223041.patch</filename>
            <type>text/plain</type>
            <size>13856</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTA3YjYyNS4uODUxZmM1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOC0yMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5
NgorCisgICAgICAgIEFkZGVkIG1peGVkIGNvbnRlbnQgbWV0aG9kcyB0byBGcmFtZUxvYWRlckNs
aWVudC4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAwOS0w
OC0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhOTlmZDNiLi5k
MmZmMjc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjc5LDcgKzI3OSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRl
bShIaXN0b3J5SXRlbSopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotCisgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKikgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVG
cmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IDFlNGYxYjcuLjViYTRiMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgc3Ry
dWN0IFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIGNs
YXNzIFNjcmlwdFN0cmluZzsKKyAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKICAgICBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgU3RyaW5n
OwpAQCAtMTY0LDYgKzE2NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmly
dHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0ID0gMDsK
IAorICAgICAgICAvLyBUaGlzIGZyYW1lIGhhcyBkaXNwbGF5ZWQgaW5hY3RpdmUgY29udGVudCAo
c3VjaCBhcyBhbiBpbWFnZSkgZnJvbSBhbgorICAgICAgICAvLyBpbnNlY3VyZSBzb3VyY2UuICBJ
bmFjdGl2ZSBjb250ZW50IGNhbm5vdCBzcHJlYWQgdG8gb3RoZXIgZnJhbWVzLgorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpID0gMDsKKworICAgICAgICAv
LyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdpbiBoYXMgcnVuIGFjdGl2ZSBjb250ZW50IChz
dWNoIGFzIGEKKyAgICAgICAgLy8gc2NyaXB0KSBmcm9tIGFuIGluc2VjdXJlIHNvdXJjZS4gIE5v
dGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4KKyAgICAgICAgLy8gc3ByZWFkIHRvIG90
aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisKICAgICAgICAgdmlydHVh
bCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0g
MDsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RT
aG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0ZmExYWI2Li4z
NjkwMTQxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA4LTIwICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Njk2CisK
KyAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgbWl4ZWQgY29udGVudCBtZXRob2RzIG9m
IEZyYW1lTG9hZGVyQ2xpZW50LiAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDA5LTA4LTE4ICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBIb2xnZXIgRnJleXRoZXIu
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCmluZGV4IDY4YzA0MzUuLjExOWIwNmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC01NDYsNiArNTQ2LDE2IEBAIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSog
aXRlbSkgY29uc3QKICAgICByZXR1cm4gaXRlbSAhPSAwOwogfQogCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
U2VjdXJpdHlPcmlnaW4qKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiYzY0YzJmLi5jODIwMTM1IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC0xMzYsNiAr
MTM2LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
R29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwor
CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dV
UkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTMzNWVmYi4u
YmUwOTYxMyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wOC0yMCAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDY5Ngor
CisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIG1peGVkIGNvbnRlbnQgbWV0aG9kcyBv
ZiBGcmFtZUxvYWRlckNsaWVudC4gCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudCk6CisKIDIwMDktMDgtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA1NGEz
YzQ1Li42MjU5YzgwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0xNDQsNiArMTQ0LDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25z
dDsKIAorICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biopOworCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDhiYTYyMTcuLjFlMTdm
MGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQpAQCAtODQxLDYgKzg0MSwxNiBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
aG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgcmV0dXJu
IFtbdmlldyBfcG9saWN5RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6dmlldyBzaG91bGRHb1Rv
SGlzdG9yeUl0ZW06d2ViSXRlbV07CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIHJldHVybiBbTlNFcnJvciBfd2ViS2l0RXJyb3JXaXRoRG9tYWlu
Ok5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2FuY2VsbGVkIFVSTDpyZXF1ZXN0LnVy
bCgpXTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdl
TG9nCmluZGV4IGM1MTQ3ZWQuLjdjYTMyNzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA4LTIw
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0Njk2CisKKyAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgbWl4ZWQg
Y29udGVudCBtZXRob2RzIG9mIEZyYW1lTG9hZGVyQ2xpZW50LiAKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAwOS0wOC0x
OCAgTWFya3VzIEdvZXR6IDxNYXJrdXMuR29ldHpAbm9raWEuY29tPgogCiAgICAgICAgIFJldml3
ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCA1Y2Y4NmIxLi43NjE4YTJmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC02MzcsNiAr
NjM3LDE2IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtICppdGVtKSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2F2ZVZpZXdT
dGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAgICBRV2ViSGlzdG9y
eUl0ZW0gaGlzdG9yeUl0ZW0obmV3IFFXZWJIaXN0b3J5SXRlbVByaXZhdGUoaXRlbSkpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBi
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5kZXggNzU0
ZDhiYy4uNDRiZTFiNSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCkBAIC0xNDgsNiArMTQ4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNv
bnN0OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qKTsKKwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IGIxYWY1MTEuLmJjNTE5NzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDgtMjAgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQ2OTYKKworICAgICAgICBTdHViIGltcGxlbWVudGF0aW9ucyBvZiBtaXhlZCBjb250ZW50
IG1ldGhvZHMgb2YgRnJhbWVMb2FkZXJDbGllbnQuIAorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAwOS0wOC0xOCAgQnJpYW4gV2VpbnN0ZWluICA8
YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDBmZWEzNDguLjAzYzNhMGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC01MjksNiArNTI5LDE2IEBAIGJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQoreworICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKikKK3sKKyAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKICAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9
IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
IGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGVmN2U5ODIuLjkyMWFlOTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiop
OworCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDRh
ZTM0NzcuLjQ1MjU5NGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTA4LTIwICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
Njk2CisKKyAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgbWl4ZWQgY29udGVudCBtZXRo
b2RzIG9mIEZyYW1lTG9hZGVyQ2xpZW50LiAKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFd4OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpZFJ1bkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMDktMDgtMTMgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgd3ggYnVpbGQgZml4LiBN
YWtlIHN1cmUgdGhhdCB0aGUgd3hXZWJLaXQgZHluYW1pYyBsaWJyYXJ5IGlzIHJlYnVpbHQgd2hl
bmV2ZXIKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAKaW5kZXggOTYwM2JkNS4uMDAxMDc3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKQEAgLTUzNiw2ICs1MzYsMTYgQEAgYm9vbCBGcmFt
ZUxvYWRlckNsaWVudFd4OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBi
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRleCA3YjQ0
MTQ5Li5jYTk2Y2QyIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5oCkBAIC0xNTAsNiArMTUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3Rv
cnlJdGVtKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKICAg
ICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTs=
</data>

          </attachment>
      

    </bug>

</bugzilla>