<?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>32823</bug_id>
          
          <creation_ts>2009-12-21 07:17:57 -0800</creation_ts>
          <short_desc>Various designmode=&quot;on&quot;/&quot;off&quot; &amp; execCommand(&quot;Undo&quot;) NULL pointer crashes</short_desc>
          <delta_ts>2022-06-07 16:33:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://skypher.com/SkyLined/Repro/WebKit/Bug%2032823%20-%20WebCore..caretMaxOffset%20ReadAV@NULL%20(5785e692fef72522c3ee976bff525d98)/repro.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend-Jan Wever">skylined</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tony</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173962</commentid>
    <comment_count>0</comment_count>
      <attachid>45327</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-21 07:17:57 -0800</bug_when>
    <thetext>Created attachment 45327
Repro - WebCore::caretMaxOffset ReadAV@NULL (5785e692fef72522c3ee976bff525d98)

Repro:
&lt;BODY&gt;&lt;/BODY&gt;
&lt;SCRIPT&gt;
  document.execCommand(&quot;SelectAll&quot;,&quot;&quot;);
  document.designMode= &quot;on&quot;;
  document.execCommand(&quot;InsertHorizontalRule&quot;,&quot;&quot;);
  document.execCommand(&quot;CreateLink&quot;,false, 171);
  document.execCommand(&quot;InsertorderedList&quot;,false,undefined);
  document.execCommand(&quot;Unlink&quot;,5);
  document.execCommand(&quot;Indent&quot;,false,&quot;&quot;);
  document.designMode=&quot;&quot;;
  document.execCommand(&quot;Undo&quot;,false,&quot;&quot;);
  document.designMode=&quot;on&quot;;
  document.execCommand(&quot;ForeColor&quot;,false,3);
&lt;/SCRIPT&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175863</commentid>
    <comment_count>1</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-30 03:24:12 -0800</bug_when>
    <thetext>I think the below is a very similar bug, probably same root cause:
WebCore::highestAncestor ReadAV@NULL (6fd56a0a3c08931c7b81ea35e70a582a)
&lt;BODY&gt;&lt;/BODY&gt;
&lt;SCRIPT&gt;
  document.designMode=&quot;on&quot;;
  document.execCommand(&quot;selectall&quot;,Infinity);
  document.execCommand(&quot;subscript&quot;,false-5);
  document.execCommand(&quot;Indent&quot;,false,1);
  document.designMode=&quot;&quot;;
  document.execCommand(&quot;Undo&quot;,&quot;&quot;);
  document.designMode=&quot;on&quot;;
  document.execCommand(&quot;JustifyNone&quot;,false,&quot;&quot;);
&lt;/SCRIPT&gt;
I cannot seem to reproduce it in recent builds of Chromium, just reporting in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175943</commentid>
    <comment_count>2</comment_count>
      <attachid>45668</attachid>
    <who name="Mike Moretti">webkit9</who>
    <bug_when>2009-12-30 09:33:12 -0800</bug_when>
    <thetext>Created attachment 45668
reduced test case with comments

I&apos;ve been looking into this bug and have a question.  What is the expected functionality of execCommand when there is no &quot;contenteditable&quot; field and &quot;designmode&quot; is off?  Should it do anything at all in this case?  Should only certain commands be allowed to execute?  I know there is a command table with specific &quot;enabled&quot; checks specified in it, but is it correct for the undo case?  enabledUndo seems to only call &quot;canUndo&quot; on the frame; shouldn&apos;t it also be checking if enabledInEditableText?  I.e., should undo be disabled for the case when there is no editable field or we&apos;re not in designmode (as in this test case), or does it need to function (and the crash really need to be fixed)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176160</commentid>
    <comment_count>3</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-31 02:25:30 -0800</bug_when>
    <thetext>*** Bug 32822 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176162</commentid>
    <comment_count>4</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-31 02:32:09 -0800</bug_when>
    <thetext>*** Bug 32424 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176164</commentid>
    <comment_count>5</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-31 02:32:19 -0800</bug_when>
    <thetext>*** Bug 32425 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176166</commentid>
    <comment_count>6</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-31 02:32:39 -0800</bug_when>
    <thetext>*** Bug 33049 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196413</commentid>
    <comment_count>7</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-03-05 07:16:18 -0800</bug_when>
    <thetext>Appears to be fixed - I cannot repro in Chrome 4.0.249.89 unknown (38071)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199092</commentid>
    <comment_count>8</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-03-12 09:12:50 -0800</bug_when>
    <thetext>It appears this is not completely fixed; I am finding new examples such as this one:

&lt;BODY&gt;&lt;/BODY&gt;
&lt;SCRIPT&gt;
  document.designMode = &quot;on&quot;;
  document.execCommand(&quot;selectall&quot;);
  document.execCommand(&quot;InsertParagraph&quot;);
  document.execCommand(&quot;inserthorizontalrule&quot;);
  document.designMode = &quot;&quot;;
  document.execCommand(&quot;Undo&quot;);
  document.designMode = &quot;on&quot;;
  document.execCommand(&quot;Strikethrough&quot;);
&lt;/SCRIPT&gt;

Causes:
id:          WebCore::executeToggleStyleInList ReadAV@NULL (95ebfffa464da44f33912d9597442825)
description: Attempt to read from NULL pointer in WebCore::executeToggleStyleInList
stack:       WebCore::executeToggleStyleInList
             WebCore::executeStrikethrough
             WebCore::Editor::Command::execute
             WebCore::Document::execCommand
             WebCore::DocumentInternal::execCommandCallback
             v8::internal::HandleApiCallHelper&lt;0&gt;
             v8::internal::Builtin_HandleApiCall
             v8::internal::Invoke
             v8::internal::Execution::Call
             v8::Script::Run
             WebCore::V8Proxy::runScript
             WebCore::V8Proxy::evaluate
             WebCore::ScriptController::evaluate
             WebCore::ScriptController::executeScript
             WebCore::ScriptController::executeScript
             WebCore::ScriptController::executeIfJavaScriptURL
             WebCore::FrameLoader::changeLocation
             WebCore::RedirectScheduler::timerFired
             WebCore::Timer&lt;WebCore::RedirectScheduler&gt;::fired
             WebCore::ThreadTimers::sharedTimerFiredInternal
             WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::operator WebCore::ThreadGlobalData *
             MessageLoop::RunTask
             MessageLoop::DoWork
             base::MessagePumpDefault::Run
             MessageLoop::RunInternal
             MessageLoop::Run
             RendererMain
             ChromeMain
             MainDllLoader::Launch
             wWinMain
             __tmainCRTStartup
             BaseProcessStart+0x23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220520</commentid>
    <comment_count>9</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-05-04 01:21:48 -0700</bug_when>
    <thetext>Forgot to update the status in previous comment :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246560</commentid>
    <comment_count>10</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-05 03:44:51 -0700</bug_when>
    <thetext>I just filed bug 41601, which is probably a duplicate of this and indicates this may be a security issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256470</commentid>
    <comment_count>11</comment_count>
      <attachid>62665</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 02:41:56 -0700</bug_when>
    <thetext>Created attachment 62665
Repro - WebCore::Node::hasTagName ReadAV@NULL (106220ce302426f16b811b1cc735e87a)

I&apos;m going to be uploading repros for all crashes I find with this general structure:

designmode = on
execCommand...
designmode = off
execCommand(undo)
designmode = on
execCommand...

I expect they are all manifestations of similar issues and that the code needs an overhaul, given the number of bugs I am finding. (But I cannot exclude that this may all be caused by only one bug in the code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256471</commentid>
    <comment_count>12</comment_count>
      <attachid>62666</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 02:47:19 -0700</bug_when>
    <thetext>Created attachment 62666
Repro - WebCore::ApplyStyleCommand::applyBlockStyle ReadAV@NULL (eba56e4a5c0f11cedaba7aea0468d82a)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256472</commentid>
    <comment_count>13</comment_count>
      <attachid>62667</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 02:48:17 -0700</bug_when>
    <thetext>Created attachment 62667
Repro - WebCore::ReplaceSelectionCommand::doApply ReadAV@NULL (badacdea771d24a7e25e9ab3859da7a2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256476</commentid>
    <comment_count>14</comment_count>
      <attachid>62668</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 02:53:35 -0700</bug_when>
    <thetext>Created attachment 62668
Repro - WebCore::positionInParentBeforeNode ReadAV@NULL (98882320ea2b731f10f353b23849bd6a)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256477</commentid>
    <comment_count>15</comment_count>
      <attachid>62669</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 03:02:59 -0700</bug_when>
    <thetext>Created attachment 62669
Repro - WebCore::ApplyStyleCommand::removeInlineStyle ReadAV@NULL (18fa82a60d48c7965db66b916a546328)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256480</commentid>
    <comment_count>16</comment_count>
      <attachid>62670</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-27 03:04:35 -0700</bug_when>
    <thetext>Created attachment 62670
Repro - WebCore::executeToggleStyleInList ReadAV@NULL (95ebfffa464da44f33912d9597442825)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256482</commentid>
    <comment_count>17</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2010-07-27 03:08:47 -0700</bug_when>
    <thetext>[CC&apos;ing rniwa for added editing-fu.]

I had a brief look at the bug previously - the fundamental problem is what Mike Moretti described in comment #2. The problem is that execCommand(&quot;undo&quot;) is prevented, which results in an inconsistent state.

As Mike wrote, the question is how to best handle this case (and also the case where the contentEditable attribute is being modified).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256671</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-27 10:01:03 -0700</bug_when>
    <thetext>Lets not overstate the case here. I think we can fix these all in a pretty straightforward manner without an &quot;overhaul&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256672</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-27 10:01:16 -0700</bug_when>
    <thetext>But having all in a single bug report may be impractical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256724</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-27 11:54:41 -0700</bug_when>
    <thetext>Every reproduction steps until comment #11 do not crash on TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256729</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-27 11:58:35 -0700</bug_when>
    <thetext>So it seems we have crash logs here, but we are not clear on which reproduction steps go with those logs. There’s a chance this is all fixed already on TOT, but we can’t be sure until we have a particular set of steps to reproduce that definitely cause a crash.

Having all these crashes in one bug report is indeed causing confusion and making it hard to narrow this down, so we probably need to make a simpler bug report with one set of steps to reproduce and one crash.

If these do indeed have security implications, then this bug should be in the security component instead of in the open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256787</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-27 13:22:47 -0700</bug_when>
    <thetext>It seems like the crash in #11 is caused by our updating selection after undo becauese the nodes pointed by the selection are not in the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256857</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-27 14:47:05 -0700</bug_when>
    <thetext>#12 doesn&apos;t reproduce, but #11, #13-16 are the same type of crashes. They&apos;re all caused by changeSelectionAfterCommand incorrectly updating the selection.  A patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256887</commentid>
    <comment_count>24</comment_count>
      <attachid>62756</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-27 15:24:01 -0700</bug_when>
    <thetext>Created attachment 62756
fixes the crash

Fixed the crash by adding a check in changeSelectionAfterCommand.  The fix is simple and small.  I included all tests that crash TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257154</commentid>
    <comment_count>25</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2010-07-28 08:14:51 -0700</bug_when>
    <thetext>@Darin:
* Sorry for the confusion: I am NOT suggesting we NEED to overhaul the code. I am hoping it is one bug in the code
  triggered in various ways. However, considering how many crashes I am finding, I am worried that the code may need
  a little bit extra attention. So, I was trying to suggest that the code is reviewed to make sure it is in good 
  overall shape before closing this bug.
* About all the repros: If this is indeed only one bug in the code, we would know when a fix stops all repros from
  crashing. If it turns out that a fix does not fix all crashes, you can eitehr take the repros that still trigger
  crashes and move them to a new bug, or continue to fix the code until all crashes are gone.
  Because I do not know how many bugs there actually are in the code, I have opted to put all repros in one bug: it is
  the easiest way to make sure we do not lose track of any crashes, so all of them get fixed.
* Everything I uploaded that starts with &quot;Repro - &quot; is what I would call a repro: each contains HTML and JavaScript
  that triggers a crash for me in latest Chromium. I&apos;m not sure what you mean by &quot;crash log&quot;.
* I have been fuzzing this for months and only found NULL pointers. I am not saying there is a security issue hiding
  somewhere in the code, but I have failed to find any, hence marked as non-security.

@Ryosuke:
* I assume this was indeed one bug that could be triggered in various ways, causing the NULL pointers to happen in
  various other parts of the code and that this is indeed not a security issue?
* I also assuem that your fix prevents all repros from crashing in one fell swoop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257220</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-28 09:59:02 -0700</bug_when>
    <thetext>On second thought, I don&apos;t think my approach was right here.  Let me explain my thoughts as I rely comment #25.

(In reply to comment #25)
&gt; @Darin:
&gt; * Sorry for the confusion: I am NOT suggesting we NEED to overhaul the code. I am hoping it is one bug in the code
&gt;   triggered in various ways. However, considering how many crashes I am finding, I am worried that the code may need
&gt;   a little bit extra attention. So, I was trying to suggest that the code is reviewed to make sure it is in good 
&gt;   overall shape before closing this bug.

Indeed, all bugs were triggered by undo restoring selection incorrectly.  Namely, it was setting the start or the end of selection to a node that&apos;s not attached to the document but solely kept alive for undo/redo purposes.  And we probably need to come up with a way to cleanly deal with undo/redo inconsistency as well as JavaScript interference during executing composite editing commands.

&gt; * About all the repros: If this is indeed only one bug in the code, we would know when a fix stops all repros from
&gt;   crashing. If it turns out that a fix does not fix all crashes, you can eitehr take the repros that still trigger
&gt;   crashes and move them to a new bug, or continue to fix the code until all crashes are gone.
&gt;   Because I do not know how many bugs there actually are in the code, I have opted to put all repros in one bug: it is
&gt;   the easiest way to make sure we do not lose track of any crashes, so all of them get fixed.

So here&apos;s a thing.  This bug report addresses multiple bugs simultaneously by its own nature because the crashes we are seeing here are caused because
1. Undo restores selection incorrectly to detached nodes. (This does not cause crash by itself).
2. Some editing command can&apos;t handle orphaned selections and crashes.

My patch certainly fix the problem 1 but does not fix problem 2. What we really need to do here is to go look at each test, and find a way to reproduce the same problem without using undo, e.g. by creating orphaned selection artificially.  I&apos;m not sure if this is possible yet, so I&apos;ll investigate into this.

&gt; * Everything I uploaded that starts with &quot;Repro - &quot; is what I would call a repro: each contains HTML and JavaScript
&gt;   that triggers a crash for me in latest Chromium. I&apos;m not sure what you mean by &quot;crash log&quot;.

I think he meant the stack trace. 

&gt; * I have been fuzzing this for months and only found NULL pointers. I am not saying there is a security issue hiding
&gt;   somewhere in the code, but I have failed to find any, hence marked as non-security.

Indeed, there&apos;s no security implications as far as I know.

&gt; @Ryosuke:
&gt; * I assume this was indeed one bug that could be triggered in various ways, causing the NULL pointers to happen in
&gt;   various other parts of the code and that this is indeed not a security issue?

Yes, the details explained above.

&gt; * I also assuem that your fix prevents all repros from crashing in one fell swoop?

So my patch has pros and cons.  My patch on one hand fixes the crashes by solving the problem 1 but also hides problem 2.  But editing commands shouldn&apos;t be crashing regardless.  So I&apos;ll try to come up with tests that cause the same kind of crash for each case, and then prepare a separate test that ensures that undo doesn&apos;t restore selection incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257223</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-28 10:01:43 -0700</bug_when>
    <thetext>Ugh... I misread your comment.

&gt; * I assume this was indeed one bug that could be triggered in various ways, causing the NULL pointers to happen in
&gt;   various other parts of the code and that this is indeed not a security issue?

No, the opposite is true.  There was one non-crash bug that triggered various crash bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257233</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-28 10:23:22 -0700</bug_when>
    <thetext>On another second thought, if either end of selection points to a detached node, it doesn&apos;t make much sense to call almost any editing command. So maybe my fix is okay after all.

Adding more editing people to see if anyone can comment on this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257250</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-28 11:00:01 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; On another second thought, if either end of selection points to a detached node, it doesn&apos;t make much sense to call almost any editing command. So maybe my fix is okay after all.

Yes, that makes sense. The editing command layer can just check for this type of selection and not do any command at all. That should get rid of the crashes, and then we may still have bugs where selection gets into this state, but they should be non-crashing issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257255</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-28 11:18:46 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; On another second thought, if either end of selection points to a detached node, it doesn&apos;t make much sense to call almost any editing command. So maybe my fix is okay after all.
&gt; 
&gt; Yes, that makes sense. The editing command layer can just check for this type of selection and not do any command at all. That should get rid of the crashes, and then we may still have bugs where selection gets into this state, but they should be non-crashing issues.

So do you want me to add two fixes here?  One in restoring selection and another in EditCommand to prevent calling any command if selection is orphaned.  But I feel like that might break some commands because some simple commands don&apos;t refer to selection, and some composite commands may call these simple commands before restoring the selection properly.  What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257257</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-28 11:26:17 -0700</bug_when>
    <thetext>I don’t think a fix in EditCommand is necessarily a good idea. The individual commands should probably have the fixes instead. I want the check to be as close as possible to the code that relies on assumption in the check, not in some higher level place making assumptions about all editing commands.

However, I do think that there could be two types of fixes.

1) Mechanical fixes that prevent the code from crashing in a way that’s clearly correct and closely related to the code that would crash, but may give suboptimal editing behavior.

2) Higher level fixes that give more logical results in strange cases where the low level fixes might lead to unexpected behavior and we can do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257273</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-28 11:46:04 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; I don’t think a fix in EditCommand is necessarily a good idea. The individual commands should probably have the fixes instead.

We&apos;re on the same page.

&gt; I want the check to be as close as possible to the code that relies on assumption in the check, not in some higher level place making assumptions about all editing commands.

Yeah, I&apos;d like that too.

&gt; However, I do think that there could be two types of fixes.
&gt; 
&gt; 1) Mechanical fixes that prevent the code from crashing in a way that’s clearly correct and closely related to the code that would crash, but may give suboptimal editing behavior.

For example #11 crash happens after http://trac.webkit.org/browser/trunk/WebCore/editing/ReplaceSelectionCommand.cpp#824 because DeleteSelection clears up the selection and #825 obtains a null visible position.  This clearly is a problem but I&apos;m not sure if it&apos;s the scope of this bug to fix this kind of bug.  We might want to file a separate bug or wait until some test in which this condition holds (i.e. selection existed before the call to DeleteSelection but became null afterwards) by putting ASSERT here for now.

&gt; 2) Higher level fixes that give more logical results in strange cases where the low level fixes might lead to unexpected behavior and we can do better.

By higher level fixes, you mean something like I did in my patch to prevent undo from restoring bad selection?  Or you mean that exiting early at the beginning of each command that relies on selection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259747</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 16:53:49 -0700</bug_when>
    <thetext>SkyLined, could you unmark this bug as a security-related?  As far as I&apos;m concerned, there are no &quot;exploitable&quot; crashes here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259762</commentid>
    <comment_count>34</comment_count>
      <attachid>63394</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 17:22:39 -0700</bug_when>
    <thetext>Created attachment 63394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259765</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-03 17:25:43 -0700</bug_when>
    <thetext>Darin, I added check for various editing commands.  But it turns out that at least 2 tests I&apos;m adding crashes inside the changeSelectionAfterCommand when it tries to create a range to verify the selection so my change in changeSelectionAfterCommand is still necessary to fix this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268726</commentid>
    <comment_count>36</comment_count>
      <attachid>63394</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-24 12:49:03 -0700</bug_when>
    <thetext>Comment on attachment 63394
Patch

&gt; +    if (!m_selectionToDelete.isRange() || m_selectionToDelete.start().isOrphan() || m_selectionToDelete.end().isOrphan())

I&apos;d like to see a helper function for this so we don&apos;t have to repeat these three checks every time. One version for the isNone and another for the isRange variant I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269432</commentid>
    <comment_count>37</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-25 12:16:40 -0700</bug_when>
    <thetext>Thanks for the review, Darin.  I really appreciate it.

(In reply to comment #36)
&gt; (From update of attachment 63394 [details])
&gt; &gt; +    if (!m_selectionToDelete.isRange() || m_selectionToDelete.start().isOrphan() || m_selectionToDelete.end().isOrphan())
&gt; 
&gt; I&apos;d like to see a helper function for this so we don&apos;t have to repeat these three checks every time. One version for the isNone and another for the isRange variant I guess.

Will add isNonOrphanedRange and isNonOrphanedCaretOrRange to VisibleSelection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269433</commentid>
    <comment_count>38</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-25 12:19:40 -0700</bug_when>
    <thetext>Committed r66032: &lt;http://trac.webkit.org/changeset/66032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367736</commentid>
    <comment_count>39</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-03-15 10:07:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/9135704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874596</commentid>
    <comment_count>40</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-06-07 15:50:31 -0700</bug_when>
    <thetext>Hi Team - is it by design that execCommand(&apos;undo&apos;) can reopen closed tabs in Safari?

Because in (non-Private) Safari window, I can reopen closed tabs using single line of HTML from below JSFiddle:

https://jsfiddle.net/tg3njfmu/1/show

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874597</commentid>
    <comment_count>41</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-06-07 16:01:21 -0700</bug_when>
    <thetext>Just to update in all other browser irrespective of Private or Incognito - &quot;undo&quot; button does not reopen old tabs. Further, I noticed that Chrome did some changes on their end to make it on per-frame level rather than per-tab level from security perspective here - https://chromium.googlesource.com/chromium/src/+/512508f0d652a006407ce66aafcd339b296a5276

I know from Interop perspective &quot;execCommand&quot; are still under investigation and there are test cases lacking from WPT but I think Safari should be consistent in behavior to other browsers here and does not open &quot;closed tabs&quot; using HTML. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874602</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-06-07 16:33:38 -0700</bug_when>
    <thetext>Adding those comments to a 12-year-old bug about null pointer crashes is probably not the right way to make progress. Consider filing a new bug, in the security component perhaps?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45327</attachid>
            <date>2009-12-21 07:17:57 -0800</date>
            <delta_ts>2010-07-27 02:43:37 -0700</delta_ts>
            <desc>Repro - WebCore::caretMaxOffset ReadAV@NULL (5785e692fef72522c3ee976bff525d98)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>474</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPgo8U0NSSVBUPgogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwi
LCIiKTsKICBkb2N1bWVudC5kZXNpZ25Nb2RlPSAib24iOwogIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRIb3Jpem9udGFsUnVsZSIsIiIpOwogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDcmVh
dGVMaW5rIixmYWxzZSwgMTcxKTsKICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0b3JkZXJl
ZExpc3QiLGZhbHNlLHVuZGVmaW5lZCk7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlVubGluayIs
NSk7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIsZmFsc2UsIiIpOwogIGRvY3VtZW50
LmRlc2lnbk1vZGU9IiI7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInVuZG8iLDIpOwogIGRvY3Vt
ZW50LmRlc2lnbk1vZGU9Im9uIjsKICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9yZUNvbG9yIixm
YWxzZSwzKTsKPC9TQ1JJUFQ+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45668</attachid>
            <date>2009-12-30 09:33:12 -0800</date>
            <delta_ts>2009-12-30 09:33:12 -0800</delta_ts>
            <desc>reduced test case with comments</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>519</size>
            <attacher name="Mike Moretti">webkit9</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPgo8U0NSSVBUPgogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwi
LGZhbHNlLCIiKTsKICBkb2N1bWVudC5kZXNpZ25Nb2RlPSAib24iOwovLyBjcmVhdGVsaW5rIGZv
bGxvd2VkIGJ5IGFueSBpbnNlcnQgY29tbWFuZAogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDcmVh
dGVMaW5rIixmYWxzZSwgJ3dlYmtpdC5vcmcnKTsKICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0cGFyYWdyYXBoIiwgZmFsc2UsICIiKTsKLy8gdHVybiBkZXNpZ24gbW9kZSBvZmYgYW5kIHVu
ZG8KICBkb2N1bWVudC5kZXNpZ25Nb2RlPSJvZmYiOwogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1
bmRvIiwgZmFsc2UsICIiKTsKICBkb2N1bWVudC5kZXNpZ25Nb2RlPSJvbiI7Ci8vIEFueSBjb21t
YW5kIGhlcmUgd2lsbCBjcmFzaAovLyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIsZmFs
c2UsIiIpOwogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJGb3JlQ29sb3IiLGZhbHNlLDMpOwo8L1ND
UklQVD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62665</attachid>
            <date>2010-07-27 02:41:56 -0700</date>
            <delta_ts>2010-07-27 02:41:56 -0700</delta_ts>
            <desc>Repro - WebCore::Node::hasTagName ReadAV@NULL (106220ce302426f16b811b1cc735e87a)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>277</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PGJvZHkgb25sb2FkPSIKZG9jdW1lbnQuZGVzaWduTW9kZT0nb24nOwpkb2N1bWVudC5leGVjQ29t
bWFuZCgnc2VsZWN0YWxsJyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCdpdGFsaWMnKTsKZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ1JlbW92ZUZvcm1hdCcpOwpkb2N1bWVudC5kZXNpZ25Nb2RlPSAnb2Zm
JzsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1VuZG8nKTsKZG9jdW1lbnQuZGVzaWduTW9kZSA9J29u
JzsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydGh0bWwnLCBmYWxzZSk7CiI+eA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62666</attachid>
            <date>2010-07-27 02:47:19 -0700</date>
            <delta_ts>2010-07-27 02:47:19 -0700</delta_ts>
            <desc>Repro - WebCore::ApplyStyleCommand::applyBlockStyle ReadAV@NULL (eba56e4a5c0f11cedaba7aea0468d82a)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>506</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPGhlYWQ+CiAgICA8c2NyaXB0PgogICAgICBmdW5jdGlvbiBnbygpIHsKICAgICAg
ICBkb2N1bWVudC5kZXNpZ25Nb2RlPSJvbiI7CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
IlNlbGVjdEFsbCIsZmFsc2UsSW5maW5pdHkpOwogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRJbWFnZSIsZmFsc2UsbnVsbCk7CiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFVub3JkZXJlZExpc3QiLGZhbHNlLCIiKTsKICAgICAgICBkb2N1bWVudC5kZXNpZ25N
b2RlPSJvZmYiOwogICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1bmRvIixmYWxzZSwiIik7
CiAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZT0ib24iOwogICAgICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJKdXN0aWZ5Q2VudGVyIixmYWxzZSwiIik7CiAgICAgIH0KICAgIDwvc2NyaXB0Pgog
IDwvaGVhZD4KICA8Ym9keSBvbmxvYWQ9ImdvKCk7Ij4KICA8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62667</attachid>
            <date>2010-07-27 02:48:17 -0700</date>
            <delta_ts>2010-07-27 02:48:17 -0700</delta_ts>
            <desc>Repro - WebCore::ReplaceSelectionCommand::doApply ReadAV@NULL (badacdea771d24a7e25e9ab3859da7a2)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>277</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PGJvZHkgb25sb2FkPSIKZG9jdW1lbnQuZGVzaWduTW9kZT0nb24nOwpkb2N1bWVudC5leGVjQ29t
bWFuZCgnc2VsZWN0YWxsJyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCdpdGFsaWMnKTsKZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ1JlbW92ZUZvcm1hdCcpOwpkb2N1bWVudC5kZXNpZ25Nb2RlPSAnb2Zm
JzsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1VuZG8nKTsKZG9jdW1lbnQuZGVzaWduTW9kZSA9J29u
JzsKZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydGh0bWwnLCBmYWxzZSk7CiI+eA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62668</attachid>
            <date>2010-07-27 02:53:35 -0700</date>
            <delta_ts>2010-07-27 02:53:35 -0700</delta_ts>
            <desc>Repro - WebCore::positionInParentBeforeNode ReadAV@NULL (98882320ea2b731f10f353b23849bd6a)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>1265</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPg0KPFNDUklQVD4NCmRvY3VtZW50LmV4ZWNDb21tYW5kKCJPdXRkZW50Iiwg
ZmFsc2UsIDI2MjE0MCk7DQpkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsNCmRvY3VtZW50LmV4
ZWNDb21tYW5kKCJTZWxlY3RBbGwiLCBmYWxzZSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7
DQpkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0aW1hZ2UiLCBmYWxzZSwgImRhdGE6aW1hZ2Uv
cG5nO2Jhc2U2NCxpVkJPUncwS0dya0pnZ2c9PSIpOw0KZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNl
bGVjdGFsbCIsIGZhbHNlLCBOYU4pOw0KZG9jdW1lbnQuZXhlY0NvbW1hbmQoInN0cmlrZXRocm91
Z2giLCBmYWxzZSwgImdvcGhlcjovL3d3dy5leGFtcGxlLmNvbSIpOw0KZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIsIGZhbHNlLCA0MTAwKTsNCmRvY3VtZW50LmV4ZWNDb21t
YW5kKCJqdXN0aWZ5ZnVsbCIsIGZhbHNlLCA0MDkyKTsNCmRvY3VtZW50LmV4ZWNDb21tYW5kKCJP
dmVyV3JpdGUiLCBmYWxzZSwgNCk7DQpkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9mZiI7DQpkb2N1
bWVudC5leGVjQ29tbWFuZCgib3V0ZGVudCIsIGZhbHNlLCAxNjM5MSk7DQpkb2N1bWVudC5leGVj
Q29tbWFuZCgicGFzdGUiLCBmYWxzZSwgSW5maW5pdHkpOw0KZG9jdW1lbnQuZXhlY0NvbW1hbmQo
ImRlY3JlYXNlZm9udHNpemUiLCBmYWxzZSwgMjY4NDM1NDU2KTsNCmRvY3VtZW50LmV4ZWNDb21t
YW5kKCJVbmRvIiwgZmFsc2UsICJkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04LCUzQyFET0NU
WVBFJTIwSFRNTCUyMFBVQkxJQyUyMCUyMi0lMkYlMkZXM0MlMkYlMkZEVEQlMjBIVE1MJXRsZSUz
RSUzQyUyRmhlYWQlM0UlMEQlMEElM0Nib2R5JTNFJTNDaDElM0U0MiUzQyUyRmgxJTNFJTNDJTJG
Ym9keSUzRSUwRCUwQSUzQyUyRmh0bWwlM0UlMEQlMEEiKTsNCmRvY3VtZW50LmRlc2lnbk1vZGUg
PSAib24iOw0KZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlQW5kTWF0Y2hTdHlsZSIsIGZhbHNl
LCAiPGlucHV0IHR5cGU9c3VibVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx4YTdceGE3
XHhhN1x4YTcsXCcgZGlhbG9nSGVpZ2h0PWBzc3Nzc3Nzc1x4MDZceDA2XHgwNlx4MDZceDA2XHgw
Nlx4MDZceDA2XHgwNlx4MDZceGJhXHhiYWAgY291bnRlckluY3JlbWVuIik7DQpkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiZnRwOi8vd3d3LmV4YW1wbGUuY29tIik7
DQo8L1NDUklQVD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62669</attachid>
            <date>2010-07-27 03:02:59 -0700</date>
            <delta_ts>2010-07-27 03:02:59 -0700</delta_ts>
            <desc>Repro - WebCore::ApplyStyleCommand::removeInlineStyle ReadAV@NULL (18fa82a60d48c7965db66b916a546328)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>357</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPgo8U0NSSVBUPgogIGRvY3VtZW50LmRlc2lnbk1vZGU9Im9uIjsKICBkb2N1
bWVudC5leGVjQ29tbWFuZCgic2VsZWN0YWxsIik7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydEhvcml6b250YWxSdWxlIik7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIp
OwogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJGb3J3YXJkRGVsZXRlIik7CiAgZG9jdW1lbnQuZGVz
aWduTW9kZT0ib2ZmIjsKICBkb2N1bWVudC5leGVjQ29tbWFuZCgidW5kbyIpOwogIGRvY3VtZW50
LmRlc2lnbk1vZGU9Im9uIjsKICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9yZUNvbG9yIixmYWxz
ZSwzKTsKPC9TQ1JJUFQ+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62670</attachid>
            <date>2010-07-27 03:04:35 -0700</date>
            <delta_ts>2010-07-27 03:04:35 -0700</delta_ts>
            <desc>Repro - WebCore::executeToggleStyleInList ReadAV@NULL (95ebfffa464da44f33912d9597442825)</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>354</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPgo8U0NSSVBUPgogIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJzZWxlY3RhbGwi
LGZhbHNlLDIpOwogIGRvY3VtZW50LmRlc2lnbk1vZGU9Im9uIjsKICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0SG9yaXpvbnRhbFJ1bGUiLGZhbHNlLCIiKTsKICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiRGVsZXRlIixmYWxzZSwiIik7CiAgZG9jdW1lbnQuZGVzaWduTW9kZT0iIjsKICBkb2N1
bWVudC5leGVjQ29tbWFuZCgidW5kbyIsZmFsc2UsIiIpOwogIGRvY3VtZW50LmRlc2lnbk1vZGUg
PSJvbiI7CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInN0cmlrZXRocm91Z2giLGZhbHNlLGZhbHNl
KTsKPC9TQ1JJUFQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62756</attachid>
            <date>2010-07-27 15:24:01 -0700</date>
            <delta_ts>2010-08-03 17:22:35 -0700</delta_ts>
            <desc>fixes the crash</desc>
            <filename>fix32823</filename>
            <type>text/plain</type>
            <size>21257</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDctMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFy
aW91cyBkZXNpZ25tb2RlPSJvbiIvIm9mZiIgJiBleGVjQ29tbWFuZCgiVW5kbyIpIE5VTEwgcG9p
bnRlciBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMjgyMworCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQgd2hpY2ggdXBkYXRlcyB0aGUgc2VsZWN0aW9uCisgICAgICAgIHdpdGhv
dXQgY2hlY2tpbmcgdGhlIHdoZXRoZXIgbmV3IHNlbGVjdGlvbiBpcyB2YWxpZCBvciBub3QuCisK
KyAgICAgICAgRml4ZWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kIHNvIHRoYXQgaXQgd29u
J3QgdXBkYXRlIHRoZSBzZWxlY3Rpb24KKyAgICAgICAgd2hlbiBlaXRoZXIgZW5kIG9mIHRoZSBu
ZXcgc2VsZWN0aW9uIGlzIG9ycGhhbmVkLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3VuZG8v
b3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTEuaHRtbAorICAgICAgICAgICAgICAg
ZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0yLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4
MjMtMy5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9u
LWNyYXNoLWJ1ZzMyODIzLTQuaHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQpOgor
CiAyMDEwLTA3LTI3ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAkocmV2aXNpb24gNjQwMzQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg3Nyw2ICsyODc3LDEwIEBAIFBhc3NSZWZQdHI8UmFuZ2U+
IEVkaXRvcjo6bmV4dFZpc2libGVSYW4KIAogdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFm
dGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIGJvb2wgY2xv
c2VUeXBpbmcsIGJvb2wgY2xlYXJUeXBpbmdTdHlsZSkKIHsKKyAgICAvLyBJZiB0aGUgbmV3IHNl
bGVjdGlvbiBpcyBvcnBoYW5lZCwgdGhlbiBkb24ndCB1cGRhdGUgdGhlIHNlbGVjdGlvbi4KKyAg
ICBpZiAobmV3U2VsZWN0aW9uLnN0YXJ0KCkuaXNPcnBoYW4oKSB8fCBuZXdTZWxlY3Rpb24uZW5k
KCkuaXNPcnBoYW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8g
c2VsZWN0aW9uIGNoYW5nZSwgZG9uJ3QgYm90aGVyIHNlbmRpbmcgc2hvdWxkQ2hhbmdlU2VsZWN0
aW9uLCBidXQgc3RpbGwgY2FsbCBzZXRTZWxlY3Rpb24sCiAgICAgLy8gYmVjYXVzZSB0aGVyZSBp
cyB3b3JrIHRoYXQgaXQgbXVzdCBkbyBpbiB0aGlzIHNpdHVhdGlvbi4KICAgICAvLyBUaGUgb2xk
IHNlbGVjdGlvbiBjYW4gYmUgaW52YWxpZCBoZXJlIGFuZCBjYWxsaW5nIHNob3VsZENoYW5nZVNl
bGVjdGlvbiBjYW4gcHJvZHVjZSBzb21lIHN0cmFuZ2UgY2FsbHMuCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2NDE2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDM2IEBACiAyMDEwLTA3LTI3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMg
ZGVzaWdubW9kZT0ib24iLyJvZmYiICYgZXhlY0NvbW1hbmQoIlVuZG8iKSBOVUxMIHBvaW50ZXIg
Y3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzI4MjMKKworICAgICAgICBUZXN0cyBjcmFzaCB3aGVuIHVuZG8gZmFpbHMgYW5kIHRoZSBzZWxl
Y3Rpb24gY2Fubm90IGJlIHVuZG9uZS4KKworICAgICAgICAqIGVkaXRpbmcvdW5kby9vcnBoYW5l
ZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNo
LWJ1ZzMyODIzLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG8v
b3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0zLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlv
bi1jcmFzaC1idWczMjgyMy0zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kby9v
cnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMt
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LXdp
dGgtcmVtb3ZhbC1leHBlY3RlZC50eHQ6IENhcmV0IGlzIHJlY292ZXJlZCBjb3JyZWN0bHkuCisg
ICAgICAgICogcGxhdGZvcm0vcXQvZWRpdGluZy9zdHlsZS9yZW1vdmUtdW5kZXJsaW5lLWZyb20t
c3R5bGVzaGVldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisyMDEwLTA3LTI3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJFR1JFU1NJT046IGVkaXRpbmcvc3R5bGUvcmVtb3ZlLXVuZGVybGlu
ZS1mcm9tLXN0eWxlc2hlZXQuaHRtbCBmYWlscyBvbiBRdCBwbGF0Zm9ybSBhZnRlciByNjQwODMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDYxCisK
KyAgICAgICAgQWRkZWQgYSBxdC1zcGVjaWZpYyB0ZXN0IHJlc3VsdCBiZWNhdXNlIHRoZSBmaW5h
bCByYW5nZSBhbmQgdGhlIGdlbmVyYXRlZCBET00gaXMgc2FtZS4KKworICAgICAgICAqIHBsYXRm
b3JtL3F0L2VkaXRpbmcvc3R5bGUvcmVtb3ZlLXVuZGVybGluZS1mcm9tLXN0eWxlc2hlZXQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKworMjAxMC0wNy0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBKdXN0aW4gR2FyY2lhLgogCiAgICAgICAg
IFJFR1JFU1NJT046IGVkaXRpbmcvc3R5bGUvcmVtb3ZlLXVuZGVybGluZS1mcm9tLXN0eWxlc2hl
ZXQuaHRtbCBmYWlscyBvbiBRdCBwbGF0Zm9ybSBhZnRlciByNjQwODMKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVk
LXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4
MjMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4
MjMtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5l
ZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0xLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxib2R5IG9ubG9hZD0iCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpO30KK2RvY3VtZW50LmRlc2lnbk1vZGU9J29uJzsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdz
ZWxlY3RhbGwnKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdpdGFsaWMnKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCdSZW1vdmVGb3JtYXQnKTsKK2RvY3VtZW50LmRlc2lnbk1vZGU9ICdvZmYnOwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1VuZG8nKTsKK2RvY3VtZW50LmRlc2lnbk1vZGUgPSdvbic7
Citkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0aHRtbCcsIGZhbHNlKTsKK2RvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MPSdQQVNTJzsiPngKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9v
cnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1i
dWczMjgyMy0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gt
YnVnMzI4MjMtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
L29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0yLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjMgQEAKKzxCT0RZPjwvQk9EWT4NCis8U0NSSVBUPg0KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiLCBmYWxzZSwgMjYyMTQwKTsNCitkb2N1
bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxs
IiwgZmFsc2UsICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOw0KK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJpbnNlcnRpbWFnZSIsIGZhbHNlLCAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBL
R3JrSmdnZz09Iik7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoInNlbGVjdGFsbCIsIGZhbHNlLCBO
YU4pOw0KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJzdHJpa2V0aHJvdWdoIiwgZmFsc2UsICJnb3Bo
ZXI6Ly93d3cuZXhhbXBsZS5jb20iKTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVdvcmRG
b3J3YXJkIiwgZmFsc2UsIDQxMDApOw0KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJqdXN0aWZ5ZnVs
bCIsIGZhbHNlLCA0MDkyKTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiT3ZlcldyaXRlIiwgZmFs
c2UsIDQpOw0KK2RvY3VtZW50LmRlc2lnbk1vZGUgPSAib2ZmIjsNCitkb2N1bWVudC5leGVjQ29t
bWFuZCgib3V0ZGVudCIsIGZhbHNlLCAxNjM5MSk7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoInBh
c3RlIiwgZmFsc2UsIEluZmluaXR5KTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiZGVjcmVhc2Vm
b250c2l6ZSIsIGZhbHNlLCAyNjg0MzU0NTYpOw0KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJVbmRv
IiwgZmFsc2UsICJkYXRhOnRleHQvaHRtbDtjaGFyc2V0PXV0Zi04LCUzQyFET0NUWVBFJTIwSFRN
TCUyMFBVQkxJQyUyMCUyMi0lMkYlMkZXM0MlMkYlMkZEVEQlMjBIVE1MJXRsZSUzRSUzQyUyRmhl
YWQlM0UlMEQlMEElM0Nib2R5JTNFJTNDaDElM0U0MiUzQyUyRmgxJTNFJTNDJTJGYm9keSUzRSUw
RCUwQSUzQyUyRmh0bWwlM0UlMEQlMEEiKTsNCitkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsN
Citkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGVBbmRNYXRjaFN0eWxlIiwgZmFsc2UsICI8aW5w
dXQgdHlwZT1zdWJtXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHhhN1x4YTdceGE3XHhh
NyxcJyBkaWFsb2dIZWlnaHQ9YHNzc3Nzc3NzXHgwNlx4MDZceDA2XHgwNlx4MDZceDA2XHgwNlx4
MDZceDA2XHgwNlx4YmFceGJhYCBjb3VudGVySW5jcmVtZW4iKTsNCitkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiZnRwOi8vd3d3LmV4YW1wbGUuY29tIik7DQorZG9j
dW1lbnQuYm9keS5pbm5lckhUTUw9J1BBU1MnOw0KKzwvU0NSSVBUPg0KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVk
LXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4
MjMtMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4
MjMtMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5l
ZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0zLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxCT0RZPjwvQk9EWT4KKzxTQ1JJUFQ+
CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICBkb2N1bWVudC5kZXNpZ25Nb2RlPSJvbiI7CisgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJzZWxlY3RhbGwiKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydEhvcml6b250YWxSdWxlIik7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwi
KTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkZvcndhcmREZWxldGUiKTsKKyAgZG9jdW1lbnQu
ZGVzaWduTW9kZT0ib2ZmIjsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoInVuZG8iKTsKKyAgZG9j
dW1lbnQuZGVzaWduTW9kZT0ib24iOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRm9yZUNvbG9y
IixmYWxzZSwzKTsKKyAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUw9J1BBU1MnOworPC9TQ1JJUFQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNo
LWJ1ZzMyODIzLTQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0
aW9uLWNyYXNoLWJ1ZzMyODIzLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
IEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0
aW9uLWNyYXNoLWJ1ZzMyODIzLTQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jh
c2gtYnVnMzI4MjMtNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8Qk9EWT48
L0JPRFk+Cis8U0NSSVBUPgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoInNlbGVjdGFsbCIsZmFsc2UsdHJ1ZSk7CisgIGRvY3VtZW50LmRlc2lnbk1vZGU9Im9uIjsK
KyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydGhvcml6b250YWxydWxlIiw4KTsKKyAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEltYWdlIixmYWxzZSwiIik7CisgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJqdXN0aWZ5bGVmdCIsZmFsc2UsMSk7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJpbnNlcnRwYXJhZ3JhcGgiLGZhbHNlKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVj
dEFsbCIsZmFsc2UsdW5kZWZpbmVkKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydE9y
ZGVyZWRMaXN0IixmYWxzZSxudWxsKTsKKyAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUw9J1BBU1Mn
OworPC9TQ1JJUFQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10
ZXh0LXdpdGgtcmVtb3ZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvL3JlZG8tc3BsaXQtdGV4dC13aXRoLXJlbW92YWwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2NDAzNCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9yZWRvLXNwbGl0LXRl
eHQtd2l0aC1yZW1vdmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMs
NiBAQCBhZnRlciBub2RlIHJlbW92YWw6CiBhZnRlciByZWRvOgogPERJViBpZD0idGVzdCIgY29u
dGVudEVkaXRhYmxlPSIiPgogPERJVj4KLTwjdGV4dD5oZWxsbzwvI3RleHQ+Cis8I3RleHQ+PHNl
bGVjdGlvbi1jYXJldD5oZWxsbzwvI3RleHQ+CiA8L0RJVj4KIDwvRElWPgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZWRpdGluZy9zdHlsZS9yZW1vdmUtdW5kZXJsaW5lLWZyb20tc3R5
bGVzaGVldC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZWRpdGluZy9zdHlsZS9yZW1vdmUtdW5kZXJsaW5lLWZyb20tc3R5bGVzaGVldC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3N0
eWxlL3JlbW92ZS11bmRlcmxpbmUtZnJvbS1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4MCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0
aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMyBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAxIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJW
aWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDIgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZy
b20gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
NSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gNSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSA2IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDYgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA2IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDcgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gNyBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDggb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOCBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA5IG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDkgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEw
IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTAgb2YgI3RleHQg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAxMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDEwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMTEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDExIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEyIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMTIgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMiBvZiAjdGV4dCA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEyIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEzIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTMgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAxMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEzIG9mICN0
ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDE0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTQgb2YgI3Rl
eHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFu
Z2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDE0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDE1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMTUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxNSBvZiAjdGV4dCA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDE1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDE2IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTYgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxNiBvZiAjdGV4
dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDE2IG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDE3IG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTcgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDE3IG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDE4IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTggb2Yg
I3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAxOCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDE4IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDE5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMTkgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxOSBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDE5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDIwIG9mICN0ZXh0ID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA2IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA2
IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZp
Y2F0aW9uCitUaGlzIHRlc3RzIHJlbW92aW5nIHVuZGVybGluZSBmcm9tIHN0eWxlc2hlZXQgKC5l
ZGl0aW5nIGhhcyB1bmRlcmxpbmUpLiBCZWNhdXNlIHRleHQtZGVjb3JhdGlvbiB0aGF0IGNvbWVz
IGZyb20gYSBzdHlsZSBydWxlIGNhbm5vdCBiZSBwdXNoZWQgZG93biwgdGhlIHVuZGVybGluZSBz
aG91bGQgc3RheS4gKHNlZSBidWcgMjc4MDkpLgorCis8RElWIGNsYXNzPSJlZGl0aW5nIiBpZD0i
cm9vdCIgY29udGVudEVkaXRhYmxlPSIiPgorPCN0ZXh0Pnh4eHh4eCA8LyN0ZXh0PgorPCN0ZXh0
PjxzZWxlY3Rpb24tYW5jaG9yPnh4eHh4eDxzZWxlY3Rpb24tZm9jdXM+PC8jdGV4dD4KKzwjdGV4
dD4geHh4eHh4PC8jdGV4dD4KKzxTUEFOIGlkPSJ0ZXN0Ij4KKzwvU1BBTj4KKzwvRElWPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63394</attachid>
            <date>2010-08-03 17:22:39 -0700</date>
            <delta_ts>2010-08-24 12:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32823-20100803172238.patch</filename>
            <type>text/plain</type>
            <size>18439</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDYwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDgtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFy
aW91cyBkZXNpZ25tb2RlPSZxdW90O29uJnF1b3Q7LyZxdW90O29mZiZxdW90OyAmYW1wOyBleGVj
Q29tbWFuZCgmcXVvdDtVbmRvJnF1b3Q7KSBOVUxMIHBvaW50ZXIgY3Jhc2hlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjMKKworICAgICAgICBU
aGUgYnVnIHdhcyBjYXVzZWQgYnkgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kIHdoaWNoIHVw
ZGF0ZXMgdGhlIHNlbGVjdGlvbgorICAgICAgICB3aXRob3V0IGNoZWNraW5nIHRoZSB3aGV0aGVy
IG5ldyBzZWxlY3Rpb24gaXMgdmFsaWQgb3Igbm90LgorCisgICAgICAgIEZpeGVkIGNoYW5nZVNl
bGVjdGlvbkFmdGVyQ29tbWFuZCBzbyB0aGF0IGl0IHdvbid0IHVwZGF0ZSB0aGUgc2VsZWN0aW9u
CisgICAgICAgIHdoZW4gZWl0aGVyIGVuZCBvZiB0aGUgbmV3IHNlbGVjdGlvbiBpcyBvcnBoYW5l
ZC4gQWxzbyBmaXhlZCB2YXJpb3VzIGVkaXRpbmcgY29tbWFuZHMKKyAgICAgICAgdG8gZXhpdCBl
YXJseSBpZiBlaXRoZXIgZW5kIG9mIHRoZSBzZWxlY3Rpb24gaXMgb3JwaGFuZWQuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMt
MS5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNy
YXNoLWJ1ZzMyODIzLTIuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvL29ycGhhbmVk
LXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0zLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcv
dW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtNC5odG1sCisKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNoYW5nZVNl
bGVjdGlvbkFmdGVyQ29tbWFuZCk6IE5vIGxvbmdlciBzZXRzIG9ycGhhbmVkIHNlbGVjdGlvbi4K
KyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IEFkZGVkIGFuIGVhcmx5
IGV4aXN0LiBTZWUgYWJvdmUuCisgICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpkb0FwcGx5KTogRGl0
dG8uCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6ZG9BcHBseSk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KTogRGl0dG8uCisgICAgICAgICogZWRp
dGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0
Q29tbWFuZDo6ZG9BcHBseSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9J
bnNlcnRUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFu
ZDo6aW5wdXQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOiBEaXR0by4KKyAgICAg
ICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTogRGl0dG8uCisgICAgICAgICog
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRvQXBwbHkpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1VubGlua0NvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VW5saW5rQ29tbWFuZDo6ZG9BcHBseSk6IERpdHRvLgorCiAy
MDEwLTA4LTAzICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggdGhlIGJ1aWxkIGJ5IGFkZGluZyB0aGUgbmVlZGVkIE1hdGhNTCBzb3VyY2UgZmls
ZXMgdG8gV2ViQ29yZSdzIHZjcHJvai4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY0NjAzKQorKysgV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzQsOCArNzM0LDgg
QEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyB1c2UgdGhl
IGN1cnJlbnQgZW5kaW5nIHNlbGVjdGlvbi4KICAgICBpZiAoIW1faGFzU2VsZWN0aW9uVG9EZWxl
dGUpCiAgICAgICAgIG1fc2VsZWN0aW9uVG9EZWxldGUgPSBlbmRpbmdTZWxlY3Rpb24oKTsKLSAg
ICAKLSAgICBpZiAoIW1fc2VsZWN0aW9uVG9EZWxldGUuaXNSYW5nZSgpKQorCisgICAgaWYgKCFt
X3NlbGVjdGlvblRvRGVsZXRlLmlzUmFuZ2UoKSB8fCBtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0
KCkuaXNPcnBoYW4oKSB8fCBtX3NlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmlzT3JwaGFuKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSBkZWxldGlvbiBpcyBvY2N1cnJpbmcgaW4g
YSB0ZXh0IGZpZWxkLCBhbmQgd2UncmUgbm90IGRlbGV0aW5nIHRvIHJlcGxhY2UgdGhlIHNlbGVj
dGlvbiwgdGhlbiBsZXQgdGhlIGZyYW1lIGNhbGwgYWNyb3NzIHRoZSBicmlkZ2UgdG8gbm90aWZ5
IHRoZSBmb3JtIGRlbGVnYXRlLiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA2NDYwMykK
KysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODc3LDYg
KzI4NzcsMTAgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpuZXh0VmlzaWJsZVJhbgogCiB2
b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIG5ld1NlbGVjdGlvbiwgYm9vbCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0
eWxlKQogeworICAgIC8vIElmIHRoZSBuZXcgc2VsZWN0aW9uIGlzIG9ycGhhbmVkLCB0aGVuIGRv
bid0IHVwZGF0ZSB0aGUgc2VsZWN0aW9uLgorICAgIGlmIChuZXdTZWxlY3Rpb24uc3RhcnQoKS5p
c09ycGhhbigpIHx8IG5ld1NlbGVjdGlvbi5lbmQoKS5pc09ycGhhbigpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBJZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gY2hhbmdlLCBkb24ndCBib3Ro
ZXIgc2VuZGluZyBzaG91bGRDaGFuZ2VTZWxlY3Rpb24sIGJ1dCBzdGlsbCBjYWxsIHNldFNlbGVj
dGlvbiwKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIHdvcmsgdGhhdCBpdCBtdXN0IGRvIGluIHRo
aXMgc2l0dWF0aW9uLgogICAgIC8vIFRoZSBvbGQgc2VsZWN0aW9uIGNhbiBiZSBpbnZhbGlkIGhl
cmUgYW5kIGNhbGxpbmcgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uIGNhbiBwcm9kdWNlIHNvbWUgc3Ry
YW5nZSBjYWxscy4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCShy
ZXZpc2lvbiA2NDYwMykKKysrIFdlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIGJvb2wgRm9ybWF0QmxvY2tDb21tYW5k
Ojptb2RpZnlSYW5nZSgpCiAKIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpkb0FwcGx5KCkKIHsK
LSAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAgaWYgKGVuZGluZ1NlbGVj
dGlvbigpLmlzTm9uZSgpIHx8IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkuaXNPcnBoYW4oKSB8
fCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS5pc09ycGhhbigpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgaWYgKCFlbmRpbmdTZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkpCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHJldmlzaW9uIDY0
NjAzKQorKysgV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgSW5kZW50T3V0ZGVudENvbW1hbmQ6Om91
dGRlbnRSZWdpb24KIAogdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0g
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc05vbmUoKSB8fCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmlzT3JwaGFuKCkgfHwg
ZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFlbmRpbmdTZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVtZW50KCkpCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCShyZXZpc2lvbiA2NDYw
MykKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRv
QXBwbHkoKQogewogICAgIGRlbGV0ZVNlbGVjdGlvbigpOwogICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7Ci0gICAgaWYgKHNlbGVjdGlvbi5pc05vbmUo
KSkKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5zdGFydCgpLmlzT3Jw
aGFuKCkgfHwgc2VsZWN0aW9uLmVuZCgpLmlzT3JwaGFuKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXQoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gNjQ2MDMp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw3IEBAIEluc2VydExpc3RDb21tYW5kOjpJbnNlcnRMaXN0Q29tbWFuZChE
b2MKIAogdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiB7Ci0gICAgaWYgKGVuZGlu
Z1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUo
KSB8fCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmlzT3JwaGFuKCkgfHwgZW5kaW5nU2VsZWN0
aW9uKCkuZW5kKCkuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmICgh
ZW5kaW5nU2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpKQpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkocmV2
aXNpb24gNjQ2MDMpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IEluc2VydFBhcmFncmFwaFNlcGFyCiB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogewogICAgIGJvb2wgc3BsaXRUZXh0ID0gZmFsc2U7Ci0g
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc05vbmUoKSB8fCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmlzT3JwaGFuKCkgfHwg
ZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIFBvc2l0aW9uIGluc2VydGlvblBvc2l0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNpb24g
NjQ2MDMpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQo
Y29uc3QgU3RyaQogICAgIAogICAgIEFTU0VSVCh0ZXh0LmZpbmQoJ1xuJykgPT0gLTEpOwogCi0g
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgIGlmIChlbmRpbmdTZWxlY3Rp
b24oKS5pc05vbmUoKSB8fCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmlzT3JwaGFuKCkgfHwg
ZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gRGVsZXRlIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gNjQ2MDMpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpNb3ZlU2VsZWN0aW9uQ29tbWEKIHZvaWQgTW92
ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogewogICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7Ci0gICAgQVNTRVJUKHNlbGVjdGlvbi5pc1Jhbmdl
KCkpOworICAgIEFTU0VSVChzZWxlY3Rpb24uaXNSYW5nZSgpICYmICFlbmRpbmdTZWxlY3Rpb24o
KS5zdGFydCgpLmlzT3JwaGFuKCkgJiYgIWVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmlzT3JwaGFu
KCkpOwogCiAgICAgUG9zaXRpb24gcG9zID0gbV9wb3NpdGlvbjsKICAgICBpZiAocG9zLmlzTnVs
bCgpKQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAkocmV2aXNp
b24gNjQ2MDMpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDExIEBAIFJlbW92ZUZvcm1hdENvbW1hbmQ6OlJlbW92
ZUZvcm1hdENvbW1hbmQKIHZvaWQgUmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICAKKworICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsK
KyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5zdGFydCgpLmlzT3JwaGFu
KCkgfHwgc2VsZWN0aW9uLmVuZCgpLmlzT3JwaGFuKCkpCisgICAgICAgIHJldHVybjsKKwogICAg
IC8vIE1ha2UgYSBwbGFpbiB0ZXh0IHN0cmluZyBmcm9tIHRoZSBzZWxlY3Rpb24gdG8gcmVtb3Zl
IGZvcm1hdHRpbmcgbGlrZSB0YWJsZXMgYW5kIGxpc3RzLgogICAgIFN0cmluZyBzdHJpbmcgPSBw
bGFpblRleHQoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKTsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCShyZXZpc2lvbiA2NDYwMykKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Miw3ICs3ODIsNyBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpOwogICAgIEFTU0VSVChzZWxlY3Rpb24uaXND
YXJldE9yUmFuZ2UoKSk7CiAgICAgQVNTRVJUKHNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKSk7Ci0g
ICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSB8fCAhc2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpKQor
ICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkgfHwgIXNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKSB8
fCBzZWxlY3Rpb24uc3RhcnQoKS5pc09ycGhhbigpIHx8IHNlbGVjdGlvbi5lbmQoKS5pc09ycGhh
bigpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBzZWxlY3Rpb25Jc1BsYWluVGV4
dCA9ICFzZWxlY3Rpb24uaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY0NjAzKQorKysgV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjpjbG9zZVR5cGluZyhFZGl0Q29tbQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmRvQXBwbHkoKQogewotICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKKyAgICBp
ZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkgfHwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQo
KS5pc09ycGhhbigpIHx8IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmlzT3JwaGFuKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgaWYgKG1fY29tbWFuZFR5cGUgPT0gRGVsZXRlS2V5
KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1VubGlua0NvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmNwcAkocmV2aXNpb24gNjQ2MDMpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkg
KzM4LDkgQEAgVW5saW5rQ29tbWFuZDo6VW5saW5rQ29tbWFuZChEb2N1bWVudCogZAogdm9pZCBV
bmxpbmtDb21tYW5kOjpkb0FwcGx5KCkKIHsKICAgICAvLyBGSVhNRTogSWYgYSBjYXJldCBpcyBp
bnNpZGUgYSBsaW5rLCB3ZSBzaG91bGQgcmVtb3ZlIGl0LCBidXQgY3VycmVudGx5IHdlIGRvbid0
LgotICAgIGlmICghZW5kaW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgIGlmICghZW5kaW5n
U2VsZWN0aW9uKCkuaXNSYW5nZSgpIHx8IGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpIHx8IGVu
ZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkuaXNPcnBoYW4oKSB8fCBlbmRpbmdTZWxlY3Rpb24oKS5l
bmQoKS5pc09ycGhhbigpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgcHVzaFBh
cnRpYWxseVNlbGVjdGVkQW5jaG9yRWxlbWVudHNEb3duKCk7CiAKICAgICByZW1vdmVTdHlsZWRF
bGVtZW50KEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjQ2MDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNCBAQAorMjAxMC0wOC0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBW
YXJpb3VzIGRlc2lnbm1vZGU9Im9uIi8ib2ZmIiAmIGV4ZWNDb21tYW5kKCJVbmRvIikgTlVMTCBw
b2ludGVyIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyODIzCisKKyAgICAgICAgVGhlc2UgdGVzdHMgZW5zdXJlIFdlYktpdCBkb2Vzbid0
IGNyYXNoIHdoZW4gdW5kb2luZyBzb21lIGVkaXRpbmcgY29tbWFuZHMgZmFpbGVkCisgICAgICAg
IGFuZCBlaXRoZXIgZW5kIG9mIGVuZGluZ1NlbGVjdGlvbigpIGJlY2FtZSBvcnBoYW5lZC4KKyAg
ICAgICAgQWxsIHRlc3RzIGFyZSBjb3BpZWQgZnJvbSB0aGUgYnVnIHRvIHByZXZlbnQgcmVncmVz
c2lvbi4KKworICAgICAgICAqIGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gt
YnVnMzI4MjMtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kby9v
cnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9u
LWNyYXNoLWJ1ZzMyODIzLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvL29y
cGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy0z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24t
Y3Jhc2gtYnVnMzI4MjMtNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
dW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtNC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LXdpdGgtcmVtb3ZhbC1leHBlY3Rl
ZC50eHQ6IENhcmV0IGlzIHJlc3RvcmVkLgorCiAyMDEwLTA4LTAzICBEaW1pdHJpIEdsYXprb3Yg
IDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlZCBkdXBsaWNhdGUgZXhw
ZWN0YXRpb25zIGZyb20gdGhlIERSVCBvdmVycmlkZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rp
b24tY3Jhc2gtYnVnMzI4MjMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTEuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0
aW9uLWNyYXNoLWJ1ZzMyODIzLTEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8Ym9keSBvbmxvYWQ9IgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikge2xheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTt9Citk
b2N1bWVudC5kZXNpZ25Nb2RlPSdvbic7Citkb2N1bWVudC5leGVjQ29tbWFuZCgnc2VsZWN0YWxs
Jyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgnaXRhbGljJyk7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgnUmVtb3ZlRm9ybWF0Jyk7Citkb2N1bWVudC5kZXNpZ25Nb2RlPSAnb2ZmJzsKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCdVbmRvJyk7Citkb2N1bWVudC5kZXNpZ25Nb2RlID0nb24nOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoJ2luc2VydGh0bWwnLCBmYWxzZSk7Citkb2N1bWVudC5ib2R5LmlubmVy
SFRNTD0nUEFTUyc7Ij54CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQt
c2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMt
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8v
b3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8v
b3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIz
LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5l
ZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIzIEBACis8Qk9EWT48L0JPRFk+DQorPFNDUklQVD4NCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQ0KKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOw0KK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJPdXRkZW50IiwgZmFsc2UsIDI2MjE0MCk7DQorZG9jdW1lbnQuZGVz
aWduTW9kZSA9ICJvbiI7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIsIGZhbHNl
LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5z
ZXJ0aW1hZ2UiLCBmYWxzZSwgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dya0pnZ2c9
PSIpOw0KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJzZWxlY3RhbGwiLCBmYWxzZSwgTmFOKTsNCitk
b2N1bWVudC5leGVjQ29tbWFuZCgic3RyaWtldGhyb3VnaCIsIGZhbHNlLCAiZ29waGVyOi8vd3d3
LmV4YW1wbGUuY29tIik7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIs
IGZhbHNlLCA0MTAwKTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgianVzdGlmeWZ1bGwiLCBmYWxz
ZSwgNDA5Mik7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk92ZXJXcml0ZSIsIGZhbHNlLCA0KTsN
Citkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9mZiI7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIm91
dGRlbnQiLCBmYWxzZSwgMTYzOTEpOw0KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJwYXN0ZSIsIGZh
bHNlLCBJbmZpbml0eSk7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoImRlY3JlYXNlZm9udHNpemUi
LCBmYWxzZSwgMjY4NDM1NDU2KTsNCitkb2N1bWVudC5leGVjQ29tbWFuZCgiVW5kbyIsIGZhbHNl
LCAiZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCwlM0MhRE9DVFlQRSUyMEhUTUwlMjBQVUJM
SUMlMjAlMjItJTJGJTJGVzNDJTJGJTJGRFREJTIwSFRNTCV0bGUlM0UlM0MlMkZoZWFkJTNFJTBE
JTBBJTNDYm9keSUzRSUzQ2gxJTNFNDIlM0MlMkZoMSUzRSUzQyUyRmJvZHklM0UlMEQlMEElM0Ml
MkZodG1sJTNFJTBEJTBBIik7DQorZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7DQorZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIlBhc3RlQW5kTWF0Y2hTdHlsZSIsIGZhbHNlLCAiPGlucHV0IHR5cGU9
c3VibVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx4YTdceGE3XHhhN1x4YTcsXCcgZGlh
bG9nSGVpZ2h0PWBzc3Nzc3Nzc1x4MDZceDA2XHgwNlx4MDZceDA2XHgwNlx4MDZceDA2XHgwNlx4
MDZceGJhXHhiYWAgY291bnRlckluY3JlbWVuIik7DQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydFRleHQiLCBmYWxzZSwgImZ0cDovL3d3dy5leGFtcGxlLmNvbSIpOw0KK2RvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MPSdQQVNTJzsNCis8L1NDUklQVD4NCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rp
b24tY3Jhc2gtYnVnMzI4MjMtMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0
aW9uLWNyYXNoLWJ1ZzMyODIzLTMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kby9vcnBoYW5lZC1zZWxlY3Rpb24tY3Jhc2gtYnVnMzI4MjMtMy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8Qk9EWT48L0JPRFk+Cis8U0NSSVBUPgorICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgZG9jdW1lbnQuZGVzaWduTW9kZT0ib24iOworICBkb2N1bWVudC5leGVj
Q29tbWFuZCgic2VsZWN0YWxsIik7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIb3Jp
em9udGFsUnVsZSIpOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJGb3J3YXJkRGVsZXRlIik7CisgIGRvY3VtZW50LmRlc2lnbk1v
ZGU9Im9mZiI7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1bmRvIik7CisgIGRvY3VtZW50LmRl
c2lnbk1vZGU9Im9uIjsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkZvcmVDb2xvciIsZmFsc2Us
Myk7CisgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MPSdQQVNTJzsKKzwvU0NSSVBUPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgy
My00LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8v
b3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMyODIzLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFz
aC1idWczMjgyMy00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFT
UwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL29ycGhhbmVkLXNlbGVjdGlvbi1jcmFz
aC1idWczMjgyMy00Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
L29ycGhhbmVkLXNlbGVjdGlvbi1jcmFzaC1idWczMjgyMy00Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vb3JwaGFuZWQtc2VsZWN0aW9uLWNyYXNoLWJ1ZzMy
ODIzLTQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPEJPRFk+PC9CT0RZPgor
PFNDUklQVD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJzZWxl
Y3RhbGwiLGZhbHNlLHRydWUpOworICBkb2N1bWVudC5kZXNpZ25Nb2RlPSJvbiI7CisgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRob3Jpem9udGFscnVsZSIsOCk7CisgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRJbWFnZSIsZmFsc2UsIiIpOworICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgianVzdGlmeWxlZnQiLGZhbHNlLDEpOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0
cGFyYWdyYXBoIixmYWxzZSk7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiLGZh
bHNlLHVuZGVmaW5lZCk7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRPcmRlcmVkTGlz
dCIsZmFsc2UsbnVsbCk7CisgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MPSdQQVNTJzsKKzwvU0NS
SVBUPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvL3JlZG8tc3BsaXQtdGV4dC13aXRo
LXJlbW92YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
dW5kby9yZWRvLXNwbGl0LXRleHQtd2l0aC1yZW1vdmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjQ2MDMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LXdpdGgt
cmVtb3ZhbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE1LDQgKzE1LDQgQEAgYWZ0
ZXIgbm9kZSByZW1vdmFsOgogCiBhZnRlciByZWRvOgogfCA8ZGl2PgotfCAgICJoZWxsbyIKK3wg
ICAiPCNzZWxlY3Rpb24tY2FyZXQ+aGVsbG8iCg==
</data>
<flag name="review"
          id="51737"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>