<?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>41832</bug_id>
          
          <creation_ts>2010-07-07 21:48:02 -0700</creation_ts>
          <short_desc>[DRT] DRT should be able to dump document markers.</short_desc>
          <delta_ts>2012-03-20 10:26:15 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41423</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hbono</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247991</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-07 21:48:02 -0700</bug_when>
    <thetext>DRT should allow tests to dump document markers.
This is required for testing bugs like Bug 41423 without pixel test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252306</commentid>
    <comment_count>1</comment_count>
      <attachid>61763</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-07-15 21:26:13 -0700</bug_when>
    <thetext>Created attachment 61763
A possible fix

Greetings,

Even though this change is not exactly as you expected, it adds a new JavaScript function &apos;TextInputController.hasSpellingMarker()&apos; so we can write text-based layout tests for spellchecking. I wish it helps.

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252340</commentid>
    <comment_count>2</comment_count>
      <attachid>61763</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-15 22:53:00 -0700</bug_when>
    <thetext>Comment on attachment 61763
A possible fix

Hi Bono-san, thank you for doing this!

&gt; +
&gt; +/*!
&gt; +    @method hasSpellingMarker
&gt; +    @discussion this function is only for layout tests.
&gt; +    @param location the offset of the range to be checked.
&gt; +    @param length the length of the range to be checked.
&gt; +    @result whether there is a spelling marker in the specified range of the focused node.
&gt; +*/
&gt; +- (BOOL)hasSpellingMarker:(int)location length:(int)length;
If this is for testing purpose, how about to declare this in WebFrameInternal.h ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267181</commentid>
    <comment_count>3</comment_count>
      <attachid>64938</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-08-20 02:35:07 -0700</bug_when>
    <thetext>Created attachment 64938
A possible fix 2

Morita-san,

Thank you for your comment and sorry for my slow update.

&gt; +- (BOOL)hasSpellingMarker:(int)location length:(int)length;
If this is for testing purpose, how about to declare this in WebFrameInternal.h ?

This function is used from TextInputController.m, i.e. outside of WebKit. So, I&apos;m wondering if we can put this function in WebFrameInternal.h. (I need a comment from WebKit experts, though.)

By the way, I have updated my change to make it more compliant with the WebKit coding style. It is definitely helpful to give me your comments.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267182</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-20 02:41:20 -0700</bug_when>
    <thetext>Attachment 64938 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3256:  Path does not exist. editing/spelling/spelling-contenteditable.html  [test/expectations] [2]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268303</commentid>
    <comment_count>5</comment_count>
      <attachid>65208</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-08-23 22:20:01 -0700</bug_when>
    <thetext>Created attachment 65208
A possible fix 3

Greetings,

Even though the previous change has not been reviewed by nobody, I have updated this change because the previous change does not work any longer since r65787. I wish some one reviews this change before it becomes obsolete.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268304</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-23 22:21:21 -0700</bug_when>
    <thetext>Attachment 65208 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3237:  Path does not exist. editing/spelling/spelling-contenteditable.html  [test/expectations] [2]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268307</commentid>
    <comment_count>7</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-08-23 22:27:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 65208 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
&gt; LayoutTests/platform/chromium/test_expectations.txt:3237:  Path does not exist. editing/spelling/spelling-contenteditable.html  [test/expectations] [2]
&gt; Total errors found: 1 in 16 files
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

This is a new test added by my change. I&apos;m wondering why webkit-style complains the file does not exist?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268324</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-08-23 23:13:47 -0700</bug_when>
    <thetext>Hi bono-san, thank you for revising the patch and I&apos;m really sorry for my lack of response.

&gt; &gt; +- (BOOL)hasSpellingMarker:(int)location length:(int)length;
&gt; If this is for testing purpose, how about to declare this in WebFrameInternal.h ?
&gt; 
&gt; This function is used from TextInputController.m, i.e. outside of WebKit. So, I&apos;m wondering if we can put this function in WebFrameInternal.h. (I need a comment from WebKit experts, though.)

I&apos;m sorry that I was wrong.
What I meant is WebFramePrivate.h. WebXxxPrivate.h looks the location where
we put test-specific (or other Apple specific) APIs. 
There are WebViewPrivate.h, WebPrefrencesPrivate.h, etc.
WebFrame.h is a part of WebKit public API and will be shipped with WebKit framework.
So it would be safe to avoid something new there.

About a test, how about to adopt script-tests style?
This test is for DumpRenderTree itself and doesn&apos;t need to run on the browser.
So we can use script-tests safely and it would make the test more concise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269732</commentid>
    <comment_count>9</comment_count>
      <attachid>65528</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-08-25 23:16:04 -0700</bug_when>
    <thetext>Created attachment 65528
A possible fix 4

(In reply to comment #8)
&gt; I&apos;m sorry that I was wrong.
&gt; What I meant is WebFramePrivate.h. WebXxxPrivate.h looks the location where
&gt; we put test-specific (or other Apple specific) APIs. 
&gt; There are WebViewPrivate.h, WebPrefrencesPrivate.h, etc.
&gt; WebFrame.h is a part of WebKit public API and will be shipped with WebKit framework.
&gt; So it would be safe to avoid something new there.

It makes sense to move this function to WebFramePrivate.h. I have updated my change.
 
&gt; About a test, how about to adopt script-tests style?
&gt; This test is for DumpRenderTree itself and doesn&apos;t need to run on the browser.
&gt; So we can use script-tests safely and it would make the test more concise.

These tests depends on &quot;LayoutTests/editing/editing.js&quot; to send editor commands. To move my tests to &quot;LayoutTests/dom/script-tests&quot;, I need to copy some functions in the &quot;editing.js&quot; to my tests. I&apos;m wondering if it is good to copy such editor functions to script-tests.

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269734</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-25 23:20:45 -0700</bug_when>
    <thetext>Attachment 65528 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
LayoutTests/platform/chromium/test_expectations.txt:3180:  Path does not exist. editing/spelling/spelling-contenteditable.html  [test/expectations] [2]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269738</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-08-25 23:29:02 -0700</bug_when>
    <thetext>&gt; &gt; About a test, how about to adopt script-tests style?
&gt; &gt; This test is for DumpRenderTree itself and doesn&apos;t need to run on the browser.
&gt; &gt; So we can use script-tests safely and it would make the test more concise.
&gt; 
&gt; These tests depends on &quot;LayoutTests/editing/editing.js&quot; to send editor commands. To move my tests to &quot;LayoutTests/dom/script-tests&quot;, I need to copy some functions in the &quot;editing.js&quot; to my tests. I&apos;m wondering if it is good to copy such editor functions to script-tests.

You can provide TEMPLATE.html which includes both of editing.js and js/resources/js-test-pre.js.
I don&apos;t think we have to apply script-tests style in this case.  But I recommend to use js-test-pre.js even if you don&apos;t apply scripte-tests style.  It would make the test code simpler.


(In reply to comment #7)
&gt; &gt; LayoutTests/platform/chromium/test_expectations.txt:3237:  Path does not exist. editing/spelling/spelling-contenteditable.html  [test/expectations] [2]
&gt; &gt; Total errors found: 1 in 16 files
&gt; This is a new test added by my change. I&apos;m wondering why webkit-style complains the file does not exist?

Our style checker looks at just diff.  So it doesn&apos;t know newly added tests. You can ignore this error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269978</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-26 11:21:09 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; These tests depends on &quot;LayoutTests/editing/editing.js&quot; to send editor commands. To move my tests to &quot;LayoutTests/dom/script-tests&quot;, I need to copy some functions in the &quot;editing.js&quot; to my tests. I&apos;m wondering if it is good to copy such editor functions to script-tests.

Every .js file in script-tests has to be a test; the wrapper-creation process will create a .html for each one of the .js files in that directory. Other .js files should be in other directories and kept out of the script-tests directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270304</commentid>
    <comment_count>13</comment_count>
      <attachid>65528</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-08-26 21:24:24 -0700</bug_when>
    <thetext>Comment on attachment 65528
A possible fix 4

WebCore/ChangeLog:9
 +          Tests: editing/spelling/spelling-contentediable.html
contentediable =&gt; contentedi*t*able

This might be the reason why the style bot complained. As style bot applies the patch before it checks the patch, a newly added files should be seen from the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272718</commentid>
    <comment_count>14</comment_count>
      <attachid>66187</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-09-01 03:17:11 -0700</bug_when>
    <thetext>Created attachment 66187
A possible fix 5

(In reply to comment #13)
&gt; (From update of attachment 65528 [details])
&gt; WebCore/ChangeLog:9
&gt;  +          Tests: editing/spelling/spelling-contentediable.html
&gt; contentediable =&gt; contentedi*t*able
&gt; 
&gt; This might be the reason why the style bot complained. As style bot applies the patch before it checks the patch, a newly added files should be seen from the style checker.

Thank you for noticing this bonehead mistake of mine. I have renamed the test.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273811</commentid>
    <comment_count>15</comment_count>
      <attachid>66187</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-03 00:02:19 -0700</bug_when>
    <thetext>Comment on attachment 66187
A possible fix 5

Don&apos;t you update the test code?
I meant
 - add &lt;script src=&quot;../../fast/js/resource/js-test-pre.js&quot;&gt;&lt;/script&gt;
 - Use debug(), testPassed(), and testFailed().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273813</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-03 00:02:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt;  - add &lt;script src=&quot;../../fast/js/resource/js-test-pre.js&quot;&gt;&lt;/script&gt;

/resource/ -&gt; /resources/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273842</commentid>
    <comment_count>17</comment_count>
      <attachid>66478</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-09-03 02:25:44 -0700</bug_when>
    <thetext>Created attachment 66478
A possible fix 6

(In reply to comment #15)
&gt; (From update of attachment 66187 [details])
&gt; Don&apos;t you update the test code?
&gt; I meant
&gt;  - add &lt;script src=&quot;../../fast/js/resource/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt;  - Use debug(), testPassed(), and testFailed().

Sorry, I missed this comment. I have updated my tests to used them.

Regards,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273843</commentid>
    <comment_count>18</comment_count>
      <attachid>66478</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-03 02:28:02 -0700</bug_when>
    <thetext>Comment on attachment 66478
A possible fix 6

ok, great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273852</commentid>
    <comment_count>19</comment_count>
      <attachid>66478</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-03 03:36:29 -0700</bug_when>
    <thetext>Comment on attachment 66478
A possible fix 6

Clearing flags on attachment: 66478

Committed r66721: &lt;http://trac.webkit.org/changeset/66721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273853</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-03 03:36:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275577</commentid>
    <comment_count>21</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-09-07 20:08:28 -0700</bug_when>
    <thetext>Greetings,

Thank you all for your review and comments.
By the way, should I file another bug for platform-specific implementation of textInputController.hasSpellingMarker(), such as Chromium?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275579</commentid>
    <comment_count>22</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-07 20:17:58 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; By the way, should I file another bug for platform-specific implementation of textInputController.hasSpellingMarker(), such as Chromium?

I recommend to file another bug.
Discussing multiple patch in one bug is messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276328</commentid>
    <comment_count>23</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2010-09-08 23:31:13 -0700</bug_when>
    <thetext>(In reply to comment #22)

&gt; I recommend to file another bug.
&gt; Discussing multiple patch in one bug is messy.

Thank you for your advice. I have filed Bug 45441 so I can upload the Chromium implementation of the function.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583193</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-20 10:26:15 -0700</bug_when>
    <thetext>I think that this should have been in WebFrameInternal indeed, not WebFramePrivate. We didn&apos;t want to expose this to code other than our own testing tools.

This has been moved to Internals today, and removing the method from WebFramePrivate.h was a little risky already.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61763</attachid>
            <date>2010-07-15 21:26:13 -0700</date>
            <delta_ts>2010-08-20 02:35:07 -0700</delta_ts>
            <desc>A possible fix</desc>
            <filename>issue41832-patch0.txt</filename>
            <type>text/plain</type>
            <size>14916</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzUxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDctMTUgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaWFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0
ZWQgc3ltYm9scyB1c2VkIGJ5IFtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XS4K
KwogMjAxMC0wNy0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjM1MDUp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEy
LDcgQEAgX19aTjdXZWJDb3JlN25zQ29sb3JFUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzcmVtb3ZlTWFya2Vy
c0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQogX19aTjdXZWJDb3JlOERvY3VtZW50
MTNzdmdFeHRlbnNpb25zRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDE0bWFya2Vyc0Zvck5vZGVF
UE5TXzROb2RlRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1c2VkTm9kZUVOM1dURjEw
UGFzc1JlZlB0cklOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTZpc1BhZ2VCb3hW
aXNpYmxlRWkKIF9fWk43V2ViQ29yZThEb2N1bWVudDE3Z2V0Rm9jdXNhYmxlTm9kZXNFUk4zV1RG
NlZlY3RvcklOUzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMEVFRQpAQCAtODIzLDYgKzgyNCw3IEBA
IF9fWk5LN1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwY3VycmVudEtleWIKIF9fWk5LN1dlYkNvcmUx
Mkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFz
ZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFz
ZTlpc0VuYWJsZWRFdgorX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagogX19a
Tks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVOU18xMEZsb2F0UG9pbnRFYmIKIF9fWk5L
N1dlYkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJlY3RFdgpJbmRleDogV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDYzNTExKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMC0wNy0xNSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIFRl
eHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCB1c2luZyBwaXhl
bCB0ZXN0cyBmb3Igc3BlbGxjaGVja2luZyB0ZXN0cworICAgICAgICBhbmQgaW1wbGVtZW50cyBp
dCBmb3IgTWFjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDE4MzIKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUuaDogQWRkZWQgW1dlYkZyYW1l
IGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdIHNvIFRleHRJbnB1dENvbnRyb2xsZXIgY2FuIHVz
ZSBpdC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOiBJbXBsZW1lbnRlZCBbV2ViRnJh
bWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0uCisgICAgICAgIChnZXRTcGVsbGluZ05vZGUp
OgorICAgICAgICAoLVtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XSk6CisKIDIw
MTAtMDctMTUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgJKHJldmlzaW9uIDYz
NTA1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxMyw0ICsyMTMsMTMgQEAgQGludGVyZmFjZSBXZWJGcmFtZSA6IE5TT2JqZWN0CiAgICAgYnJp
ZGdlIGJldHdlZW4gdGhlIFdlYktpdCBhbmQgSmF2YVNjcmlwdENvcmUgQVBJcy4KICovCiAtIChK
U0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKKworLyohCisgICAgQG1ldGhvZCBoYXNT
cGVsbGluZ01hcmtlcgorICAgIEBkaXNjdXNzaW9uIHRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3Ig
bGF5b3V0IHRlc3RzLgorICAgIEBwYXJhbSBsb2NhdGlvbiB0aGUgb2Zmc2V0IG9mIHRoZSByYW5n
ZSB0byBiZSBjaGVja2VkLgorICAgIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgcmFu
Z2UgdG8gYmUgY2hlY2tlZC4KKyAgICBAcmVzdWx0IHdoZXRoZXIgdGhlcmUgaXMgYSBzcGVsbGlu
ZyBtYXJrZXIgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiB0aGUgZm9jdXNlZCBub2RlLgorKi8K
Ky0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlvbiBsZW5ndGg6KGludClsZW5n
dGg7CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA2MzUwNSkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU4Miw0
ICsxNTgyLDM4IEBAIC0gKEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0CiAgICAgcmV0
dXJuIHRvR2xvYmFsUmVmKGNvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSk7CiB9CiAKK3N0YXRpYyBOb2RlKiBnZXRT
cGVsbGluZ05vZGUoRnJhbWUqIGNvcmVGcmFtZSkKK3sKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9
IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIWZvY3VzZWRO
b2RlIHx8ICFmb2N1c2VkTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkTm9kZS0+cmVuZGVy
ZXIoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPmNoaWxkQXQoMCkpIHsKKyAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+
bm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLSAoQk9PTCloYXNTcGVsbGluZ01h
cmtlcjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCit7CisgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJl
dHVybiBOTzsKKworICAgIE5vZGUqIG5vZGUgPSBnZXRTcGVsbGluZ05vZGUoY29yZUZyYW1lKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHVuc2lnbmVkIGludCBz
dGFydE9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZnJvbSk7CisgICAgdW5zaWdu
ZWQgaW50IGVuZE9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZnJvbSArIGxlbmd0
aCk7CisgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gY29yZUZyYW1lLT5kb2N1
bWVudCgpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0g
bWFya2Vyc1tpXTsKKyAgICAgICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCA8PSBzdGFydE9mZnNl
dCAmJiBlbmRPZmZzZXQgPD0gbWFya2VyLmVuZE9mZnNldCAmJiBtYXJrZXIudHlwZSA9PSBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAg
ICByZXR1cm4gTk87Cit9CisKIEBlbmQKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNTExKQorKysgV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAt
MDctMTUgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBUZXh0SW5wdXRDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNpbmcgcGl4ZWwgdGVzdHMgZm9yIHNw
ZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxlbWVudHMgaXQgZm9yIE1hYy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODMyCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tOiBBZGRlZCBb
VGV4dElucHV0Q29udHJvbGxlcl0KKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJvbGxlciBpc1Nl
bGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tUZXh0SW5wdXRDb250
cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bVGV4dElucHV0
Q29udHJvbGxlciBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XSk6CisKIDIwMTAtMDctMTUgIFl1
dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElu
cHV0Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0JKHJldmlzaW9uIDYzNTA1KQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQkod29ya2luZyBjb3B5
KQpAQCAtMTY5LDcgKzE2OSw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNj
cmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5k
ZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZh
bGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCisgICAgICAgICAg
ICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopCisgICAg
ICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0
aDopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5NCw2ICsx
OTUsOCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAgICAg
IHJldHVybiBAIm1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0aG9k
LCBkb2Vzbid0IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCiAgICAgICAgIHJldHVybiBAInNl
dElucHV0TWV0aG9kSGFuZGxlciI7IAorICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0
b3IoaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAImhhc1NwZWxs
aW5nTWFya2VyIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC00MjcsNCArNDMwLDkgQEAgLSAo
Qk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldgogICAgIHJldHVybiBZRVM7CiB9
CiAKKy0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0
aAoreworICAgIHJldHVybiBbW3dlYlZpZXcgbWFpbkZyYW1lXSBoYXNTcGVsbGluZ01hcmtlcjpm
cm9tIGxlbmd0aDpsZW5ndGhdOworfQorCiBAZW5kCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzUxMSkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDEwLTA3LTE1ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgVGV4dElucHV0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRlc3Rz
IGZvciBzcGVsbGNoZWNraW5nIHRlc3RzCisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZvciBN
YWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgz
MgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS1l
eHBlY3RlZC50eHQ6IEFkZGVkIGEgdGV4dCB0ZXN0IGZvciBzcGVsbGNoZWNraW5nLgorICAgICAg
ICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUuaHRtbDogQWRkZWQg
YSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAgICogZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkIGEgdGV4dCB0ZXN0IGZvciBz
cGVsbGNoZWNraW5nLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFy
ZWEuaHRtbDogQWRkZWQgYSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBTa2lwcGVkIG5ldyB0ZXN0
cyBiZWNhdXNlCisgICAgICAgIFRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGluZ01hcmtlcigp
IGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogZGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogZGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDEwLTA3LTE1ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJs
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHdlIGNhbiB3
cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICd6eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUgPGRpdj4gZWxlbWVudCBhbmQgc2VlIHRoZXkg
YXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorCit6esKgCitTVUNDRVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRp
YWJsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1jb250ZW50ZWRpYWJsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBA
Cis8aHRtbD4gCis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9Imph
dmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+RWRpdGlu
ZyBUZXN0PC90aXRsZT4gCis8L2hlYWQ+IAorPGJvZHk+CitUaGlzIHRlc3RzIHdlIGNhbiB3cml0
ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6
eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUgJmx0O2RpdiZndDsgZWxlbWVudCBhbmQgc2VlIHRo
ZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0IGxh
bmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9n
KHN0cikgeworICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgIGxp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgY29uc29sZS5hcHBl
bmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChyZXN1bHQpIHsKKyAgICBpZiAo
cmVzdWx0KQorICAgICAgICBsb2coJ1NVQ0NFU1MnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygn
RkFJTEVEJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBDb3B5IHRoZSBvcmln
aW5hbCB0ZXh0IGFuZCBwYXN0ZSBpdC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dCcpLmZvY3VzKCk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hh
cmFjdGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7CisKKyAg
ICAvLyBUZXN0IHRoZSBhYm92ZSAnenonIGlzIG1hcmtlZCBhcyBtaXNzcGVsbGVkLiBXZSB0ZXN0
IGl0IG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgaW1wbGVtZW50CisgICAgLy8gdGV4dElucHV0Q29u
dHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIGV4Y2VwdGlvbnMuCisgICAgaWYg
KHRleHRJbnB1dENvbnRyb2xsZXIgJiYgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcikKKyAgICAgICAgbG9nUmVzdWx0KHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIoMCwgMikpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRh
cmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctdGV4dGFyZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIgQEAKKworU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MSBAQAorPGh0bWw+IAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5n
LmpzIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0
PgorPHRpdGxlPkVkaXRpbmcgVGVzdDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorPHA+VGhp
cyB0ZXN0cyB3ZSBjYW4gd3JpdGUgdGV4dCB0ZXN0cyBmb3Igc3BlbGxjaGVja2Vycy4gVG8gdGVz
dCBtYW51YWxseSwgdHlwZSAnenogJyBpbiB0aGUgJmx0O3RleHRhcmVhJmd0OyBlbGVtZW50IGFu
ZCBzZWUgdGhleSBhcmUgbWFya2VkIGFzIG1pc3NwZWxsZWQuPC9wPgorPHRleHRhcmVhIGlkPSJ0
ZXN0IiBjb2xzPSI4MCIgcm93cz0iMTAiPjwvdGV4dGFyZWE+Cis8dWwgaWQ9ImNvbnNvbGUiPjwv
dWw+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorZnVuY3Rpb24gbG9nKHN0cikgeworICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbGknKTsKKyAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikp
OworICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwor
ICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChyZXN1
bHQpIHsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBsb2coJ1NVQ0NFU1MnKTsKKyAgICBlbHNl
CisgICAgICAgIGxvZygnRkFJTEVEJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAv
LyBDb3B5IHRoZSBvcmlnaW5hbCB0ZXh0IGFuZCBwYXN0ZSBpdC4KKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdCcpLmZvY3VzKCk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3on
KTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCcgJyk7CisKKyAgICAvLyBUZXN0IHRoZSBhYm92ZSAnenonIGlzIG1hcmtlZCBhcyBtaXNz
cGVsbGVkLiBXZSB0ZXN0IGl0IG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgaW1wbGVtZW50CisgICAg
Ly8gdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIGV4Y2Vw
dGlvbnMuCisgICAgaWYgKHRleHRJbnB1dENvbnRyb2xsZXIgJiYgdGV4dElucHV0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcikKKyAgICAgICAgbG9nUmVzdWx0KHRleHRJbnB1dENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMCwgMikpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA2MzUwNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEyNCwz
ICszMTI0LDcgQEAgQlVHV0s0MjQxOSA6IGZhc3QvZm9ybXMvaW5wdXQtZmlsZS1kaXJlYwogQlVH
V0s0MjQyOCBNQUMgOiBzdmcvY3VzdG9tL2NvbnZvbHV0aW9uLWNyYXNoLnN2ZyA9IElNQUdFCiBC
VUdXSzQyNDI4IE1BQyA6IHN2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWNvbnYtMDEtZi5zdmcgPSBJ
TUFHRQogQlVHV0s0MjQyOCBMSU5VWCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvZmlsdGVycy1jb252
LTAxLWYuc3ZnID0gSU1BR0UrVEVYVAorCisvLyBOZWVkIHRvIGltcGxlbWVudCB0ZXh0SW5wdXRD
b250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VycygpLgorQlVHV0s0MTgzMiA6IGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbCA9IEZBSUwKK0JVR1dLNDE4MzIgOiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gRkFJTApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDYzNTA1KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTUyNTksNiArNTI1OSw4IEBAIGZh
c3QvZm9ybXMvaW5wdXQtbWF4bGVuZ3RoLWltZS1jb21wbGV0ZWQKIGZhc3QvZm9ybXMvaW5wdXQt
bWF4bGVuZ3RoLWltZS1wcmVlZGl0Lmh0bWwKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWkt
Y3Vyc29yLXBvc2l0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL2ltZS1jb21wb3NpdGlvbi1ldmVudHMt
MDAxLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAorZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAogCiAjIE5vIFVzZXIgU2Ny
aXB0cwogdXNlcnNjcmlwdHMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24g
NjM1MDUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzE5LDYgKzIzMTksMTAgQEAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1saW5lYnJl
YWsuaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1sCiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLmh0bWwKIAorIyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1Nw
ZWxsaW5nTWFya2VycygpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdGV4dGFyZWEuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRp
dGFibGUuaHRtbAorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgZmFpbGluZyBlZGl0aW5n
L3N0eWxlIHRlc3RzCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA2MzUwNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC05NTYsMyArOTU2LDcgQEAgdXNlcnNjcmlwdHMv
dXNlci1zdHlsZS10b3AtZnJhbWUtb25seS5odAogCiAjIERpcmVjdG9yeSB1cGxvYWQgaXMgbm90
IGVuYWJsZWQuCiBmYXN0L2Zvcm1zL2lucHV0LWZpbGUtZGlyZWN0b3J5LXVwbG9hZC5odG1sCisK
KyMgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcnMoKSBpcyBub3QgaW1wbGVt
ZW50ZWQuCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0bWwKK2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaXRhYmxlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64938</attachid>
            <date>2010-08-20 02:35:07 -0700</date>
            <delta_ts>2010-08-23 22:20:01 -0700</delta_ts>
            <desc>A possible fix 2</desc>
            <filename>issue41832-patch1.txt</filename>
            <type>text/plain</type>
            <size>15844</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMjAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaWFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0
ZWQgc3ltYm9scyB1c2VkIGJ5IFtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XS4K
KwogMjAxMC0wOC0yMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDY1NzIzKQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNjYy
LDYgKzY2Miw3IEBAIF9fWk43V2ViQ29yZTduc0NvbG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJD
b3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxM3JlbW92
ZU1hcmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUUKIF9fWk43V2ViQ29yZThE
b2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CitfX1pON1dlYkNvcmU4RG9jdW1lbnQxNG1hcmtlcnNG
b3JOb2RlRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0c2V0Rm9jdXNlZE5vZGVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQ
YWdlQm94VmlzaWJsZUVpCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxN2dldEZvY3VzYWJsZU5vZGVz
RVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVMbTBFRUUKQEAgLTg4MSw2ICs4
ODIsNyBAQCBfX1pOSzdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGN1cnJlbnRLZXliCiBfX1pOSzdX
ZWJDb3JlMTJJY29uRGF0YWJhc2UxMmRhdGFiYXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29u
RGF0YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29u
RGF0YWJhc2U5aXNFbmFibGVkRXYKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0
RWoKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFTlNfMTBGbG9hdFBvaW50RWJi
CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJXaWRnZXQxNHdpbmRvd0NsaXBSZWN0RXYKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2NTcyOSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMjAgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLmg6IEFkZGVkIFtX
ZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XSBzbyBUZXh0SW5wdXRDb250cm9sbGVy
IGNhbiB1c2UgaXQuCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbTogSW1wbGVtZW50ZWQg
W1dlYkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdLgorICAgICAgICAoZ2V0U3BlbGxp
bmdOb2RlKToKKyAgICAgICAgKC1bV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0p
OgorCiAyMDEwLTA4LTE5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDQyODU+IEZpeCBjb21waWxhdGlvbiB3aXRoIE5F
VFNDQVBFX1BMVUdJTl9BUEkgZGlzYWJsZWQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5oCShyZXZp
c2lvbiA2NTcyMykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTMsNCArMjEzLDEzIEBAIEBpbnRlcmZhY2UgV2ViRnJhbWUgOiBOU09iamVjdAog
ICAgIGJyaWRnZSBiZXR3ZWVuIHRoZSBXZWJLaXQgYW5kIEphdmFTY3JpcHRDb3JlIEFQSXMuCiAq
LwogLSAoSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CisKKy8qIQorICAgIEBtZXRo
b2QgaGFzU3BlbGxpbmdNYXJrZXIKKyAgICBAZGlzY3Vzc2lvbiB0aGlzIGZ1bmN0aW9uIGlzIG9u
bHkgZm9yIGxheW91dCB0ZXN0cy4KKyAgICBAcGFyYW0gbG9jYXRpb24gdGhlIG9mZnNldCBvZiB0
aGUgcmFuZ2UgdG8gYmUgY2hlY2tlZC4KKyAgICBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2Yg
dGhlIHJhbmdlIHRvIGJlIGNoZWNrZWQuCisgICAgQHJlc3VsdCB3aGV0aGVyIHRoZXJlIGlzIGEg
c3BlbGxpbmcgbWFya2VyIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhlIGZvY3VzZWQgbm9k
ZS4KKyovCistIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpbG9jYXRpb24gbGVuZ3RoOihp
bnQpbGVuZ3RoOwogQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNjU3
MjMpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwMTEsNiArMTAxMSwxOSBAQCAtICh2b2lkKV9yZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEg
dGV4CiAgICAgW3NlbGYgX2FkZERhdGE6ZGF0YV07CiB9CiAKK3N0YXRpYyBOb2RlKiBzcGVsbGlu
Z05vZGUoRnJhbWUqIGNvcmVGcmFtZSkKK3sKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIWZvY3VzZWROb2RlIHx8
ICFmb2N1c2VkTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3Ig
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkTm9kZS0+cmVuZGVyZXIoKTsg
cmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPmNoaWxkQXQoMCkpIHsKKyAgICAgICAgaWYg
KHJlbmRlcmVyLT5pc1RleHQoKSkKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+bm9kZSgp
OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
RnJhbWUgKFdlYlByaXZhdGUpCkBAIC0xNjA4LDQgKzE2MjEsMjUgQEAgLSAoSlNHbG9iYWxDb250
ZXh0UmVmKWdsb2JhbENvbnRleHQKICAgICByZXR1cm4gdG9HbG9iYWxSZWYoY29yZUZyYW1lLT5z
Y3JpcHQoKS0+Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhl
YygpKTsKIH0KIAorLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWZyb20gbGVuZ3RoOihp
bnQpbGVuZ3RoCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIE5vZGUqIG5v
ZGUgPSBzcGVsbGluZ05vZGUoY29yZUZyYW1lKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJl
dHVybiBOTzsKKworICAgIHVuc2lnbmVkIGludCBzdGFydE9mZnNldCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oZnJvbSk7CisgICAgdW5zaWduZWQgaW50IGVuZE9mZnNldCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oZnJvbSArIGxlbmd0aCk7CisgICAgVmVjdG9yPERvY3VtZW50TWFy
a2VyPiBtYXJrZXJzID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzRm9yTm9kZShub2Rl
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbWFya2Vyc1tpXTsKKyAgICAgICAgaWYgKG1h
cmtlci5zdGFydE9mZnNldCA8PSBzdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPD0gbWFya2VyLmVu
ZE9mZnNldCAmJiBtYXJrZXIudHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpCisgICAg
ICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAgICByZXR1cm4gTk87Cit9CisKIEBlbmQKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDY1NzI5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDgtMjAgIEhpcm9ub3JpIEJvbm8gIDxoYm9u
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8g
YXZvaWQgdXNpbmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAg
YW5kIGltcGxlbWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
VGV4dElucHV0Q29udHJvbGxlci5tOiBBZGRlZCBbVGV4dElucHV0Q29udHJvbGxlciBoYXNTcGVs
bGluZ01hcmtlcjpsZW5ndGg6XQorICAgICAgICBhbmQgYmluZCBpdCBzbyB3ZSBjYW4gY2FsbCBp
dCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICgrW1RleHRJbnB1dENvbnRyb2xsZXIgaXNTZWxl
Y3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtbVGV4dElucHV0Q29udHJv
bGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAgICgtW1RleHRJbnB1dENv
bnRyb2xsZXIgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0pOgorCiAyMDEwLTA4LTE5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQlVJTEQgRklYOiBGaXgg
TWFjIGJ1aWxkIGFmdGVyIFdpbmRvd3MgV2ViS2l0MiBjaGFuZ2VzIGZvciBOZXRzY2FwZSBQbHVn
LWlucwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRy
b2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4
dElucHV0Q29udHJvbGxlci5tCShyZXZpc2lvbiA2NTcyMykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTE2
OSw3ICsxNjksOCBAQCArIChCT09MKWlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6CiAg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGNoYXJhY3RlckluZGV4Rm9yUG9p
bnRYOlk6KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rvcih2YWxpZEF0dHJp
YnV0ZXNGb3JNYXJrZWRUZXh0KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3Rv
cihhdHRyaWJ1dGVkU3RyaW5nV2l0aFN0cmluZzopCi0gICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQorICAgICAgICAgICAgfHwgYVNl
bGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KQorICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6KSkKICAg
ICAgICAgcmV0dXJuIE5POwogICAgIHJldHVybiBZRVM7CiB9CkBAIC0xOTQsNiArMTk1LDggQEAg
KyAoTlNTdHJpbmcgKil3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6KAogICAgICAgICByZXR1cm4g
QCJtYWtlQXR0cmlidXRlZFN0cmluZyI7IC8vIGp1c3QgYSBmYWN0b3J5IG1ldGhvZCwgZG9lc24n
dCBjYWxsIGludG8gTlNUZXh0SW5wdXQKICAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVj
dG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopKQogICAgICAgICByZXR1cm4gQCJzZXRJbnB1dE1l
dGhvZEhhbmRsZXIiOyAKKyAgICBlbHNlIGlmIChhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhhc1Nw
ZWxsaW5nTWFya2VyOmxlbmd0aDopKQorICAgICAgICByZXR1cm4gQCJoYXNTcGVsbGluZ01hcmtl
ciI7CiAKICAgICByZXR1cm4gbmlsOwogfQpAQCAtNDI3LDQgKzQzMCw5IEBAIC0gKEJPT0wpaW50
ZXJwcmV0S2V5RXZlbnRzOihOU0FycmF5ICopZXYKICAgICByZXR1cm4gWUVTOwogfQogCistIChC
T09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKK3sKKyAg
ICByZXR1cm4gW1t3ZWJWaWV3IG1haW5GcmFtZV0gaGFzU3BlbGxpbmdNYXJrZXI6ZnJvbSBsZW5n
dGg6bGVuZ3RoXTsKK30KKwogQGVuZApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjU3MjkpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0w
OC0yMCAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIFRleHRJbnB1dENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCB1c2luZyBwaXhlbCB0ZXN0cyBmb3Igc3Bl
bGxjaGVja2luZyB0ZXN0cworICAgICAgICBhbmQgaW1wbGVtZW50cyBpdCBmb3IgTWFjLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MzIKKworICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZCBhIHRleHQgdGVzdCBmb3Igc3BlbGxjaGVja2luZy4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLmh0bWw6IEFkZGVkIGEgdGV4dCB0
ZXN0IGZvciBzcGVsbGNoZWNraW5nLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctdGV4dGFyZWEtZXhwZWN0ZWQudHh0OiBBZGRlZCBhIHRleHQgdGVzdCBmb3Igc3BlbGxjaGVj
a2luZy4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0bWw6
IEFkZGVkIGEgdGV4dCB0ZXN0IGZvciBzcGVsbGNoZWNraW5nLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogU2tpcHBlZCBuZXcgdGVzdHMgYmVjYXVz
ZQorICAgICAgICBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxpbmdNYXJrZXIoKSBpcyBub3Qg
aW1wbGVtZW50ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IGRpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9Ta2lwcGVkOiBkaXR0by4KKwogMjAxMC0wOC0yMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgd2UgY2FuIHdy
aXRlIHRleHQgdGVzdHMgZm9yIHNwZWxsY2hlY2tlcnMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3p6ICcgaW4gdGhlIGNvbnRlbnRlZGl0YWJsZSA8ZGl2PiBlbGVtZW50IGFuZCBzZWUgdGhleSBh
cmUgbWFya2VkIGFzIG1pc3NwZWxsZWQuCit6esKgCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJs
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1jb250ZW50ZWRpYWJsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACis8
aHRtbD4gCis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+RWRpdGluZyBU
ZXN0PC90aXRsZT4gCis8L2hlYWQ+IAorPGJvZHk+CitUaGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0
ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAn
IGluIHRoZSBjb250ZW50ZWRpdGFibGUgJmx0O2RpdiZndDsgZWxlbWVudCBhbmQgc2VlIHRoZXkg
YXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSI+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0IGxhbmd1
YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9nKHN0
cikgeworICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgIGxpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgdmFyIGNvbnNvbGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgY29uc29sZS5hcHBlbmRD
aGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChyZXN1bHQpIHsKKyAgICBpZiAocmVz
dWx0KQorICAgICAgICBsb2coJ1NVQ0NFU1MnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnRkFJ
TEVEJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBDb3B5IHRoZSBvcmlnaW5h
bCB0ZXh0IGFuZCBwYXN0ZSBpdC4KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcp
LmZvY3VzKCk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcgJyk7CisKKyAgICAv
LyBUZXN0IHRoZSBhYm92ZSAnenonIGlzIG1hcmtlZCBhcyBtaXNzcGVsbGVkLiBXZSB0ZXN0IGl0
IG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgaW1wbGVtZW50CisgICAgLy8gdGV4dElucHV0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIGV4Y2VwdGlvbnMuCisgICAgaWYgKHRl
eHRJbnB1dENvbnRyb2xsZXIgJiYgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cikKKyAgICAgICAgbG9nUmVzdWx0KHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJr
ZXIoMCwgMikpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVh
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctdGV4dGFyZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdHMgd2UgY2FuIHdyaXRlIHRleHQgdGVzdHMgZm9yIHNwZWxsY2hlY2tl
cnMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3p6ICcgaW4gdGhlIDx0ZXh0YXJlYT4gZWxlbWVu
dCBhbmQgc2VlIHRoZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorCisKK1NVQ0NFU1MKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRh
cmVhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKzxodG1s
PiAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Li4vZWRpdGluZy5qcyBsYW5ndWFnZT0iamF2YXNjcmlw
dCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzx0aXRsZT5FZGl0aW5nIFRlc3Q8
L3RpdGxlPiAKKzwvaGVhZD4gCis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgd2UgY2FuIHdyaXRlIHRl
eHQgdGVzdHMgZm9yIHNwZWxsY2hlY2tlcnMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3p6ICcg
aW4gdGhlICZsdDt0ZXh0YXJlYSZndDsgZWxlbWVudCBhbmQgc2VlIHRoZXkgYXJlIG1hcmtlZCBh
cyBtaXNzcGVsbGVkLjwvcD4KKzx0ZXh0YXJlYSBpZD0idGVzdCIgY29scz0iODAiIHJvd3M9IjEw
Ij48L3RleHRhcmVhPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0i
amF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIpIHsK
KyAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQo
bGkpOworfQorCitmdW5jdGlvbiBsb2dSZXN1bHQocmVzdWx0KSB7CisgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgbG9nKCdTVUNDRVNTJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRCcp
OworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gQ29weSB0aGUgb3JpZ2luYWwgdGV4
dCBhbmQgcGFzdGUgaXQuCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5mb2N1
cygpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworCisgICAgLy8gVGVz
dCB0aGUgYWJvdmUgJ3p6JyBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4gV2UgdGVzdCBpdCBvbmx5
IG9uIHBsYXRmb3JtcyB0aGF0IGltcGxlbWVudAorICAgIC8vIHRleHRJbnB1dENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCBleGNlcHRpb25zLgorICAgIGlmICh0ZXh0SW5w
dXRDb250cm9sbGVyICYmIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpCisg
ICAgICAgIGxvZ1Jlc3VsdCh0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAs
IDIpKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNp
b24gNjU3MjMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyNDYsMyArMzI0Niw3IEBAIEJVR1dLNDQyNzgg
V0lOIExJTlVYIDogc3ZnL2N1c3RvbS9zdHJva2UKIC8vIGR1ZSB0byBwaXhlbCByZXN1bHRzIG5v
dCBoYXZpbmcgYSBjYXJldCB2aXNpYmxlLgogQlVHV0s0NDI5MCBXSU4gTElOVVggOiBlZGl0aW5n
L3NlbGVjdGlvbi9kcmFnLWluLWlmcmFtZS5odG1sID0gSU1BR0UKIEJVR1dLNDQyOTAgV0lOIE1B
QyA6IGZhc3QvZm9ybXMvaW5wdXQtdGV4dC1zY3JvbGwtbGVmdC1vbi1ibHVyLmh0bWwgPSBJTUFH
RQorCisvLyBOZWVkIHRvIGltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VycygpLgorQlVHV0s0MTgzMiA6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFy
ZWEuaHRtbCA9IEZBSUwKK0JVR1dLNDE4MzIgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNv
bnRlbnRlZGl0YWJsZS5odG1sID0gRkFJTApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJ
KHJldmlzaW9uIDY1NzIzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdv
cmtpbmcgY29weSkKQEAgLTEwMTMsNiArMTAxMyw4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3VucmVu
ZGVyZWQtc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1s
CiBlZGl0aW5nL3NwZWxsaW5nL2lubGluZV9zcGVsbGluZ19tYXJrZXJzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0
YXJlYS5odG1sCiBlZGl0aW5nL3N0eWxlLzUwNjU5MTAuaHRtbAogZWRpdGluZy9zdHlsZS9hcHBs
ZS1zdHlsZS1lZGl0YWJsZS1taXguaHRtbAogZWRpdGluZy9zdHlsZS9ibG9jay1zdHlsZS0wMDEu
aHRtbApAQCAtNTI1MSw2ICs1MjUzLDggQEAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAogZmFzdC9l
dmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCiAKICMgTm8gVXNlciBTY3JpcHRzCiB1c2Vyc2NyaXB0cwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2NTcyMykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIzMDcsNiArMjMwNywxMCBAQCBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmcuaHRtbAog
CisjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXJzKCkgaXMgbm90IGltcGxl
bWVudGVkLgorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAor
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCisKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIwogIyBmYWlsaW5nIGVkaXRpbmcvc3R5bGUgdGVzdHMKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDY1NzIz
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTg3MSw2ICs4NzEsMTAgQEAgY2FudmFzL3BoaWxpcAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMDQKIGVkaXRpbmcvc3BlbGxpbmcvY29udGV4dC1tZW51LXN1
Z2dlc3Rpb25zLmh0bWwKIAorIyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
cygpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVu
dGVkaXRhYmxlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAor
CiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdlL2luZGV4ZWRkYgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65208</attachid>
            <date>2010-08-23 22:20:01 -0700</date>
            <delta_ts>2010-08-25 23:16:04 -0700</delta_ts>
            <desc>A possible fix 3</desc>
            <filename>issue41832-patch2.txt</filename>
            <type>text/plain</type>
            <size>16039</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMjMgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaWFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0
ZWQgc3ltYm9scyB1c2VkIGJ5IFtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XS4K
KwogMjAxMC0wOC0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA2NTg1MikKKysr
IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2Niw2ICs0NjYsNyBA
QCBfX1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlc0V2CiBfX1pON1dlYkNvcmUy
NGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQTlNfOERvY3VtZW50RVJLTjNXVEY2U3RyaW5nRVM1
X05TXzI3RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uRQogX19aTjdXZWJDb3JlMjRkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJr
ZXJUeXBlRQorX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxNG1hcmtlcnNG
b3JOb2RlRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
MjNyZW5kZXJlZFJlY3RzRm9yTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBl
RQogX19aTjdXZWJDb3JlMjRub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWRFCiBfX1pON1dlYkNvcmUy
NHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudEVSS05TXzhQb3NpdGlvbkUKQEAgLTg4MSw2ICs4ODIs
NyBAQCBfX1pOSzdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGN1cnJlbnRLZXliCiBfX1pOSzdXZWJD
b3JlMTJJY29uRGF0YWJhc2UxMmRhdGFiYXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0
YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0
YWJhc2U5aXNFbmFibGVkRXYKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoK
IF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2Vi
Q29yZTEyUmVuZGVyT2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFTlNfMTBGbG9hdFBvaW50RWJiCiBf
X1pOSzdXZWJDb3JlMTJSZW5kZXJXaWRnZXQxNHdpbmRvd0NsaXBSZWN0RXYKSW5kZXg6IFdlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2NTg2NCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTAtMDgtMjMgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNpbmcg
cGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxlbWVu
dHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxODMyCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLmg6IEFkZGVkIFtXZWJG
cmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XSBzbyBUZXh0SW5wdXRDb250cm9sbGVyIGNh
biB1c2UgaXQuCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbTogSW1wbGVtZW50ZWQgW1dl
YkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdLgorICAgICAgICAoZ2V0U3BlbGxpbmdO
b2RlKToKKyAgICAgICAgKC1bV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0pOgor
CiAyMDEwLTA4LTIzICBNaWtlIFRob2xlICA8bXRob2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgJKHJldmlz
aW9uIDY1ODUyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMyw0ICsyMTMsMTMgQEAgQGludGVyZmFjZSBXZWJGcmFtZSA6IE5TT2JqZWN0CiAg
ICAgYnJpZGdlIGJldHdlZW4gdGhlIFdlYktpdCBhbmQgSmF2YVNjcmlwdENvcmUgQVBJcy4KICov
CiAtIChKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKKworLyohCisgICAgQG1ldGhv
ZCBoYXNTcGVsbGluZ01hcmtlcgorICAgIEBkaXNjdXNzaW9uIHRoaXMgZnVuY3Rpb24gaXMgb25s
eSBmb3IgbGF5b3V0IHRlc3RzLgorICAgIEBwYXJhbSBsb2NhdGlvbiB0aGUgb2Zmc2V0IG9mIHRo
ZSByYW5nZSB0byBiZSBjaGVja2VkLgorICAgIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0
aGUgcmFuZ2UgdG8gYmUgY2hlY2tlZC4KKyAgICBAcmVzdWx0IHdoZXRoZXIgdGhlcmUgaXMgYSBz
cGVsbGluZyBtYXJrZXIgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiB0aGUgZm9jdXNlZCBub2Rl
LgorKi8KKy0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlvbiBsZW5ndGg6KGlu
dClsZW5ndGg7CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA2NTg1
MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTAxMSw2ICsxMDExLDE5IEBAIC0gKHZvaWQpX3JlY2VpdmVkRGF0YTooTlNEYXRhICopZGF0YSB0
ZXgKICAgICBbc2VsZiBfYWRkRGF0YTpkYXRhXTsKIH0KIAorc3RhdGljIE5vZGUqIHNwZWxsaW5n
Tm9kZShGcmFtZSogY29yZUZyYW1lKQoreworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOworICAgIGlmICghZm9jdXNlZE5vZGUgfHwg
IWZvY3VzZWROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOyBy
ZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+Y2hpbGRBdCgwKSkgeworICAgICAgICBpZiAo
cmVuZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5ub2RlKCk7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJG
cmFtZSAoV2ViUHJpdmF0ZSkKQEAgLTE2MDgsNCArMTYyMSwyNSBAQCAtIChKU0dsb2JhbENvbnRl
eHRSZWYpZ2xvYmFsQ29udGV4dAogICAgIHJldHVybiB0b0dsb2JhbFJlZihjb3JlRnJhbWUtPnNj
cmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVj
KCkpOwogfQogCistIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpZnJvbSBsZW5ndGg6KGlu
dClsZW5ndGgKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgTm9kZSogbm9k
ZSA9IHNwZWxsaW5nTm9kZShjb3JlRnJhbWUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuIE5POworCisgICAgdW5zaWduZWQgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pihmcm9tKTsKKyAgICB1bnNpZ25lZCBpbnQgZW5kT2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50Pihmcm9tICsgbGVuZ3RoKTsKKyAgICBWZWN0b3I8RG9jdW1lbnRNYXJr
ZXI+IG1hcmtlcnMgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0Zv
ck5vZGUobm9kZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIERvY3VtZW50TWFya2VyIG1hcmtlciA9IG1hcmtlcnNbaV07CisgICAg
ICAgIGlmIChtYXJrZXIuc3RhcnRPZmZzZXQgPD0gc3RhcnRPZmZzZXQgJiYgZW5kT2Zmc2V0IDw9
IG1hcmtlci5lbmRPZmZzZXQgJiYgbWFya2VyLnR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nKQorICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAgcmV0dXJuIE5POworfQor
CiBAZW5kCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTg2NCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA4LTIzICBIaXJvbm9yaSBC
b25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgVGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01h
cmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRlc3RzIGZvciBzcGVsbGNoZWNraW5nIHRlc3Rz
CisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZvciBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgzMgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubTogQWRkZWQgW1RleHRJbnB1dENvbnRyb2xs
ZXIgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0KKyAgICAgICAgYW5kIGJpbmQgaXQgc28gd2Ug
Y2FuIGNhbGwgaXQgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICAoK1tUZXh0SW5wdXRDb250cm9s
bGVyIGlzU2VsZWN0b3JFeGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgrW1RleHRJ
bnB1dENvbnRyb2xsZXIgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOl0pOgorCiAyMDEwLTA4LTIz
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0JKHJldmlzaW9uIDY1
ODUyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xs
ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw4IEBAICsgKEJPT0wpaXNTZWxlY3Rv
ckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoY2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAgICAgICAgICAg
ICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikK
LSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5k
bGVyOikpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0
aG9kSGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhhc1Nw
ZWxsaW5nTWFya2VyOmxlbmd0aDopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlF
UzsKIH0KQEAgLTE5NCw2ICsxOTUsOCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjooCiAgICAgICAgIHJldHVybiBAIm1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVz
dCBhIGZhY3RvcnkgbWV0aG9kLCBkb2Vzbid0IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVs
c2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCiAg
ICAgICAgIHJldHVybiBAInNldElucHV0TWV0aG9kSGFuZGxlciI7IAorICAgIGVsc2UgaWYgKGFT
ZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOikpCisgICAgICAg
IHJldHVybiBAImhhc1NwZWxsaW5nTWFya2VyIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC00
MjcsNCArNDMwLDkgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldgog
ICAgIHJldHVybiBZRVM7CiB9CiAKKy0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClmcm9t
IGxlbmd0aDooaW50KWxlbmd0aAoreworICAgIHJldHVybiBbW3dlYlZpZXcgbWFpbkZyYW1lXSBo
YXNTcGVsbGluZ01hcmtlcjpmcm9tIGxlbmd0aDpsZW5ndGhdOworfQorCiBAZW5kCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg2NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA4LTIzICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgVGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lk
IHVzaW5nIHBpeGVsIHRlc3RzIGZvciBzcGVsbGNoZWNraW5nIHRlc3RzCisgICAgICAgIGFuZCBp
bXBsZW1lbnRzIGl0IGZvciBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MTgzMgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1jb250ZW50ZWRpYWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkIGEgdGV4dCB0ZXN0IGZvciBzcGVs
bGNoZWNraW5nLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVk
aWFibGUuaHRtbDogQWRkZWQgYSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVk
IGEgdGV4dCB0ZXN0IGZvciBzcGVsbGNoZWNraW5nLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbDogQWRkZWQgYSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hl
Y2tpbmcuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
OiBTa2lwcGVkIG5ldyB0ZXN0cyBiZWNhdXNlCisgICAgICAgIFRleHRJbnB1dENvbnRyb2xsZXIu
aGFzU3BlbGluZ01hcmtlcigpIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2tpcHBlZDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogZGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDEwLTA4LTIz
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBTa2lw
IGFub3RoZXIgdGVzdCB3aGljaCBzaG93cyBvbmUgcGl4ZWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0
aGUgMzItYml0IGFuZCA2NC1iaXQgYm90LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWNvbnRlbnRlZGlhYmxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzIEBACitUaGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNr
ZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUg
PGRpdj4gZWxlbWVudCBhbmQgc2VlIHRoZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorenrC
oAorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1j
b250ZW50ZWRpYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorPGh0bWw+IAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0u
Li9lZGl0aW5nLmpzIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
Pjwvc2NyaXB0PgorPHRpdGxlPkVkaXRpbmcgVGVzdDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5
PgorVGhpcyB0ZXN0cyB3ZSBjYW4gd3JpdGUgdGV4dCB0ZXN0cyBmb3Igc3BlbGxjaGVja2Vycy4g
VG8gdGVzdCBtYW51YWxseSwgdHlwZSAnenogJyBpbiB0aGUgY29udGVudGVkaXRhYmxlICZsdDtk
aXYmZ3Q7IGVsZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC48L3A+
Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU9InRydWUiPjwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgIHZhciBsaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworfQorCitmdW5jdGlvbiBsb2dS
ZXN1bHQocmVzdWx0KSB7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgbG9nKCdTVUNDRVNTJyk7
CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRCcpOworfQorCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgLy8gQ29weSB0aGUgb3JpZ2luYWwgdGV4dCBhbmQgcGFzdGUgaXQuCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5mb2N1cygpOworICAgIHR5cGVDaGFyYWN0ZXJD
b21tYW5kKCd6Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hh
cmFjdGVyQ29tbWFuZCgnICcpOworCisgICAgLy8gVGVzdCB0aGUgYWJvdmUgJ3p6JyBpcyBtYXJr
ZWQgYXMgbWlzc3BlbGxlZC4gV2UgdGVzdCBpdCBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IGltcGxl
bWVudAorICAgIC8vIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBh
dm9pZCBleGNlcHRpb25zLgorICAgIGlmICh0ZXh0SW5wdXRDb250cm9sbGVyICYmIHRleHRJbnB1
dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpCisgICAgICAgIGxvZ1Jlc3VsdCh0ZXh0SW5w
dXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIpKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy10ZXh0YXJlYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHdlIGNhbiB3cml0
ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6
eiAnIGluIHRoZSA8dGV4dGFyZWE+IGVsZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJrZWQgYXMg
bWlzc3BlbGxlZC4KKworCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxIEBACis8aHRtbD4gCis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2Vk
aXRpbmcuanMgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9z
Y3JpcHQ+Cis8dGl0bGU+RWRpdGluZyBUZXN0PC90aXRsZT4gCis8L2hlYWQ+IAorPGJvZHk+Cis8
cD5UaGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAnIGluIHRoZSAmbHQ7dGV4dGFyZWEmZ3Q7IGVsZW1l
bnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC48L3A+Cis8dGV4dGFyZWEg
aWQ9InRlc3QiIGNvbHM9IjgwIiByb3dzPSIxMCI+PC90ZXh0YXJlYT4KKzx1bCBpZD0iY29uc29s
ZSI+PC91bD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdsaScpOworICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
c3RyKSk7CisgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xl
Jyk7CisgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0
KHJlc3VsdCkgeworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGxvZygnU1VDQ0VTUycpOworICAg
IGVsc2UKKyAgICAgICAgbG9nKCdGQUlMRUQnKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIC8vIENvcHkgdGhlIG9yaWdpbmFsIHRleHQgYW5kIHBhc3RlIGl0LgorICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykuZm9jdXMoKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoJyAnKTsKKworICAgIC8vIFRlc3QgdGhlIGFib3ZlICd6eicgaXMgbWFya2VkIGFz
IG1pc3NwZWxsZWQuIFdlIHRlc3QgaXQgb25seSBvbiBwbGF0Zm9ybXMgdGhhdCBpbXBsZW1lbnQK
KyAgICAvLyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQg
ZXhjZXB0aW9ucy4KKyAgICBpZiAodGV4dElucHV0Q29udHJvbGxlciAmJiB0ZXh0SW5wdXRDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKQorICAgICAgICBsb2dSZXN1bHQodGV4dElucHV0Q29u
dHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigwLCAyKSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDY1ODUyKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
MjMxLDYgKzMyMzEsMTAgQEAgQlVHNTI4MTAgV0lOIExJTlVYIDogZmFzdC9mb3Jtcy9saXN0Ym94
LQogQlVHV0s0NDI5MCBXSU4gTElOVVggOiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLWluLWlmcmFt
ZS5odG1sID0gSU1BR0UKIEJVR1dLNDQyOTAgV0lOIE1BQyA6IGZhc3QvZm9ybXMvaW5wdXQtdGV4
dC1zY3JvbGwtbGVmdC1vbi1ibHVyLmh0bWwgPSBJTUFHRQogCisvLyBOZWVkIHRvIGltcGxlbWVu
dCB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VycygpLgorQlVHV0s0MTgzMiA6
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbCA9IEZBSUwKK0JVR1dLNDE4
MzIgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gRkFJ
TAorCiAvLyBDbGlwIHBhdGhzIGFyZW4ndCB3b3JraW5nIGFmdGVyIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzY1NzI5CiBCVUdXSzQ0MzQxIFdJTiBMSU5VWCA6IHN2Zy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXBpeGVsYXRpb24uc3ZnID0gSU1BR0UrVEVYVAogQlVHV0s0NDM0MSBXSU4g
TElOVVggOiBzdmcvYmF0aWsvdGV4dC90ZXh0UHJvcGVydGllcy5zdmcgPSBJTUFHRQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDY1ODUyKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEwMTMsNiArMTAxMyw4IEBA
IGVkaXRpbmcvc2VsZWN0aW9uL3VucmVuZGVyZWQtc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vd29yZC1ncmFudWxhcml0eS5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL2lubGluZV9zcGVsbGlu
Z19tYXJrZXJzLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRt
bAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCiBlZGl0aW5nL3N0eWxlLzUwNjU5MTAu
aHRtbAogZWRpdGluZy9zdHlsZS9hcHBsZS1zdHlsZS1lZGl0YWJsZS1taXguaHRtbAogZWRpdGlu
Zy9zdHlsZS9ibG9jay1zdHlsZS0wMDEuaHRtbApAQCAtNTI1MSw2ICs1MjUzLDggQEAgZmFzdC9m
b3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLWNvbXBsZXRlZAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhs
ZW5ndGgtaW1lLXByZWVkaXQuaHRtbAogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJz
b3ItcG9zaXRpb24uaHRtbAogZmFzdC9ldmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEu
aHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCitlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sCiAKICMgTm8gVXNlciBTY3JpcHRz
CiB1c2Vyc2NyaXB0cwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2NTg1
MikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTIyOTMsNiArMjI5MywxMCBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5o
dG1sCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmcuaHRtbAogCisjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXJzKCkgaXMgbm90IGltcGxlbWVudGVkLgorZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJl
YS5odG1sCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyBmYWlsaW5nIGVkaXRpbmcvc3R5
bGUgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQJKHJldmlzaW9uIDY1ODUyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTg3MSw2ICs4NzEsMTAgQEAgY2FudmFzL3BoaWxpcAog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMDQKIGVkaXRpbmcv
c3BlbGxpbmcvY29udGV4dC1tZW51LXN1Z2dlc3Rpb25zLmh0bWwKIAorIyB0ZXh0SW5wdXRDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VycygpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaXRhYmxlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctdGV4dGFyZWEuaHRtbAorCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQu
CiBzdG9yYWdlL2luZGV4ZWRkYgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65528</attachid>
            <date>2010-08-25 23:16:04 -0700</date>
            <delta_ts>2010-09-01 03:17:11 -0700</delta_ts>
            <desc>A possible fix 4</desc>
            <filename>issue41832-patch3.txt</filename>
            <type>text/plain</type>
            <size>15787</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjA3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMjUgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBUZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaWFibGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0
ZWQgc3ltYm9scyB1c2VkIGJ5IFtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XS4K
KwogMjAxMC0wOC0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY2MDc0LgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiA2NjA1NykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTQ2Miw2ICs0NjIsNyBAQCBfX1pON1dlYkNvcmUyM1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
QzFFCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRF
UktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9w
ZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKIF9fWk43V2ViQ29yZTI0RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyMTNyZW1vdmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1h
cmtlclR5cGVFCitfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjE0bWFya2Vy
c0Zvck5vZGVFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIyM3JlbmRlcmVkUmVjdHNGb3JNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5
cGVFCiBfX1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpY0V2CiBfX1pON1dlYkNv
cmUyNGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlc0V2CkBAIC04ODMsNiArODg0LDcgQEAgX19aTks3
V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjBjdXJyZW50S2V5YgogX19aTks3V2ViQ29yZTEySWNvbkRh
dGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91
bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5h
YmxlZEV2CitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hpbGRBdEVqCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRl
ck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRU5TXzEwRmxvYXRQb2ludEViYgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyV2lkZ2V0MTR3aW5kb3dDbGlwUmVjdEV2CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwNzkp
CisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDEwLTA4LTI1ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgVGV4dElucHV0
Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRlc3Rz
IGZvciBzcGVsbGNoZWNraW5nIHRlc3RzCisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZvciBN
YWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgz
MgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbTogSW1wbGVtZW50ZWQgW1dlYkZyYW1l
IGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdLgorICAgICAgICAoc3BlbGxpbmdOb2RlKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6IEFkZGVkIFtXZWJGcmFtZSBoYXNTcGVsbGluZ01h
cmtlcjpsZW5ndGg6XSBzbyBUZXh0SW5wdXRDb250cm9sbGVyIGNhbiB1c2UgaXQuCisKIDIwMTAt
MDgtMjQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA2NjA1
NykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTM2Niw2ICsxMzY2LDQwIEBAIC0gKE5TU3RyaW5nKilfbGF5ZXJUcmVlQXNUZXh0CiAgICAgcmV0
dXJuIGNvcmVGcmFtZS0+bGF5ZXJUcmVlQXNUZXh0KCk7CiB9CiAKK3N0YXRpYyBOb2RlKiBzcGVs
bGluZ05vZGUoRnJhbWUqIGNvcmVGcmFtZSkKK3sKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIWZvY3VzZWROb2Rl
IHx8ICFmb2N1c2VkTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBm
b3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkTm9kZS0+cmVuZGVyZXIo
KTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPmNoaWxkQXQoMCkpIHsKKyAgICAgICAg
aWYgKHJlbmRlcmVyLT5pc1RleHQoKSkKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+bm9k
ZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLSAoQk9PTCloYXNTcGVsbGluZ01hcmtl
cjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVuZ3RoCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IF9wcml2YXRlLT5jb3JlRnJhbWU7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIE5vZGUqIG5vZGUgPSBzcGVsbGluZ05vZGUoY29yZUZyYW1lKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIHVuc2lnbmVkIGludCBzdGFydE9m
ZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZnJvbSk7CisgICAgdW5zaWduZWQgaW50
IGVuZE9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZnJvbSArIGxlbmd0aCk7Cisg
ICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5tYXJrZXJzKCktPm1hcmtlcnNGb3JOb2RlKG5vZGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWFya2Vycy5zaXplKCk7ICsraSkgeworICAgICAgICBEb2N1bWVudE1hcmtlciBtYXJr
ZXIgPSBtYXJrZXJzW2ldOworICAgICAgICBpZiAobWFya2VyLnN0YXJ0T2Zmc2V0IDw9IHN0YXJ0
T2Zmc2V0ICYmIGVuZE9mZnNldCA8PSBtYXJrZXIuZW5kT2Zmc2V0ICYmIG1hcmtlci50eXBlID09
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZykKKyAgICAgICAgICAgIHJldHVybiBZRVM7CisgICAg
fQorICAgIHJldHVybiBOTzsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgJKHJldmlzaW9uIDY2MDU3KQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDAsNCArMTQwLDYgQEAgQGludGVyZmFjZSBXZWJGcmFtZSAoV2ViUHJpdmF0ZSkKIAogLSAo
TlNTdHJpbmcqKV9sYXllclRyZWVBc1RleHQ7CiAKKy8vIFJldHVybnMgd2hldGhlciB0aGVyZSBp
cyBhIHNwZWxsaW5nIG1hcmtlciBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRoZSBmb2N1c2Vk
IG5vZGUuCistIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpbG9jYXRpb24gbGVuZ3RoOihp
bnQpbGVuZ3RoOwogQGVuZApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwNzkpCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOC0yNSAg
SGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIFRleHRJbnB1dENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCB1c2luZyBwaXhlbCB0ZXN0cyBmb3Igc3BlbGxjaGVj
a2luZyB0ZXN0cworICAgICAgICBhbmQgaW1wbGVtZW50cyBpdCBmb3IgTWFjLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MzIKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm06IEFkZGVkIFtUZXh0SW5w
dXRDb250cm9sbGVyIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdCisgICAgICAgIGFuZCBiaW5k
IGl0IHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gSmF2YVNjcmlwdC4KKyAgICAgICAgKCtbVGV4dElu
cHV0Q29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAg
ICAoK1tUZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKwog
MjAxMC0wOC0yNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgVXBkYXRpbmcgd2Via2l0cHkgdGVzdCBleHBlY3RhdGlvbnMuCkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0J
KHJldmlzaW9uIDY2MDU3KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJ
bnB1dENvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9y
dCA8QXBwS2l0L05TSW5wdXRNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRG9jdW1lbnQu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1l
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkhUTUxWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNjcmlwdE9iamVj
dC5oPgpAQCAtMTY5LDcgKzE3MCw4IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdl
YlNjcmlwdDoKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVy
SW5kZXhGb3JQb2ludFg6WTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KHZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKGF0dHJpYnV0ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8
IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCisgICAgICAg
ICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopCisg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGhhc1NwZWxsaW5nTWFya2VyOmxl
bmd0aDopKQogICAgICAgICByZXR1cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5NCw2
ICsxOTYsOCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAg
ICAgIHJldHVybiBAIm1ha2VBdHRyaWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0
aG9kLCBkb2Vzbid0IGNhbGwgaW50byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3Rv
ciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCiAgICAgICAgIHJldHVybiBA
InNldElucHV0TWV0aG9kSGFuZGxlciI7IAorICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IoaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAImhhc1Nw
ZWxsaW5nTWFya2VyIjsKIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC00MjcsNCArNDMxLDkgQEAg
LSAoQk9PTClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXkgKilldgogICAgIHJldHVybiBZRVM7
CiB9CiAKKy0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50KWxl
bmd0aAoreworICAgIHJldHVybiBbW3dlYlZpZXcgbWFpbkZyYW1lXSBoYXNTcGVsbGluZ01hcmtl
cjpmcm9tIGxlbmd0aDpsZW5ndGhdOworfQorCiBAZW5kCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjA3
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIx
IEBACisyMDEwLTA4LTI1ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgVGV4dElu
cHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRl
c3RzIGZvciBzcGVsbGNoZWNraW5nIHRlc3RzCisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZv
ciBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTgzMgorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJs
ZS1leHBlY3RlZC50eHQ6IEFkZGVkIGEgdGV4dCB0ZXN0IGZvciBzcGVsbGNoZWNraW5nLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaWFibGUuaHRtbDogQWRk
ZWQgYSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkIGEgdGV4dCB0ZXN0IGZv
ciBzcGVsbGNoZWNraW5nLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4
dGFyZWEuaHRtbDogQWRkZWQgYSB0ZXh0IHRlc3QgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OiBTa2lwcGVkIG5ldyB0
ZXN0cyBiZWNhdXNlCisgICAgICAgIFRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGluZ01hcmtl
cigpIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDog
ZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogZGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDEwLTA4LTI1ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50
LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRp
YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGlhYmxlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHdlIGNh
biB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICd6eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUgPGRpdj4gZWxlbWVudCBhbmQgc2VlIHRo
ZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorenrCoAorU1VDQ0VTUwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpYWJsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVk
aWFibGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctY29udGVudGVkaWFibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBA
QAorPGh0bWw+IAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5nLmpzIGxhbmd1YWdlPSJq
YXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHRpdGxlPkVkaXRp
bmcgVGVzdDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorVGhpcyB0ZXN0cyB3ZSBjYW4gd3Jp
dGUgdGV4dCB0ZXN0cyBmb3Igc3BlbGxjaGVja2Vycy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
enogJyBpbiB0aGUgY29udGVudGVkaXRhYmxlICZsdDtkaXYmZ3Q7IGVsZW1lbnQgYW5kIHNlZSB0
aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50
ZWRpdGFibGU9InRydWUiPjwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBs
YW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxv
ZyhzdHIpIHsKKyAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBs
aS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25z
b2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobGkpOworfQorCitmdW5jdGlvbiBsb2dSZXN1bHQocmVzdWx0KSB7CisgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgbG9nKCdTVUNDRVNTJyk7CisgICAgZWxzZQorICAgICAgICBsb2co
J0ZBSUxFRCcpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gQ29weSB0aGUgb3Jp
Z2luYWwgdGV4dCBhbmQgcGFzdGUgaXQuCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QnKS5mb2N1cygpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlwZUNo
YXJhY3RlckNvbW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworCisg
ICAgLy8gVGVzdCB0aGUgYWJvdmUgJ3p6JyBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4gV2UgdGVz
dCBpdCBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IGltcGxlbWVudAorICAgIC8vIHRleHRJbnB1dENv
bnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCBleGNlcHRpb25zLgorICAgIGlm
ICh0ZXh0SW5wdXRDb250cm9sbGVyICYmIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdN
YXJrZXIpCisgICAgICAgIGxvZ1Jlc3VsdCh0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5n
TWFya2VyKDAsIDIpKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0
YXJlYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0IEBACitUaGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNo
ZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAnIGluIHRoZSA8dGV4dGFyZWE+IGVs
ZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KKworCitTVUNDRVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10
ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACis8
aHRtbD4gCis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+RWRpdGluZyBU
ZXN0PC90aXRsZT4gCis8L2hlYWQ+IAorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHdlIGNhbiB3cml0
ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6
eiAnIGluIHRoZSAmbHQ7dGV4dGFyZWEmZ3Q7IGVsZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJr
ZWQgYXMgbWlzc3BlbGxlZC48L3A+Cis8dGV4dGFyZWEgaWQ9InRlc3QiIGNvbHM9IjgwIiByb3dz
PSIxMCI+PC90ZXh0YXJlYT4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3JpcHQgbGFuZ3Vh
Z2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2coc3Ry
KSB7CisgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOworICAgbGkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICB2YXIgY29uc29sZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICBjb25zb2xlLmFwcGVuZENo
aWxkKGxpKTsKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0KHJlc3VsdCkgeworICAgIGlmIChyZXN1
bHQpCisgICAgICAgIGxvZygnU1VDQ0VTUycpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlM
RUQnKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIENvcHkgdGhlIG9yaWdpbmFs
IHRleHQgYW5kIHBhc3RlIGl0LgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyku
Zm9jdXMoKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKworICAgIC8v
IFRlc3QgdGhlIGFib3ZlICd6eicgaXMgbWFya2VkIGFzIG1pc3NwZWxsZWQuIFdlIHRlc3QgaXQg
b25seSBvbiBwbGF0Zm9ybXMgdGhhdCBpbXBsZW1lbnQKKyAgICAvLyB0ZXh0SW5wdXRDb250cm9s
bGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgZXhjZXB0aW9ucy4KKyAgICBpZiAodGV4
dElucHV0Q29udHJvbGxlciAmJiB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
KQorICAgICAgICBsb2dSZXN1bHQodGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtl
cigwLCAyKSk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJl
dmlzaW9uIDY2MDU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTc1LDYgKzMxNzUsMTAgQEAgQlVHNTI4
MTAgV0lOIExJTlVYIDogZmFzdC9mb3Jtcy9saXN0Ym94LQogQlVHV0s0NDI5MCBXSU4gTElOVVgg
OiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLWluLWlmcmFtZS5odG1sID0gSU1BR0UKIEJVR1dLNDQy
OTAgV0lOIE1BQyA6IGZhc3QvZm9ybXMvaW5wdXQtdGV4dC1zY3JvbGwtbGVmdC1vbi1ibHVyLmh0
bWwgPSBJTUFHRQogCisvLyBOZWVkIHRvIGltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VycygpLgorQlVHV0s0MTgzMiA6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctdGV4dGFyZWEuaHRtbCA9IEZBSUwKK0JVR1dLNDE4MzIgOiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gRkFJTAorCiAvLyBDbGlwIHBhdGhzIGFyZW4n
dCB3b3JraW5nIGFmdGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1NzI5CiBC
VUdXSzQ0MzQxIFdJTiBMSU5VWCA6IHN2Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXBpeGVsYXRpb24u
c3ZnID0gSU1BR0UrVEVYVAogQlVHV0s0NDM0MSBXSU4gTElOVVggOiBzdmcvYmF0aWsvdGV4dC90
ZXh0UHJvcGVydGllcy5zdmcgPSBJTUFHRQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJ
KHJldmlzaW9uIDY2MDU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdv
cmtpbmcgY29weSkKQEAgLTEwMTMsNiArMTAxMyw4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3VucmVu
ZGVyZWQtc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1s
CiBlZGl0aW5nL3NwZWxsaW5nL2lubGluZV9zcGVsbGluZ19tYXJrZXJzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0
YXJlYS5odG1sCiBlZGl0aW5nL3N0eWxlLzUwNjU5MTAuaHRtbAogZWRpdGluZy9zdHlsZS9hcHBs
ZS1zdHlsZS1lZGl0YWJsZS1taXguaHRtbAogZWRpdGluZy9zdHlsZS9ibG9jay1zdHlsZS0wMDEu
aHRtbApAQCAtNTI1Miw2ICs1MjU0LDggQEAgZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1l
LWNvbXBsZXRlZAogZmFzdC9mb3Jtcy9pbnB1dC1tYXhsZW5ndGgtaW1lLXByZWVkaXQuaHRtbAog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1jdXJzb3ItcG9zaXRpb24uaHRtbAogZmFzdC9l
dmVudHMvaW1lLWNvbXBvc2l0aW9uLWV2ZW50cy0wMDEuaHRtbAorZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy10ZXh0YXJlYS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRl
ZGl0YWJsZS5odG1sCiAKICMgTm8gVXNlciBTY3JpcHRzCiB1c2Vyc2NyaXB0cwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2NjA1NykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIyOTMsNiArMjI5MywxMCBAQCBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmcuaHRtbAog
CisjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXJzKCkgaXMgbm90IGltcGxl
bWVudGVkLgorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAor
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCisKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIwogIyBmYWlsaW5nIGVkaXRpbmcvc3R5bGUgdGVzdHMKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0gIwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDY2MDU3
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTg3MSw2ICs4NzEsMTAgQEAgY2FudmFzL3BoaWxpcAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMDQKIGVkaXRpbmcvc3BlbGxpbmcvY29udGV4dC1tZW51LXN1
Z2dlc3Rpb25zLmh0bWwKIAorIyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2Vy
cygpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVu
dGVkaXRhYmxlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAor
CiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdlL2luZGV4ZWRkYgogCg==
</data>
<flag name="review"
          id="54320"
          type_id="1"
          status="-"
          setter="hamaji"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66187</attachid>
            <date>2010-09-01 03:17:11 -0700</date>
            <delta_ts>2010-09-03 02:25:44 -0700</delta_ts>
            <desc>A possible fix 5</desc>
            <filename>issue41832-patch4.txt</filename>
            <type>text/plain</type>
            <size>15453</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjU4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDktMDEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctdGV4dGFyZWEuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9y
dGVkIHN5bWJvbHMgdXNlZCBieSBbV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0u
CisKIDIwMTAtMDktMDEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQ7IGFub3RoZXIgYnVpbGQgZml4LgpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lv
biA2NjU4OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ2
Miw2ICs0NjIsNyBAQCBfX1pON1dlYkNvcmUyM1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kQzFFCiBf
X1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRFUktOM1dU
RjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxp
c3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyMTNyZW1vdmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5
cGVFCitfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjE0bWFya2Vyc0Zvck5v
ZGVFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIyM3Jl
bmRlcmVkUmVjdHNGb3JNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVFCiBf
X1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpY0V2CiBfX1pON1dlYkNvcmUyNGNv
bnRleHRNZW51SXRlbVRhZ1N0eWxlc0V2CkBAIC04ODUsNiArODg2LDcgQEAgX19aTks3V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMjBjdXJyZW50S2V5YgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNl
MTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRTdG9w
VGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxlZEV2
CitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hpbGRBdEVqCiBfX1pOSzdXZWJDb3JlMTJS
ZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVj
dDE1bG9jYWxUb0Fic29sdXRlRU5TXzEwRmxvYXRQb2ludEViYgogX19aTks3V2ViQ29yZTEyUmVu
ZGVyV2lkZ2V0MTR3aW5kb3dDbGlwUmVjdEV2CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjY1ODkpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTA5LTAxICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgdGV4dElucHV0Q29udHJv
bGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRlc3RzIGZvciBz
cGVsbGNoZWNraW5nIHRlc3RzCisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZvciBNYWMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgzMgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbTogSW1wbGVtZW50ZWQgW1dlYkZyYW1lIGhhc1Nw
ZWxsaW5nTWFya2VyOmxlbmd0aDpdLgorICAgICAgICAoc3BlbGxpbmdOb2RlKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWVQcml2YXRlLmg6IEFkZGVkIFtXZWJGcmFtZSBoYXNTcGVsbGluZ01hcmtlcjps
ZW5ndGg6XSBzbyBUZXh0SW5wdXRDb250cm9sbGVyIGNhbiB1c2UgaXQuCisKIDIwMTAtMDgtMzEg
IERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDY2NTg4KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY2LDYg
KzEzNjYsNDAgQEAgLSAoTlNTdHJpbmcqKV9sYXllclRyZWVBc1RleHQKICAgICByZXR1cm4gY29y
ZUZyYW1lLT5sYXllclRyZWVBc1RleHQoKTsKIH0KIAorc3RhdGljIE5vZGUqIHNwZWxsaW5nTm9k
ZShGcmFtZSogY29yZUZyYW1lKQoreworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOworICAgIGlmICghZm9jdXNlZE5vZGUgfHwgIWZv
Y3VzZWROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoY29u
c3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOyByZW5k
ZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+Y2hpbGRBdCgwKSkgeworICAgICAgICBpZiAocmVu
ZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5ub2RlKCk7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCistIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQp
ZnJvbSBsZW5ndGg6KGludClsZW5ndGgKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZh
dGUtPmNvcmVGcmFtZTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIE5POwor
CisgICAgTm9kZSogbm9kZSA9IHNwZWxsaW5nTm9kZShjb3JlRnJhbWUpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgdW5zaWduZWQgaW50IHN0YXJ0T2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihmcm9tKTsKKyAgICB1bnNpZ25lZCBpbnQgZW5kT2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihmcm9tICsgbGVuZ3RoKTsKKyAgICBWZWN0
b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPm1hcmtl
cnMoKS0+bWFya2Vyc0Zvck5vZGUobm9kZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXJrZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIERvY3VtZW50TWFya2VyIG1hcmtlciA9IG1h
cmtlcnNbaV07CisgICAgICAgIGlmIChtYXJrZXIuc3RhcnRPZmZzZXQgPD0gc3RhcnRPZmZzZXQg
JiYgZW5kT2Zmc2V0IDw9IG1hcmtlci5lbmRPZmZzZXQgJiYgbWFya2VyLnR5cGUgPT0gRG9jdW1l
bnRNYXJrZXI6OlNwZWxsaW5nKQorICAgICAgICAgICAgcmV0dXJuIFlFUzsKKyAgICB9CisgICAg
cmV0dXJuIE5POworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZQpJbmRleDog
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAkocmV2aXNpb24gNjY1ODgpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw0
ICsxNDMsNyBAQCBAaW50ZXJmYWNlIFdlYkZyYW1lIChXZWJQcml2YXRlKQogCiAtIChOU1N0cmlu
ZyopX2xheWVyVHJlZUFzVGV4dDsKIAorLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGlzIGEgc3Bl
bGxpbmcgbWFya2VyIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhlIGZvY3VzZWQgbm9kZS4K
Ky0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlvbiBsZW5ndGg6KGludClsZW5n
dGg7CisKIEBlbmQKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTg5KQorKysgV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMDEgIEhpcm9u
b3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxs
aW5nTWFya2VyKCkgdG8gYXZvaWQgdXNpbmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcg
dGVzdHMKKyAgICAgICAgYW5kIGltcGxlbWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvVGV4dElucHV0Q29udHJvbGxlci5tOiBBZGRlZCBbVGV4dElucHV0Q29u
dHJvbGxlciBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XQorICAgICAgICBhbmQgYmluZCBpdCBz
byB3ZSBjYW4gY2FsbCBpdCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICgrW1RleHRJbnB1dENv
bnRyb2xsZXIgaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKCtb
VGV4dElucHV0Q29udHJvbGxlciB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6XSk6CisgICAgICAg
ICgtW1RleHRJbnB1dENvbnRyb2xsZXIgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0pOgorCiAy
MDEwLTA4LTMxICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQko
cmV2aXNpb24gNjY1ODgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGV4dElu
cHV0Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0
IDxBcHBLaXQvTlNJbnB1dE1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViSFRNTFZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0T2JqZWN0
Lmg+CkBAIC0xNjksNyArMTcwLDggQEAgKyAoQk9PTClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2Vi
U2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjaGFyYWN0ZXJJ
bmRleEZvclBvaW50WDpZOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Io
dmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCkKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3IoYXR0cmlidXRlZFN0cmluZ1dpdGhTdHJpbmc6KQotICAgICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKKyAgICAgICAg
ICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikKKyAg
ICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzU3BlbGxpbmdNYXJrZXI6bGVu
Z3RoOikpCiAgICAgICAgIHJldHVybiBOTzsKICAgICByZXR1cm4gWUVTOwogfQpAQCAtMTk0LDYg
KzE5Niw4IEBAICsgKE5TU3RyaW5nICopd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOigKICAgICAg
ICAgcmV0dXJuIEAibWFrZUF0dHJpYnV0ZWRTdHJpbmciOyAvLyBqdXN0IGEgZmFjdG9yeSBtZXRo
b2QsIGRvZXNuJ3QgY2FsbCBpbnRvIE5TVGV4dElucHV0CiAgICAgZWxzZSBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihzZXRJbnB1dE1ldGhvZEhhbmRsZXI6KSkKICAgICAgICAgcmV0dXJuIEAi
c2V0SW5wdXRNZXRob2RIYW5kbGVyIjsgCisgICAgZWxzZSBpZiAoYVNlbGVjdG9yID09IEBzZWxl
Y3RvcihoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6KSkKKyAgICAgICAgcmV0dXJuIEAiaGFzU3Bl
bGxpbmdNYXJrZXIiOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTQyNyw0ICs0MzEsOSBAQCAt
IChCT09MKWludGVycHJldEtleUV2ZW50czooTlNBcnJheSAqKWV2CiAgICAgcmV0dXJuIFlFUzsK
IH0KIAorLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWZyb20gbGVuZ3RoOihpbnQpbGVu
Z3RoCit7CisgICAgcmV0dXJuIFtbd2ViVmlldyBtYWluRnJhbWVdIGhhc1NwZWxsaW5nTWFya2Vy
OmZyb20gbGVuZ3RoOmxlbmd0aF07Cit9CisKIEBlbmQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NTg5
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTAtMDktMDEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0ZXh0SW5w
dXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNpbmcgcGl4ZWwgdGVz
dHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxlbWVudHMgaXQgZm9y
IE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
ODMyCisKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJs
ZS1leHBlY3RlZC50eHQ6IFRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHNwZWxsaW5nLWNvbnRlbnRl
ZGl0YWJsZS5odG1sLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVu
dGVkaXRhYmxlLmh0bWw6IEEgdGVzdCBmb3IgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGlu
Z01hcmtlcigpCisgICAgICAgIGZvciBjb250ZW50ZWRpdGFibGUgPGRpdj4gZWxlbWVudHMuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6
IFRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHNwZWxsaW5nLXRleHRhcmVhLmh0bWwuCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sOiBBIHRlc3QgZm9yIHRl
eHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKQorICAgICAgICBmb3IgPHRleHRh
cmVhPiBlbGVtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6IFNraXBwZWQgbmV3IHRlc3RzIGJlY2F1c2UKKyAgICAgICAgdGV4dElucHV0Q29u
dHJvbGxlci5oYXNTcGVsaW5nTWFya2VyKCkgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9Ta2lwcGVkOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lw
cGVkOiBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogZGl0dG8uCisKIDIw
MTAtMDktMDEgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcgZXhwZWN0ZWQgcmVzdWx0cyBmb3IgcjY2NTgxLgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaXRhYmxlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHdlIGNhbiB3
cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICd6eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUgPGRpdj4gZWxlbWVudCBhbmQgc2VlIHRoZXkg
YXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorenrCoAorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0
YWJsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgbGFuZ3VhZ2U9Imph
dmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+RWRpdGlu
ZyBUZXN0PC90aXRsZT4gCis8L2hlYWQ+IAorPGJvZHk+CitUaGlzIHRlc3RzIHdlIGNhbiB3cml0
ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6
eiAnIGluIHRoZSBjb250ZW50ZWRpdGFibGUgJmx0O2RpdiZndDsgZWxlbWVudCBhbmQgc2VlIHRo
ZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVsbGVkLjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0IGxh
bmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9n
KHN0cikgeworICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKKyAgIGxp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgY29uc29sZS5hcHBl
bmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChyZXN1bHQpIHsKKyAgICBpZiAo
cmVzdWx0KQorICAgICAgICBsb2coJ1NVQ0NFU1MnKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygn
RkFJTEVEJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBUeXBlIHRoZSB0ZXN0
IHRleHQgJ3p6ICcuCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5mb2N1cygp
OworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoJ3onKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnICcpOworCisgICAgLy8gVGVzdCB0
aGUgYWJvdmUgJ3p6JyBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4gV2UgdGVzdCBpdCBvbmx5IG9u
IHBsYXRmb3JtcyB0aGF0IGltcGxlbWVudAorICAgIC8vIHRleHRJbnB1dENvbnRyb2xsZXIuaGFz
U3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCBleGNlcHRpb25zLgorICAgIGlmICh0ZXh0SW5wdXRD
b250cm9sbGVyICYmIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpCisgICAg
ICAgIGxvZ1Jlc3VsdCh0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIp
KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXRleHRhcmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitU
aGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNoZWNrZXJzLiBUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAnIGluIHRoZSA8dGV4dGFyZWE+IGVsZW1lbnQgYW5kIHNl
ZSB0aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KKworCitTVUNDRVNTCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10
ZXh0YXJlYS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Li4vZWRpdGluZy5qcyBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzx0aXRsZT5FZGl0aW5nIFRlc3Q8L3RpdGxlPiAK
KzwvaGVhZD4gCis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgd2UgY2FuIHdyaXRlIHRleHQgdGVzdHMg
Zm9yIHNwZWxsY2hlY2tlcnMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3p6ICcgaW4gdGhlICZs
dDt0ZXh0YXJlYSZndDsgZWxlbWVudCBhbmQgc2VlIHRoZXkgYXJlIG1hcmtlZCBhcyBtaXNzcGVs
bGVkLjwvcD4KKzx0ZXh0YXJlYSBpZD0idGVzdCIgY29scz0iODAiIHJvd3M9IjEwIj48L3RleHRh
cmVhPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlw
dCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyhzdHIpIHsKKyAgIHZhciBs
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICBsaS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworfQor
CitmdW5jdGlvbiBsb2dSZXN1bHQocmVzdWx0KSB7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAg
bG9nKCdTVUNDRVNTJyk7CisgICAgZWxzZQorICAgICAgICBsb2coJ0ZBSUxFRCcpOworfQorCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gVHlwZSB0aGUgdGVzdCB0ZXh0ICd6eiAnLgorICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0JykuZm9jdXMoKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCd6Jyk7CisgICAgdHlw
ZUNoYXJhY3RlckNvbW1hbmQoJyAnKTsKKworICAgIC8vIFRlc3QgdGhlIGFib3ZlICd6eicgaXMg
bWFya2VkIGFzIG1pc3NwZWxsZWQuIFdlIHRlc3QgaXQgb25seSBvbiBwbGF0Zm9ybXMgdGhhdCBp
bXBsZW1lbnQKKyAgICAvLyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkg
dG8gYXZvaWQgZXhjZXB0aW9ucy4KKyAgICBpZiAodGV4dElucHV0Q29udHJvbGxlciAmJiB0ZXh0
SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKQorICAgICAgICBsb2dSZXN1bHQodGV4
dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigwLCAyKSk7Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDY2NTg4KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zMTY1LDMgKzMxNjUsNyBAQCBCVUdXSzQ0OTY3IE1BQyA6IGZhc3QvbXVsdGljb2wv
cGFnaW5hdGUtCiAvLyBOZXcgdGVzdHMgaW4gcjY2NTIzIGFuZCByNjY1MTYKIEJVR1dLNDQ5OTYg
V0lOIDogaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLmh0bWwgPSBURVhUCiBCVUdXSzQ0OTk2
IFdJTiA6IGluc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLmh0bWwgPSBURVhUCisKKy8v
IE5lZWQgdG8gaW1wbGVtZW50IHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXJz
KCkuCitCVUdXSzQxODMyIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1s
ID0gRkFJTAorQlVHV0s0MTgzMiA6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVk
aXRhYmxlLmh0bWwgPSBGQUlMCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNp
b24gNjY1ODgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtMTAxMyw2ICsxMDEzLDggQEAgZWRpdGluZy9zZWxlY3Rpb24vdW5yZW5kZXJlZC1z
cGFjZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi93b3JkLWdyYW51bGFyaXR5Lmh0bWwKIGVkaXRp
bmcvc3BlbGxpbmcvaW5saW5lX3NwZWxsaW5nX21hcmtlcnMuaHRtbAogZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGNoZWNrLWF0dHJpYnV0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNv
bnRlbnRlZGl0YWJsZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0
bWwKIGVkaXRpbmcvc3R5bGUvNTA2NTkxMC5odG1sCiBlZGl0aW5nL3N0eWxlL2FwcGxlLXN0eWxl
LWVkaXRhYmxlLW1peC5odG1sCiBlZGl0aW5nL3N0eWxlL2Jsb2NrLXN0eWxlLTAwMS5odG1sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDY2NTg4KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjI5NCw2ICsyMjk0LDEw
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbGluZWJyZWFrLmh0bWwKIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy5odG1sCiAKKyMgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcnMoKSBpcyBu
b3QgaW1wbGVtZW50ZWQuCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLmh0bWwKKwogIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGluZy9zdHlsZSB0ZXN0cwogIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSAjCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNp
b24gNjY1ODgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBj
b3B5KQpAQCAtODc4LDYgKzg3OCwxMCBAQCBjYW52YXMvcGhpbGlwCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTEwNAogZWRpdGluZy9zcGVsbGluZy9jb250ZXh0
LW1lbnUtc3VnZ2VzdGlvbnMuaHRtbAogCisjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxp
bmdNYXJrZXJzKCkgaXMgbm90IGltcGxlbWVudGVkLgorZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJl
YS5odG1sCisKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxlZC4KIHN0b3JhZ2UvaW5kZXhl
ZGRiCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66478</attachid>
            <date>2010-09-03 02:25:44 -0700</date>
            <delta_ts>2010-09-03 03:36:29 -0700</delta_ts>
            <desc>A possible fix 6</desc>
            <filename>issue41832-patch5.txt</filename>
            <type>text/plain</type>
            <size>16201</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjcxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDktMDMgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyB0ZXh0SW5wdXRDb250cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKCkgdG8gYXZvaWQgdXNp
bmcgcGl4ZWwgdGVzdHMgZm9yIHNwZWxsY2hlY2tpbmcgdGVzdHMKKyAgICAgICAgYW5kIGltcGxl
bWVudHMgaXQgZm9yIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxODMyCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctY29udGVudGVkaXRhYmxlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctdGV4dGFyZWEuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9y
dGVkIHN5bWJvbHMgdXNlZCBieSBbV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3RoOl0u
CisKIDIwMTAtMDktMDIgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjY3
MTIpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiAr
NDYyLDcgQEAgX19aTjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMxRQogX19aTjdX
ZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVj
dG9ySVBOU180Tm9kZUVMbTBFRUUKIF9fWk43V2ViQ29yZTI0QmluYXJ5UHJvcGVydHlMaXN0V3Jp
dGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjEzcmVtb3ZlTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQor
X19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxNG1hcmtlcnNGb3JOb2RlRVBO
U180Tm9kZUUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMjNyZW5kZXJl
ZFJlY3RzRm9yTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQogX19aTjdX
ZWJDb3JlMjRjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWNFdgogX19aTjdXZWJDb3JlMjRjb250ZXh0
TWVudUl0ZW1UYWdTdHlsZXNFdgpAQCAtODg2LDYgKzg4Nyw3IEBAIF9fWk5LN1dlYkNvcmUxMkV2
ZW50SGFuZGxlcjIwY3VycmVudEtleWIKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEyZGF0
YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRocmVh
ZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgorX19a
Tks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagogX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxv
Y2FsVG9BYnNvbHV0ZUVOU18xMEZsb2F0UG9pbnRFYmIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcldp
ZGdldDE0d2luZG93Q2xpcFJlY3RFdgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2NzE4KQorKysgV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOS0w
MyAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRleHRJbnB1dENvbnRyb2xsZXIu
aGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCB1c2luZyBwaXhlbCB0ZXN0cyBmb3Igc3BlbGxj
aGVja2luZyB0ZXN0cworICAgICAgICBhbmQgaW1wbGVtZW50cyBpdCBmb3IgTWFjLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MzIKKworICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06IEltcGxlbWVudGVkIFtXZWJGcmFtZSBoYXNTcGVsbGlu
Z01hcmtlcjpsZW5ndGg6XS4KKyAgICAgICAgKHNwZWxsaW5nTm9kZSk6CisgICAgICAgICgtW1dl
YkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lUHJpdmF0ZS5oOiBBZGRlZCBbV2ViRnJhbWUgaGFzU3BlbGxpbmdNYXJrZXI6bGVuZ3Ro
Ol0gc28gVGV4dElucHV0Q29udHJvbGxlciBjYW4gdXNlIGl0LgorCiAyMDEwLTA5LTAyICBTdGV2
ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNjY3MTIpCisr
KyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNjYs
NiArMTM2Niw0MCBAQCAtIChOU1N0cmluZyopX2xheWVyVHJlZUFzVGV4dAogICAgIHJldHVybiBj
b3JlRnJhbWUtPmxheWVyVHJlZUFzVGV4dCgpOwogfQogCitzdGF0aWMgTm9kZSogc3BlbGxpbmdO
b2RlKEZyYW1lKiBjb3JlRnJhbWUpCit7CisgICAgTm9kZSogZm9jdXNlZE5vZGUgPSBjb3JlRnJh
bWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CisgICAgaWYgKCFmb2N1c2VkTm9kZSB8fCAh
Zm9jdXNlZE5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZm9jdXNlZE5vZGUtPnJlbmRlcmVyKCk7IHJl
bmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5jaGlsZEF0KDApKSB7CisgICAgICAgIGlmIChy
ZW5kZXJlci0+aXNUZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPm5vZGUoKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGlu
dClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICBOb2RlKiBub2RlID0gc3BlbGxpbmdOb2RlKGNvcmVGcmFtZSk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICB1bnNpZ25lZCBpbnQgc3RhcnRPZmZzZXQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGZyb20pOworICAgIHVuc2lnbmVkIGludCBlbmRP
ZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGZyb20gKyBsZW5ndGgpOworICAgIFZl
Y3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2VycyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0g
bWFya2Vyc1tpXTsKKyAgICAgICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCA8PSBzdGFydE9mZnNl
dCAmJiBlbmRPZmZzZXQgPD0gbWFya2VyLmVuZE9mZnNldCAmJiBtYXJrZXIudHlwZSA9PSBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgIH0KKyAg
ICByZXR1cm4gTk87Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lCkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCShyZXZpc2lvbiA2NjcxMikKKysrIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDQgKzE0Myw3IEBAIEBpbnRlcmZhY2UgV2ViRnJhbWUgKFdlYlByaXZhdGUpCiAKIC0gKE5TU3Ry
aW5nKilfbGF5ZXJUcmVlQXNUZXh0OwogCisvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgaXMgYSBz
cGVsbGluZyBtYXJrZXIgaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvZiB0aGUgZm9jdXNlZCBub2Rl
LgorLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWxvY2F0aW9uIGxlbmd0aDooaW50KWxl
bmd0aDsKKwogQGVuZApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjY3MTgpCisrKyBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wOS0wMyAgSGly
b25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3Bl
bGxpbmdNYXJrZXIoKSB0byBhdm9pZCB1c2luZyBwaXhlbCB0ZXN0cyBmb3Igc3BlbGxjaGVja2lu
ZyB0ZXN0cworICAgICAgICBhbmQgaW1wbGVtZW50cyBpdCBmb3IgTWFjLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MzIKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm06IEFkZGVkIFtUZXh0SW5wdXRD
b250cm9sbGVyIGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDpdCisgICAgICAgIGFuZCBiaW5kIGl0
IHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gSmF2YVNjcmlwdC4KKyAgICAgICAgKCtbVGV4dElucHV0
Q29udHJvbGxlciBpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAo
K1tUZXh0SW5wdXRDb250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bVGV4dElucHV0Q29udHJvbGxlciBoYXNTcGVsbGluZ01hcmtlcjpsZW5ndGg6XSk6CisK
IDIwMTAtMDktMDIgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGV4dElucHV0Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXh0SW5wdXRDb250cm9sbGVyLm0JKHJldmlzaW9uIDY2NzEyKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1RleHRJbnB1dENvbnRyb2xsZXIubQkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8QXBwS2l0L05TSW5wdXRNYW5h
Z2VyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJGcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxWaWV3UHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNjcmlwdE9iamVjdC5oPgpAQCAtMTY5LDcgKzE3MCw4
IEBAICsgKEJPT0wpaXNTZWxlY3RvckV4Y2x1ZGVkRnJvbVdlYlNjcmlwdDoKICAgICAgICAgICAg
IHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoY2hhcmFjdGVySW5kZXhGb3JQb2ludFg6WTopCiAg
ICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKHZhbGlkQXR0cmlidXRlc0Zvck1h
cmtlZFRleHQpCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9yKGF0dHJpYnV0
ZWRTdHJpbmdXaXRoU3RyaW5nOikKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2VsZWN0
b3Ioc2V0SW5wdXRNZXRob2RIYW5kbGVyOikpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKHNldElucHV0TWV0aG9kSGFuZGxlcjopCisgICAgICAgICAgICB8fCBhU2VsZWN0
b3IgPT0gQHNlbGVjdG9yKGhhc1NwZWxsaW5nTWFya2VyOmxlbmd0aDopKQogICAgICAgICByZXR1
cm4gTk87CiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTE5NCw2ICsxOTYsOCBAQCArIChOU1N0cmlu
ZyAqKXdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjooCiAgICAgICAgIHJldHVybiBAIm1ha2VBdHRy
aWJ1dGVkU3RyaW5nIjsgLy8ganVzdCBhIGZhY3RvcnkgbWV0aG9kLCBkb2Vzbid0IGNhbGwgaW50
byBOU1RleHRJbnB1dAogICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3Ioc2V0SW5w
dXRNZXRob2RIYW5kbGVyOikpCiAgICAgICAgIHJldHVybiBAInNldElucHV0TWV0aG9kSGFuZGxl
ciI7IAorICAgIGVsc2UgaWYgKGFTZWxlY3RvciA9PSBAc2VsZWN0b3IoaGFzU3BlbGxpbmdNYXJr
ZXI6bGVuZ3RoOikpCisgICAgICAgIHJldHVybiBAImhhc1NwZWxsaW5nTWFya2VyIjsKIAogICAg
IHJldHVybiBuaWw7CiB9CkBAIC00MjcsNCArNDMxLDkgQEAgLSAoQk9PTClpbnRlcnByZXRLZXlF
dmVudHM6KE5TQXJyYXkgKilldgogICAgIHJldHVybiBZRVM7CiB9CiAKKy0gKEJPT0wpaGFzU3Bl
bGxpbmdNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAoreworICAgIHJldHVybiBb
W3dlYlZpZXcgbWFpbkZyYW1lXSBoYXNTcGVsbGluZ01hcmtlcjpmcm9tIGxlbmd0aDpsZW5ndGhd
OworfQorCiBAZW5kCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjcxOCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA5LTAzICBIaXJv
bm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVs
bGluZ01hcmtlcigpIHRvIGF2b2lkIHVzaW5nIHBpeGVsIHRlc3RzIGZvciBzcGVsbGNoZWNraW5n
IHRlc3RzCisgICAgICAgIGFuZCBpbXBsZW1lbnRzIGl0IGZvciBNYWMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTgzMgorCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZCB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvcgorICAgICAgICBzcGVsbGluZy1jb250ZW50ZWRpdGFi
bGUuaHRtbC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0
YWJsZS5odG1sOiBBZGRlZCBhIHRleHQgdGVzdCBvZiBzcGVsbGNoZWtlciBBUElzCisgICAgICAg
IGZvciBjb250ZW50ZWRpdGFibGUgPGRpdj4gZWxlbWVudHMuCisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS1leHBlY3RlZC50eHQ6IEFkZGVkIHRoZSBleHBlY3Rl
ZCByZXN1bHQgZm9yIHNwZWxsaW5nLXRleHRhcmVhLmh0bWwuCisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sOiBBZGRlZCBhIHRleHQgdGVzdCBvZiBzcGVs
bGNoZWNrZXIgQVBJcworICAgICAgICBmb3IgPHRleHRhcmVhPiBlbGVtZW50cy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IFNraXBwZWQgdGhlIG5l
dyB0ZXN0cyBiZWNhdXNlCisgICAgICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGluZ01h
cmtlcigpIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBl
ZDogZGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDogZGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IGRpdHRvLgorCiAyMDEwLTA5LTAzICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRh
dGVkIEdUSyBiYXNlbGluZXMgb2YgYSBtYXRobWwgdGVzdC4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRl
ZGl0YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgd2UgY2FuIHdyaXRlIHRleHQgdGVzdHMg
Zm9yIHNwZWxsY2hlY2tlcnMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3p6ICcgaW4gdGhlIGNv
bnRlbnRlZGl0YWJsZSA8ZGl2PiBlbGVtZW50IGFuZCBzZWUgdGhleSBhcmUgbWFya2VkIGFzIG1p
c3NwZWxsZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit6esKgCitQQVNTICd6
eicgaXMgbWFya2VkIGFzIG1pc3NwZWxsZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50ZWRp
dGFibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5
cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+RWRpdGluZyBUZXN0PC90aXRs
ZT4gCis8L2hlYWQ+IAorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB3ZSBjYW4gd3JpdGUgdGV4dCB0ZXN0cyBmb3Ig
c3BlbGxjaGVja2Vycy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSBcJ3p6IFwnIGluIHRoZSBjb250
ZW50ZWRpdGFibGUgJmx0O2RpdiZndDsgZWxlbWVudCBhbmQgc2VlIHRoZXkgYXJlIG1hcmtlZCBh
cyBtaXNzcGVsbGVkLicpOworCitmdW5jdGlvbiBsb2dSZXN1bHQocmVzdWx0KSB7CisgICAgaWYg
KHJlc3VsdCkKKyAgICAgICAgdGVzdFBhc3NlZCgnXCd6elwnIGlzIG1hcmtlZCBhcyBtaXNzcGVs
bGVkLicpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgnXCd6elwnIGlzIG5vdCBtYXJr
ZWQgYXMgbWlzc3BlbGxlZC4nKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIC8vIFR5cGUgdGhlIHRlc3QgdGV4dCAnenogJy4KKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdCcpLmZvY3VzKCk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3on
KTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgneicpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKCcgJyk7CisKKyAgICAvLyBUZXN0IHRoZSBhYm92ZSAnenonIGlzIG1hcmtlZCBhcyBtaXNz
cGVsbGVkLiBXZSB0ZXN0IGl0IG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgaW1wbGVtZW50CisgICAg
Ly8gdGV4dElucHV0Q29udHJvbGxlci5oYXNTcGVsbGluZ01hcmtlcigpIHRvIGF2b2lkIGV4Y2Vw
dGlvbnMuCisgICAgaWYgKHRleHRJbnB1dENvbnRyb2xsZXIgJiYgdGV4dElucHV0Q29udHJvbGxl
ci5oYXNTcGVsbGluZ01hcmtlcikKKyAgICAgICAgbG9nUmVzdWx0KHRleHRJbnB1dENvbnRyb2xs
ZXIuaGFzU3BlbGxpbmdNYXJrZXIoMCwgMikpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRhcmVhLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRh
cmVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctdGV4dGFyZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExIEBACitUaGlzIHRlc3RzIHdlIGNhbiB3cml0ZSB0ZXh0IHRlc3RzIGZvciBzcGVsbGNo
ZWNrZXJzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd6eiAnIGluIHRoZSA8dGV4dGFyZWE+IGVs
ZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyAnenonIGlzIG1hcmtlZCBhcyBtaXNzcGVsbGVk
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXRleHRh
cmVhLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vZWRpdGluZy5qcyBsYW5ndWFnZT0iamF2YXNj
cmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzx0aXRsZT5FZGl0aW5nIFRl
c3Q8L3RpdGxlPiAKKzwvaGVhZD4gCis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PHRleHRhcmVhIGlkPSJ0ZXN0IiBjb2xzPSI4MCIgcm93cz0iMTAiPjwvdGV4dGFyZWE+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB3ZSBjYW4gd3JpdGUg
dGV4dCB0ZXN0cyBmb3Igc3BlbGxjaGVja2Vycy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSBcJ3p6
IFwnIGluIHRoZSAmbHQ7dGV4dGFyZWEmZ3Q7IGVsZW1lbnQgYW5kIHNlZSB0aGV5IGFyZSBtYXJr
ZWQgYXMgbWlzc3BlbGxlZC4nKTsKKworZnVuY3Rpb24gbG9nUmVzdWx0KHJlc3VsdCkgeworICAg
IGlmIChyZXN1bHQpCisgICAgICAgIHRlc3RQYXNzZWQoJ1wnenpcJyBpcyBtYXJrZWQgYXMgbWlz
c3BlbGxlZC4nKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQoJ1wnenpcJyBpcyBub3Qg
bWFya2VkIGFzIG1pc3NwZWxsZWQuJyk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAvLyBUeXBlIHRoZSB0ZXN0IHRleHQgJ3p6ICcuCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKS5mb2N1cygpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5k
KCd6Jyk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoJ3onKTsKKyAgICB0eXBlQ2hhcmFjdGVy
Q29tbWFuZCgnICcpOworCisgICAgLy8gVGVzdCB0aGUgYWJvdmUgJ3p6JyBpcyBtYXJrZWQgYXMg
bWlzc3BlbGxlZC4gV2UgdGVzdCBpdCBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IGltcGxlbWVudAor
ICAgIC8vIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIoKSB0byBhdm9pZCBl
eGNlcHRpb25zLgorICAgIGlmICh0ZXh0SW5wdXRDb250cm9sbGVyICYmIHRleHRJbnB1dENvbnRy
b2xsZXIuaGFzU3BlbGxpbmdNYXJrZXIpCisgICAgICAgIGxvZ1Jlc3VsdCh0ZXh0SW5wdXRDb250
cm9sbGVyLmhhc1NwZWxsaW5nTWFya2VyKDAsIDIpKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAkocmV2aXNpb24gNjY3MTIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3NDksNiArMjc0OSwxMCBA
QCBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkCiBCVUdXSzQxMzExIFdJ
TiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOC5odG1sID0gSU1BR0UK
IEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA5
Lmh0bWwgPSBJTUFHRQogCisvLyBOZWVkIHRvIGltcGxlbWVudCB0ZXh0SW5wdXRDb250cm9sbGVy
Lmhhc1NwZWxsaW5nTWFya2VycygpLgorQlVHV0s0MTgzMiA6IGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdGV4dGFyZWEuaHRtbCA9IEZBSUwKK0JVR1dLNDE4MzIgOiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gRkFJTAorCiAvLyBGbGFreSB0ZXN0cy4K
IEJVRzQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96b29tLWhpeGllLW1peGVkLTAwOS54bWwg
PSBJTUFHRSBQQVNTCiBCVUc0NDM0NiBMSU5VWCA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1t
aXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJ
KHJldmlzaW9uIDY2NzEyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdv
cmtpbmcgY29weSkKQEAgLTEwMTMsNiArMTAxMyw4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3VucmVu
ZGVyZWQtc3BhY2UuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1s
CiBlZGl0aW5nL3NwZWxsaW5nL2lubGluZV9zcGVsbGluZ19tYXJrZXJzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1jb250ZW50ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0
YXJlYS5odG1sCiBlZGl0aW5nL3N0eWxlLzUwNjU5MTAuaHRtbAogZWRpdGluZy9zdHlsZS9hcHBs
ZS1zdHlsZS1lZGl0YWJsZS1taXguaHRtbAogZWRpdGluZy9zdHlsZS9ibG9jay1zdHlsZS0wMDEu
aHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2NjcxMikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIyOTcsNiAr
MjI5NywxMCBAQCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5odG1sCiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXR0cmlidXRlLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmcuaHRtbAogCisjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzU3BlbGxpbmdNYXJrZXJz
KCkgaXMgbm90IGltcGxlbWVudGVkLgorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1jb250ZW50
ZWRpdGFibGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCisK
ICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyBmYWlsaW5nIGVkaXRpbmcvc3R5bGUgdGVzdHMK
ICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gIwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJ
KHJldmlzaW9uIDY2NzEyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdv
cmtpbmcgY29weSkKQEAgLTg3OCw2ICs4NzgsMTAgQEAgY2FudmFzL3BoaWxpcAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMDQKIGVkaXRpbmcvc3BlbGxpbmcv
Y29udGV4dC1tZW51LXN1Z2dlc3Rpb25zLmh0bWwKIAorIyB0ZXh0SW5wdXRDb250cm9sbGVyLmhh
c1NwZWxsaW5nTWFya2VycygpIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctY29udGVudGVkaXRhYmxlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
dGV4dGFyZWEuaHRtbAorCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdl
L2luZGV4ZWRkYgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>