<?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>21840</bug_id>
          
          <creation_ts>2008-10-23 15:12:10 -0700</creation_ts>
          <short_desc>execCommand insertImage inserts image into wrong place</short_desc>
          <delta_ts>2010-03-09 21:35:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.plexode.com/cgi-bin/eval2.py#var%20div%20%3D%20document.createElement(%22div%22)%3B%0Adiv.contentEditable%20%3D%20true%3B%0Adocument.body.appendChild(div)%3B%0Adiv.innerHTML%20%3D%20&apos;%3Cb%3EInside%3C%2Fb%3EOutside&apos;%3B%0Avar%20b%20%3D%20div.childNodes%5B1%5D%3B%0A%0A%2F%2F%20Select%20the%20text%20%22Outside%22%0Avar%20sel%20%3D%20window.getSelection()%3B%0Avar%20rng%20%3D%20document.createRange()%3B%0Arng.selectNode(b)%3B%0Asel.removeAllRanges()%3B%0Asel.addRange(rng)%3B%0Adiv.focus()%3B%0A%0A%2F%2F%20Insert%20an%20image%20on%20top%20of%20%22Outside%22%0Adocument.execCommand(%22insertImage%22%2C%20false%2C%20%22http%3A%2F%2Fwww.google.com%2Fimages%2Fart.gif%22)%3B%0A%2F%2F%20Image%20is%20inside%20B%20tag%20now%0Adiv.innerHTML%0A</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alexander.steitz</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>96428</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2008-10-23 15:12:10 -0700</bug_when>
    <thetext>Given the following html: &lt;b&gt;inside&lt;/b&gt;outside
1. Select &quot;outside&quot;
2. execCommand(&apos;insertImage&apos;, false, &apos;myFavoriteImageUrl&apos;)

result: &lt;b&gt;inside&lt;img src=&apos;myFavoriteImageUrl&apos;&gt;&lt;/b&gt; (image inside B tag)
expected result: &lt;b&gt;inside&lt;/b&gt;&lt;img src=&apos;myFavoriteImageUrl&apos;&gt; (image outside B tag)

Click &quot;eval once&quot; in the link above to see demo.
Also seen in Chrome.

You can run the same demo in FF 3 and see that the image goes outside the B tag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96454</commentid>
    <comment_count>1</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2008-10-23 17:13:55 -0700</bug_when>
    <thetext>Note that the same thing happens if you use execCommand(&apos;insertHTML&apos;, false, &quot;myHtml&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130273</commentid>
    <comment_count>2</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-07-07 14:20:53 -0700</bug_when>
    <thetext>Both insertImage and insertHtml use executeInsertFragment under the covers, this is probably where the bug is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184486</commentid>
    <comment_count>3</comment_count>
      <attachid>47384</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-25 21:04:14 -0800</bug_when>
    <thetext>Created attachment 47384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184488</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-25 21:07:51 -0800</bug_when>
    <thetext>ReplaceSelection first deletes the selected text, then inserts the new HTML.  Unfortunately, DeleteSelection updates the cursor position after the delete to a visible position.  After the text is deleted, all we have left is &lt;b&gt;inside&lt;/b&gt; and the visible position is inside the &lt;/b&gt;.

To work around this, I save the insertion position as a dom node + offset (in this case, it would be that parent of the bold node with an offset of 1) before the delete and set the insertion position after the delete has happened rather than just using the cursor position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185347</commentid>
    <comment_count>5</comment_count>
      <attachid>47384</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-27 23:19:54 -0800</bug_when>
    <thetext>Comment on attachment 47384
Patch

I have a better fix for this that also fixes bug 23993.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185362</commentid>
    <comment_count>6</comment_count>
      <attachid>47595</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-28 00:00:43 -0800</bug_when>
    <thetext>Created attachment 47595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185363</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-28 00:04:24 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=47595) [details]
&gt; Patch

This fixes the bug by changing the destination position in ReplaceSelection to be outside the end of preceding nodes as long as the visual position doesn&apos;t change.  This had the nice side effect of removing some extraneous spans from some other tests.

This also fixes bug 23993.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185688</commentid>
    <comment_count>8</comment_count>
      <attachid>47595</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-28 18:44:36 -0800</bug_when>
    <thetext>Comment on attachment 47595
Patch

Bah. Chrome/WebKit lost all my work I had typed into this field. :(

My comments again, in brief:
- ChangeLog needs information as to what your rebaseline changes are?  I don&apos;t understand why we&apos;re adding SPANs in some tests, etc.
- Tests are clearer when they include the expected results in them, and print PASS/FAIL.  backspace-avoid-preceding-style.html does not include its own expected results (it&apos;s OK as is, but could be better).
- I think I would have split this while() out into early returns:
 110     while (!pos.node()-&gt;hasTagName(brTag) &amp;&amp; enclosing != pos.node() &amp;&amp; VisiblePosition(pos) == VisiblePosition(pos.next()))
- What happens in the &quot;return pos&quot; case?  Should we ASSERT then?  Isn&apos;t that someone calling this function with an invalid position?  Or certainly there is a case where we try to walk out of the current position, and we should ASSERT then, no?
- It&apos;s not clear to me why enclosingBlockFlowElement is the right way to avoid the preceding nodes.

Why isn&apos;t this just the downstream position?  Or maybe I&apos;m mixing my terms.  I think downstream positions are same equivalent visible position but the &quot;last&quot; position inside that equivilancy set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185712</commentid>
    <comment_count>9</comment_count>
      <attachid>47670</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-28 20:41:09 -0800</bug_when>
    <thetext>Created attachment 47670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185713</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-28 20:41:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 47595 [details])
&gt; Bah. Chrome/WebKit lost all my work I had typed into this field. :(
&gt; 
&gt; My comments again, in brief:
&gt; - ChangeLog needs information as to what your rebaseline changes are?  I don&apos;t
&gt; understand why we&apos;re adding SPANs in some tests, etc.

These spans were previously necessary to undo styles added by preceding
nodes.  For example, &lt;b&gt;foo&lt;span style=&quot;text-weight:normal&quot;&gt;bar&lt;/span&gt;&lt;/b&gt;
is now just &lt;b&gt;foo&lt;/b&gt;bar.  The pixel tests all pass, so this is a less HTML
alternative.

Updated the ChangeLog to describe this.

&gt; - Tests are clearer when they include the expected results in them, and print
&gt; PASS/FAIL.  backspace-avoid-preceding-style.html does not include its own
&gt; expected results (it&apos;s OK as is, but could be better).

I&apos;ve updated backspace-avoid-preceding-style to now say &quot;PASS&quot;.

&gt; - I think I would have split this while() out into early returns:
&gt;  110     while (!pos.node()-&gt;hasTagName(brTag) &amp;&amp; enclosing != pos.node() &amp;&amp;
&gt; VisiblePosition(pos) == VisiblePosition(pos.next()))

Sure, done.

&gt; - What happens in the &quot;return pos&quot; case?  Should we ASSERT then?  Isn&apos;t that
&gt; someone calling this function with an invalid position?  Or certainly there is
&gt; a case where we try to walk out of the current position, and we should ASSERT
&gt; then, no?

I don&apos;t understand the question.  We return the updated position.  It&apos;s ok if we
don&apos;t need to update the position, but they&apos;re all valid.

&gt; - It&apos;s not clear to me why enclosingBlockFlowElement is the right way to avoid
&gt; the preceding nodes.

This is kind of tricky.  It&apos;s because the visual position is the same, even
though we&apos;re in a different block.  For example, the two positions below are
the same visually:
&lt;div&gt;foo^&lt;/div&gt;^

but if we insert in the latter, we end up in a new paragraph.
I added a comment trying to explain this.

&gt; Why isn&apos;t this just the downstream position?  Or maybe I&apos;m mixing my terms.  I
&gt; think downstream positions are same equivalent visible position but the &quot;last&quot;
&gt; position inside that equivilancy set.

I tried using downstream originally, but it doesn&apos;t seem to work.  I think it&apos;s
because downstream wants to return positions that are either in a text node or
just before a non-text node (according to a comment in Position.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185718</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-28 21:06:15 -0800</bug_when>
    <thetext>This patch does the wrong thing with the following html:
&lt;b&gt;foo|bar|&lt;/b&gt;baz

Where &quot;|&quot; is the start/end of the selection. It inserts the new HTML after the b tag instead of inside of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185726</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-28 21:39:20 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; This patch does the wrong thing with the following html:
&gt; &lt;b&gt;foo|bar|&lt;/b&gt;baz
&gt; 
&gt; Where &quot;|&quot; is the start/end of the selection. It inserts the new HTML after the
&gt; b tag instead of inside of it.

You&apos;re right, it does the wrong thing, but that&apos;s the behavior I&apos;m seeing on ToT w/o the patch.  I don&apos;t think this patch regresses that behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185736</commentid>
    <comment_count>13</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-01-28 22:06:52 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; This patch does the wrong thing with the following html:
&gt; &gt; &lt;b&gt;foo|bar|&lt;/b&gt;baz
&gt; &gt; 
&gt; &gt; Where &quot;|&quot; is the start/end of the selection. It inserts the new HTML after the
&gt; &gt; b tag instead of inside of it.
&gt; 
&gt; You&apos;re right, it does the wrong thing, but that&apos;s the behavior I&apos;m seeing on
&gt; ToT w/o the patch.  I don&apos;t think this patch regresses that behavior.

I&apos;m not 100% convinced that this is the right approach, I&apos;ll do some investigation and I&apos;ll get back to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185740</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-28 22:29:28 -0800</bug_when>
    <thetext>Nevermind, as tony said, the case I&apos;m pointing out currently fails on trunk and is a separate, but related bug. Test page: http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%20id%3Douter%20contentEditable%3E%3Cb%20id%3Dinner%3EInside%3C%2Fb%3EOutside%3C%2Fdiv%3E&amp;ohh=1&amp;ohj=0&amp;jt=var%20b%20%3D%20inner.firstChild%3B%0Awindow.getSelection().setBaseAndExtent(b%2C%201%2C%20b%2C%206)%3B%0Adocument.execCommand(%22insertImage%22%2C%20false%2C%20%22http%3A%2F%2Fwww.google.com%2Fimages%2Fart.gif%22)%3B%0Aouter.innerHTML&amp;ojh=1&amp;ojj=0&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185973</commentid>
    <comment_count>15</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-01-29 14:53:59 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Nevermind, as tony said, the case I&apos;m pointing out currently fails on trunk and
&gt; is a separate, but related bug. Test page:
&gt; http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%20id%3Douter%20contentEditable%3E%3Cb%20id%3Dinner%3EInside%3C%2Fb%3EOutside%3C%2Fdiv%3E&amp;ohh=1&amp;ohj=0&amp;jt=var%20b%20%3D%20inner.firstChild%3B%0Awindow.getSelection().setBaseAndExtent(b%2C%201%2C%20b%2C%206)%3B%0Adocument.execCommand(%22insertImage%22%2C%20false%2C%20%22http%3A%2F%2Fwww.google.com%2Fimages%2Fart.gif%22)%3B%0Aouter.innerHTML&amp;ojh=1&amp;ojj=0&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1

I think that a simpler and cleaner approach would be to modify DeleteSelectionCommand to add a placeholder in a case like this.
Creating a placeholder when you are deleting is easier than trying to find the correct position after you deleted.
It has the benefit of minimizing the code changes without introducing a new way of finding the position, while still keeping the benefit of eliminating all the spans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186110</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-30 05:31:49 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I think that a simpler and cleaner approach would be to modify
&gt; DeleteSelectionCommand to add a placeholder in a case like this.
&gt; Creating a placeholder when you are deleting is easier than trying to find the
&gt; correct position after you deleted.
&gt; It has the benefit of minimizing the code changes without introducing a new way
&gt; of finding the position, while still keeping the benefit of eliminating all the
&gt; spans.

That was my first attempt at fixing the bug :)

The problem was that adding a placeholder changes the behavior of DeleteSelection.  It changes how mergeParagraphs works and it changes the logic about whether to insert a break or not at the end of a document.  This causes lots of other layout tests to fail.

This lead me to the current approaches on this bug: keep track of the position by not modifying the DOM.  The first patch on this bug does that, but doesn&apos;t handle the isCaret() case so it doesn&apos;t fix bug 23993.  This could be fixed, but it ends up being more complicated because it has to handle cases where the insertion position is deleted by DeleteSelection (because, e.g., dom nodes are copied or paragraphs are merged).  It turns out that it is simpler to just compute the position after the all the DOM modifications have ended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186462</commentid>
    <comment_count>17</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-01 09:55:31 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; I think that a simpler and cleaner approach would be to modify
&gt; &gt; DeleteSelectionCommand to add a placeholder in a case like this.
&gt; &gt; Creating a placeholder when you are deleting is easier than trying to find the
&gt; &gt; correct position after you deleted.
&gt; &gt; It has the benefit of minimizing the code changes without introducing a new way
&gt; &gt; of finding the position, while still keeping the benefit of eliminating all the
&gt; &gt; spans.
&gt; 
&gt; That was my first attempt at fixing the bug :)
&gt; 
&gt; The problem was that adding a placeholder changes the behavior of
&gt; DeleteSelection.  It changes how mergeParagraphs works and it changes the logic
&gt; about whether to insert a break or not at the end of a document.  This causes
&gt; lots of other layout tests to fail.
&gt; 
&gt; This lead me to the current approaches on this bug: keep track of the position
&gt; by not modifying the DOM.  The first patch on this bug does that, but doesn&apos;t
&gt; handle the isCaret() case so it doesn&apos;t fix bug 23993.  This could be fixed,
&gt; but it ends up being more complicated because it has to handle cases where the
&gt; insertion position is deleted by DeleteSelection (because, e.g., dom nodes are
&gt; copied or paragraphs are merged).  It turns out that it is simpler to just
&gt; compute the position after the all the DOM modifications have ended.

I&apos;m not suggesting that you leave a placeholder all the time. 
If you limit the scope of the change to DeleteSelection to only cases where the lack of a placeholder leads to ambiguity about where to insert the new content, you should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186700</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 16:52:17 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I&apos;m not suggesting that you leave a placeholder all the time. 
&gt; If you limit the scope of the change to DeleteSelection to only cases where the
&gt; lack of a placeholder leads to ambiguity about where to insert the new content,
&gt; you should be fine.

Right, I tried that.  I added a flag to DeleteSelection and only set the flag in ReplaceSelectionCommand.cpp when needed.  One example problem is that when you press the delete key, this calls DeleteSelectionCommand::doApply, which calls DeleteSelectionCommand::mergeParagraphs, which calls CompositeEditCommand::moveParagraphs which calls ReplaceSelectionCommand which causes the extra BR to be inserted.  In this case, we don&apos;t want a BR since we&apos;re just deleting.

If you think it&apos;s worthwhile, I will resurrect the patch and upload it for comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197239</commentid>
    <comment_count>19</comment_count>
      <attachid>47670</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-08 11:02:45 -0800</bug_when>
    <thetext>Comment on attachment 47670
Patch

This discussion seems to have stalled a month ago.  I&apos;m not an editing expert, but this patch seems reasonable to me.  In the interest of moving forward, I&apos;m marking this r+.

Tony: Please give Enrica some time to respond before landing this patch.

Enrica: If you still have concerns, please feel free to convert my r+ to an r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197243</commentid>
    <comment_count>20</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-03-08 11:12:07 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 47670 [details])
&gt; This discussion seems to have stalled a month ago.  I&apos;m not an editing expert,
&gt; but this patch seems reasonable to me.  In the interest of moving forward, I&apos;m
&gt; marking this r+.
&gt; 
&gt; Tony: Please give Enrica some time to respond before landing this patch.
&gt; 
&gt; Enrica: If you still have concerns, please feel free to convert my r+ to an r-.

I think the approach is reasonable. I don&apos;t have any objection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197881</commentid>
    <comment_count>21</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-09 21:32:35 -0800</bug_when>
    <thetext>Committed r55762: &lt;http://trac.webkit.org/changeset/55762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197883</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-09 21:35:22 -0800</bug_when>
    <thetext>*** Bug 23993 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47384</attachid>
            <date>2010-01-25 21:04:14 -0800</date>
            <delta_ts>2010-01-28 00:00:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21840-20100126140412.patch</filename>
            <type>text/plain</type>
            <size>5615</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NmMzMzdhLi5lMTk5OGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEt
MjUgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NDAKKyAgICAgICAgV2hlbiBpbnNlcnRpbmcgSFRNTCBuZWFyIHRoZSBi
b3VuZGFyeSBvZiBvdGhlciBkb20gbm9kZXMsIG1ha2UKKyAgICAgICAgc3VyZSB0aGF0IHRoZSBp
bnNlcnRlZCBIVE1MIGRvZXNuJ3QgZW5kIHVwIGluc2lkZSBhZGphY2VudCBET00KKyAgICAgICAg
bm9kZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUt
Ym91bmRhcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGlu
Zy9yZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjUg
IEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDNjYTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUt
Ym91bmRhcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFy
eS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxl
LWJvdW5kYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4M2E2
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlcGxh
Y2UtYXQtdmlzaWJsZS1ib3VuZGFyeS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxib2R5IGNvbnRl
bnRFZGl0YWJsZT0idHJ1ZSI+Cis8YiBpZD0iYm9sZCI+Ym9sZDwvYj5yZWd1bGFyIHRleHQ8YnI+
Cis8L2JvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1bmN0aW9uIGZhaWwobXNnKSB7Cisg
ICAgICAgIGNvbnNvbGUubG9nKG1zZyk7CisgICAgICAgIHRocm93IG1zZzsKKyAgICB9CisKKyAg
ICAvLyBJbnNlcnRpbmcgSFRNTCBvdmVyICJyZWd1bGFyIHRleHQiIHNob3VsZG4ndCBiZSBpbiB0
aGUgYm9sZCB0YWcuCisgICAgdmFyIGJvbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9s
ZCIpOworICAgIHZhciB1bmJvbGRUZXh0ID0gYm9sZC5uZXh0U2libGluZzsKKyAgICBleGVjU2V0
U2VsZWN0aW9uQ29tbWFuZCh1bmJvbGRUZXh0LCAwLCB1bmJvbGRUZXh0LCB1bmJvbGRUZXh0LnRl
eHRDb250ZW50Lmxlbmd0aCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydEhUTUwi
LCBmYWxzZSwgIjxpbWcgaWQ9J2ltZycgc3JjPScuLi9yZXNvdXJjZXMvYWJlLnBuZycgLz4gbm90
IGJvbGQiKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBpbWFnZSBpc24ndCBpbiB0aGUgYm9s
ZCB0YWcuCisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIpOwor
ICAgIGlmIChpbWFnZS5wcmV2aW91c1NpYmxpbmcgIT0gYm9sZCkKKyAgICAgICAgZmFpbCgiSW1h
Z2Ugc2hvdWxkIGJlIGFkamFjZW50IHRvIHRoZSBib2xkIG5vZGUuIik7CisKKyAgICAvLyBOb3cg
dHJ5IGluc2VydGluZyBIVE1MIG92ZXIgdGhlIGltYWdlLgorICAgIGV4ZWNTZXRTZWxlY3Rpb25D
b21tYW5kKGltYWdlLCAwLCBpbWFnZSwgMSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImlu
c2VydGh0bWwiLCBmYWxzZSwgIjxzcGFuIGlkPSdyZWQnIHN0eWxlPSdjb2xvcjpyZWQnPnJlZCB0
ZXh0PC9zcGFuPiIpOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlZCB0ZXh0IGlzbid0IGlu
IHRoZSBib2xkIHRhZy4KKyAgICB2YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
ZCIpOworICAgIGlmIChyZWQucHJldmlvdXNTaWJsaW5nICE9IGJvbGQpCisgICAgICAgIGZhaWwo
IlJlZCB0ZXh0IHNob3VsZCBiZSBhZGphY2VudCB0byB0aGUgYm9sZCBub2RlLiIpOworCisgICAg
Ly8gUmVwbGFjZSB0ZXh0IHdpdGggU1VDQ0VTUy4KKyAgICBkb2N1bWVudC5ib2R5LmlubmVySFRN
TCA9ICJTVUNDRVNTIjsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmJhZTNkLi5jMDg2OGYyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEwLTAxLTI1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQwCisgICAgICAgIFdoZW4gaW5zZXJ0aW5nIEhUTUwg
bmVhciB0aGUgYm91bmRhcnkgb2Ygb3RoZXIgZG9tIG5vZGVzLCBtYWtlCisgICAgICAgIHN1cmUg
dGhhdCB0aGUgaW5zZXJ0ZWQgSFRNTCBkb2Vzbid0IGVuZCB1cCBpbnNpZGUgYWRqYWNlbnQgRE9N
CisgICAgICAgIG5vZGVzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL3JlcGxh
Y2UtYXQtdmlzaWJsZS1ib3VuZGFyeS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KToKKwogMjAxMC0wMS0yNSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYjQwZGFiMi4uN2Q3YmMx
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC03
NTgsNiArNzU4LDIyIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICBtX3ByZXZlbnROZXN0aW5nID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHNlbGVjdGlv
bi5pc1JhbmdlKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiB3ZSdyZSBkZWxldGlu
ZyBpcyBhIGJvdW5kYXJ5IGJldHdlZW4gdHdvIGRpZmZlcmVudAorICAgICAgICAvLyBub2Rlcywg
d2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaHRtbCB3ZSdyZSBpbnNlcnRpbmcgZG9lc24n
dAorICAgICAgICAvLyBlbmQgdXAgaW5zaWRlIHRoZSB1bnNlbGVjdGVkIG5vZGUuICBTaW5jZSBk
ZWxldGVTZWxlY3Rpb24gb25seQorICAgICAgICAvLyBrbm93cyBhYm91dCBWaXNpYmxlUG9zaXRp
b25zLCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBpbnNlcnRpb24KKyAgICAgICAgLy8gcG9zaXRpb24g
YXMgYSBET00gbm9kZSBhbmQgb2Zmc2V0IChsaWtlIGEgRE9NIHJhbmdlKS4KKyAgICAgICAgUG9z
aXRpb24gc3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpOworICAgICAgICBOb2RlKiBp
bnNlcnRpb25QYXJlbnQgPSAwOworICAgICAgICB1bnNpZ25lZCBpbnNlcnRpb25PZmZzZXQgPSAw
OworICAgICAgICBpZiAoc3RhcnQubm9kZSgpLT5pc0hUTUxFbGVtZW50KCkgfHwgKHN0YXJ0Lm5v
ZGUoKS0+aXNUZXh0Tm9kZSgpICYmICAhc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpKSB7
CisgICAgICAgICAgICBpbnNlcnRpb25QYXJlbnQgPSBzdGFydC5ub2RlKCktPnBhcmVudCgpOwor
ICAgICAgICAgICAgZm9yICg7IGluc2VydGlvbk9mZnNldCA8IGluc2VydGlvblBhcmVudC0+Y2hp
bGROb2RlQ291bnQoKTsgKytpbnNlcnRpb25PZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aW5zZXJ0aW9uUGFyZW50LT5jaGlsZE5vZGUoaW5zZXJ0aW9uT2Zmc2V0KSA9PSBzdGFydC5ub2Rl
KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUKGluc2VydGlvbk9mZnNldCA8IGluc2VydGlvblBhcmVudC0+Y2hpbGROb2RlQ291
bnQoKSk7CisgICAgICAgIH0KICAgICAgICAgLy8gV2hlbiB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rp
b24gYmVpbmcgcGFzdGVkIGludG8gaXMgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCwgYW5kIHRo
YXQgc2VsZWN0aW9uCiAgICAgICAgIC8vIHNwYW5zIG11bHRpcGxlIGJsb2Nrcywgbm90IG1lcmdp
bmcgbWF5IGxlYXZlIGFuIGVtcHR5IGxpbmUuCiAgICAgICAgIC8vIFdoZW4gdGhlIHN0YXJ0IG9m
IHRoZSBzZWxlY3Rpb24gYmVpbmcgcGFzdGVkIGludG8gaXMgYXQgdGhlIHN0YXJ0IG9mIGEgYmxv
Y2ssIG5vdCBtZXJnaW5nIApAQCAtNzc3LDYgKzc5MywxMCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3IoKTsKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25Qb3MgPSBlbmRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpOworICAgICAgICAvLyBJZiB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGlu
c2lkZSBhIG5vZGUgdGhhdCB3YXNuJ3QgcGFydCBvZiB0aGUKKyAgICAgICAgLy8gZGVsZXRlZCB0
ZXh0LCBhZGp1c3Qgb3VyIHBvc2l0aW9uIHRvIG91dHNpZGUgdGhlIG5vZGUuCisgICAgICAgIGlm
IChpbnNlcnRpb25QYXJlbnQgJiYgaW5zZXJ0aW9uUGFyZW50LT5pbkRvY3VtZW50KCkgJiYgY29t
cGFyZVBvc2l0aW9ucyhpbnNlcnRpb25Qb3MsIFBvc2l0aW9uKGluc2VydGlvblBhcmVudCwgaW5z
ZXJ0aW9uT2Zmc2V0KSkgPCAwKQorICAgICAgICAgICAgaW5zZXJ0aW9uUG9zID0gUG9zaXRpb24o
aW5zZXJ0aW9uUGFyZW50LCBpbnNlcnRpb25PZmZzZXQpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVChzZWxlY3Rpb24uaXNDYXJldCgpKTsKICAgICAgICAgaWYgKGZyYWdtZW50Lmhhc0lu
dGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47595</attachid>
            <date>2010-01-28 00:00:43 -0800</date>
            <delta_ts>2010-01-28 20:41:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21840-20100128170041.patch</filename>
            <type>text/plain</type>
            <size>24948</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NDE3Yjk5Li45MDQ2MWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDEt
MjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NDAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTkzCisKKyAgICAgICAgRml4IGFuIGVkaXRpbmcgYnVnIHdoZXJlIHJlcGxh
Y2luZyBhIHNlbGVjdGlvbiB3b3VsZCByZXN1bHQgaW4gdGhlCisgICAgICAgIG5ldyB0ZXh0IGVu
ZGluZyB1cCBpbnNpZGUgbm9kZXMgdGhhdCB3ZXJlIG5vdCB2aXNpYmx5IGluY2x1ZGVkIGluIHRo
ZQorICAgICAgICBzZWxlY3Rpb24uICBJbnN0ZWFkLCBtb3ZlIG91ciBkZXN0aW5hdGlvbiBwb3Np
dGlvbiBvdXQgb2Ygbm9kZXMgdGhhdAorICAgICAgICB3ZXJlIG5vdCB2aXNpYmx5IGluY2x1ZGVk
LgorCisgICAgICAgIFR3byBuZXcgdGVzdHMgdG8gdmVyaWZ5IHRoZSBuZXcgYmVoYXZpb3IgYW5k
IGEgcmViYXNlbGluZSBvZiBzb21lCisgICAgICAgIHRlc3QgcmVzdWx0cyB3aGVyZSB3ZSBub3cg
cmVtb3ZlIGV4dHJhIHNwYW4gdGFncy4gIFRoZSB2aXN1YWwgcmVzdWx0CisgICAgICAgIGlzIHRo
ZSBzYW1lIGFzIGJlZm9yZSwgd2UganVzdCBoYXZlIGxlc3MgdGFncy4KKworICAgICAgICAqIGVk
aXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2b2lkLXByZWNlZGluZy1zdHlsZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2b2lkLXBy
ZWNlZGluZy1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9y
ZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLTM4NTc3
NTMtZml4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWRpdi0wMjYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LWF0LXRhYnNwYW4tMDAyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRp
dGluZy9zdHlsZS9mb250LWZhbWlseS13aXRoLXNwYWNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9zbW9vc2gtc3R5bGVzLTAwMS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvc3R5bGUtYm91bmRhcnkt
MDA1LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMS0yNyAgSm9obiBBYmQtRWwtTWFsZWsgIDxqYW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2b2lkLXBy
ZWNlZGluZy1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2JhY2tzcGFjZS1hdm9pZC1wcmVjZWRpbmctc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MjZlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2JhY2tzcGFjZS1hdm9pZC1wcmVjZWRpbmctc3R5bGUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAordW5kZXJsaW5lbm90IHVuZGVybGluZWQKKwor
PHU+dW5kZXJsaW5lPC91Pm5vdCB1bmRlcmxpbmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2b2lkLXByZWNlZGluZy1zdHlsZS5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9iYWNrc3BhY2UtYXZvaWQtcHJlY2VkaW5nLXN0
eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmYjc4ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2
b2lkLXByZWNlZGluZy1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzxib2R5IGNvbnRlbnRF
ZGl0YWJsZT0idHJ1ZSI+Cis8ZGl2IGlkPSJ0ZXN0LWNhc2UiPgorICA8dT51bmRlcmxpbmU8L3U+
PGRpdiBpZD0ibm90LXVuZGVybGluZWQiPm5vdCB1bmRlcmxpbmVkPC9kaXY+Cis8L2Rpdj4KKzxk
aXYgaWQ9InJlc3VsdHMiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAv
LyBQcmVzc2luZyBkZWxldGUgdG8gbWVyZ2UgdGhlIHR3byBsaW5lcyBzaG91bGQgbm90IGNhdXNl
IHRoZSB0ZXh0CisgICAgLy8gIm5vdCB1bmRlcmxpbmVkIiB0byBiZSBpbnNpZGUgdGhlIDx1PiB0
YWcuCisgICAgdmFyIHNlY29uZExpbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90LXVu
ZGVybGluZWQiKTsKKyAgICBleGVjU2V0U2VsZWN0aW9uQ29tbWFuZChzZWNvbmRMaW5lLCAwLCBz
ZWNvbmRMaW5lLCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRGVsZXRlIik7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNhc2UiKS5pbm5lckhUTUw7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1i
b3VuZGFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9yZXBs
YWNlLWF0LXZpc2libGUtYm91bmRhcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZmNDNjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFyeS5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxlLWJvdW5kYXJ5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4M2E2MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFy
eS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxib2R5IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+Cis8
YiBpZD0iYm9sZCI+Ym9sZDwvYj5yZWd1bGFyIHRleHQ8YnI+Cis8L2JvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGZ1bmN0aW9uIGZhaWwobXNnKSB7CisgICAgICAgIGNvbnNvbGUubG9nKG1z
Zyk7CisgICAgICAgIHRocm93IG1zZzsKKyAgICB9CisKKyAgICAvLyBJbnNlcnRpbmcgSFRNTCBv
dmVyICJyZWd1bGFyIHRleHQiIHNob3VsZG4ndCBiZSBpbiB0aGUgYm9sZCB0YWcuCisgICAgdmFy
IGJvbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9sZCIpOworICAgIHZhciB1bmJvbGRU
ZXh0ID0gYm9sZC5uZXh0U2libGluZzsKKyAgICBleGVjU2V0U2VsZWN0aW9uQ29tbWFuZCh1bmJv
bGRUZXh0LCAwLCB1bmJvbGRUZXh0LCB1bmJvbGRUZXh0LnRleHRDb250ZW50Lmxlbmd0aCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydEhUTUwiLCBmYWxzZSwgIjxpbWcgaWQ9J2lt
Zycgc3JjPScuLi9yZXNvdXJjZXMvYWJlLnBuZycgLz4gbm90IGJvbGQiKTsKKworICAgIC8vIFZl
cmlmeSB0aGF0IHRoZSBpbWFnZSBpc24ndCBpbiB0aGUgYm9sZCB0YWcuCisgICAgdmFyIGltYWdl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIpOworICAgIGlmIChpbWFnZS5wcmV2aW91
c1NpYmxpbmcgIT0gYm9sZCkKKyAgICAgICAgZmFpbCgiSW1hZ2Ugc2hvdWxkIGJlIGFkamFjZW50
IHRvIHRoZSBib2xkIG5vZGUuIik7CisKKyAgICAvLyBOb3cgdHJ5IGluc2VydGluZyBIVE1MIG92
ZXIgdGhlIGltYWdlLgorICAgIGV4ZWNTZXRTZWxlY3Rpb25Db21tYW5kKGltYWdlLCAwLCBpbWFn
ZSwgMSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydGh0bWwiLCBmYWxzZSwgIjxz
cGFuIGlkPSdyZWQnIHN0eWxlPSdjb2xvcjpyZWQnPnJlZCB0ZXh0PC9zcGFuPiIpOworCisgICAg
Ly8gVmVyaWZ5IHRoYXQgdGhlIHJlZCB0ZXh0IGlzbid0IGluIHRoZSBib2xkIHRhZy4KKyAgICB2
YXIgcmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZCIpOworICAgIGlmIChyZWQucHJl
dmlvdXNTaWJsaW5nICE9IGJvbGQpCisgICAgICAgIGZhaWwoIlJlZCB0ZXh0IHNob3VsZCBiZSBh
ZGphY2VudCB0byB0aGUgYm9sZCBub2RlLiIpOworCisgICAgLy8gUmVwbGFjZSB0ZXh0IHdpdGgg
U1VDQ0VTUy4KKyAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJTVUNDRVNTIjsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLTM4NTc3NTMtZml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS0zODU3NzUzLWZpeC1leHBlY3RlZC50eHQKaW5k
ZXggMzU0MGJiZS4uNTY0ZTM4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLTM4NTc3NTMtZml4LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtMzg1Nzc1My1m
aXgtZXhwZWN0ZWQudHh0CkBAIC0xOCwxMyArMTgsMTIgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQgW2JvcmRlcjogKDJweCBzb2xp
ZCAjRkYwMDAwKV0KICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxNCwxNCkgc2l6ZSA3NTZ4
MjgKLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDM3eDI4CisgICAgICAg
IFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAyNXgyOAogICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI1eDI4CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAyNTogIm9uIgotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAs
MCkgc2l6ZSAxMngyOAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtJfSBhdCAoMCwwKSBzaXpl
IDEyeDI4Ci0gICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjUsMCkgc2l6ZSAx
MngyOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNSwwKSB3aWR0aCAxMjogIm8iCisg
ICAgICAgIFJlbmRlcklubGluZSB7SX0gYXQgKDAsMCkgc2l6ZSAxMngyOAorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMjUsMCkgc2l6ZSAxMngyOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDI1LDApIHdpZHRoIDEyOiAibyIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgx
NCw0Mikgc2l6ZSA3NTZ4MjgKICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXpl
IDU0eDI4CiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTR4MjgK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9p
bnNlcnQtZGl2LTAyNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjYtZXhwZWN0ZWQudHh0CmluZGV4IDZjM2QzNzUu
LjE1NzRkNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lu
c2VydGluZy9pbnNlcnQtZGl2LTAyNi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDI2LWV4cGVjdGVkLnR4dApA
QCAtNTIsMTAgKzUyLDkgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNDYyLDI4KSB3aWR0aCAxMjogIngiCiAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwyMzYpIHNpemUgNzg0eDMyCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgNzg0eDMyIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICAg
ICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDMyeDI4CisgICAgICAgICAgUmVuZGVy
SW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDIweDI4CiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDIsMikgc2l6ZSAyMHgyOAogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwy
KSB3aWR0aCAyMDogImZvIgotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDEyeDI4Ci0gICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjIsMikg
c2l6ZSAxMngyOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMiwyKSB3aWR0aCAxMjog
IngiCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMiwyKSBzaXplIDEyeDI4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjIsMikgd2lkdGggMTI6ICJ4IgogY2FyZXQ6IHBvc2l0
aW9uIDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0J9IG9mIGNoaWxkIDEge0RJVn0g
b2YgY2hpbGQgMyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBk
b2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS10ZXh0LWF0LXRhYnNwYW4tMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFu
LTAwMS1leHBlY3RlZC50eHQKaW5kZXggNjZkYjY2Ny4uMzAyNDBjNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LWF0LXRh
YnNwYW4tMDAxLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDEtZXhwZWN0ZWQudHh0CkBA
IC00LDEwICs0LDEwIEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDEgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5B
Y3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBTUEFOID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+
IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BB
TiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4g
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0
ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3Rl
eHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+
IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAy
IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IFNQQU4gPiBT
UEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIgb2YgI3RleHQg
PiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMApAQCAtMTksMTIgKzE5LDEzIEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTU1eDI4CiAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAxMXgyOAogICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAxMTogImEiCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgyNSwxNCkgc2l6ZSAyM3gyOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1LDE0
KSB3aWR0aCAyMzogImF4IgotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAxMTB4MjgKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MTMzeDI4CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjN4
MjgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNSwxNCkgc2l6ZSAyM3gy
OAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNSwxNCkgd2lkdGggMjM6ICJheCIKICAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDgsMTQpIHNpemUgMTEweDI4CiAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg0OCwxNCkgd2lkdGggMTEwOiAiXHh7OX1ceHs5fVx4ezl9
IgogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTU4LDE0KSBzaXplIDExeDI4CiAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTU4LDE0KSB3aWR0aCAxMTogInoiCiAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotY2FyZXQ6IHBvc2l0aW9uIDIgb2Yg
Y2hpbGQgMSB7I3RleHR9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hp
bGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK2NhcmV0OiBwb3NpdGlv
biAyIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAxIHtTUEFO
fSBvZiBjaGlsZCAxIHtTUEFOfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9m
IGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LWF0LXRhYnNwYW4tMDAyLWV4cGVjdGVkLnR4dAppbmRleCAyMmIxODI1Li5iYzdh
YTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFu
LTAwMi1leHBlY3RlZC50eHQKQEAgLTUsMTAgKzUsMTAgQEAgRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBs
YWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rp
b25QYXN0ZWQKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4gPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFO
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEg
b2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0
ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAyIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mICN0ZXh0ID4gU1BB
TiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAj
dGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCkBAIC0yMywxMiArMjMsMTMgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDM3eDI4CiAgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI1LDE0KSBzaXplIDM3eDI4CiAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgyNSwxNCkgd2lkdGggMzc6ICJceHs5fSIKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYyLDE0KSBzaXplIDIzeDI4Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoNjIsMTQpIHdpZHRoIDIzOiAiYXgiCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDczeDI4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDk2eDI4CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMjN4MjgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2Miwx
NCkgc2l6ZSAyM3gyOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg2MiwxNCkgd2lkdGgg
MjM6ICJheCIKICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODUsMTQpIHNpemUg
NzN4MjgKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDg1LDE0KSB3aWR0aCA3MzogIlx4ezl9
XHh7OX0iCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNTgsMTQpIHNpemUgMTF4
MjgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNTgsMTQpIHdpZHRoIDExOiAieiIKICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1jYXJldDogcG9zaXRpb24g
MiBvZiBjaGlsZCAyIHsjdGV4dH0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorY2FyZXQ6IHBv
c2l0aW9uIDIgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDIg
e1NQQU59IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMSB7Qk9E
WX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3N0eWxlL2ZvbnQtZmFtaWx5LXdpdGgtc3BhY2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvZm9udC1mYW1p
bHktd2l0aC1zcGFjZS1leHBlY3RlZC50eHQKaW5kZXggMmIxMjhjMC4uMDk5NjFmMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvZm9udC1mYW1pbHkt
d2l0aC1zcGFjZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3R5bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS1leHBlY3RlZC50eHQKQEAgLTMsMTMg
KzMsMTIgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVySW5s
aW5lIHtVfSBhdCAoMCwwKSBzaXplIDQ5MHgxNQorICAgICAgUmVuZGVySW5saW5lIHtVfSBhdCAo
MCwwKSBzaXplIDI0NXgxNQogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAyNDV4MTUKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNDU6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIFRpbWVzIE5ldyBSb21hbiBib2xkLiIKLSAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDI0NXgxNQotICAgICAgICAgIFJlbmRlcklubGluZSB7VX0g
YXQgKDAsMCkgc2l6ZSAyNDV4MTUKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MjQ1LDApIHNpemUgMjQ1eDE1Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNDUsMCkgd2lk
dGggMjQ1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBUaW1lcyBOZXcgUm9tYW4gYm9sZC4iCisgICAg
ICBSZW5kZXJJbmxpbmUge1V9IGF0ICgwLDApIHNpemUgMjQ1eDE1CisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMjQ1LDApIHNpemUgMjQ1eDE1CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDI0NSwwKSB3aWR0aCAyNDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIFRpbWVzIE5ldyBSb21hbiBi
b2xkLiIKICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1jYXJldDogcG9zaXRpb24gNDEg
b2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge1V9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNo
aWxkIDAge1V9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50
CitjYXJldDogcG9zaXRpb24gNDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge1V9IG9m
IGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9zbW9vc2gtc3R5bGVzLTAw
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9z
bW9vc2gtc3R5bGVzLTAwMS1leHBlY3RlZC50eHQKaW5kZXggYzY2YWI0ZS4uZmY4ZTgzNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvc21vb3NoLXN0
eWxlcy0wMDEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3N0eWxlL3Ntb29zaC1zdHlsZXMtMDAxLWV4cGVjdGVkLnR4dApAQCAtMTgsNyArMTgsNyBA
QCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpbwogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNp
bmdET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFz
dGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0
ZXh0ID4gU1BBTiA+IFNQQU4gPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAzIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTUxLDE0ICs1MSwxMyBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDIwOCkgc2l6ZSA3ODR4MzIK
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MzIgW2JvcmRlcjog
KDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgNzd4MjggW2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDIzeDI4IFtjb2xvcj0jRkYwMDAwXQogICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMjN4MjgKICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDIsMikgd2lkdGggMjM6ICJhYiIKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSA1NHgyOCBbY29sb3I9IzAwMDAwMF0KLSAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyNSwyKSBzaXplIDM0eDI4Ci0gICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDI1LDIpIHdpZHRoIDM0OiAiY2RlIgotICAgICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMjB4MjggW2NvbG9yPSNGRjAwMDBdCi0gICAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1OSwyKSBzaXplIDIweDI4Ci0gICAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNTksMikgd2lkdGggMjA6ICJmZyIKKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDI1LDIpIHNpemUgMzR4MjgKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgyNSwyKSB3aWR0aCAzNDogImNkZSIKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59
IGF0ICgwLDApIHNpemUgMjB4MjggW2NvbG9yPSNGRjAwMDBdCisgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDU5LDIpIHNpemUgMjB4MjgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDU5LDIpIHdpZHRoIDIwOiAiZmciCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDMyKSBzaXplIDc4NHgwCi1jYXJldDogcG9zaXRpb24gMyBvZiBjaGlsZCAwIHsjdGV4
dH0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRv
Y3VtZW50CitjYXJldDogcG9zaXRpb24gMyBvZiBjaGlsZCAyIHsjdGV4dH0gb2YgY2hpbGQgMSB7
RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9
IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zdHlsZS9zdHlsZS1ib3VuZGFyeS0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvc3R5bGUtYm91bmRhcnktMDA1LWV4cGVjdGVkLnR4dApp
bmRleCBhMmUxMjNjLi5hZWU4YWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zdHlsZS9zdHlsZS1ib3VuZGFyeS0wMDUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3N0eWxlL3N0eWxlLWJvdW5kYXJ5LTAwNS1l
eHBlY3RlZC50eHQKQEAgLTI0LDcgKzI0LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5H
IERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdE
T01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBCID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBESVYgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBv
ZiAjdGV4dCA+IEIgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9m
ICN0ZXh0ID4gQiA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gU1BBTiA+IEIgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byA0IG9mICN0ZXh0ID4gU1BBTiA+IEIgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBCID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+
IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtNTksMTIgKzU5LDEx
IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDc4NHgyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQogICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDg2eDE4CiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCA4NjogIm9uZSB0d28gdGhyZWUiCi0gICAgICAgICAg
UmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDYweDE4CisgICAgICAgICAgUmVuZGVySW5s
aW5lIHtCfSBhdCAoMCwwKSBzaXplIDMzeDE4CiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDg4LDIpIHNpemUgMzN4MTgKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDg4LDIp
IHdpZHRoIDMzOiAiIGZvdXIiCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMjd4MTgKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMjEs
Mikgc2l6ZSAyN3gxOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjEsMikgd2lkdGgg
Mjc6ICIgb25lIgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTIxLDIpIHNpemUg
Mjd4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjEsMikgd2lkdGggMjc6ICIgb25lIgog
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMikgc2l6ZSA3ODR4MAogICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotY2FyZXQ6IHBvc2l0
aW9uIDQgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDEge0J9
IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBj
aGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorY2FyZXQ6IHBvc2l0aW9uIDQgb2YgY2hpbGQgMiB7
I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YmExMmQxLi43YWRhOTBmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDEwLTAxLTI3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk5MworCisgICAgICAgIEZpeCBhbiBlZGl0aW5n
IGJ1ZyB3aGVyZSByZXBsYWNpbmcgYSBzZWxlY3Rpb24gd291bGQgcmVzdWx0IGluIHRoZQorICAg
ICAgICBuZXcgdGV4dCBlbmRpbmcgdXAgaW5zaWRlIG5vZGVzIHRoYXQgd2VyZSBub3QgdmlzaWJs
eSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgc2VsZWN0aW9uLiAgSW5zdGVhZCwgbW92ZSBvdXIg
ZGVzdGluYXRpb24gcG9zaXRpb24gb3V0IG9mIG5vZGVzIHRoYXQKKyAgICAgICAgd2VyZSBub3Qg
dmlzaWJseSBpbmNsdWRlZC4KKworICAgICAgICBUZXN0czogZWRpdGluZy9kZWxldGluZy9iYWNr
c3BhY2UtYXZvaWQtcHJlY2VkaW5nLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
aW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFyeS5odG1sCisKKyAgICAgICAgKiBl
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBv
c2l0aW9uQXZvaWRpbmdQcmVjZWRpbmdOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisKIDIwMTAtMDEtMjcgIE5pY2hvbGFzIFlvdW5n
ICA8bmljaG9sYXMueW91bmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGI0MGRhYjIuLmFkYjliN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcApAQCAtMTA0LDYgKzEwNCwxNCBAQCBzdGF0aWMgYm9vbCBpc0ludGVyY2hh
bmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUgKm5vZGUpCiAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IEhUTUxFbGVtZW50ICo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
KSA9PSBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZzsKIH0KIAorc3RhdGljIFBvc2l0aW9u
IHBvc2l0aW9uQXZvaWRpbmdQcmVjZWRpbmdOb2RlcyhQb3NpdGlvbiBwb3MpCit7CisgICAgTm9k
ZSogZW5jbG9zaW5nID0gcG9zLm5vZGUoKS0+ZW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCgpOwor
ICAgIHdoaWxlICghcG9zLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgJiYgZW5jbG9zaW5nICE9
IHBvcy5ub2RlKCkgJiYgVmlzaWJsZVBvc2l0aW9uKHBvcykgPT0gVmlzaWJsZVBvc2l0aW9uKHBv
cy5uZXh0KCkpKQorICAgICAgICBwb3MgPSBwb3MubmV4dCgpOworICAgIHJldHVybiBwb3M7Cit9
CisKIFJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgYm9vbCBtYXRjaFN0eWxlLCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KSwKICAgICAgIG1fZnJhZ21lbnQoZnJhZ21lbnQpLApAQCAtODQ3LDcgKzg1NSwxMiBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgZnJhbWUtPmNsZWFy
VHlwaW5nU3R5bGUoKTsKICAgICAKICAgICBib29sIGhhbmRsZWRTdHlsZVNwYW5zID0gaGFuZGxl
U3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihmcmFnbWVudCwgaW5zZXJ0aW9uUG9zKTsKLSAgICAK
KworICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGRlc3RpbmF0aW9uIHRvIGVuZCB1cCBpbnNpZGUg
bm9kZXMgdGhhdCB3ZXJlbid0IHNlbGVjdGVkLiAgVG8gYXZvaWQgdGhhdCwgd2UgbW92ZSB0aGUK
KyAgICAvLyBwb3NpdGlvbiBmb3J3YXJkIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHZpc2libGUgcG9z
aXRpb24gc28gd2UncmUgc3RpbGwgYXQgdGhlIHNhbWUgdmlzaWJsZSBsb2NhdGlvbiwgYnV0Cisg
ICAgLy8gb3V0c2lkZSBvZiBwcmVjZWRpbmcgdGFncy4KKyAgICBpbnNlcnRpb25Qb3MgPSBwb3Np
dGlvbkF2b2lkaW5nUHJlY2VkaW5nTm9kZXMoaW5zZXJ0aW9uUG9zKTsKKwogICAgIC8vIEZJWE1F
OiBXaGVuIHBhc3RpbmcgcmljaCBjb250ZW50IHdlJ3JlIG9mdGVuIHByZXZlbnRlZCBmcm9tIGhl
YWRpbmcgZG93biB0aGUgZmFzdCBwYXRoIGJ5IHN0eWxlIHNwYW5zLiAgVHJ5CiAgICAgLy8gYWdh
aW4gaGVyZSBpZiB0aGV5J3ZlIGJlZW4gcmVtb3ZlZC4KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47670</attachid>
            <date>2010-01-28 20:41:09 -0800</date>
            <delta_ts>2010-03-08 11:02:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21840-20100129134107.patch</filename>
            <type>text/plain</type>
            <size>25664</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjNlYmQ5Li5hOWJlZWU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDEt
MjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NDAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzOTkzCisKKyAgICAgICAgRml4IGFuIGVkaXRpbmcgYnVnIHdoZXJlIHJlcGxh
Y2luZyBhIHNlbGVjdGlvbiB3b3VsZCByZXN1bHQgaW4gdGhlCisgICAgICAgIG5ldyB0ZXh0IGVu
ZGluZyB1cCBpbnNpZGUgbm9kZXMgdGhhdCB3ZXJlIG5vdCB2aXNpYmx5IGluY2x1ZGVkIGluIHRo
ZQorICAgICAgICBzZWxlY3Rpb24uICBJbnN0ZWFkLCBtb3ZlIG91ciBkZXN0aW5hdGlvbiBwb3Np
dGlvbiBvdXQgb2Ygbm9kZXMgdGhhdAorICAgICAgICB3ZXJlIG5vdCB2aXNpYmx5IGluY2x1ZGVk
LgorCisgICAgICAgIFR3byBuZXcgdGVzdHMgdG8gdmVyaWZ5IHRoZSBuZXcgYmVoYXZpb3IuICBC
ZWNhdXNlIHdlJ3JlIG5vdyBpbnNlcnRpbmcKKyAgICAgICAgb3V0c2lkZSBvZiBzb21lIGZvcm1h
dHRpbmcgbm9kZXMsIHNvbWUgc3BhbiB0YWdzIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5CisgICAg
ICAgIGZvciB1bmRvaW5nIGZvcm1hdHRpbmcgY2F1c2VkIGJ5IHRoZXNlIGZvcm1hdHRpbmcgbm9k
ZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2JhY2tzcGFjZS1hdm9pZC1wcmVjZWRp
bmctc3R5bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5n
L2JhY2tzcGFjZS1hdm9pZC1wcmVjZWRpbmctc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxlLWJvdW5kYXJ5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxl
LWJvdW5kYXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2Rl
bGV0aW5nL2RlbGV0ZS0zODU3NzUzLWZpeC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDI2LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFi
c3Bhbi0wMDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvc21vb3NoLXN0
eWxlcy0wMDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3N0
eWxlL3N0eWxlLWJvdW5kYXJ5LTAwNS1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDEtMjggIEFsZXgg
TWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvYmFja3Nw
YWNlLWF2b2lkLXByZWNlZGluZy1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL2JhY2tzcGFjZS1hdm9pZC1wcmVjZWRpbmctc3R5bGUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0M2ZjNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2JhY2tzcGFjZS1hdm9pZC1wcmVj
ZWRpbmctc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBzaG91bGQgYmUg
dW5kZXJsaW5lZC5UaGlzIHNob3VsZCBub3QgYmUgdW5kZXJsaW5lZC4KK1BBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvYmFja3NwYWNlLWF2b2lkLXByZWNlZGlu
Zy1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9iYWNrc3BhY2UtYXZv
aWQtcHJlY2VkaW5nLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjg1ZjZiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvYmFja3NwYWNlLWF2b2lkLXByZWNlZGluZy1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
Kzxib2R5IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+Cis8ZGl2IGlkPSJ0ZXN0LWNhc2UiPgorICA8
dT5UaGlzIHNob3VsZCBiZSB1bmRlcmxpbmVkLjwvdT48ZGl2IGlkPSJub3QtdW5kZXJsaW5lZCI+
VGhpcyBzaG91bGQgbm90IGJlIHVuZGVybGluZWQuPC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InJl
c3VsdHMiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBQcmVzc2lu
ZyBkZWxldGUgdG8gbWVyZ2UgdGhlIHR3byBsaW5lcyBzaG91bGQgbm90IGNhdXNlIHRoZSB0ZXh0
CisgICAgLy8gIm5vdCB1bmRlcmxpbmVkIiB0byBiZSBpbnNpZGUgdGhlIDx1PiB0YWcuCisgICAg
dmFyIHNlY29uZExpbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90LXVuZGVybGluZWQi
KTsKKyAgICBleGVjU2V0U2VsZWN0aW9uQ29tbWFuZChzZWNvbmRMaW5lLCAwLCBzZWNvbmRMaW5l
LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRGVsZXRlIik7CisKKyAgICB2YXIgcmVz
dWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QtY2FzZSIpLmlubmVySFRNTDsKKyAg
ICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvXlxzKy9nLCAiIikucmVwbGFjZSgvXHMrJC9nLCAi
Iik7ICAvLyBSZW1vdmluZyBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgaWYgKHJl
c3VsdCA9PSAiPHU+VGhpcyBzaG91bGQgYmUgdW5kZXJsaW5lZC48L3U+VGhpcyBzaG91bGQgbm90
IGJlIHVuZGVybGluZWQuIikKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dHMiKS5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9ICJGQUlMIjsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxl
LWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3Jl
cGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZmY0M2NhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW5zZXJ0aW5nL3JlcGxhY2UtYXQtdmlzaWJsZS1ib3VuZGFyeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSBAQAorU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxlLWJvdW5kYXJ5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9yZXBsYWNlLWF0LXZpc2libGUtYm91bmRhcnkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDgzYTYzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxlLWJvdW5k
YXJ5Lmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPGJvZHkgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4K
KzxiIGlkPSJib2xkIj5ib2xkPC9iPnJlZ3VsYXIgdGV4dDxicj4KKzwvYm9keT4KKzxzY3JpcHQg
c3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgZnVuY3Rpb24gZmFpbChtc2cpIHsKKyAgICAgICAgY29uc29sZS5sb2co
bXNnKTsKKyAgICAgICAgdGhyb3cgbXNnOworICAgIH0KKworICAgIC8vIEluc2VydGluZyBIVE1M
IG92ZXIgInJlZ3VsYXIgdGV4dCIgc2hvdWxkbid0IGJlIGluIHRoZSBib2xkIHRhZy4KKyAgICB2
YXIgYm9sZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2xkIik7CisgICAgdmFyIHVuYm9s
ZFRleHQgPSBib2xkLm5leHRTaWJsaW5nOworICAgIGV4ZWNTZXRTZWxlY3Rpb25Db21tYW5kKHVu
Ym9sZFRleHQsIDAsIHVuYm9sZFRleHQsIHVuYm9sZFRleHQudGV4dENvbnRlbnQubGVuZ3RoKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0SFRNTCIsIGZhbHNlLCAiPGltZyBpZD0n
aW1nJyBzcmM9Jy4uL3Jlc291cmNlcy9hYmUucG5nJyAvPiBub3QgYm9sZCIpOworCisgICAgLy8g
VmVyaWZ5IHRoYXQgdGhlIGltYWdlIGlzbid0IGluIHRoZSBib2xkIHRhZy4KKyAgICB2YXIgaW1h
Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIik7CisgICAgaWYgKGltYWdlLnByZXZp
b3VzU2libGluZyAhPSBib2xkKQorICAgICAgICBmYWlsKCJJbWFnZSBzaG91bGQgYmUgYWRqYWNl
bnQgdG8gdGhlIGJvbGQgbm9kZS4iKTsKKworICAgIC8vIE5vdyB0cnkgaW5zZXJ0aW5nIEhUTUwg
b3ZlciB0aGUgaW1hZ2UuCisgICAgZXhlY1NldFNlbGVjdGlvbkNvbW1hbmQoaW1hZ2UsIDAsIGlt
YWdlLCAxKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0aHRtbCIsIGZhbHNlLCAi
PHNwYW4gaWQ9J3JlZCcgc3R5bGU9J2NvbG9yOnJlZCc+cmVkIHRleHQ8L3NwYW4+Iik7CisKKyAg
ICAvLyBWZXJpZnkgdGhhdCB0aGUgcmVkIHRleHQgaXNuJ3QgaW4gdGhlIGJvbGQgdGFnLgorICAg
IHZhciByZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVkIik7CisgICAgaWYgKHJlZC5w
cmV2aW91c1NpYmxpbmcgIT0gYm9sZCkKKyAgICAgICAgZmFpbCgiUmVkIHRleHQgc2hvdWxkIGJl
IGFkamFjZW50IHRvIHRoZSBib2xkIG5vZGUuIik7CisKKyAgICAvLyBSZXBsYWNlIHRleHQgd2l0
aCBTVUNDRVNTLgorICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9kZWxl
dGluZy9kZWxldGUtMzg1Nzc1My1maXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLTM4NTc3NTMtZml4LWV4cGVjdGVkLnR4dApp
bmRleCAzNTQwYmJlLi41NjRlMzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtMzg1Nzc1My1maXgtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS0zODU3NzUz
LWZpeC1leHBlY3RlZC50eHQKQEAgLTE4LDEzICsxOCwxMiBAQCBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NCBbYm9yZGVyOiAoMnB4IHNv
bGlkICNGRjAwMDApXQogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDE0LDE0KSBzaXplIDc1
NngyOAotICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMzd4MjgKKyAgICAg
ICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDI1eDI4CiAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjV4MjgKICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDI1OiAib24iCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAo
MCwwKSBzaXplIDEyeDI4Ci0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNp
emUgMTJ4MjgKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNSwwKSBzaXpl
IDEyeDI4Ci0gICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1LDApIHdpZHRoIDEyOiAibyIK
KyAgICAgICAgUmVuZGVySW5saW5lIHtJfSBhdCAoMCwwKSBzaXplIDEyeDI4CisgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNSwwKSBzaXplIDEyeDI4CisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMjUsMCkgd2lkdGggMTI6ICJvIgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDE0LDQyKSBzaXplIDc1NngyOAogICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNp
emUgNTR4MjgKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1NHgy
OApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1kaXYtMDI2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyNi1leHBlY3RlZC50eHQKaW5kZXggNmMzZDM3
NS4uMTU3NGQ3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
aW5zZXJ0aW5nL2luc2VydC1kaXYtMDI2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjYtZXhwZWN0ZWQudHh0
CkBAIC01MiwxMCArNTIsOSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICg0NjIsMjgpIHdpZHRoIDEyOiAieCIKICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDIzNikgc2l6ZSA3ODR4MzIKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMCkgc2l6ZSA3ODR4MzIgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAg
ICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMzJ4MjgKKyAgICAgICAgICBSZW5k
ZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMjB4MjgKICAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMiwyKSBzaXplIDIweDI4CiAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgy
LDIpIHdpZHRoIDIwOiAiZm8iCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMTJ4MjgKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMiwy
KSBzaXplIDEyeDI4Ci0gICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIyLDIpIHdpZHRoIDEy
OiAieCIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIyLDIpIHNpemUgMTJ4MjgK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMiwyKSB3aWR0aCAxMjogIngiCiBjYXJldDogcG9z
aXRpb24gMyBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7Qn0gb2YgY2hpbGQgMSB7RElW
fSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9m
IGRvY3VtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LWF0LXRhYnNw
YW4tMDAxLWV4cGVjdGVkLnR4dAppbmRleCA2NmRiNjY3Li4zMDI0MGM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtYXQt
dGFic3Bhbi0wMDEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMS1leHBlY3RlZC50eHQK
QEAgLTQsMTAgKzQsMTAgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5n
ZSBmcm9tIDEgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZl
bkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4gPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0
ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBT
UEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gU1BB
TiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2Yg
I3RleHQgPiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1FRElUSU5H
IERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAj
dGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0
ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAyIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAx
IG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mICN0ZXh0ID4gU1BBTiA+
IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4
dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCkBAIC0xOSwxMiArMTksMTMgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNTV4MjgKICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDE0KSBzaXplIDExeDI4CiAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDExOiAiYSIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDI1LDE0KSBzaXplIDIzeDI4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUs
MTQpIHdpZHRoIDIzOiAiYXgiCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDExMHgyOAorICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAxMzN4MjgKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAy
M3gyOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI1LDE0KSBzaXplIDIz
eDI4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1LDE0KSB3aWR0aCAyMzogImF4Igog
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0OCwxNCkgc2l6ZSAxMTB4MjgKICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDQ4LDE0KSB3aWR0aCAxMTA6ICJceHs5fVx4ezl9XHh7
OX0iCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNTgsMTQpIHNpemUgMTF4MjgK
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNTgsMTQpIHdpZHRoIDExOiAieiIKICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1jYXJldDogcG9zaXRpb24gMiBv
ZiBjaGlsZCAxIHsjdGV4dH0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7RElWfSBvZiBj
aGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorY2FyZXQ6IHBvc2l0
aW9uIDIgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDEge1NQ
QU59IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0g
b2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtYXQtdGFic3Bhbi0wMDItZXhwZWN0ZWQudHh0CmluZGV4IDIyYjE4MjUuLmJj
N2FhNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtdGV4dC1hdC10YWJzcGFuLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LWF0LXRhYnNw
YW4tMDAyLWV4cGVjdGVkLnR4dApAQCAtNSwxMCArNSwxMCBAQCBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpbwogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJl
cGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gU1BBTiA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURv
d25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4g
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MSBvZiAjdGV4dCA+IFNQQU4gPiBTUEFOID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KLUVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAx
IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2Yg
I3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDIgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDEgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBT
UEFOID4gU1BBTiA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9m
ICN0ZXh0ID4gU1BBTiA+IFNQQU4gPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKQEAgLTIzLDEyICsyMywxMyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMzd4MjgKICAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjUsMTQpIHNpemUgMzd4MjgKICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDI1LDE0KSB3aWR0aCAzNzogIlx4ezl9IgotICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjIsMTQpIHNpemUgMjN4MjgKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICg2MiwxNCkgd2lkdGggMjM6ICJheCIKLSAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgNzN4MjgKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59
IGF0ICgwLDApIHNpemUgOTZ4MjgKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAyM3gyOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYy
LDE0KSBzaXplIDIzeDI4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDYyLDE0KSB3aWR0
aCAyMzogImF4IgogICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg4NSwxNCkgc2l6
ZSA3M3gyOAogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoODUsMTQpIHdpZHRoIDczOiAiXHh7
OX1ceHs5fSIKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE1OCwxNCkgc2l6ZSAx
MXgyOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE1OCwxNCkgd2lkdGggMTE6ICJ6IgogICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWNhcmV0OiBwb3NpdGlv
biAyIG9mIGNoaWxkIDIgeyN0ZXh0fSBvZiBjaGlsZCAxIHtTUEFOfSBvZiBjaGlsZCAxIHtESVZ9
IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitjYXJldDog
cG9zaXRpb24gMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hpbGQg
MiB7U1BBTn0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAxIHtC
T0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvZm9udC1mYW1pbHktd2l0aC1zcGFjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9mb250LWZh
bWlseS13aXRoLXNwYWNlLWV4cGVjdGVkLnR4dAppbmRleCAyYjEyOGMwLi4wOTk2MWYwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9mb250LWZhbWls
eS13aXRoLXNwYWNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zdHlsZS9mb250LWZhbWlseS13aXRoLXNwYWNlLWV4cGVjdGVkLnR4dApAQCAtMywx
MyArMywxMiBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Ci0gICAgICBSZW5kZXJJ
bmxpbmUge1V9IGF0ICgwLDApIHNpemUgNDkweDE1CisgICAgICBSZW5kZXJJbmxpbmUge1V9IGF0
ICgwLDApIHNpemUgMjQ1eDE1CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDI0NXgxNQogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI0NTogIlRoaXMg
dGV4dCBzaG91bGQgYmUgVGltZXMgTmV3IFJvbWFuIGJvbGQuIgotICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMjQ1eDE1Ci0gICAgICAgICAgUmVuZGVySW5saW5lIHtV
fSBhdCAoMCwwKSBzaXplIDI0NXgxNQotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgyNDUsMCkgc2l6ZSAyNDV4MTUKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI0NSwwKSB3
aWR0aCAyNDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIFRpbWVzIE5ldyBSb21hbiBib2xkLiIKKyAg
ICAgIFJlbmRlcklubGluZSB7VX0gYXQgKDAsMCkgc2l6ZSAyNDV4MTUKKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgyNDUsMCkgc2l6ZSAyNDV4MTUKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMjQ1LDApIHdpZHRoIDI0NTogIlRoaXMgdGV4dCBzaG91bGQgYmUgVGltZXMgTmV3IFJvbWFu
IGJvbGQuIgogICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWNhcmV0OiBwb3NpdGlvbiA0
MSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7VX0gb2YgY2hpbGQgMSB7U1BBTn0gb2Yg
Y2hpbGQgMCB7VX0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1l
bnQKK2NhcmV0OiBwb3NpdGlvbiA0MSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7VX0g
b2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3N0eWxlL3Ntb29zaC1zdHlsZXMt
MDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3N0eWxl
L3Ntb29zaC1zdHlsZXMtMDAxLWV4cGVjdGVkLnR4dAppbmRleCBjNjZhYjRlLi5mZjhlODM3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9zbW9vc2gt
c3R5bGVzLTAwMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3R5bGUvc21vb3NoLXN0eWxlcy0wMDEtZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3
IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxh
Y2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Q
YXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2Yg
I3RleHQgPiBTUEFOID4gU1BBTiA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDMgb2YgI3RleHQgPiBTUEFOID4gU1BBTiA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24K
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtNTEsMTQgKzUxLDEzIEBAIGxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjA4KSBzaXplIDc4NHgz
MgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgzMiBbYm9yZGVy
OiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSA3N3gyOCBbY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMjN4MjggW2NvbG9yPSNGRjAwMDBdCiAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAyM3gyOAogICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMiwyKSB3aWR0aCAyMzogImFiIgotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDU0eDI4IFtjb2xvcj0jMDAwMDAwXQotICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI1LDIpIHNpemUgMzR4MjgKLSAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMjUsMikgd2lkdGggMzQ6ICJjZGUiCi0gICAgICAgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMHgyOCBbY29sb3I9I0ZGMDAwMF0KLSAgICAgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDU5LDIpIHNpemUgMjB4MjgKLSAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg1OSwyKSB3aWR0aCAyMDogImZnIgorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMjUsMikgc2l6ZSAzNHgyOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDI1LDIpIHdpZHRoIDM0OiAiY2RlIgorICAgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSAyMHgyOCBbY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoNTksMikgc2l6ZSAyMHgyOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNTksMikgd2lkdGggMjA6ICJmZyIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsMzIpIHNpemUgNzg0eDAKLWNhcmV0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAxIHtTUEFOfSBvZiBjaGlsZCAxIHtTUEFOfSBvZiBjaGlsZCAxIHtESVZ9
IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKK2NhcmV0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDIgeyN0ZXh0fSBvZiBjaGlsZCAx
IHtESVZ9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRN
TH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3N0eWxlL3N0eWxlLWJvdW5kYXJ5LTAwNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zdHlsZS9zdHlsZS1ib3VuZGFyeS0wMDUtZXhwZWN0ZWQudHh0
CmluZGV4IGEyZTEyM2MuLmFlZThhZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3N0eWxlL3N0eWxlLWJvdW5kYXJ5LTAwNS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3R5bGUvc3R5bGUtYm91bmRhcnktMDA1
LWV4cGVjdGVkLnR4dApAQCAtMjQsNyArMjQsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpbwog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKLUVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1
IG9mICN0ZXh0ID4gQiA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUg
b2YgI3RleHQgPiBCID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBTUEFOID4gQiA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBTUEFOID4gQiA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIgPiBESVYgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC01OSwxMiArNTks
MTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDApIHNpemUgNzg0eDIyIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCiAg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgODZ4MTgKICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDg2OiAib25lIHR3byB0aHJlZSIKLSAgICAgICAg
ICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgNjB4MTgKKyAgICAgICAgICBSZW5kZXJJ
bmxpbmUge0J9IGF0ICgwLDApIHNpemUgMzN4MTgKICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoODgsMikgc2l6ZSAzM3gxOAogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoODgs
Mikgd2lkdGggMzM6ICIgZm91ciIKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAyN3gxOAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEy
MSwyKSBzaXplIDI3eDE4Ci0gICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEyMSwyKSB3aWR0
aCAyNzogIiBvbmUiCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMjEsMikgc2l6
ZSAyN3gxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEyMSwyKSB3aWR0aCAyNzogIiBvbmUi
CiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIyKSBzaXplIDc4NHgwCiAg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1jYXJldDogcG9z
aXRpb24gNCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7U1BBTn0gb2YgY2hpbGQgMSB7
Qn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9m
IGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitjYXJldDogcG9zaXRpb24gNCBvZiBjaGlsZCAy
IHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGNoaWxkIDEge0JP
RFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI1ZDZhMjcuLmI4NWE5M2MgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTAtMDEtMjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTkzCisKKyAgICAgICAgRml4IGFuIGVkaXRp
bmcgYnVnIHdoZXJlIHJlcGxhY2luZyBhIHNlbGVjdGlvbiB3b3VsZCByZXN1bHQgaW4gdGhlCisg
ICAgICAgIG5ldyB0ZXh0IGVuZGluZyB1cCBpbnNpZGUgbm9kZXMgdGhhdCB3ZXJlIG5vdCB2aXNp
Ymx5IGluY2x1ZGVkIGluIHRoZQorICAgICAgICBzZWxlY3Rpb24uICBJbnN0ZWFkLCBtb3ZlIG91
ciBkZXN0aW5hdGlvbiBwb3NpdGlvbiBvdXQgb2Ygbm9kZXMgdGhhdAorICAgICAgICB3ZXJlIG5v
dCB2aXNpYmx5IGluY2x1ZGVkLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL2RlbGV0aW5nL2Jh
Y2tzcGFjZS1hdm9pZC1wcmVjZWRpbmctc3R5bGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGlu
Zy9pbnNlcnRpbmcvcmVwbGFjZS1hdC12aXNpYmxlLWJvdW5kYXJ5Lmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Bdm9pZGluZ1ByZWNlZGluZ05vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKwogMjAxMC0wMS0yOCAgSmVyZW15IE9ybG93
ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYjQw
ZGFiMi4uZDg3MWQxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC0xMDQsNiArMTA0LDIyIEBAIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252
ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9kZSkKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgSFRNTEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IGNv
bnZlcnRlZFNwYWNlU3BhbkNsYXNzU3RyaW5nOwogfQogCitzdGF0aWMgUG9zaXRpb24gcG9zaXRp
b25Bdm9pZGluZ1ByZWNlZGluZ05vZGVzKFBvc2l0aW9uIHBvcykKK3sKKyAgICAvLyBJZiB3ZSdy
ZSBhbHJlYWR5IG9uIGEgYnJlYWssIGl0J3MgcHJvYmFibHkgYSBwbGFjZWhvbGRlciBhbmQgd2Ug
c2hvdWxkbid0IGNoYW5nZSBvdXIgcG9zaXRpb24uCisgICAgaWYgKHBvcy5ub2RlKCktPmhhc1Rh
Z05hbWUoYnJUYWcpKQorICAgICAgICByZXR1cm4gcG9zOworCisgICAgLy8gV2UgYWxzbyBzdG9w
IHdoZW4gY2hhbmdpbmcgYmxvY2sgZmxvdyBlbGVtZW50cyBiZWNhdXNlIGV2ZW4gdGhvdWdoIHRo
ZSB2aXN1YWwgcG9zaXRpb24gaXMgdGhlCisgICAgLy8gc2FtZS4gIEUuZy4sCisgICAgLy8gICA8
ZGl2PmZvb148L2Rpdj5eCisgICAgLy8gVGhlIHR3byBwb3NpdGlvbnMgYWJvdmUgYXJlIHRoZSBz
YW1lIHZpc3VhbCBwb3NpdGlvbiwgYnV0IHdlIHdhbnQgdG8gc3RheSBpbiB0aGUgc2FtZSBibG9j
ay4KKyAgICBOb2RlKiBzdG9wTm9kZSA9IHBvcy5ub2RlKCktPmVuY2xvc2luZ0Jsb2NrRmxvd0Vs
ZW1lbnQoKTsKKyAgICB3aGlsZSAoc3RvcE5vZGUgIT0gcG9zLm5vZGUoKSAmJiBWaXNpYmxlUG9z
aXRpb24ocG9zKSA9PSBWaXNpYmxlUG9zaXRpb24ocG9zLm5leHQoKSkpCisgICAgICAgIHBvcyA9
IHBvcy5uZXh0KCk7CisgICAgcmV0dXJuIHBvczsKK30KKwogUmVwbGFjZW1lbnRGcmFnbWVudDo6
UmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQq
IGZyYWdtZW50LCBib29sIG1hdGNoU3R5bGUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbikKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLAogICAgICAgbV9mcmFnbWVudChmcmFn
bWVudCksCkBAIC04NDcsNyArODYzLDEyIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgICAgICBmcmFtZS0+Y2xlYXJUeXBpbmdTdHlsZSgpOwogICAgIAogICAg
IGJvb2wgaGFuZGxlZFN0eWxlU3BhbnMgPSBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9u
KGZyYWdtZW50LCBpbnNlcnRpb25Qb3MpOwotICAgIAorCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
aGUgZGVzdGluYXRpb24gdG8gZW5kIHVwIGluc2lkZSBub2RlcyB0aGF0IHdlcmVuJ3Qgc2VsZWN0
ZWQuICBUbyBhdm9pZCB0aGF0LCB3ZSBtb3ZlIHRoZQorICAgIC8vIHBvc2l0aW9uIGZvcndhcmQg
d2l0aG91dCBjaGFuZ2luZyB0aGUgdmlzaWJsZSBwb3NpdGlvbiBzbyB3ZSdyZSBzdGlsbCBhdCB0
aGUgc2FtZSB2aXNpYmxlIGxvY2F0aW9uLCBidXQKKyAgICAvLyBvdXRzaWRlIG9mIHByZWNlZGlu
ZyB0YWdzLgorICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uQXZvaWRpbmdQcmVjZWRpbmdOb2Rl
cyhpbnNlcnRpb25Qb3MpOworCiAgICAgLy8gRklYTUU6IFdoZW4gcGFzdGluZyByaWNoIGNvbnRl
bnQgd2UncmUgb2Z0ZW4gcHJldmVudGVkIGZyb20gaGVhZGluZyBkb3duIHRoZSBmYXN0IHBhdGgg
Ynkgc3R5bGUgc3BhbnMuICBUcnkKICAgICAvLyBhZ2FpbiBoZXJlIGlmIHRoZXkndmUgYmVlbiBy
ZW1vdmVkLgogICAgIAo=
</data>
<flag name="review"
          id="30180"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="33307"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>