<?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>83721</bug_id>
          
          <creation_ts>2012-04-11 14:49:39 -0700</creation_ts>
          <short_desc>Framesniffing defense is too aggressive.</short_desc>
          <delta_ts>2012-04-17 22:16:19 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bugzilla</cc>
    
    <cc>cevans</cc>
    
    <cc>gustavo</cc>
    
    <cc>inferno</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jer.noble</cc>
    
    <cc>tsepez</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600609</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-11 14:49:39 -0700</bug_when>
    <thetext>Follow on from bug 73083 comment #49 From Paul Stone 2012-04-10 09:10:34 PST:

Broken testcase (works in Firefox)

I just tested this in the Chrome Canary builds, and it seems that the fix is a bit too agressive. When navigating to a fragment in a cross-origin frame, it prevents the frame itself from scrolling. The frame itself should scroll (there&apos;s no leak there, Firefox still allows this), but it should prevent any any ancestor frames from scrolling if they&apos;re cross-origin.

I&apos;ve attached a simple testcase that works in Firefox, but is broken in the Canary build. I think this could break some websites  - for example API documentation that uses frames, where the table-of-contents pane is on a different (sub)domain than the main frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600619</commentid>
    <comment_count>1</comment_count>
      <attachid>136760</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-11 15:08:53 -0700</bug_when>
    <thetext>Created attachment 136760
Test case from Paul.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600623</commentid>
    <comment_count>2</comment_count>
      <attachid>136761</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-11 15:12:20 -0700</bug_when>
    <thetext>Created attachment 136761
One possible approach for discussion.

(Tests still need to be hammered into submission if we go with something like this). 
Appears to work properly against Paul&apos;s example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600707</commentid>
    <comment_count>3</comment_count>
      <attachid>136761</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 16:40:53 -0700</bug_when>
    <thetext>Comment on attachment 136761
One possible approach for discussion.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:1680
&gt; +                        // Block parent scroll one time only.

Why only once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600717</commentid>
    <comment_count>4</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-11 16:47:32 -0700</bug_when>
    <thetext>&gt; Why only once?

Only scrolls initiated by fragment navigations in frameloader are unsafe.  Frameloader will set this, but we need some way to clear it out for subsequent use.  Doing so when we hit it seemed pragmatic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600719</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-04-11 16:49:20 -0700</bug_when>
    <thetext>I see, so we set the boundary when we kick off the scroll and then remove it once we hit it?  Hum...  Should we have some sort of ASSERT that makes sure we don&apos;t accidentally leave it in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601562</commentid>
    <comment_count>6</comment_count>
      <attachid>136761</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-12 14:41:51 -0700</bug_when>
    <thetext>Comment on attachment 136761
One possible approach for discussion.

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

Other than needing some layout test coverage this seems to be on track.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:1680
&gt;&gt; +                        // Block parent scroll one time only.
&gt; 
&gt; Why only once?

Could we instead clear this flag with a call in FrameLoader::scrollToFragmentWithParentBoundary after view-&gt;scrollToFragment() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601568</commentid>
    <comment_count>7</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-12 14:58:04 -0700</bug_when>
    <thetext>&gt; Could we instead clear this flag with a call in FrameLoader::scrollToFragmentWithParentBoundary after view-&gt;scrollToFragment() ?

That is much cleaner, and I thought about doing it that way.  But here&apos;s why I held off

There&apos;s a case in FrameView::maintainScrollPositionAtAnchor() where we take a detour into Layout() rather than falling into the (no-argument form of) FrameView::ScrollToAnchor().  It wasn&apos;t clear to me how long this path would postpone the actual scroll.  Could it return to FrameLoader, clear the flag (in your proposal), and then have the scroll implied by the anchor fire some time later (like after some other style sheet load)?


Also, I wanted to log a console message (once) when this occurs, so that anyone opening the error console would know this is deliberate (vs. a silent breakage).  I got the feeling that logging from something like RenderLayer would be seriously frowned upon.  How to arrange for that to happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602207</commentid>
    <comment_count>8</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-13 10:56:30 -0700</bug_when>
    <thetext>Ok.  I don&apos;t think I can make the logging happen in a way that matches visual expectations - in Paul&apos;s test case, for example, there is a failure to propagate the scroll across the boundary, but we really don&apos;t care because the top frame didn&apos;t have to scroll.  Short of asking the frame that didn&apos;t scroll whether it or its parents would have had to scroll ... seems hard.  And probably too much of a hit for sites that simulate postmessage with fragment navs.

I&apos;ll also go with the reset in the FrameLoader as James suggested as the first fix for simplicity.  The path though Layout() may likely be hard to trigger reliably for exploitation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602327</commentid>
    <comment_count>9</comment_count>
      <attachid>137127</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-13 12:39:51 -0700</bug_when>
    <thetext>Created attachment 137127
Another possible patch for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602502</commentid>
    <comment_count>10</comment_count>
      <attachid>137174</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-13 16:30:50 -0700</bug_when>
    <thetext>Created attachment 137174
Patch

Patch plus reworked tests.  Adds a refptr per conversation with Julien.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602617</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-04-13 20:49:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/11250009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603296</commentid>
    <comment_count>12</comment_count>
      <attachid>137174</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 11:26:30 -0700</bug_when>
    <thetext>Comment on attachment 137174
Patch

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

This looks pretty good to me. One style nitpick.

&gt; Source/WebCore/loader/FrameLoader.cpp:2693
&gt; +    if (boundaryFrame.get())

You can (and WebKit code typically does) null-check smart pointers by just doing:

if (boundaryFrame)

since RefPtr/OwnPtr implement operator bool()

&gt; LayoutTests/http/tests/navigation/anchor-frames-same-origin.html:1
&gt; +&lt;html&gt;

For new tests, we typically add a &lt;!DOCTYPE html&gt; declaration to put the page in standards (as opposed to quirks) mode unless we specifically want to check a quirks behavior. most of the time it doesn&apos;t make a difference, but it&apos;s useful to have the lack of a doctype mean that there is something quirks-mode-specific going on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603305</commentid>
    <comment_count>13</comment_count>
      <attachid>137369</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-16 11:38:16 -0700</bug_when>
    <thetext>Created attachment 137369
Patch, fix nits.

Thanks James, heres&apos; the same patch with the nits cleaned up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603418</commentid>
    <comment_count>14</comment_count>
      <attachid>137369</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-16 14:03:51 -0700</bug_when>
    <thetext>Comment on attachment 137369
Patch, fix nits.

Attachment 137369 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12416240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603578</commentid>
    <comment_count>15</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2012-04-16 16:58:39 -0700</bug_when>
    <thetext>Build error is in dependencies.  If I reset cq=? does it try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604127</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-17 10:31:28 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Build error is in dependencies.  If I reset cq=? does it try again?

Sadly no, you have to upload a new patch to get the EWS to run again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604128</commentid>
    <comment_count>17</comment_count>
      <attachid>137369</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-17 10:31:54 -0700</bug_when>
    <thetext>Comment on attachment 137369
Patch, fix nits.

Looks like we&apos;re good now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604214</commentid>
    <comment_count>18</comment_count>
      <attachid>137369</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 12:03:59 -0700</bug_when>
    <thetext>Comment on attachment 137369
Patch, fix nits.

Clearing flags on attachment: 137369

Committed r114406: &lt;http://trac.webkit.org/changeset/114406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604215</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 12:04:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604593</commentid>
    <comment_count>20</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-17 22:16:19 -0700</bug_when>
    <thetext>This commit added tests which fail on all WebKit2 test bots, namely http/tests/navigation/anchor-frames-same-origin.html. 

Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=84227&gt; to track the broken test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>136760</attachid>
            <date>2012-04-11 15:08:53 -0700</date>
            <delta_ts>2012-04-13 16:30:50 -0700</delta_ts>
            <desc>Test case from Paul.</desc>
            <filename>attachment_73083.html</filename>
            <type>text/html</type>
            <size>519</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8c2NyaXB0Pgp2YXIgYmFzZXVybCA9ICJodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL1dlYl9icm93c2VyIjsKCmZ1bmN0aW9uIHNldGZyYWcoZnJhZykg
ewoJZnJhbWVzWzBdLmxvY2F0aW9uID0gYmFzZXVybCArICcjJyArIGZyYWc7Cgp9Cjwvc2NyaXB0
PgoKPHA+CjxidXR0b24gb25jbGljaz0ic2V0ZnJhZygnJykiPihibGFuayk8L2J1dHRvbj4KPGJ1
dHRvbiBvbmNsaWNrPSJzZXRmcmFnKCd0b3AnKSI+dG9wPC9idXR0b24+CjxidXR0b24gb25jbGlj
az0ic2V0ZnJhZygnSGlzdG9yeScpIj5IaXN0b3J5PC9idXR0b24+CjxidXR0b24gb25jbGljaz0i
c2V0ZnJhZygnRmVhdHVyZXMnKSI+RmVhdHVyZXM8L2J1dHRvbj4KPGJ1dHRvbiBvbmNsaWNrPSJz
ZXRmcmFnKCdSZWZlcmVuY2VzJykiPlJlZmVyZW5jZXM8L2J1dHRvbj48L3A+CjxpZnJhbWUgc3Jj
PSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYl9icm93c2VyIj48L2lmcmFtZT4KCjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136761</attachid>
            <date>2012-04-11 15:12:20 -0700</date>
            <delta_ts>2012-04-13 16:30:50 -0700</delta_ts>
            <desc>One possible approach for discussion.</desc>
            <filename>patch_83721.txt</filename>
            <type>text/plain</type>
            <size>7637</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTEzNTA0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4NiwxMyArMjY4
NiwxOSBAQCBib29sIERvY3VtZW50OjpjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3VtZW50OjpjYW5CZUFjY2Vzc2VkQnlFdmVyeUFuY2Vz
dG9yRnJhbWUoKQordm9pZCBEb2N1bWVudDo6c2V0U2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9u
Qm91bmRhcnkoKQogewotICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yRnJhbWUgPSBtX2ZyYW1lLT50
cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoIWFuY2VzdG9yRnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhzZWN1cml0eU9yaWdpbigpKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZSAqY3VycmVudEZyYW1lID0gbV9m
cmFtZTsKKyAgICBGcmFtZSAqYW5jZXN0b3JGcmFtZSA9IGN1cnJlbnRGcmFtZS0+dHJlZSgpLT5w
YXJlbnQoKTsgCisKKyAgICB3aGlsZSAoYW5jZXN0b3JGcmFtZSkgeworICAgICAgICBpZiAoIWFu
Y2VzdG9yRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhzZWN1
cml0eU9yaWdpbigpKSkgeworICAgICAgICAgICAgY3VycmVudEZyYW1lLT52aWV3KCktPnNldFNh
ZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGN1cnJlbnRGcmFtZSA9IGFuY2VzdG9yRnJhbWU7CisgICAgICAg
IGFuY2VzdG9yRnJhbWUgPSBhbmNlc3RvckZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogQ1NTU3R5bGVTaGVldCogRG9jdW1lbnQ6OnBhZ2VVc2Vy
U2hlZXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExMzUwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MjQsNyArNjI0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbCgpOwogCiAgICAgYm9v
bCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwotICAgIGJvb2wgY2FuQmVBY2Nlc3Nl
ZEJ5RXZlcnlBbmNlc3RvckZyYW1lKCk7CisgICAgdm9pZCBzZXRTYWZlUGFyZW50U2Nyb2xsUHJv
cGFnYXRpb25Cb3VuZGFyeSgpOwogCiAgICAgQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCgp
OwogICAgIHZvaWQgY2xlYXJQYWdlVXNlclNoZWV0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDExMzUwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4Myw3ICs2ODMsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpmaW5pc2hlZFBhcnNpbmcoKQogICAgIC8vIENoZWNrIGlmIHRoZSBz
Y3JvbGxiYXJzIGFyZSByZWFsbHkgbmVlZGVkIGZvciB0aGUgY29udGVudC4KICAgICAvLyBJZiBu
b3QsIHJlbW92ZSB0aGVtLCByZWxheW91dCwgYW5kIHJlcGFpbnQuCiAgICAgbV9mcmFtZS0+dmll
dygpLT5yZXN0b3JlU2Nyb2xsYmFyKCk7Ci0gICAgc2Nyb2xsVG9GcmFnbWVudElmQWxsb3dlZCht
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CisgICAgc2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJl
bnRCb3VuZGFyeShtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWREb25lKCkKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRJblNhbWVEb2N1bWVudChjb24KIAogICAgIC8vIFdlIG5lZWQgdG8gc2Nyb2xsIHRvIHRo
ZSBmcmFnbWVudCB3aGV0aGVyIG9yIG5vdCBhIGhhc2ggY2hhbmdlIG9jY3VycmVkLCBzaW5jZQog
ICAgIC8vIHRoZSB1c2VyIG1pZ2h0IGhhdmUgc2Nyb2xsZWQgc2luY2UgdGhlIHByZXZpb3VzIG5h
dmlnYXRpb24uCi0gICAgc2Nyb2xsVG9GcmFnbWVudElmQWxsb3dlZCh1cmwpOworICAgIHNjcm9s
bFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkodXJsKTsKICAgICAKICAgICBtX2lzQ29tcGxl
dGUgPSBmYWxzZTsKICAgICBjaGVja0NvbXBsZXRlZCgpOwpAQCAtMjY4MSwxOCArMjY4MSwxNSBA
QCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROCiAgICAgICAgICYmICFt
X2ZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6
OnNjcm9sbFRvRnJhZ21lbnRJZkFsbG93ZWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxv
YWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBLVVJMJiB1cmwp
CiB7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwogICAgIGlmICghdmll
dykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTGVha2luZyBzY3JvbGwgcG9zaXRpb24gdG8g
YSBjcm9zcy1vcmlnaW4gYW5jZXN0b3Igd291bGQgcGVybWl0IHRoZSBzby1jYWxsZWQgImZyYW1l
c25pZmZpbmciIGF0dGFjay4KLSAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYm
ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYW5CZUFjY2Vzc2VkQnlFdmVyeUFuY2VzdG9yRnJhbWUo
KSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2Us
ICgiRnJhZ21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBmcmFt
ZXMuIikpOwotICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHVybC5oYXNG
cmFnbWVudElkZW50aWZpZXIoKSkKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0U2Fm
ZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9uQm91bmRhcnkoKTsKIAogICAgIHZpZXctPnNjcm9sbFRv
RnJhZ21lbnQodXJsKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShy
ZXZpc2lvbiAxMTM1MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250
aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtRnJh
Z21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRw
TWV0aG9kLCBGcmFtZUxvYWRUeXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0Zy
YWdtZW50SWZBbGxvd2VkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNjcm9sbFRvRnJhZ21lbnRX
aXRoUGFyZW50Qm91bmRhcnkoY29uc3QgS1VSTCYpOwogCiAgICAgdm9pZCBjaGVja0xvYWRDb21w
bGV0ZUZvclRoaXNGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiAxMTM1MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFt
ZSogZnJhbWUpCiAgICAgLCBtX3ZpZXdwb3J0UmVuZGVyZXIoMCkKICAgICAsIG1fd2FzU2Nyb2xs
ZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsKGZhbHNlKQorICAg
ICwgbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCh0cnVlKQogICAgICwgbV9kZWZlcnJl
ZFJlcGFpbnRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVk
KQogICAgICwgbV9kaXNhYmxlUmVwYWludHMoMCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRz
KGZhbHNlKQpAQCAtMjMxLDYgKzIzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAg
bV9maXJzdExheW91dCA9IHRydWU7CiAgICAgbV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZyA9
IGZhbHNlOwogICAgIG1fd2FzU2Nyb2xsZWRCeVVzZXIgPSBmYWxzZTsKKyAgICBtX3NhZmVUb1By
b3BhZ2F0ZVNjcm9sbFRvUGFyZW50ID0gdHJ1ZTsKICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBJ
bnRTaXplKCk7CiAgICAgbV9sYXN0Wm9vbUZhY3RvciA9IDEuMGY7CiAgICAgbV9kZWZlcnJpbmdS
ZXBhaW50cyA9IDA7CkBAIC0yOTU0LDYgKzI5NTYsMTYgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdh
c1Njcm9sbGVkQnlVc2VyKGJvbwogICAgIG1fd2FzU2Nyb2xsZWRCeVVzZXIgPSB3YXNTY3JvbGxl
ZEJ5VXNlcjsKIH0KIAorYm9vbCBGcmFtZVZpZXc6OnNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFy
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVu
dDsKK30KKwordm9pZCBGcmFtZVZpZXc6OnNldFNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50
KGJvb2wgaXNTYWZlKQoreworICAgIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQgPSBp
c1NhZmU7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDExMzUwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsyMzAsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCB3YXNTY3JvbGxlZEJ5VXNlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0V2Fz
U2Nyb2xsZWRCeVVzZXIoYm9vbCk7CiAKKyAgICBib29sIHNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRv
UGFyZW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVu
dChib29sKTsKKwogICAgIHZvaWQgYWRkV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmpl
Y3QqKTsKICAgICB2b2lkIHJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0
Kik7CiAKQEAgLTQ3NCw3ICs0NzcsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3dhc1Njcm9s
bGVkQnlVc2VyOwogICAgIGJvb2wgbV9pblByb2dyYW1tYXRpY1Njcm9sbDsKLSAgICAKKyAgICBi
b29sIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQ7CisKICAgICB1bnNpZ25lZCBtX2Rl
ZmVycmluZ1JlcGFpbnRzOwogICAgIHVuc2lnbmVkIG1fcmVwYWludENvdW50OwogICAgIFZlY3Rv
cjxMYXlvdXRSZWN0PiBtX3JlcGFpbnRSZWN0czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTEzNTA0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Miw5ICsxNjcy
LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY28KICAgICAgICAg
ICAgICAgICAgICAgeU9mZnNldCA9IG1heCgwLCBtaW4oZnJhbWVWaWV3LT5jb250ZW50c0hlaWdo
dCgpLCB5T2Zmc2V0KSk7CiAKICAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRTY3Jv
bGxQb3NpdGlvbihJbnRQb2ludCh4T2Zmc2V0LCB5T2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhcmVudExheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXll
cigpOwotICAgICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFgocmVjdC54KCkgLSBmcmFtZVZp
ZXctPnNjcm9sbFgoKSArIGZyYW1lVmlldy0+eCgpKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3
UmVjdC5zZXRZKHJlY3QueSgpIC0gZnJhbWVWaWV3LT5zY3JvbGxZKCkgKyBmcmFtZVZpZXctPnko
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPnNhZmVUb1Byb3BhZ2F0ZVNj
cm9sbFRvUGFyZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0g
b3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3UmVjdC5zZXRYKHJlY3QueCgpIC0gZnJhbWVWaWV3LT5zY3JvbGxYKCkg
KyBmcmFtZVZpZXctPngoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFko
cmVjdC55KCkgLSBmcmFtZVZpZXctPnNjcm9sbFkoKSArIGZyYW1lVmlldy0+eSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJsb2Nr
IHBhcmVudCBzY3JvbGwgb25lIHRpbWUgb25seS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lVmlldy0+c2V0U2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137127</attachid>
            <date>2012-04-13 12:39:51 -0700</date>
            <delta_ts>2012-04-13 16:30:50 -0700</delta_ts>
            <desc>Another possible patch for discussion.</desc>
            <filename>patch_83721.txt</filename>
            <type>text/plain</type>
            <size>7426</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTEzOTE5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3OSwxMyArMjY3
OSwxOSBAQCBib29sIERvY3VtZW50OjpjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIERvY3VtZW50OjpjYW5CZUFjY2Vzc2VkQnlFdmVyeUFuY2Vz
dG9yRnJhbWUoKQorRnJhbWUqIERvY3VtZW50OjpmaW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFn
YXRpb25Cb3VuZGFyeSgpCiB7Ci0gICAgZm9yIChGcmFtZSogYW5jZXN0b3JGcmFtZSA9IG1fZnJh
bWUtPnRyZWUoKS0+cGFyZW50KCk7IGFuY2VzdG9yRnJhbWU7IGFuY2VzdG9yRnJhbWUgPSBhbmNl
c3RvckZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmICghYW5jZXN0b3JGcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHNlY3VyaXR5T3JpZ2lu
KCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lICpjdXJyZW50RnJhbWUg
PSBtX2ZyYW1lOworICAgIEZyYW1lICphbmNlc3RvckZyYW1lID0gY3VycmVudEZyYW1lLT50cmVl
KCktPnBhcmVudCgpOyAKKworICAgIHdoaWxlIChhbmNlc3RvckZyYW1lKSB7CisgICAgICAgIGlm
ICghYW5jZXN0b3JGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
KHNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudEZyYW1lOwor
ICAgICAgICB9CisgICAgICAgIGN1cnJlbnRGcmFtZSA9IGFuY2VzdG9yRnJhbWU7CisgICAgICAg
IGFuY2VzdG9yRnJhbWUgPSBhbmNlc3RvckZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gMDsKIH0KIAogQ1NTU3R5bGVTaGVldCogRG9j
dW1lbnQ6OnBhZ2VVc2VyU2hlZXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDExMzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MjEsNyArNjIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZh
bCgpOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwotICAgIGJv
b2wgY2FuQmVBY2Nlc3NlZEJ5RXZlcnlBbmNlc3RvckZyYW1lKCk7CisgICAgRnJhbWUqIGZpbmRV
bnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5KCk7CiAKICAgICBDU1NTdHlsZVNo
ZWV0KiBwYWdlVXNlclNoZWV0KCk7CiAgICAgdm9pZCBjbGVhclBhZ2VVc2VyU2hlZXQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTEzOTE5KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgzLDcgKzY4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZygpCiAg
ICAgLy8gQ2hlY2sgaWYgdGhlIHNjcm9sbGJhcnMgYXJlIHJlYWxseSBuZWVkZWQgZm9yIHRoZSBj
b250ZW50LgogICAgIC8vIElmIG5vdCwgcmVtb3ZlIHRoZW0sIHJlbGF5b3V0LCBhbmQgcmVwYWlu
dC4KICAgICBtX2ZyYW1lLT52aWV3KCktPnJlc3RvcmVTY3JvbGxiYXIoKTsKLSAgICBzY3JvbGxU
b0ZyYWdtZW50SWZBbGxvd2VkKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKKyAgICBzY3Jv
bGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
KTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERvbmUoKQpAQCAtMTA1Miw3ICsxMDUyLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbgogCiAgICAgLy8gV2Ug
bmVlZCB0byBzY3JvbGwgdG8gdGhlIGZyYWdtZW50IHdoZXRoZXIgb3Igbm90IGEgaGFzaCBjaGFu
Z2Ugb2NjdXJyZWQsIHNpbmNlCiAgICAgLy8gdGhlIHVzZXIgbWlnaHQgaGF2ZSBzY3JvbGxlZCBz
aW5jZSB0aGUgcHJldmlvdXMgbmF2aWdhdGlvbi4KLSAgICBzY3JvbGxUb0ZyYWdtZW50SWZBbGxv
d2VkKHVybCk7CisgICAgc2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeSh1cmwpOwog
ICAgIAogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29tcGxldGVkKCk7CkBA
IC0yNjgxLDIwICsyNjgxLDI0IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFn
bWVudE4KICAgICAgICAgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudElmQWxsb3dlZChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5k
YXJ5KGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52
aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBMZWFraW5n
IHNjcm9sbCBwb3NpdGlvbiB0byBhIGNyb3NzLW9yaWdpbiBhbmNlc3RvciB3b3VsZCBwZXJtaXQg
dGhlIHNvLWNhbGxlZCAiZnJhbWVzbmlmZmluZyIgYXR0YWNrLgotICAgIGlmICh1cmwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmNhbkJlQWNjZXNzZWRC
eUV2ZXJ5QW5jZXN0b3JGcmFtZSgpKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb25zb2xlTWVzc2FnZSwgKCJGcmFnbWVudCBuYXZpZ2F0aW9uIG5vdCBhbGxvd2VkIHdp
dGggY3Jvc3Mtb3JpZ2luIGZyYW1lcy4iKSk7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOworICAg
IEZyYW1lKiBib3VuZGFyeUZyYW1lID0gMDsKKyAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKSB7CisgICAgICAgIGJvdW5kYXJ5RnJhbWUgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5m
aW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpOworICAgICAgICBpZiAo
Ym91bmRhcnlGcmFtZSkKKyAgICAgICAgICAgIGJvdW5kYXJ5RnJhbWUtPnZpZXcoKS0+c2V0U2Fm
ZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoZmFsc2UpOwogICAgIH0KIAogICAgIHZpZXctPnNj
cm9sbFRvRnJhZ21lbnQodXJsKTsKKworICAgIGlmIChib3VuZGFyeUZyYW1lKQorICAgICAgICBi
b3VuZGFyeUZyYW1lLT52aWV3KCktPnNldFNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KHRy
dWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjYWxsQ29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KHZvaWQqIGFyZ3VtZW50LApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKICAgICBib29sIHNob3VsZFBl
cmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJp
bmcmIGh0dHBNZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IEtVUkwmKTsKLSAgICB2b2lkIHNj
cm9sbFRvRnJhZ21lbnRJZkFsbG93ZWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2Nyb2xsVG9G
cmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBLVVJMJik7CiAKICAgICB2b2lkIGNoZWNr
TG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIEZyYW1lVmlldzo6RnJhbWVW
aWV3KEZyYW1lKiBmcmFtZSkKICAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigwKQogICAgICwgbV93
YXNTY3JvbGxlZEJ5VXNlcihmYWxzZSkKICAgICAsIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwoZmFs
c2UpCisgICAgLCBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KHRydWUpCiAgICAgLCBt
X2RlZmVycmVkUmVwYWludFRpbWVyKHRoaXMsICZGcmFtZVZpZXc6OmRlZmVycmVkUmVwYWludFRp
bWVyRmlyZWQpCiAgICAgLCBtX2Rpc2FibGVSZXBhaW50cygwKQogICAgICwgbV9pc1RyYWNraW5n
UmVwYWludHMoZmFsc2UpCkBAIC0yMzEsNiArMjMyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc2V0
KCkKICAgICBtX2ZpcnN0TGF5b3V0ID0gdHJ1ZTsKICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQ
ZW5kaW5nID0gZmFsc2U7CiAgICAgbV93YXNTY3JvbGxlZEJ5VXNlciA9IGZhbHNlOworICAgIG1f
c2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQgPSB0cnVlOwogICAgIG1fbGFzdFZpZXdwb3J0
U2l6ZSA9IEludFNpemUoKTsKICAgICBtX2xhc3Rab29tRmFjdG9yID0gMS4wZjsKICAgICBtX2Rl
ZmVycmluZ1JlcGFpbnRzID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNp
b24gMTEzOTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMwLDYgKzIzMCw5IEBAIHB1YmxpYzoKICAgICBib29sIHdhc1Njcm9sbGVkQnlV
c2VyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXYXNTY3JvbGxlZEJ5VXNlcihib29sKTsKIAorICAg
IGJvb2wgc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3Nh
ZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50OyB9CisgICAgdm9pZCBzZXRTYWZlVG9Qcm9wYWdh
dGVTY3JvbGxUb1BhcmVudChib29sIGlzU2FmZSkgeyBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRv
UGFyZW50ID0gaXNTYWZlOyB9CisKICAgICB2b2lkIGFkZFdpZGdldFRvVXBkYXRlKFJlbmRlckVt
YmVkZGVkT2JqZWN0Kik7CiAgICAgdm9pZCByZW1vdmVXaWRnZXRUb1VwZGF0ZShSZW5kZXJFbWJl
ZGRlZE9iamVjdCopOwogCkBAIC00NzQsNyArNDc3LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV93YXNTY3JvbGxlZEJ5VXNlcjsKICAgICBib29sIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7Ci0g
ICAgCisgICAgYm9vbCBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50OworCiAgICAgdW5z
aWduZWQgbV9kZWZlcnJpbmdSZXBhaW50czsKICAgICB1bnNpZ25lZCBtX3JlcGFpbnRDb3VudDsK
ICAgICBWZWN0b3I8TGF5b3V0UmVjdD4gbV9yZXBhaW50UmVjdHM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NzIsOSArMTY3MiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNv
CiAgICAgICAgICAgICAgICAgICAgIHlPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1lVmlldy0+Y29u
dGVudHNIZWlnaHQoKSwgeU9mZnNldCkpOwogCiAgICAgICAgICAgICAgICAgICAgIGZyYW1lVmll
dy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoeE9mZnNldCwgeU9mZnNldCkpOwotICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKS0+ZW5j
bG9zaW5nTGF5ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3UmVjdC5zZXRYKHJlY3QueCgp
IC0gZnJhbWVWaWV3LT5zY3JvbGxYKCkgKyBmcmFtZVZpZXctPngoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5ld1JlY3Quc2V0WShyZWN0LnkoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWSgpICsgZnJh
bWVWaWV3LT55KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5zYWZlVG9Q
cm9wYWdhdGVTY3JvbGxUb1BhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJl
bnRMYXllciA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmlldy0+
c2Nyb2xsWCgpICsgZnJhbWVWaWV3LT54KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3
UmVjdC5zZXRZKHJlY3QueSgpIC0gZnJhbWVWaWV3LT5zY3JvbGxZKCkgKyBmcmFtZVZpZXctPnko
KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137174</attachid>
            <date>2012-04-13 16:30:50 -0700</date>
            <delta_ts>2012-04-16 11:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch_83721.txt</filename>
            <type>text/plain</type>
            <size>22874</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDE3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTEzICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZyYW1lc25pZmZpbmcgZGVmZW5z
ZSBpcyB0b28gYWdncmVzc2l2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIFJlbmRlckxheWVyIGNvZGUgY3VycmVudGx5IHByb3BhZ2F0ZXMgc2Ny
b2xsIHBvc2l0aW9uIHRvIHBhcmVudCBmcmFtZXMKKyAgICAgICAgd2l0aG91dCBhbnkgY3Jvc3Mt
b3JpZ2luIGNoZWNrcy4gIFRoaXMgZ2l2ZXMgaXQgYSBxdWljayBvcmlnaW4gYm91bmRhcnkgY2hl
Y2sKKyAgICAgICAgdGhhdCBpcyBzZXQgYnkgRnJhbWVMb2FkZXIgb25seSB3aGVuIHBlcmZvcm1p
bmcgYSBmcmFnbWVudCBuYXZpZ2F0aW9uLiAgVGhpcyAKKyAgICAgICAgYWxsb3dzIHVzIHRvIHNh
ZmVseSByZWxheCB0aGUgcmVzdHJpY3Rpb24gb24gbm90IHNjcm9sbGluZyBhdCBsb2FkIHRpbWUg
aW4gCisgICAgICAgIEZyYW1lTG9hZGVyIHNpbmNlIHRoZSBzYWZlIHRoaW5nIHdpbGwgaGFwcGVu
IGxhdGVyIG9uIGF0IHNjcm9sbCB0aW1lLgorICAgICAgICAKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4uaHRtbAorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5kVW5z
YWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpmaW5pc2hlZFBhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3Vu
ZGFyeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChGcmFtZUxv
YWRlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNl
dCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCk6CisgICAgICAgIChG
cmFtZVZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisKIDIwMTItMDQt
MTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29t
cG9zaXRpbmcgbGF5ZXJzIG5vdCB1cGRhdGVkIGFmdGVyIHNjcm9sbCBpbiBXZWJLaXQxCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzksMTMgKzI2NzksMTgg
QEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6Y2FuQmVBY2Nlc3NlZEJ5RXZlcnlBbmNlc3RvckZy
YW1lKCkKK0ZyYW1lKiBEb2N1bWVudDo6ZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9u
Qm91bmRhcnkoKQogewotICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yRnJhbWUgPSBtX2ZyYW1lLT50
cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgIEZyYW1lKiBjdXJyZW50RnJhbWUgPSBtX2Zy
YW1lOworICAgIEZyYW1lKiBhbmNlc3RvckZyYW1lID0gY3VycmVudEZyYW1lLT50cmVlKCktPnBh
cmVudCgpOyAKKworICAgIHdoaWxlIChhbmNlc3RvckZyYW1lKSB7CiAgICAgICAgIGlmICghYW5j
ZXN0b3JGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHNlY3Vy
aXR5T3JpZ2luKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnRGcmFtZTsKKyAgICAgICAgY3VycmVudEZyYW1lID0gYW5jZXN0b3JGcmFtZTsK
KyAgICAgICAgYW5jZXN0b3JGcmFtZSA9IGFuY2VzdG9yRnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAwOwogfQogCiBDU1NTdHlsZVNo
ZWV0KiBEb2N1bWVudDo6cGFnZVVzZXJTaGVldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMTEzOTE5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyMSw3ICs2MjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVFdmFsKCk7CiAKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSk7
Ci0gICAgYm9vbCBjYW5CZUFjY2Vzc2VkQnlFdmVyeUFuY2VzdG9yRnJhbWUoKTsKKyAgICBGcmFt
ZSogZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9uQm91bmRhcnkoKTsKIAogICAgIENT
U1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQoKTsKICAgICB2b2lkIGNsZWFyUGFnZVVzZXJTaGVl
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAx
MTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJz
aW5nKCkKICAgICAvLyBDaGVjayBpZiB0aGUgc2Nyb2xsYmFycyBhcmUgcmVhbGx5IG5lZWRlZCBm
b3IgdGhlIGNvbnRlbnQuCiAgICAgLy8gSWYgbm90LCByZW1vdmUgdGhlbSwgcmVsYXlvdXQsIGFu
ZCByZXBhaW50LgogICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzdG9yZVNjcm9sbGJhcigpOwotICAg
IHNjcm9sbFRvRnJhZ21lbnRJZkFsbG93ZWQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwor
ICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSgpCkBAIC0xMDUyLDcg
KzEwNTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uCiAKICAg
ICAvLyBXZSBuZWVkIHRvIHNjcm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBo
YXNoIGNoYW5nZSBvY2N1cnJlZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNj
cm9sbGVkIHNpbmNlIHRoZSBwcmV2aW91cyBuYXZpZ2F0aW9uLgotICAgIHNjcm9sbFRvRnJhZ21l
bnRJZkFsbG93ZWQodXJsKTsKKyAgICBzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KHVybCk7CiAgICAgCiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAgICAgY2hlY2tDb21wbGV0
ZWQoKTsKQEAgLTI2ODEsMjAgKzI2ODEsMjIgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVy
Zm9ybUZyYWdtZW50TgogICAgICAgICAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNGcmFtZVNl
dCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50SWZBbGxvd2VkKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFy
ZW50Qm91bmRhcnkoY29uc3QgS1VSTCYgdXJsKQogewogICAgIEZyYW1lVmlldyogdmlldyA9IG1f
ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IExlYWtpbmcgc2Nyb2xsIHBvc2l0aW9uIHRvIGEgY3Jvc3Mtb3JpZ2luIGFuY2VzdG9yIHdvdWxk
IHBlcm1pdCB0aGUgc28tY2FsbGVkICJmcmFtZXNuaWZmaW5nIiBhdHRhY2suCi0gICAgaWYgKHVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuQmVB
Y2Nlc3NlZEJ5RXZlcnlBbmNlc3RvckZyYW1lKCkpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIkZyYWdtZW50IG5hdmlnYXRpb24gbm90IGFs
bG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLiIpKTsKLSAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIFJlZlB0cjxGcmFtZT4gYm91bmRhcnlGcmFtZSh1cmwuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT5maW5kVW5zYWZlUGFyZW50U2Ny
b2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpIDogMCk7CisKKyAgICBpZiAoYm91bmRhcnlGcmFtZS5n
ZXQoKSkKKyAgICAgICAgYm91bmRhcnlGcmFtZS0+dmlldygpLT5zZXRTYWZlVG9Qcm9wYWdhdGVT
Y3JvbGxUb1BhcmVudChmYWxzZSk7CiAKICAgICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KHVybCk7
CisKKyAgICBpZiAoYm91bmRhcnlGcmFtZS5nZXQoKSkKKyAgICAgICAgYm91bmRhcnlGcmFtZS0+
dmlldygpLT5zZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCh0cnVlKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lk
KiBhcmd1bWVudCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lv
biAxMTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUZy
YWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGJvb2wgc2hvdWxkQ29udGludWUpOwogCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtRnJhZ21lbnRO
YXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9k
LCBGcmFtZUxvYWRUeXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0ZyYWdtZW50
SWZBbGxvd2VkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFy
ZW50Qm91bmRhcnkoY29uc3QgS1VSTCYpOwogCiAgICAgdm9pZCBjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lv
biAxMTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw2ICsxMzksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJh
bWUpCiAgICAgLCBtX3ZpZXdwb3J0UmVuZGVyZXIoMCkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVz
ZXIoZmFsc2UpCiAgICAgLCBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsKGZhbHNlKQorICAgICwgbV9z
YWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCh0cnVlKQogICAgICwgbV9kZWZlcnJlZFJlcGFp
bnRUaW1lcih0aGlzLCAmRnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKQogICAg
ICwgbV9kaXNhYmxlUmVwYWludHMoMCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZhbHNl
KQpAQCAtMjMxLDYgKzIzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9maXJz
dExheW91dCA9IHRydWU7CiAgICAgbV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZyA9IGZhbHNl
OwogICAgIG1fd2FzU2Nyb2xsZWRCeVVzZXIgPSBmYWxzZTsKKyAgICBtX3NhZmVUb1Byb3BhZ2F0
ZVNjcm9sbFRvUGFyZW50ID0gdHJ1ZTsKICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBJbnRTaXpl
KCk7CiAgICAgbV9sYXN0Wm9vbUZhY3RvciA9IDEuMGY7CiAgICAgbV9kZWZlcnJpbmdSZXBhaW50
cyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDExMzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2
ICsyMzAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNTY3JvbGxlZEJ5VXNlcigpIGNvbnN0Owog
ICAgIHZvaWQgc2V0V2FzU2Nyb2xsZWRCeVVzZXIoYm9vbCk7CiAKKyAgICBib29sIHNhZmVUb1By
b3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zYWZlVG9Qcm9wYWdhdGVT
Y3JvbGxUb1BhcmVudDsgfQorICAgIHZvaWQgc2V0U2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJl
bnQoYm9vbCBpc1NhZmUpIHsgbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCA9IGlzU2Fm
ZTsgfQorCiAgICAgdm9pZCBhZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCop
OwogICAgIHZvaWQgcmVtb3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QqKTsK
IApAQCAtNDc0LDcgKzQ3Nyw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fd2FzU2Nyb2xsZWRC
eVVzZXI7CiAgICAgYm9vbCBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsOwotICAgIAorICAgIGJvb2wg
bV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudDsKKwogICAgIHVuc2lnbmVkIG1fZGVmZXJy
aW5nUmVwYWludHM7CiAgICAgdW5zaWduZWQgbV9yZXBhaW50Q291bnQ7CiAgICAgVmVjdG9yPExh
eW91dFJlY3Q+IG1fcmVwYWludFJlY3RzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcyLDkgKzE2NzIsMTIg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjbwogICAgICAgICAgICAg
ICAgICAgICB5T2Zmc2V0ID0gbWF4KDAsIG1pbihmcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0KCks
IHlPZmZzZXQpKTsKIAogICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBv
c2l0aW9uKEludFBvaW50KHhPZmZzZXQsIHlPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7
Ci0gICAgICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmlldy0+
c2Nyb2xsWCgpICsgZnJhbWVWaWV3LT54KCkpOwotICAgICAgICAgICAgICAgICAgICBuZXdSZWN0
LnNldFkocmVjdC55KCkgLSBmcmFtZVZpZXctPnNjcm9sbFkoKSArIGZyYW1lVmlldy0+eSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lVmlldy0+c2FmZVRvUHJvcGFnYXRlU2Nyb2xs
VG9QYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBvd25l
ckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdSZWN0LnNldFgocmVjdC54KCkgLSBmcmFtZVZpZXctPnNjcm9sbFgoKSArIGZy
YW1lVmlldy0+eCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WShyZWN0
LnkoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0g
MDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MTc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDQtMTMgIFRvbSBTZXBleiAgPHRz
ZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRnJhbWVzbmlmZmluZyBkZWZlbnNlIGlzIHRv
byBhZ2dyZXNzaXZlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODM3MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXBhcmFtZXRlcnMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3Nz
LW9yaWdpbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Fu
Y2hvci1mcmFtZXMtY3Jvc3Mtb3JpZ2luLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1zYW1lLW9yaWdpbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Zy
YW1lLXdpdGgtYW5jaG9yLWNyb3NzLW9yaWdpbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3Itc2FtZS1vcmlnaW4uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9ncmFuZGNo
aWxkLXdpdGgtYW5jaG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9t
LXdyaXRlLWxvY2F0aW9uLWlubGluZS1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9u
LWlubGluZS1ldmVudC1udWxsLWNoYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1qYXZh
c2NyaXB0LVVSTC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9uMi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2RvbS13cml0ZS1sb2NhdGlv
bi1pbmxpbmUtZXZlbnQtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA0LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSB0aGlzIHNpbmNl
IHN2Zy9jdXN0b20vcmVzb3VyY2VzL2dyZWVuLWNoZWNrZXIucG5nIGNoYW5nZWQuCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEzOTE5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZy
YWdtZW50IG5hdmlnYXRpb24gbm90IGFsbG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLgog
VGVzdHMgdGhhdCByZXNvdXJjZXMgcGFuZWwgc2hvd3MgZm9ybSBkYXRhIHBhcmFtZXRlcnMuCiAK
ICAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1l
cy1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjMgKzEsMjEgQEAKLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2aWdhdGlvbiBu
b3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBmcmFtZXMuCiAKIAogLS0tLS0tLS0KLUZyYW1l
OiAnbWFpbicKK0ZyYW1lOiAnY2hpbGQnCiAtLS0tLS0tLQogVGhpcyBwcmV2ZW50cyBhIGNyb3Nz
LW9yaWdpbiBpbmZvcm1hdGlvbiBsZWFrIHNvbWV0aW1lcyBrbm93IGFzIGZyYW1lc25pZmZpbmcu
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCBpcyB0cnVl
CiBQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID09IDAgaXMgdHJ1ZQogUEFTUyBkb2N1bWVu
dC5ib2R5LnNjcm9sbExlZnQgPT0gMCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLVRoaXMgaXMgYW4gYW5jaG9yIHBvaW50IG5hbWVkICJh
bmNob3IxLgorCiAKIC0tLS0tLS0tCi1GcmFtZTogJ2Zvb3RlcicKK0ZyYW1lOiAnZ3JhbmRjaGls
ZCcKIC0tLS0tLS0tCi0KK1RoaXMgaXMgYW4gYW5jaG9yIHBvaW50IG5hbWVkICJhbmNob3IxIi4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNy
b3NzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAxMTM5MTkp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1jcm9z
cy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMiBAQAogPGh0bWw+CiAg
IDwhLS0gU2VlIHJlc291cmNlcy9mcmFtZS13aXRoLWFuY2hvci1jcm9zcy1vcmlnaW4uaHRtbCBm
b3IgZGVzY3JpcHRpb24gb2YgdGVzdCAtLT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB9CiAg
IDwvc2NyaXB0PgotICA8ZnJhbWVzZXQgcm93cz0iOTAlLDEwJSI+Ci0gICAgPGZyYW1lIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5j
aG9yLWNyb3NzLW9yaWdpbi5odG1sI2FuY2hvcjEiIG5hbWU9Im1haW4iPgotICAgIDxmcmFtZSBz
cmM9ImFib3V0OmJsYW5rIiBuYW1lPSJmb290ZXIiPgotICA8L2ZyYW1lc2V0PgorICA8IS0tIHNt
YWxsIHNhbWUtb3JpZ2luIGNoaWxkIGZyYW1lIGxvYWRpbmcgbGFyZ2UgY3Jvc3Mtb3JnaW4gZ3Jh
bmRjaGlsZCBmcmFtZSAtLT4KKyAgPGlmcmFtZSBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1h
bmNob3ItY3Jvc3Mtb3JpZ2luLmh0bWwiIG5hbWU9ImNoaWxkIj4KKyAgPC9pZnJhbWU+CiA8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1l
cy1zYW1lLW9yaWdpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hv
ci1mcmFtZXMtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxIEBACisKKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQnCistLS0tLS0tLQorVGhpcyB0ZXN0
cyB0aGF0IHRoZSBmcmFtZXNuaWZmaW5nIGRlZmVuc2VzIGFyZSBub3Qgb3ZlcnplYWxvdXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xs
VG9wID4gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9PSAwIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisK
Ky0tLS0tLS0tCitGcmFtZTogJ2dyYW5kY2hpbGQnCistLS0tLS0tLQorVGhpcyBpcyBhbiBhbmNo
b3IgcG9pbnQgbmFtZWQgImFuY2hvcjEiLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1zYW1lLW9yaWdp
bi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorPGh0bWw+CisgIDwhLS0gU2VlIHJlc291cmNlcy9mcmFtZS13aXRoLWFuY2hvci1zYW1l
LW9yaWdpbi5odG1sIGZvciBkZXNjcmlwdGlvbiBvZiB0ZXN0IC0tPgorICA8c2NyaXB0PgorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB9CisgIDwvc2NyaXB0PgorICA8IS0tIHNtYWxs
IHNhbWUtb3JpZ2luIGNoaWxkIGZyYW1lIGxvYWRpbmcgbGFyZ2Ugc2FtZS1vcmdpbiBncmFuZGNo
aWxkIGZyYW1lIC0tPgorICA8aWZyYW1lIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIiBzcmM9Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS13aXRoLWFuY2hv
ci1zYW1lLW9yaWdpbi5odG1sIiBuYW1lPSJjaGlsZCI+CisgIDwvaWZyYW1lPgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS13
aXRoLWFuY2hvci1jcm9zcy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5jaG9yLWNyb3NzLW9y
aWdpbi5odG1sCShyZXZpc2lvbiAxMTM5MTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5jaG9yLWNyb3NzLW9yaWdpbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC00LDM1ICs0LDIyIEBACiAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQ+CiAg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGxv
YWRpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUgd2l0aCBhIFVSTCB0aGF0IGNvbnRhaW5zIGEgZnJh
Z21lbnQgcG9pbnRlZCBhdCBhIG5hbWVkIGFuY2hvciBkb2VzIG5vdCBzY3JvbGwgdG8gdGhhdCBh
bmNob3IuJyk7CisgICAgICBkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBsb2FkaW5nIGEgY3Jvc3Mt
b3JpZ2luIGZyYW1lIHdpdGggYSBVUkwgdGhhdCBjb250YWlucyBhbiBhbmNob3IgZnJhZ21lbnQg
ZG9lcyBub3Qgc2Nyb2xsIHRoaXMgZnJhbWUuJyk7CiAgICAgICBkZXNjcmlwdGlvbignVGhpcyBw
cmV2ZW50cyBhIGNyb3NzLW9yaWdpbiBpbmZvcm1hdGlvbiBsZWFrIHNvbWV0aW1lcyBrbm93IGFz
IGZyYW1lc25pZmZpbmcuJyk7Ci0KLSAgICAgIC8vIENoZWNrIHNjcm9sbCBwb3NpdGlvbiBpbiBh
IHRpbWVvdXQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFuY2hvciBoYXMKLSAgICAgIC8vIGJlZW4g
c2Nyb2xsZWQgdG8uCisgICAgICAvLyBDaGVjayBzY3JvbGwgcG9zaXRpb24gaW4gYSB0aW1lb3V0
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBhbmNob3IgaGFzIG5vdCBiZWVuIHNjcm9sbGVkIHRvLgog
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCB0aGUgYm9keSBpcyB0YWxsZXIgdGhhbiB0aGUgdmlld3BvcnQgKGkuZS4gc2Nyb2xsaW5nIGlz
IHJlcXVpcmVkKS4KLSAgICAgICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHkub2Zmc2V0
SGVpZ2h0ID4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCcpOwotICAgICAg
ICAgIAotICAgICAgICAgIC8vIFdlIG11c3Qgbm90IGJlIHNjcm9sbGVkIGF0IGFsbC4KICAgICAg
ICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID09IDAnKTsKICAgICAg
ICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9PSAwJyk7Ci0gICAg
ICAgICAgCiAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7ICAgICAgICAgIAogICAgICAgfSwgMCk7
CiAgICAgfQotICAgIAogICAgIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAgPC9zY3JpcHQ+
ICAKIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxkaXYgc3R5bGU9ImhlaWdodDog
MjAwMHB4Ij4KLSAgPCEtLSBTcGFjZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5hbWVkIGFuY2hv
ciBiZWxvdyByZXF1aXJlcyBzY3JvbGxpbmcgLS0+Ci08L2Rpdj4KLQotPGEgbmFtZT0iYW5jaG9y
MSI+VGhpcyBpcyBhbiBhbmNob3IgcG9pbnQgbmFtZWQgImFuY2hvcjE8L2E+LgorPGJvZHk+Cis8
IS0tIGxhcmdlIGNyb3NzLW9yaWdpbiBncmFuZGNoaWxkIGZyYW1lIC0tPgorPGlmcmFtZSBoZWln
aHQ9IjgwMDAiIHdpZHRoPSI4MDAwIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9ncmFuZGNoaWxkLXdpdGgtYW5jaG9yLmh0bWwjYW5jaG9yMSIgbmFtZT0i
Z3JhbmRjaGlsZCIgb25sb2FkPSJydW5UZXN0KCkiPgorPC9pZnJhbWU+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3Itc2FtZS1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgt
YW5jaG9yLXNhbWUtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5jaG9yLXNhbWUtb3JpZ2lu
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgbG9hZGluZyBhIHNhbWUtb3JpZ2lu
IGZyYW1lIHdpdGggYSBVUkwgdGhhdCBjb250YWlucyBhbiBhbmNob3IgZnJhZ21lbnQgZG9lcyBz
Y3JvbGwgdGhpcyBmcmFtZS4nKTsKKyAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRoYXQg
dGhlIGZyYW1lc25pZmZpbmcgZGVmZW5zZXMgYXJlIG5vdCBvdmVyemVhbG91cy4nKTsKKyAgICAg
IC8vIENoZWNrIHNjcm9sbCBwb3NpdGlvbiBpbiBhIHRpbWVvdXQgdG8gbWFrZSBzdXJlIHRoYXQg
dGhlIGFuY2hvciBoYXMgYmVlbiBzY3JvbGxlZCB0by4KKyAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA+
IDAnKTsKKyAgICAgICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9
PSAwJyk7CisgICAgICAgICAgZmluaXNoSlNUZXN0KCk7ICAgICAgICAgIAorICAgICAgfSwgMCk7
CisgICAgfQorICAgIHZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgPC9zY3JpcHQ+ICAKKzwv
aGVhZD4KKzxib2R5PgorPCEtLSBsYXJnZSBzYW1lLW9yaWdpbiBncmFuZGNoaWxkIGZyYW1lIC0t
PgorPGlmcmFtZSBoZWlnaHQ9IjgwMDAiIHdpZHRoPSI4MDAwIiBzcmM9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9ncmFuZGNoaWxkLXdpdGgtYW5jaG9yLmh0bWwj
YW5jaG9yMSIgbmFtZT0iZ3JhbmRjaGlsZCIgb25sb2FkPSJydW5UZXN0KCkiPgorPC9pZnJhbWU+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZ3JhbmRjaGlsZC13aXRoLWFuY2hvci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZ3Jh
bmRjaGlsZC13aXRoLWFuY2hvci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9ncmFuZGNoaWxkLXdpdGgtYW5jaG9yLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBzdHlsZT0iaGVpZ2h0OiAyMDAwcHgiPgorICA8IS0tIFNwYWNlciB0byBtYWtl
IHN1cmUgdGhhdCB0aGUgbmFtZWQgYW5jaG9yIGJlbG93IHJlcXVpcmVzIHNjcm9sbGluZyAtLT4K
KzwvZGl2PgorPGEgbmFtZT0iYW5jaG9yMSI+VGhpcyBpcyBhbiBhbmNob3IgcG9pbnQgbmFtZWQg
ImFuY2hvcjEiPC9hPi4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbjIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbjItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMTM5MTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9jYXRpb24yLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBl
eGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3
aXRoaW4gcmVxdWVzdC4KIAotQ09OU09MRSBNRVNTQUdFOiBGcmFnbWVudCBuYXZpZ2F0aW9uIG5v
dCBhbGxvd2VkIHdpdGggY3Jvc3Mtb3JpZ2luIGZyYW1lcy4KIApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9jYXRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMTM5MTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9jYXRpb24tZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRv
IGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5k
IHdpdGhpbiByZXF1ZXN0LgogCi1DT05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmlnYXRpb24g
bm90IGFsbG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLgogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9j
YXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9j
YXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEzOTE5KQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdy
aXRlLWxvY2F0aW9uLWlubGluZS1ldmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSwzIEBACiBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFT
Y3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3Qu
CiAKLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRo
IGNyb3NzLW9yaWdpbiBmcmFtZXMuCi1DT05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmlnYXRp
b24gbm90IGFsbG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUt
bG9jYXRpb24taW5saW5lLWV2ZW50LW51bGwtY2hhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwt
ZG9tLXdyaXRlLWxvY2F0aW9uLWlubGluZS1ldmVudC1udWxsLWNoYXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMTM5MTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9jYXRpb24taW5saW5lLWV2ZW50LW51bGwtY2hh
ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACiBDT05TT0xFIE1F
U1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29k
ZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCiAKLUNPTlNPTEUgTUVTU0FHRTogRnJh
Z21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBmcmFtZXMuCi1D
T05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmlnYXRpb24gbm90IGFsbG93ZWQgd2l0aCBjcm9z
cy1vcmlnaW4gZnJhbWVzLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUtbG9jYXRpb24tamF2YXNjcmlwdC1VUkwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1qYXZhc2NyaXB0LVVS
TC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1qYXZh
c2NyaXB0LVVSTC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACiBD
T05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBT
b3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCiAKLUNPTlNPTEUgTUVT
U0FHRTogRnJhZ21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBm
cmFtZXMuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9kb20td3JpdGUtbG9jYXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZG9tLXdyaXRl
LWxvY2F0aW9uLWlubGluZS1ldmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMzkxOSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9kb20td3JpdGUtbG9j
YXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDMgQEAKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KIAotQ09O
U09MRSBNRVNTQUdFOiBGcmFnbWVudCBuYXZpZ2F0aW9uIG5vdCBhbGxvd2VkIHdpdGggY3Jvc3Mt
b3JpZ2luIGZyYW1lcy4KIAo=
</data>
<flag name="review"
          id="142171"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137369</attachid>
            <date>2012-04-16 11:38:16 -0700</date>
            <delta_ts>2012-04-17 12:03:59 -0700</delta_ts>
            <desc>Patch, fix nits.</desc>
            <filename>patch_83721.txt</filename>
            <type>text/plain</type>
            <size>22879</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDE3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTEzICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZyYW1lc25pZmZpbmcgZGVmZW5z
ZSBpcyB0b28gYWdncmVzc2l2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIFJlbmRlckxheWVyIGNvZGUgY3VycmVudGx5IHByb3BhZ2F0ZXMgc2Ny
b2xsIHBvc2l0aW9uIHRvIHBhcmVudCBmcmFtZXMKKyAgICAgICAgd2l0aG91dCBhbnkgY3Jvc3Mt
b3JpZ2luIGNoZWNrcy4gIFRoaXMgZ2l2ZXMgaXQgYSBxdWljayBvcmlnaW4gYm91bmRhcnkgY2hl
Y2sKKyAgICAgICAgdGhhdCBpcyBzZXQgYnkgRnJhbWVMb2FkZXIgb25seSB3aGVuIHBlcmZvcm1p
bmcgYSBmcmFnbWVudCBuYXZpZ2F0aW9uLiAgVGhpcyAKKyAgICAgICAgYWxsb3dzIHVzIHRvIHNh
ZmVseSByZWxheCB0aGUgcmVzdHJpY3Rpb24gb24gbm90IHNjcm9sbGluZyBhdCBsb2FkIHRpbWUg
aW4gCisgICAgICAgIEZyYW1lTG9hZGVyIHNpbmNlIHRoZSBzYWZlIHRoaW5nIHdpbGwgaGFwcGVu
IGxhdGVyIG9uIGF0IHNjcm9sbCB0aW1lLgorICAgICAgICAKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4uaHRtbAorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpmaW5kVW5z
YWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpmaW5pc2hlZFBhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3Vu
ZGFyeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgIChGcmFtZUxv
YWRlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNl
dCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCk6CisgICAgICAgIChG
cmFtZVZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisKIDIwMTItMDQt
MTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29t
cG9zaXRpbmcgbGF5ZXJzIG5vdCB1cGRhdGVkIGFmdGVyIHNjcm9sbCBpbiBXZWJLaXQxCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzksMTMgKzI2NzksMTgg
QEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBEb2N1bWVudDo6Y2FuQmVBY2Nlc3NlZEJ5RXZlcnlBbmNlc3RvckZy
YW1lKCkKK0ZyYW1lKiBEb2N1bWVudDo6ZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9u
Qm91bmRhcnkoKQogewotICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yRnJhbWUgPSBtX2ZyYW1lLT50
cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgIEZyYW1lKiBjdXJyZW50RnJhbWUgPSBtX2Zy
YW1lOworICAgIEZyYW1lKiBhbmNlc3RvckZyYW1lID0gY3VycmVudEZyYW1lLT50cmVlKCktPnBh
cmVudCgpOyAKKworICAgIHdoaWxlIChhbmNlc3RvckZyYW1lKSB7CiAgICAgICAgIGlmICghYW5j
ZXN0b3JGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHNlY3Vy
aXR5T3JpZ2luKCkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnRGcmFtZTsKKyAgICAgICAgY3VycmVudEZyYW1lID0gYW5jZXN0b3JGcmFtZTsK
KyAgICAgICAgYW5jZXN0b3JGcmFtZSA9IGFuY2VzdG9yRnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAwOwogfQogCiBDU1NTdHlsZVNo
ZWV0KiBEb2N1bWVudDo6cGFnZVVzZXJTaGVldCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMTEzOTE5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyMSw3ICs2MjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVFdmFsKCk7CiAKICAgICBib29sIGNhbk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSk7
Ci0gICAgYm9vbCBjYW5CZUFjY2Vzc2VkQnlFdmVyeUFuY2VzdG9yRnJhbWUoKTsKKyAgICBGcmFt
ZSogZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9uQm91bmRhcnkoKTsKIAogICAgIENT
U1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQoKTsKICAgICB2b2lkIGNsZWFyUGFnZVVzZXJTaGVl
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAx
MTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZmluaXNoZWRQYXJz
aW5nKCkKICAgICAvLyBDaGVjayBpZiB0aGUgc2Nyb2xsYmFycyBhcmUgcmVhbGx5IG5lZWRlZCBm
b3IgdGhlIGNvbnRlbnQuCiAgICAgLy8gSWYgbm90LCByZW1vdmUgdGhlbSwgcmVsYXlvdXQsIGFu
ZCByZXBhaW50LgogICAgIG1fZnJhbWUtPnZpZXcoKS0+cmVzdG9yZVNjcm9sbGJhcigpOwotICAg
IHNjcm9sbFRvRnJhZ21lbnRJZkFsbG93ZWQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwor
ICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSgpCkBAIC0xMDUyLDcg
KzEwNTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uCiAKICAg
ICAvLyBXZSBuZWVkIHRvIHNjcm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBo
YXNoIGNoYW5nZSBvY2N1cnJlZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNj
cm9sbGVkIHNpbmNlIHRoZSBwcmV2aW91cyBuYXZpZ2F0aW9uLgotICAgIHNjcm9sbFRvRnJhZ21l
bnRJZkFsbG93ZWQodXJsKTsKKyAgICBzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5
KHVybCk7CiAgICAgCiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAgICAgY2hlY2tDb21wbGV0
ZWQoKTsKQEAgLTI2ODEsMjAgKzI2ODEsMjIgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVy
Zm9ybUZyYWdtZW50TgogICAgICAgICAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNGcmFtZVNl
dCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50SWZBbGxvd2VkKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFy
ZW50Qm91bmRhcnkoY29uc3QgS1VSTCYgdXJsKQogewogICAgIEZyYW1lVmlldyogdmlldyA9IG1f
ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IExlYWtpbmcgc2Nyb2xsIHBvc2l0aW9uIHRvIGEgY3Jvc3Mtb3JpZ2luIGFuY2VzdG9yIHdvdWxk
IHBlcm1pdCB0aGUgc28tY2FsbGVkICJmcmFtZXNuaWZmaW5nIiBhdHRhY2suCi0gICAgaWYgKHVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FuQmVB
Y2Nlc3NlZEJ5RXZlcnlBbmNlc3RvckZyYW1lKCkpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIkZyYWdtZW50IG5hdmlnYXRpb24gbm90IGFs
bG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLiIpKTsKLSAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIFJlZlB0cjxGcmFtZT4gYm91bmRhcnlGcmFtZSh1cmwuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT5maW5kVW5zYWZlUGFyZW50U2Ny
b2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpIDogMCk7CisKKyAgICBpZiAoYm91bmRhcnlGcmFtZSkK
KyAgICAgICAgYm91bmRhcnlGcmFtZS0+dmlldygpLT5zZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxU
b1BhcmVudChmYWxzZSk7CiAKICAgICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KHVybCk7CisKKyAg
ICBpZiAoYm91bmRhcnlGcmFtZSkKKyAgICAgICAgYm91bmRhcnlGcmFtZS0+dmlldygpLT5zZXRT
YWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCh0cnVlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6Y2FsbENvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiBhcmd1bWVudCwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMTM5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIyLDcgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUZyYWdtZW50U2Nyb2xs
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgc2hvdWxk
Q29udGludWUpOwogCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJv
b2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBGcmFtZUxvYWRU
eXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0ZyYWdtZW50SWZBbGxvd2VkKGNv
bnN0IEtVUkwmKTsKKyAgICB2b2lkIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnko
Y29uc3QgS1VSTCYpOwogCiAgICAgdm9pZCBjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxMTM5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw2ICsxMzksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSogZnJhbWUpCiAgICAgLCBt
X3ZpZXdwb3J0UmVuZGVyZXIoMCkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpCiAg
ICAgLCBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsKGZhbHNlKQorICAgICwgbV9zYWZlVG9Qcm9wYWdh
dGVTY3JvbGxUb1BhcmVudCh0cnVlKQogICAgICwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lcih0aGlz
LCAmRnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKQogICAgICwgbV9kaXNhYmxl
UmVwYWludHMoMCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZhbHNlKQpAQCAtMjMxLDYg
KzIzMiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9maXJzdExheW91dCA9IHRy
dWU7CiAgICAgbV9maXJzdExheW91dENhbGxiYWNrUGVuZGluZyA9IGZhbHNlOwogICAgIG1fd2Fz
U2Nyb2xsZWRCeVVzZXIgPSBmYWxzZTsKKyAgICBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFy
ZW50ID0gdHJ1ZTsKICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBJbnRTaXplKCk7CiAgICAgbV9s
YXN0Wm9vbUZhY3RvciA9IDEuMGY7CiAgICAgbV9kZWZlcnJpbmdSZXBhaW50cyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDExMzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw2ICsyMzAsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCB3YXNTY3JvbGxlZEJ5VXNlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0
V2FzU2Nyb2xsZWRCeVVzZXIoYm9vbCk7CiAKKyAgICBib29sIHNhZmVUb1Byb3BhZ2F0ZVNjcm9s
bFRvUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVu
dDsgfQorICAgIHZvaWQgc2V0U2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoYm9vbCBpc1Nh
ZmUpIHsgbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCA9IGlzU2FmZTsgfQorCiAgICAg
dm9pZCBhZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCopOwogICAgIHZvaWQg
cmVtb3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QqKTsKIApAQCAtNDc0LDcg
KzQ3Nyw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fd2FzU2Nyb2xsZWRCeVVzZXI7CiAgICAg
Ym9vbCBtX2luUHJvZ3JhbW1hdGljU2Nyb2xsOwotICAgIAorICAgIGJvb2wgbV9zYWZlVG9Qcm9w
YWdhdGVTY3JvbGxUb1BhcmVudDsKKwogICAgIHVuc2lnbmVkIG1fZGVmZXJyaW5nUmVwYWludHM7
CiAgICAgdW5zaWduZWQgbV9yZXBhaW50Q291bnQ7CiAgICAgVmVjdG9yPExheW91dFJlY3Q+IG1f
cmVwYWludFJlY3RzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCShyZXZpc2lvbiAxMTM5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcyLDkgKzE2NzIsMTIgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjbwogICAgICAgICAgICAgICAgICAgICB5T2Zm
c2V0ID0gbWF4KDAsIG1pbihmcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0KCksIHlPZmZzZXQpKTsK
IAogICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KHhPZmZzZXQsIHlPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIg
PSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWCgpICsg
ZnJhbWVWaWV3LT54KCkpOwotICAgICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFkocmVjdC55
KCkgLSBmcmFtZVZpZXctPnNjcm9sbFkoKSArIGZyYW1lVmlldy0+eSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lVmlldy0+c2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBvd25lckVsZW1lbnQtPnJl
bmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdS
ZWN0LnNldFgocmVjdC54KCkgLSBmcmFtZVZpZXctPnNjcm9sbFgoKSArIGZyYW1lVmlldy0+eCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WShyZWN0LnkoKSAtIGZyYW1l
Vmlldy0+c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0gMDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExheW91dFJl
Y3Qgdmlld1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE0MTc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDQtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgRnJhbWVzbmlmZmluZyBkZWZlbnNlIGlzIHRvbyBhZ2dyZXNzaXZl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3MjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMt
Y3Jvc3Mtb3JpZ2luLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hv
ci1mcmFtZXMtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1zYW1lLW9yaWdpbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5j
aG9yLWNyb3NzLW9yaWdpbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3Itc2FtZS1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9ncmFuZGNoaWxkLXdpdGgtYW5j
aG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0
aW9uLWlubGluZS1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9uLWlubGluZS1ldmVu
dC1udWxsLWNoYXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1qYXZhc2NyaXB0LVVSTC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Fu
Y2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9uMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2RvbS13cml0ZS1sb2NhdGlvbi1pbmxpbmUtZXZl
bnQtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA0LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSB0aGlzIHNpbmNlIHN2Zy9jdXN0b20v
cmVzb3VyY2VzL2dyZWVuLWNoZWNrZXIucG5nIGNoYW5nZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1wYXJh
bWV0ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEzOTE5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtcGFyYW1ldGVycy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmln
YXRpb24gbm90IGFsbG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLgogVGVzdHMgdGhhdCBy
ZXNvdXJjZXMgcGFuZWwgc2hvd3MgZm9ybSBkYXRhIHBhcmFtZXRlcnMuCiAKICAgCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1jcm9zcy1vcmln
aW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJh
bWVzLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMjMgKzEs
MjEgQEAKLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3
aXRoIGNyb3NzLW9yaWdpbiBmcmFtZXMuCiAKIAogLS0tLS0tLS0KLUZyYW1lOiAnbWFpbicKK0Zy
YW1lOiAnY2hpbGQnCiAtLS0tLS0tLQogVGhpcyBwcmV2ZW50cyBhIGNyb3NzLW9yaWdpbiBpbmZv
cm1hdGlvbiBsZWFrIHNvbWV0aW1lcyBrbm93IGFzIGZyYW1lc25pZmZpbmcuCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0ID4g
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCBpcyB0cnVlCiBQQVNTIGRvY3Vt
ZW50LmJvZHkuc2Nyb2xsVG9wID09IDAgaXMgdHJ1ZQogUEFTUyBkb2N1bWVudC5ib2R5LnNjcm9s
bExlZnQgPT0gMCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKLVRoaXMgaXMgYW4gYW5jaG9yIHBvaW50IG5hbWVkICJhbmNob3IxLgorCiAK
IC0tLS0tLS0tCi1GcmFtZTogJ2Zvb3RlcicKK0ZyYW1lOiAnZ3JhbmRjaGlsZCcKIC0tLS0tLS0t
Ci0KK1RoaXMgaXMgYW4gYW5jaG9yIHBvaW50IG5hbWVkICJhbmNob3IxIi4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLWNyb3NzLW9yaWdpbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNo
b3ItZnJhbWVzLWNyb3NzLW9yaWdpbi5odG1sCShyZXZpc2lvbiAxMTM5MTkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1jcm9zcy1vcmlnaW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMiBAQAogPGh0bWw+CiAgIDwhLS0gU2VlIHJl
c291cmNlcy9mcmFtZS13aXRoLWFuY2hvci1jcm9zcy1vcmlnaW4uaHRtbCBmb3IgZGVzY3JpcHRp
b24gb2YgdGVzdCAtLT4KICAgPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB9CiAgIDwvc2NyaXB0Pgot
ICA8ZnJhbWVzZXQgcm93cz0iOTAlLDEwJSI+Ci0gICAgPGZyYW1lIHNyYz0iaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5jaG9yLWNyb3NzLW9y
aWdpbi5odG1sI2FuY2hvcjEiIG5hbWU9Im1haW4iPgotICAgIDxmcmFtZSBzcmM9ImFib3V0OmJs
YW5rIiBuYW1lPSJmb290ZXIiPgotICA8L2ZyYW1lc2V0PgorICA8IS0tIHNtYWxsIHNhbWUtb3Jp
Z2luIGNoaWxkIGZyYW1lIGxvYWRpbmcgbGFyZ2UgY3Jvc3Mtb3JnaW4gZ3JhbmRjaGlsZCBmcmFt
ZSAtLT4KKyAgPGlmcmFtZSBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3ItY3Jvc3Mt
b3JpZ2luLmh0bWwiIG5hbWU9ImNoaWxkIj4KKyAgPC9pZnJhbWU+CiA8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1zYW1lLW9yaWdp
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2FuY2hvci1mcmFtZXMtc2FtZS1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFtZXMtc2Ft
ZS1vcmlnaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACisKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQnCistLS0tLS0tLQorVGhpcyB0ZXN0cyB0aGF0IHRoZSBm
cmFtZXNuaWZmaW5nIGRlZmVuc2VzIGFyZSBub3Qgb3ZlcnplYWxvdXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID4gMCBpcyB0
cnVlCitQQVNTIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9PSAwIGlzIHRydWUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitG
cmFtZTogJ2dyYW5kY2hpbGQnCistLS0tLS0tLQorVGhpcyBpcyBhbiBhbmNob3IgcG9pbnQgbmFt
ZWQgImFuY2hvcjEiLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Fu
Y2hvci1mcmFtZXMtc2FtZS1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy1zYW1lLW9yaWdpbi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1mcmFt
ZXMtc2FtZS1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgPCEtLSBTZWUgcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYW5jaG9y
LXNhbWUtb3JpZ2luLmh0bWwgZm9yIGRlc2NyaXB0aW9uIG9mIHRlc3QgLS0+CisgIDxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIH0KKyAgPC9zY3JpcHQ+CisgIDwhLS0g
c21hbGwgc2FtZS1vcmlnaW4gY2hpbGQgZnJhbWUgbG9hZGluZyBsYXJnZSBzYW1lLW9yZ2luIGdy
YW5kY2hpbGQgZnJhbWUgLS0+CisgIDxpZnJhbWUgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiIHNy
Yz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgt
YW5jaG9yLXNhbWUtb3JpZ2luLmh0bWwiIG5hbWU9ImNoaWxkIj4KKyAgPC9pZnJhbWU+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Zy
YW1lLXdpdGgtYW5jaG9yLWNyb3NzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3ItY3Jv
c3Mtb3JpZ2luLmh0bWwJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3ItY3Jvc3Mtb3JpZ2luLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMzUgKzQsMjIgQEAKICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgPHNjcmlw
dD4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRo
YXQgbG9hZGluZyBhIGNyb3NzLW9yaWdpbiBmcmFtZSB3aXRoIGEgVVJMIHRoYXQgY29udGFpbnMg
YSBmcmFnbWVudCBwb2ludGVkIGF0IGEgbmFtZWQgYW5jaG9yIGRvZXMgbm90IHNjcm9sbCB0byB0
aGF0IGFuY2hvci4nKTsKKyAgICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGxvYWRpbmcgYSBj
cm9zcy1vcmlnaW4gZnJhbWUgd2l0aCBhIFVSTCB0aGF0IGNvbnRhaW5zIGFuIGFuY2hvciBmcmFn
bWVudCBkb2VzIG5vdCBzY3JvbGwgdGhpcyBmcmFtZS4nKTsKICAgICAgIGRlc2NyaXB0aW9uKCdU
aGlzIHByZXZlbnRzIGEgY3Jvc3Mtb3JpZ2luIGluZm9ybWF0aW9uIGxlYWsgc29tZXRpbWVzIGtu
b3cgYXMgZnJhbWVzbmlmZmluZy4nKTsKLQotICAgICAgLy8gQ2hlY2sgc2Nyb2xsIHBvc2l0aW9u
IGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYW5jaG9yIGhhcwotICAgICAgLy8g
YmVlbiBzY3JvbGxlZCB0by4KKyAgICAgIC8vIENoZWNrIHNjcm9sbCBwb3NpdGlvbiBpbiBhIHRp
bWVvdXQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFuY2hvciBoYXMgbm90IGJlZW4gc2Nyb2xsZWQg
dG8uCiAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSBib2R5IGlzIHRhbGxlciB0aGFuIHRoZSB2aWV3cG9ydCAoaS5lLiBzY3JvbGxp
bmcgaXMgcmVxdWlyZWQpLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5v
ZmZzZXRIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0Jyk7Ci0g
ICAgICAgICAgCi0gICAgICAgICAgLy8gV2UgbXVzdCBub3QgYmUgc2Nyb2xsZWQgYXQgYWxsLgog
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPT0gMCcpOwog
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0ID09IDAnKTsK
LSAgICAgICAgICAKICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsgICAgICAgICAgCiAgICAgICB9
LCAwKTsKICAgICB9Ci0gICAgCiAgICAgdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogICA8L3Nj
cmlwdD4gIAogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQotPGRpdiBzdHlsZT0iaGVp
Z2h0OiAyMDAwcHgiPgotICA8IS0tIFNwYWNlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmFtZWQg
YW5jaG9yIGJlbG93IHJlcXVpcmVzIHNjcm9sbGluZyAtLT4KLTwvZGl2PgotCi08YSBuYW1lPSJh
bmNob3IxIj5UaGlzIGlzIGFuIGFuY2hvciBwb2ludCBuYW1lZCAiYW5jaG9yMTwvYT4uCis8Ym9k
eT4KKzwhLS0gbGFyZ2UgY3Jvc3Mtb3JpZ2luIGdyYW5kY2hpbGQgZnJhbWUgLS0+Cis8aWZyYW1l
IGhlaWdodD0iODAwMCIgd2lkdGg9IjgwMDAiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL25h
dmlnYXRpb24vcmVzb3VyY2VzL2dyYW5kY2hpbGQtd2l0aC1hbmNob3IuaHRtbCNhbmNob3IxIiBu
YW1lPSJncmFuZGNoaWxkIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2lmcmFtZT4KIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3Jlc291cmNlcy9mcmFtZS13aXRoLWFuY2hvci1zYW1lLW9yaWdpbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUt
d2l0aC1hbmNob3Itc2FtZS1vcmlnaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hbmNob3Itc2FtZS1v
cmlnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICBkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBsb2FkaW5nIGEgc2FtZS1v
cmlnaW4gZnJhbWUgd2l0aCBhIFVSTCB0aGF0IGNvbnRhaW5zIGFuIGFuY2hvciBmcmFnbWVudCBk
b2VzIHNjcm9sbCB0aGlzIGZyYW1lLicpOworICAgICAgZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMg
dGhhdCB0aGUgZnJhbWVzbmlmZmluZyBkZWZlbnNlcyBhcmUgbm90IG92ZXJ6ZWFsb3VzLicpOwor
ICAgICAgLy8gQ2hlY2sgc2Nyb2xsIHBvc2l0aW9uIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUg
dGhhdCB0aGUgYW5jaG9yIGhhcyBiZWVuIHNjcm9sbGVkIHRvLgorICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICBzaG91bGRCZVRydWUoJ2RvY3VtZW50LmJvZHkuc2Nyb2xs
VG9wID4gMCcpOworICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5zY3JvbGxM
ZWZ0ID09IDAnKTsKKyAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsgICAgICAgICAgCisgICAgICB9
LCAwKTsKKyAgICB9CisgICAgdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICA8L3NjcmlwdD4g
IAorPC9oZWFkPgorPGJvZHk+Cis8IS0tIGxhcmdlIHNhbWUtb3JpZ2luIGdyYW5kY2hpbGQgZnJh
bWUgLS0+Cis8aWZyYW1lIGhlaWdodD0iODAwMCIgd2lkdGg9IjgwMDAiIHNyYz0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2dyYW5kY2hpbGQtd2l0aC1hbmNob3Iu
aHRtbCNhbmNob3IxIiBuYW1lPSJncmFuZGNoaWxkIiBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2lm
cmFtZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9ncmFuZGNoaWxkLXdpdGgtYW5jaG9yLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9ncmFuZGNoaWxkLXdpdGgtYW5jaG9yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2dyYW5kY2hpbGQtd2l0aC1hbmNob3Iu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDIwMDBweCI+CisgIDwhLS0gU3BhY2VyIHRv
IG1ha2Ugc3VyZSB0aGF0IHRoZSBuYW1lZCBhbmNob3IgYmVsb3cgcmVxdWlyZXMgc2Nyb2xsaW5n
IC0tPgorPC9kaXY+Cis8YSBuYW1lPSJhbmNob3IxIj5UaGlzIGlzIGFuIGFuY2hvciBwb2ludCBu
YW1lZCAiYW5jaG9yMSI8L2E+LgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0
aW9uMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9uMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbjItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2Vk
IHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZv
dW5kIHdpdGhpbiByZXF1ZXN0LgogCi1DT05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmlnYXRp
b24gbm90IGFsbG93ZWQgd2l0aCBjcm9zcy1vcmlnaW4gZnJhbWVzLgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1kb20td3JpdGUt
bG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACiBDT05TT0xFIE1FU1NBR0U6IFJlZnVz
ZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQg
Zm91bmQgd2l0aGluIHJlcXVlc3QuCiAKLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2aWdh
dGlvbiBub3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBmcmFtZXMuCiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0
ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0
ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTM5MTkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9yLXVybC1k
b20td3JpdGUtbG9jYXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDMgQEAKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEg
SmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVx
dWVzdC4KIAotQ09OU09MRSBNRVNTQUdFOiBGcmFnbWVudCBuYXZpZ2F0aW9uIG5vdCBhbGxvd2Vk
IHdpdGggY3Jvc3Mtb3JpZ2luIGZyYW1lcy4KLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2
aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRoIGNyb3NzLW9yaWdpbiBmcmFtZXMuCiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13
cml0ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvYW5jaG9y
LXVybC1kb20td3JpdGUtbG9jYXRpb24taW5saW5lLWV2ZW50LW51bGwtY2hhci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDExMzkxOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtbnVs
bC1jaGFyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDMgQEAKIENPTlNP
TEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJj
ZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KIAotQ09OU09MRSBNRVNTQUdF
OiBGcmFnbWVudCBuYXZpZ2F0aW9uIG5vdCBhbGxvd2VkIHdpdGggY3Jvc3Mtb3JpZ2luIGZyYW1l
cy4KLUNPTlNPTEUgTUVTU0FHRTogRnJhZ21lbnQgbmF2aWdhdGlvbiBub3QgYWxsb3dlZCB3aXRo
IGNyb3NzLW9yaWdpbiBmcmFtZXMuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9hbmNob3ItdXJsLWRvbS13cml0ZS1sb2NhdGlvbi1qYXZhc2NyaXB0
LVVSTC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9uLWphdmFzY3Jp
cHQtVVJMLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEzOTE5KQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2FuY2hvci11cmwtZG9tLXdyaXRlLWxvY2F0aW9u
LWphdmFzY3JpcHQtVVJMLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMg
QEAKIENPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3Jp
cHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KIAotQ09OU09M
RSBNRVNTQUdFOiBGcmFnbWVudCBuYXZpZ2F0aW9uIG5vdCBhbGxvd2VkIHdpdGggY3Jvc3Mtb3Jp
Z2luIGZyYW1lcy4KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2RvbS13cml0ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9kb20t
d3JpdGUtbG9jYXRpb24taW5saW5lLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEzOTE5
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2RvbS13cml0
ZS1sb2NhdGlvbi1pbmxpbmUtZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsMyBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2Ny
aXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0Lgog
Ci1DT05TT0xFIE1FU1NBR0U6IEZyYWdtZW50IG5hdmlnYXRpb24gbm90IGFsbG93ZWQgd2l0aCBj
cm9zcy1vcmlnaW4gZnJhbWVzLgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>