<?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>30437</bug_id>
          
          <creation_ts>2009-10-16 04:36:41 -0700</creation_ts>
          <short_desc>REGRESSION: Japanese text search ignores small vs. large and voicing mark differences</short_desc>
          <delta_ts>2010-01-11 13:03:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://limechat.net/report/webkit-search-problem.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Satoshi Nakagawa">artension</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jshin</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>keishi</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>155061</commentid>
    <comment_count>0</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-16 04:36:41 -0700</bug_when>
    <thetext>== Summary ==

In Japanese, &apos;ぁ&apos; and &apos;あ&apos; are treated as different characters in anytime. &apos;か&apos; and &apos;が&apos; are as well.

But in Safari and Chrome, they are treated as the same characters in its search.

== Description ==

As you know in English, abc and ABC are treated as the same in a case insensitive context like application searches.

But in Japanese, for example, &quot;あった&quot; and &quot;あつた&quot; are always different words in any contexts. Because in Japanese semantics, &apos;っ&apos; is NOT considered as a small form of &apos;つ&apos;. These characters are never treated as the same characters.

In the current Unicode Collation Algorithm, っ and つ are in the same order in the primary collation strength. WebKit uses the primary collation strength in ICU for its search.

I reported this problem in the Unicode ML. (http://unicode.org/mail-arch/unicode-ml/y2009-m10/0019.html)

Mark Davis replied to my report. (http://unicode.org/mail-arch/unicode-ml/y2009-m10/0022.html)
&gt; UTS#10 does not necessarily match the sorting of any particular language.

It means we cannot use ICU&apos;s search function directly for application searches. It needs some tailoring in the collation table for some languages.

I wrote a patch for WebKit to add the following tailoring rules for Japanese text search. This patch doesn&apos;t have any regression in the other languages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155062</commentid>
    <comment_count>1</comment_count>
      <attachid>41282</attachid>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-16 04:39:05 -0700</bug_when>
    <thetext>Created attachment 41282
A patch to fix this problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155064</commentid>
    <comment_count>2</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-16 04:44:12 -0700</bug_when>
    <thetext>The tailoring rules are like this:


&amp;ぁ=ァ=ｧ&lt;あ=ア=ｱ&lt;ぃ=ィ=ｨ&lt;い=イ=ｲ&lt;ぅ=ゥ=ｩ&lt;う=ウ=ｳ&lt;ゔ=ヴ&lt;ぇ=ェ=ｪ&lt;え=エ=ｴ&lt;ぉ=ォ=ｫ&lt;お=オ=ｵ
&lt;ゕ=ヵ&lt;か=カ=ｶ&lt;が=ガ&lt;き=キ=ｷ&lt;ぎ=ギ&lt;く=ク=ｸ&lt;ぐ=グ&lt;ゖ=ヶ&lt;け=ケ=ｹ&lt;げ=ゲ&lt;こ=コ=ｺ&lt;ご=ゴ
&lt;さ=サ=ｻ&lt;ざ=ザ&lt;し=シ=ｼ&lt;じ=ジ&lt;す=ス=ｽ&lt;ず=ズ&lt;せ=セ=ｾ&lt;ぜ=ゼ&lt;そ=ソ=ｿ&lt;ぞ=ゾ
&lt;た=タ=ﾀ&lt;だ=ダ&lt;ち=チ=ﾁ&lt;ぢ=ヂ&lt;っ=ッ=ｯ&lt;つ=ツ=ﾂ&lt;づ=ヅ&lt;て=テ=ﾃ&lt;で=デ&lt;と=ト=ﾄ&lt;ど=ド
&lt;な=ナ=ﾅ&lt;に=ニ=ﾆ&lt;ぬ=ヌ=ﾇ&lt;ね=ネ=ﾈ&lt;の=ノ=ﾉ
&lt;は=ハ=ﾊ&lt;ば=バ&lt;ぱ=パ&lt;ひ=ヒ=ﾋ&lt;び=ビ&lt;ぴ=ピ&lt;ふ=フ=ﾌ&lt;ぶ=ブ&lt;ぷ=プ&lt;へ=ヘ=ﾍ&lt;べ=ベ&lt;ぺ=ペ&lt;ほ=ホ=ﾎ&lt;ぼ=ボ&lt;ぽ=ポ
&lt;ま=マ=ﾏ&lt;み=ミ=ﾐ&lt;む=ム=ﾑ&lt;め=メ=ﾒ&lt;も=モ=ﾓ
&lt;ゃ=ャ=ｬ&lt;や=ヤ=ﾔ&lt;ゅ=ュ=ｭ&lt;ゆ=ユ=ﾕ&lt;ょ=ョ=ｮ&lt;よ=ヨ=ﾖ
&lt;ら=ラ=ﾗ&lt;り=リ=ﾘ&lt;る=ル=ﾙ&lt;れ=レ=ﾚ&lt;ろ=ロ=ﾛ
&lt;ゎ=ヮ&lt;わ=ワ=ﾜ&lt;ヷ&lt;ゐ=ヰ&lt;ヸ&lt;ゑ=ヱ&lt;を=ヲ=ｦ&lt;ん=ン=ﾝ


For example, &quot;ぁ=ァ=ｧ&lt;あ=ア=ｱ&quot; means:

- &apos;ぁ&apos;, &apos;ァ&apos; and &apos;ァ&apos; are in the same order.
- &apos;ぁ&apos;, &apos;ァ&apos; and &apos;ァ&apos; are smaller than &apos;あ&apos;, &apos;ア&apos; and &apos;ｱ&apos;.


You can see some screenshots that describe this problem and the effect of this patch.

http://limechat.net/report/webkit-search-problem.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155294</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-10-16 15:54:23 -0700</bug_when>
    <thetext>A fix like this definitely needs include a regression test. See &lt;http://trac.webkit.org/browser/trunk/LayoutTests/fast/text/find-case-folding.html&gt; for an example of how it could be done.

Some more information about contributing code to WebKit is available at &lt;http://webkit.org/coding/contributing.html&gt;. This may seem like a lot to ask for, but it&apos;s vital for maintainability of the project.

See also: bug 27587.

Once you have a patch ready for review, please mark it as such by setting review flag to &quot;?&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155326</commentid>
    <comment_count>4</comment_count>
      <attachid>41282</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-16 17:58:11 -0700</bug_when>
    <thetext>Comment on attachment 41282
A patch to fix this problem

This code should go inside createSearcher(), not inside searcher().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155560</commentid>
    <comment_count>5</comment_count>
      <attachid>41396</attachid>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-18 22:02:21 -0700</bug_when>
    <thetext>Created attachment 41396
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155561</commentid>
    <comment_count>6</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-18 22:07:35 -0700</bug_when>
    <thetext>Thanks for your comments.
I&apos;ve uploaded a revised patch.

About bug 27587, IMO it&apos;s natural to treat &quot;シ&quot; and &quot;㋛&quot; as different charactes. &quot;アパート&quot; and &quot;㌀&quot; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155959</commentid>
    <comment_count>7</comment_count>
      <attachid>41396</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-19 15:26:19 -0700</bug_when>
    <thetext>Comment on attachment 41396
Revised patch

&gt; +        * editing/TextIterator.cpp:
&gt; +        (WebCore::):
&gt; +        (WebCore::createSearcher):

The line saying just &quot;WebCore::&quot; should be deleted.

&gt; +// Tailored collation rules for Japanese text search.
&gt; +// The default Unicode Collation Algorithm is unnatural in Japanese.
&gt; +// These rules intend to treat the following characters as different characters.
&gt; +//
&gt; +// - Small kana letters and normal kana letters
&gt; +// - Voiceless letters, voiced letters and semi-voiced letters
&gt; +//

This comment should document where this array came from. Is this original work or did you copy this here from some other project?

&gt; +static const UChar JAPANESE_KANA_COLLATION_RULES[] = {

This array should not have a name that&apos;s in all capitals. Those names are reserved for macros.

&gt;      UErrorCode status = U_ZERO_ERROR;
&gt;      UStringSearch* searcher = usearch_open(&amp;newlineCharacter, 1, &amp;newlineCharacter, 1, currentSearchLocaleID(), 0, &amp;status);
&gt;      ASSERT(status == U_ZERO_ERROR || status == U_USING_FALLBACK_WARNING || status == U_USING_DEFAULT_WARNING);
&gt; +    
&gt; +    static UCollator* collator = 0;
&gt; +    if (!collator) {
&gt; +        // Set tailored collation rules to fix Japanese text search.
&gt; +        // See the comments before JAPANESE_KANA_COLLATION_RULES for details.
&gt; +        status = U_ZERO_ERROR;
&gt; +        collator = ucol_openRules(JAPANESE_KANA_COLLATION_RULES, -1, UCOL_DEFAULT,
&gt; +                                  UCOL_DEFAULT_STRENGTH, 0, &amp;status);
&gt; +        ASSERT(status == U_ZERO_ERROR);
&gt; +        status = U_ZERO_ERROR;
&gt; +        usearch_setCollator(searcher, collator, &amp;status);
&gt; +        ASSERT(status == U_ZERO_ERROR);
&gt; +        usearch_reset(searcher);
&gt; +    }

This is OK, but not quite right.

The usearch_setCollator and usearch_reset calls should be outside the if statement, since they are part of the creation of searcher, not the creation of the collator. However, since the createSearcher function is only called once, there&apos;s no problem in practice.

The entire function should ideally be refactored to match the way the searcher() and createSearcher() function work. There would be a collator() and createCollator() function, and createSearcher() would call collator().

Otherwise, the patch looks good. I&apos;m going to say r=me because I think it&apos;s OK to land this patch as is, but I think it would be even better if you took my suggestions above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155980</commentid>
    <comment_count>8</comment_count>
      <attachid>41396</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 16:54:46 -0700</bug_when>
    <thetext>Comment on attachment 41396
Revised patch

Nakagawa-san is not a committer, so I would mark this cq+, except Darin has asked for modifications.  So best if Nakagawa-san could post a new patch with r=? and cq=?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156083</commentid>
    <comment_count>9</comment_count>
      <attachid>41486</attachid>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-19 23:57:39 -0700</bug_when>
    <thetext>Created attachment 41486
Revised patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156086</commentid>
    <comment_count>10</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-20 00:02:52 -0700</bug_when>
    <thetext>Thanks for reviewing.
I&apos;ve updated the patch per your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156175</commentid>
    <comment_count>11</comment_count>
      <attachid>41486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-20 09:43:13 -0700</bug_when>
    <thetext>Comment on attachment 41486
Revised patch 2

Rejecting patch 41486 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 60
Last 500 characters of output:
ages while\n\trunning as root.  There are known race conditions that\n\twill allow any local user to read any file on the system.\n\tIf you still desire to serve pages as root then\n\tadd -DBIG_SECURITY_HOLE to the CFLAGS env variable\n\tand then rebuild the server.\n\tIt is strongly suggested that you instead modify the User\n\tdirective in your httpd.conf file to list a non-root\n\tuser.\n
Timed out waiting for httpd to start at WebKitTools/Scripts/run-webkit-tests line 1359, &lt;IN&gt; line 30187.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156204</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-20 11:03:35 -0700</bug_when>
    <thetext>My apologies.  Something is causing run-webkit-tests to fail on the commit bot.  I&apos;m not sure what yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156211</commentid>
    <comment_count>13</comment_count>
      <attachid>41486</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-20 11:14:44 -0700</bug_when>
    <thetext>Comment on attachment 41486
Revised patch 2

I&apos;ve fixed this commit-queue.  Again my apologies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156236</commentid>
    <comment_count>14</comment_count>
      <attachid>41486</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-20 12:00:49 -0700</bug_when>
    <thetext>Comment on attachment 41486
Revised patch 2

Clearing flags on attachment: 41486

Committed r49876: &lt;http://trac.webkit.org/changeset/49876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156237</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-20 12:00:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156296</commentid>
    <comment_count>16</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-20 14:11:07 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156351</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-20 17:20:38 -0700</bug_when>
    <thetext>After this change the SnowLeopard debug bot is hitting numerous assertion failures with stack traces like so:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.WebCore                   0x000000010163333c WebCore::createSearcher() + 216 (TextIterator.cpp:1534)
1   com.apple.WebCore                   0x000000010163336f WebCore::searcher() + 23 (TextIterator.cpp:1541)
2   com.apple.WebCore                   0x000000010163a27f WebCore::SearchBuffer::SearchBuffer(WebCore::String const&amp;, bool) + 247 (TextIterator.cpp:1581)
3   com.apple.WebCore                   0x0000000101636736 WebCore::findPlainText(WebCore::CharacterIterator&amp;, WebCore::String const&amp;, bool, bool, unsigned long&amp;) + 81 (TextIterator.cpp:1983)
4   com.apple.WebCore                   0x0000000101637bff WebCore::findPlainText(WebCore::Range const*, WebCore::String const&amp;, bool, bool) + 116 (TextIterator.cpp:2015)


I’m going to verify that I can reproduce this locally and may end up rolling this change out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156362</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-20 17:34:33 -0700</bug_when>
    <thetext>When doing ‘run-webkit-tests editing’ I hit this assertion failure on seven tests.

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000000bbadbeef
0x00000001016360ac in WebCore::createSearcher () at WebCore/editing/TextIterator.cpp:1534
1534	    ASSERT(status == U_ZERO_ERROR);
(gdb) print status
$1 = U_USING_DEFAULT_WARNING
Current language:  auto; currently c++
(gdb) 

I’m going to roll this out for now since we can’t leave debug builds in a broken state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156365</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-20 17:43:20 -0700</bug_when>
    <thetext>Rolled out in r49876.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156369</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-10-20 17:53:42 -0700</bug_when>
    <thetext>Maybe the solution is to modify the assertion to be the same as the one a few lines up rather than requiring U_ZERO_ERROR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156386</commentid>
    <comment_count>21</comment_count>
      <attachid>41543</attachid>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-20 19:08:45 -0700</bug_when>
    <thetext>Created attachment 41543
Revised patch 3

I&apos;m sorry it caused an assertion failure.
Here is a revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156421</commentid>
    <comment_count>22</comment_count>
      <attachid>41543</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 00:03:02 -0700</bug_when>
    <thetext>Comment on attachment 41543
Revised patch 3

&gt; +    UCollator* collator = ucol_openRules(japaneseKanaCollationRules, -1, UCOL_DEFAULT, UCOL_DEFAULT_STRENGTH, 0, &amp;status);
&gt; +    ASSERT(status == U_ZERO_ERROR || status == U_USING_FALLBACK_WARNING || status == U_USING_DEFAULT_WARNING);

Are all three of these expected here for some reason, or are you just ignoring the same set I ignored for usearch_open?

&gt; +    usearch_setCollator(searcher, collator(), &amp;status);
&gt; +    ASSERT(status == U_ZERO_ERROR || status == U_USING_FALLBACK_WARNING || status == U_USING_DEFAULT_WARNING);

Same question.

r=me, but I would like to hear the answer to that question at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156422</commentid>
    <comment_count>23</comment_count>
      <attachid>41543</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-21 00:11:16 -0700</bug_when>
    <thetext>Comment on attachment 41543
Revised patch 3

Clearing flags on attachment: 41543

Committed r49899: &lt;http://trac.webkit.org/changeset/49899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156423</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-21 00:11:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156431</commentid>
    <comment_count>25</comment_count>
    <who name="Satoshi Nakagawa">artension</who>
    <bug_when>2009-10-21 00:49:03 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 41543 [details])
&gt; &gt; +    UCollator* collator = ucol_openRules(japaneseKanaCollationRules, -1, UCOL_DEFAULT, UCOL_DEFAULT_STRENGTH, 0, &amp;status);
&gt; &gt; +    ASSERT(status == U_ZERO_ERROR || status == U_USING_FALLBACK_WARNING || status == U_USING_DEFAULT_WARNING);
&gt; 
&gt; Are all three of these expected here for some reason, or are you just ignoring
&gt; the same set I ignored for usearch_open?

It&apos;s just for ignoring the same set as for usearch_open.
I read ICU documents, and I thought it&apos;s better to ignore them.

http://icu-project.org/apiref/icu4c/ucol_8h.html#a128ea0ed3869415c1c96a9a2c997c2d
http://icu-project.org/apiref/icu4c/utypes_8h.html#3343c1c8a8377277046774691c98d78c

Probably,  using U_SUCCESS() would be better for assertion.

&gt; &gt; +    usearch_setCollator(searcher, collator(), &amp;status);
&gt; &gt; +    ASSERT(status == U_ZERO_ERROR || status == U_USING_FALLBACK_WARNING || status == U_USING_DEFAULT_WARNING);
&gt; 
&gt; Same question.
&gt; 
&gt; r=me, but I would like to hear the answer to that question at some point.

The same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156494</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 08:21:09 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Probably,  using U_SUCCESS() would be better for assertion.

I prefer having the more specific assertion, because we want to know if we&apos;re getting new, unexpected error codes there. Sorry it caused a problem in this case. I think this is good now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156659</commentid>
    <comment_count>27</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-10-21 15:22:02 -0700</bug_when>
    <thetext>Sorry I&apos;m late here, but this patch breaks non-Japanese search (e.g. Swedish). Before the change, the search collator was locale-dependent. That is, if you use Japanese Safari, you&apos;d get the collator tailored for Japanese (which I think does the right thing for Japanese). The same is true of other languages.

The intent of the patch is to make Japanese search work *regardless of the current locale (UI language)*, which I support. However, it should be done without breaking search in Swedish, German, Finnish or any other language.

The patch here breaks that because it throws away the locale-dependent collator right after creating one and replace it with the UCA + Japanese tailoring. 

The way to do that is to get the collation rule string for the current locale and combine it with the Japanese tailoring (added in the patch) and build a new collator from the combined rule strings. (I just went over the patch with one of ICU&apos;s leading contributors). 

I&apos;ll make a patch to do the above in a couple of days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156663</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 15:30:59 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Sorry I&apos;m late here, but this patch breaks non-Japanese search (e.g. Swedish).

I can&apos;t believe I missed that. We may need to roll the patch out until we have a method that doesn&apos;t break all the other languages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156664</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 15:34:09 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; The way to do that is to get the collation rule string for the current locale
&gt; and combine it with the Japanese tailoring (added in the patch) and build a new
&gt; collator from the combined rule strings. (I just went over the patch with one
&gt; of ICU&apos;s leading contributors).

For what it&apos;s worth, I tried to do exactly that when I added the code to fold quote marks. But as I mention in a comment, I was unable to do this, even with the help of some ICU experts here at Apple. Here&apos;s hoping you are able to do what I was not!

See &lt;http://trac.webkit.org/changeset/45858&gt; for the comment and code.

If you are able to add custom tailoring, then perhaps we can do the quote marks that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156668</commentid>
    <comment_count>30</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-10-21 15:40:11 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Sorry I&apos;m late here, but this patch breaks non-Japanese search (e.g. Swedish).
&gt; 
&gt; I can&apos;t believe I missed that. We may need to roll the patch out until we have
&gt; a method that doesn&apos;t break all the other languages.

It&apos;d be great if you can roll it out. Then, I don&apos;t have to rush to make a new ICU data file for Chrome with invuca table (which I excluded to save some space) :-).  Chrome is crashing due to assertions because it doesn&apos;t have invuca table. 

Without noticing you adding the last two comments, I filed a new bug 30646 to fix the regression. If you think it&apos;s better to roll out the patch, perhaps it&apos;s better to deal with a better solution for the original issue here instead of bug 30646. 

Either way is fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156669</commentid>
    <comment_count>31</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 15:42:48 -0700</bug_when>
    <thetext>What is the invuca table, and why does Chrome need it, but not other WebKit-based browsers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156677</commentid>
    <comment_count>32</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-10-21 15:56:06 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; What is the invuca table, and why does Chrome need it, but not other
&gt; WebKit-based browsers?

I was not clear. invuca is necessary by all other ICU-dependent webkit port IF collator is built at run-time (as is done with the patch for this bug). Chrome excluded it from its ICU data file because neither Webkit nor Chrome&apos;s other components build a collator with custom rules at run-time. With the patch here (or a new patch addressing the regression), that&apos;s not the case any more. 

Among other ICU-dependent Webkit ports, Safari on OS X is not affected because it gets the *full* ICU data from the OS. Safari on Win could have cut down the download size a little bit by excluding invuca, but apparently it didn&apos;t. So, it&apos;s not affected, either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156689</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 16:11:04 -0700</bug_when>
    <thetext>Rolled the change out in r49926. Reopening the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157856</commentid>
    <comment_count>34</comment_count>
      <attachid>41396</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-26 12:06:32 -0700</bug_when>
    <thetext>Comment on attachment 41396
Revised patch

Clearing darin&apos;s r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159517</commentid>
    <comment_count>35</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-10-30 16:43:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/7214058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159518</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-30 16:46:36 -0700</bug_when>
    <thetext>If we can&apos;t fix this with tailoring, maybe there&apos;s some other simple way to fix it. I’d really like to resolve this somehow!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177868</commentid>
    <comment_count>37</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 16:52:34 -0800</bug_when>
    <thetext>Does anyone have any ideas about how to solve this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177872</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 16:59:19 -0800</bug_when>
    <thetext>I am going to tackle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178469</commentid>
    <comment_count>39</comment_count>
      <attachid>46103</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-07 17:56:09 -0800</bug_when>
    <thetext>Created attachment 46103
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179206</commentid>
    <comment_count>40</comment_count>
      <attachid>46249</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-10 17:39:32 -0800</bug_when>
    <thetext>Created attachment 46249
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179294</commentid>
    <comment_count>41</comment_count>
      <attachid>46249</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-10 23:02:25 -0800</bug_when>
    <thetext>Comment on attachment 46249
patch

&gt; +static void normalizeCharacters(const UChar* characters, unsigned length, Vector&lt;UChar&gt;&amp; buffer)
&gt; +{
&gt; +    ASSERT(length);
&gt; +
&gt; +    UErrorCode status = U_ZERO_ERROR;
&gt; +    size_t bufferSize = unorm_normalize(characters, length, UNORM_NFC, 0, 0, 0, &amp;status);
&gt; +    ASSERT(status == U_BUFFER_OVERFLOW_ERROR);
&gt; +    ASSERT(bufferSize);

Would it make sense to try with an output buffer of size length,, to avoid having two passes in most cases?

&gt; Index: LayoutTests/fast/text/find-kana.html

I need to add a similar test for Russian!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179362</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 07:54:56 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; Would it make sense to try with an output buffer of size length, to avoid
&gt; having two passes in most cases?

Yes.

&gt; I need to add a similar test for Russian!

Please do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179373</commentid>
    <comment_count>43</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 08:31:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179423</commentid>
    <comment_count>44</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 10:41:43 -0800</bug_when>
    <thetext>*** Bug 27587 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179468</commentid>
    <comment_count>45</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-11 12:07:44 -0800</bug_when>
    <thetext>Looks like this test breaks on Leopard and Tiger:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r53078%20(9114)/fast/text/find-kana-diffs.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179479</commentid>
    <comment_count>46</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-11 12:23:24 -0800</bug_when>
    <thetext>And Qt:
http://build.webkit.org/results/Qt%20Linux%20Release/r53092%20(5839)/fast/text/find-kana-diffs.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179498</commentid>
    <comment_count>47</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 13:02:47 -0800</bug_when>
    <thetext>Tiger and Leopard are failing because they are using an old ICU.

Qt is failing because it&apos;s using the non-ICU search code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179500</commentid>
    <comment_count>48</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 13:03:13 -0800</bug_when>
    <thetext>In both cases the best solution is checking in expected failure results.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41282</attachid>
            <date>2009-10-16 04:39:05 -0700</date>
            <delta_ts>2009-10-18 22:02:21 -0700</delta_ts>
            <desc>A patch to fix this problem</desc>
            <filename>japanese_text_search.patch</filename>
            <type>text/plain</type>
            <size>4720</size>
            <attacher name="Satoshi Nakagawa">artension</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQzLDkgKzE0
NDMsOTAgQEAKICAgICByZXR1cm4gc2VhcmNoZXI7CiB9CiAKKy8vIFRhaWxvcmVkIGNvbGxhdGlv
biBydWxlcyBmb3IgSmFwYW5lc2UgdGV4dCBzZWFyY2guCisvLyBUaGUgZGVmYXVsdCBVbmljb2Rl
IENvbGxhdGlvbiBBbGdvcml0aG0gaXMgdW5uYXR1cmFsIGluIEphcGFuZXNlLgorLy8gVGhlc2Ug
cnVsZXMgaW50ZW5kIHRvIHRyZWF0IHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyBhcyBkaWZmZXJl
bnQgY2hhcmFjdGVycy4KKy8vCisvLyAtIFNtYWxsIGthbmEgbGV0dGVycyBhbmQgbm9ybWFsIGth
bmEgbGV0dGVycworLy8gLSBWb2ljZWxlc3MgbGV0dGVycywgdm9pY2VkIGxldHRlcnMgYW5kIHNl
bWktdm9pY2VkIGxldHRlcnMKKy8vCitzdGF0aWMgY29uc3QgVUNoYXIgSkFQQU5FU0VfS0FOQV9D
T0xMQVRJT05fUlVMRVNbXSA9IHsKKyAgICAnJicsIDB4MzA0MSwgJz0nLCAweDMwYTEsICc9Jywg
MHhmZjY3LCAnPCcsIDB4MzA0MiwgCisgICAgJz0nLCAweDMwYTIsICc9JywgMHhmZjcxLCAnPCcs
IDB4MzA0MywgJz0nLCAweDMwYTMsIAorICAgICc9JywgMHhmZjY4LCAnPCcsIDB4MzA0NCwgJz0n
LCAweDMwYTQsICc9JywgMHhmZjcyLCAKKyAgICAnPCcsIDB4MzA0NSwgJz0nLCAweDMwYTUsICc9
JywgMHhmZjY5LCAnPCcsIDB4MzA0NiwgCisgICAgJz0nLCAweDMwYTYsICc9JywgMHhmZjczLCAn
PCcsIDB4MzA5NCwgJz0nLCAweDMwZjQsIAorICAgICc8JywgMHgzMDQ3LCAnPScsIDB4MzBhNywg
Jz0nLCAweGZmNmEsICc8JywgMHgzMDQ4LCAKKyAgICAnPScsIDB4MzBhOCwgJz0nLCAweGZmNzQs
ICc8JywgMHgzMDQ5LCAnPScsIDB4MzBhOSwgCisgICAgJz0nLCAweGZmNmIsICc8JywgMHgzMDRh
LCAnPScsIDB4MzBhYSwgJz0nLCAweGZmNzUsIAorICAgICc8JywgMHgzMDk1LCAnPScsIDB4MzBm
NSwgJzwnLCAweDMwNGIsICc9JywgMHgzMGFiLCAKKyAgICAnPScsIDB4ZmY3NiwgJzwnLCAweDMw
NGMsICc9JywgMHgzMGFjLCAnPCcsIDB4MzA0ZCwgCisgICAgJz0nLCAweDMwYWQsICc9JywgMHhm
Zjc3LCAnPCcsIDB4MzA0ZSwgJz0nLCAweDMwYWUsIAorICAgICc8JywgMHgzMDRmLCAnPScsIDB4
MzBhZiwgJz0nLCAweGZmNzgsICc8JywgMHgzMDUwLCAKKyAgICAnPScsIDB4MzBiMCwgJzwnLCAw
eDMwOTYsICc9JywgMHgzMGY2LCAnPCcsIDB4MzA1MSwgCisgICAgJz0nLCAweDMwYjEsICc9Jywg
MHhmZjc5LCAnPCcsIDB4MzA1MiwgJz0nLCAweDMwYjIsIAorICAgICc8JywgMHgzMDUzLCAnPScs
IDB4MzBiMywgJz0nLCAweGZmN2EsICc8JywgMHgzMDU0LCAKKyAgICAnPScsIDB4MzBiNCwgJzwn
LCAweDMwNTUsICc9JywgMHgzMGI1LCAnPScsIDB4ZmY3YiwgCisgICAgJzwnLCAweDMwNTYsICc9
JywgMHgzMGI2LCAnPCcsIDB4MzA1NywgJz0nLCAweDMwYjcsIAorICAgICc9JywgMHhmZjdjLCAn
PCcsIDB4MzA1OCwgJz0nLCAweDMwYjgsICc8JywgMHgzMDU5LCAKKyAgICAnPScsIDB4MzBiOSwg
Jz0nLCAweGZmN2QsICc8JywgMHgzMDVhLCAnPScsIDB4MzBiYSwgCisgICAgJzwnLCAweDMwNWIs
ICc9JywgMHgzMGJiLCAnPScsIDB4ZmY3ZSwgJzwnLCAweDMwNWMsIAorICAgICc9JywgMHgzMGJj
LCAnPCcsIDB4MzA1ZCwgJz0nLCAweDMwYmQsICc9JywgMHhmZjdmLCAKKyAgICAnPCcsIDB4MzA1
ZSwgJz0nLCAweDMwYmUsICc8JywgMHgzMDVmLCAnPScsIDB4MzBiZiwgCisgICAgJz0nLCAweGZm
ODAsICc8JywgMHgzMDYwLCAnPScsIDB4MzBjMCwgJzwnLCAweDMwNjEsIAorICAgICc9JywgMHgz
MGMxLCAnPScsIDB4ZmY4MSwgJzwnLCAweDMwNjIsICc9JywgMHgzMGMyLCAKKyAgICAnPCcsIDB4
MzA2MywgJz0nLCAweDMwYzMsICc9JywgMHhmZjZmLCAnPCcsIDB4MzA2NCwgCisgICAgJz0nLCAw
eDMwYzQsICc9JywgMHhmZjgyLCAnPCcsIDB4MzA2NSwgJz0nLCAweDMwYzUsIAorICAgICc8Jywg
MHgzMDY2LCAnPScsIDB4MzBjNiwgJz0nLCAweGZmODMsICc8JywgMHgzMDY3LCAKKyAgICAnPScs
IDB4MzBjNywgJzwnLCAweDMwNjgsICc9JywgMHgzMGM4LCAnPScsIDB4ZmY4NCwgCisgICAgJzwn
LCAweDMwNjksICc9JywgMHgzMGM5LCAnPCcsIDB4MzA2YSwgJz0nLCAweDMwY2EsIAorICAgICc9
JywgMHhmZjg1LCAnPCcsIDB4MzA2YiwgJz0nLCAweDMwY2IsICc9JywgMHhmZjg2LCAKKyAgICAn
PCcsIDB4MzA2YywgJz0nLCAweDMwY2MsICc9JywgMHhmZjg3LCAnPCcsIDB4MzA2ZCwgCisgICAg
Jz0nLCAweDMwY2QsICc9JywgMHhmZjg4LCAnPCcsIDB4MzA2ZSwgJz0nLCAweDMwY2UsIAorICAg
ICc9JywgMHhmZjg5LCAnPCcsIDB4MzA2ZiwgJz0nLCAweDMwY2YsICc9JywgMHhmZjhhLCAKKyAg
ICAnPCcsIDB4MzA3MCwgJz0nLCAweDMwZDAsICc8JywgMHgzMDcxLCAnPScsIDB4MzBkMSwgCisg
ICAgJzwnLCAweDMwNzIsICc9JywgMHgzMGQyLCAnPScsIDB4ZmY4YiwgJzwnLCAweDMwNzMsIAor
ICAgICc9JywgMHgzMGQzLCAnPCcsIDB4MzA3NCwgJz0nLCAweDMwZDQsICc8JywgMHgzMDc1LCAK
KyAgICAnPScsIDB4MzBkNSwgJz0nLCAweGZmOGMsICc8JywgMHgzMDc2LCAnPScsIDB4MzBkNiwg
CisgICAgJzwnLCAweDMwNzcsICc9JywgMHgzMGQ3LCAnPCcsIDB4MzA3OCwgJz0nLCAweDMwZDgs
IAorICAgICc9JywgMHhmZjhkLCAnPCcsIDB4MzA3OSwgJz0nLCAweDMwZDksICc8JywgMHgzMDdh
LCAKKyAgICAnPScsIDB4MzBkYSwgJzwnLCAweDMwN2IsICc9JywgMHgzMGRiLCAnPScsIDB4ZmY4
ZSwgCisgICAgJzwnLCAweDMwN2MsICc9JywgMHgzMGRjLCAnPCcsIDB4MzA3ZCwgJz0nLCAweDMw
ZGQsIAorICAgICc8JywgMHgzMDdlLCAnPScsIDB4MzBkZSwgJz0nLCAweGZmOGYsICc8JywgMHgz
MDdmLCAKKyAgICAnPScsIDB4MzBkZiwgJz0nLCAweGZmOTAsICc8JywgMHgzMDgwLCAnPScsIDB4
MzBlMCwgCisgICAgJz0nLCAweGZmOTEsICc8JywgMHgzMDgxLCAnPScsIDB4MzBlMSwgJz0nLCAw
eGZmOTIsIAorICAgICc8JywgMHgzMDgyLCAnPScsIDB4MzBlMiwgJz0nLCAweGZmOTMsICc8Jywg
MHgzMDgzLCAKKyAgICAnPScsIDB4MzBlMywgJz0nLCAweGZmNmMsICc8JywgMHgzMDg0LCAnPScs
IDB4MzBlNCwgCisgICAgJz0nLCAweGZmOTQsICc8JywgMHgzMDg1LCAnPScsIDB4MzBlNSwgJz0n
LCAweGZmNmQsIAorICAgICc8JywgMHgzMDg2LCAnPScsIDB4MzBlNiwgJz0nLCAweGZmOTUsICc8
JywgMHgzMDg3LCAKKyAgICAnPScsIDB4MzBlNywgJz0nLCAweGZmNmUsICc8JywgMHgzMDg4LCAn
PScsIDB4MzBlOCwgCisgICAgJz0nLCAweGZmOTYsICc8JywgMHgzMDg5LCAnPScsIDB4MzBlOSwg
Jz0nLCAweGZmOTcsIAorICAgICc8JywgMHgzMDhhLCAnPScsIDB4MzBlYSwgJz0nLCAweGZmOTgs
ICc8JywgMHgzMDhiLCAKKyAgICAnPScsIDB4MzBlYiwgJz0nLCAweGZmOTksICc8JywgMHgzMDhj
LCAnPScsIDB4MzBlYywgCisgICAgJz0nLCAweGZmOWEsICc8JywgMHgzMDhkLCAnPScsIDB4MzBl
ZCwgJz0nLCAweGZmOWIsIAorICAgICc8JywgMHgzMDhlLCAnPScsIDB4MzBlZSwgJzwnLCAweDMw
OGYsICc9JywgMHgzMGVmLCAKKyAgICAnPScsIDB4ZmY5YywgJzwnLCAweDMwZjcsICc8JywgMHgz
MDkwLCAnPScsIDB4MzBmMCwgCisgICAgJzwnLCAweDMwZjgsICc8JywgMHgzMDkxLCAnPScsIDB4
MzBmMSwgJzwnLCAweDMwOTIsIAorICAgICc9JywgMHgzMGYyLCAnPScsIDB4ZmY2NiwgJzwnLCAw
eDMwOTMsICc9JywgMHgzMGYzLCAKKyAgICAnPScsIDB4ZmY5ZCwgMAorfTsKKwogc3RhdGljIFVT
dHJpbmdTZWFyY2gqIHNlYXJjaGVyKCkKIHsKICAgICBzdGF0aWMgVVN0cmluZ1NlYXJjaCogc2Vh
cmNoZXIgPSBjcmVhdGVTZWFyY2hlcigpOworICAgIHN0YXRpYyBVQ29sbGF0b3IqIGNvbGxhdG9y
ID0gMDsKKyAgICBpZiAoIWNvbGxhdG9yKSB7CisgICAgICAgIC8vIFNldCB0YWlsb3JlZCBjb2xs
YXRpb24gcnVsZXMgdG8gZml4IEphcGFuZXNlIHRleHQgc2VhcmNoLgorICAgICAgICAvLyBTZWUg
dGhlIGNvbW1lbnRzIGJlZm9yZSBKQVBBTkVTRV9LQU5BX0NPTExBVElPTl9SVUxFUyBmb3IgZGV0
YWlscy4KKyAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IGNvbGxhdG9yID0gdWNvbF9vcGVuUnVsZXMoSkFQQU5FU0VfS0FOQV9DT0xMQVRJT05fUlVMRVMs
IC0xLCBVQ09MX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNP
TF9ERUZBVUxUX1NUUkVOR1RILCAwLCAmc3RhdHVzKTsKKyAgICAgICAgQVNTRVJUKHN0YXR1cyA9
PSBVX1pFUk9fRVJST1IpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IHVzZWFyY2hfc2V0Q29sbGF0b3Ioc2VhcmNoZXIsIGNvbGxhdG9yLCAmc3RhdHVzKTsKKyAgICAg
ICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IpOworICAgICAgICB1c2VhcmNoX3Jlc2V0
KHNlYXJjaGVyKTsKKyAgICB9CiAgICAgcmV0dXJuIHNlYXJjaGVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41396</attachid>
            <date>2009-10-18 22:02:21 -0700</date>
            <delta_ts>2009-10-26 12:06:32 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>japanese-text-search.patch</filename>
            <type>text/plain</type>
            <size>11955</size>
            <attacher name="Satoshi Nakagawa">artension</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTc2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTAtMTggIFNhdG9zaGkgTmFrYWdhd2EgIDxwc3ljaHNAbGlt
ZWNoYXQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVkIEphcGFuZXNlIHRleHQgc2VhcmNoIHByb2JsZW1zLgorICAgICAgICBUcmVhdCBz
bWFsbCBrYW5hIGxldHRlcnMgYW5kIGthbmEgbGV0dGVycyBhcyBkaWZmZXJlbnQgY2hhcmFjdGVy
cyBpbiBzZWFyY2guCisgICAgICAgIERvIG5vdCBpZ25vcmUgZGlhY3JpdGljIG1hcmtzIGluIHNl
YXJjaCBmb3IgSmFwYW5lc2UgdGV4dHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMwNDM3CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTZWFyY2hlcik6CisKIDIwMDktMTAtMTggIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQ1VSTCBidWlsZCBmaXgsIHVzZSBwcm9wZXIg
aGVhZGVyIG5hbWUuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gNDk3
NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQzMiw2ICsxNDMyLDc0IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWluaW11bVNlYXJjaEJ1
ZmZlclMKIHN0YXRpYyBib29sIHNlYXJjaGVySW5Vc2U7CiAjZW5kaWYKIAorLy8gVGFpbG9yZWQg
Y29sbGF0aW9uIHJ1bGVzIGZvciBKYXBhbmVzZSB0ZXh0IHNlYXJjaC4KKy8vIFRoZSBkZWZhdWx0
IFVuaWNvZGUgQ29sbGF0aW9uIEFsZ29yaXRobSBpcyB1bm5hdHVyYWwgaW4gSmFwYW5lc2UuCisv
LyBUaGVzZSBydWxlcyBpbnRlbmQgdG8gdHJlYXQgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGFz
IGRpZmZlcmVudCBjaGFyYWN0ZXJzLgorLy8KKy8vIC0gU21hbGwga2FuYSBsZXR0ZXJzIGFuZCBu
b3JtYWwga2FuYSBsZXR0ZXJzCisvLyAtIFZvaWNlbGVzcyBsZXR0ZXJzLCB2b2ljZWQgbGV0dGVy
cyBhbmQgc2VtaS12b2ljZWQgbGV0dGVycworLy8KK3N0YXRpYyBjb25zdCBVQ2hhciBKQVBBTkVT
RV9LQU5BX0NPTExBVElPTl9SVUxFU1tdID0geworICAgICcmJywgMHgzMDQxLCAnPScsIDB4MzBh
MSwgJz0nLCAweGZmNjcsICc8JywgMHgzMDQyLCAKKyAgICAnPScsIDB4MzBhMiwgJz0nLCAweGZm
NzEsICc8JywgMHgzMDQzLCAnPScsIDB4MzBhMywgCisgICAgJz0nLCAweGZmNjgsICc8JywgMHgz
MDQ0LCAnPScsIDB4MzBhNCwgJz0nLCAweGZmNzIsIAorICAgICc8JywgMHgzMDQ1LCAnPScsIDB4
MzBhNSwgJz0nLCAweGZmNjksICc8JywgMHgzMDQ2LCAKKyAgICAnPScsIDB4MzBhNiwgJz0nLCAw
eGZmNzMsICc8JywgMHgzMDk0LCAnPScsIDB4MzBmNCwgCisgICAgJzwnLCAweDMwNDcsICc9Jywg
MHgzMGE3LCAnPScsIDB4ZmY2YSwgJzwnLCAweDMwNDgsIAorICAgICc9JywgMHgzMGE4LCAnPScs
IDB4ZmY3NCwgJzwnLCAweDMwNDksICc9JywgMHgzMGE5LCAKKyAgICAnPScsIDB4ZmY2YiwgJzwn
LCAweDMwNGEsICc9JywgMHgzMGFhLCAnPScsIDB4ZmY3NSwgCisgICAgJzwnLCAweDMwOTUsICc9
JywgMHgzMGY1LCAnPCcsIDB4MzA0YiwgJz0nLCAweDMwYWIsIAorICAgICc9JywgMHhmZjc2LCAn
PCcsIDB4MzA0YywgJz0nLCAweDMwYWMsICc8JywgMHgzMDRkLCAKKyAgICAnPScsIDB4MzBhZCwg
Jz0nLCAweGZmNzcsICc8JywgMHgzMDRlLCAnPScsIDB4MzBhZSwgCisgICAgJzwnLCAweDMwNGYs
ICc9JywgMHgzMGFmLCAnPScsIDB4ZmY3OCwgJzwnLCAweDMwNTAsIAorICAgICc9JywgMHgzMGIw
LCAnPCcsIDB4MzA5NiwgJz0nLCAweDMwZjYsICc8JywgMHgzMDUxLCAKKyAgICAnPScsIDB4MzBi
MSwgJz0nLCAweGZmNzksICc8JywgMHgzMDUyLCAnPScsIDB4MzBiMiwgCisgICAgJzwnLCAweDMw
NTMsICc9JywgMHgzMGIzLCAnPScsIDB4ZmY3YSwgJzwnLCAweDMwNTQsIAorICAgICc9JywgMHgz
MGI0LCAnPCcsIDB4MzA1NSwgJz0nLCAweDMwYjUsICc9JywgMHhmZjdiLCAKKyAgICAnPCcsIDB4
MzA1NiwgJz0nLCAweDMwYjYsICc8JywgMHgzMDU3LCAnPScsIDB4MzBiNywgCisgICAgJz0nLCAw
eGZmN2MsICc8JywgMHgzMDU4LCAnPScsIDB4MzBiOCwgJzwnLCAweDMwNTksIAorICAgICc9Jywg
MHgzMGI5LCAnPScsIDB4ZmY3ZCwgJzwnLCAweDMwNWEsICc9JywgMHgzMGJhLCAKKyAgICAnPCcs
IDB4MzA1YiwgJz0nLCAweDMwYmIsICc9JywgMHhmZjdlLCAnPCcsIDB4MzA1YywgCisgICAgJz0n
LCAweDMwYmMsICc8JywgMHgzMDVkLCAnPScsIDB4MzBiZCwgJz0nLCAweGZmN2YsIAorICAgICc8
JywgMHgzMDVlLCAnPScsIDB4MzBiZSwgJzwnLCAweDMwNWYsICc9JywgMHgzMGJmLCAKKyAgICAn
PScsIDB4ZmY4MCwgJzwnLCAweDMwNjAsICc9JywgMHgzMGMwLCAnPCcsIDB4MzA2MSwgCisgICAg
Jz0nLCAweDMwYzEsICc9JywgMHhmZjgxLCAnPCcsIDB4MzA2MiwgJz0nLCAweDMwYzIsIAorICAg
ICc8JywgMHgzMDYzLCAnPScsIDB4MzBjMywgJz0nLCAweGZmNmYsICc8JywgMHgzMDY0LCAKKyAg
ICAnPScsIDB4MzBjNCwgJz0nLCAweGZmODIsICc8JywgMHgzMDY1LCAnPScsIDB4MzBjNSwgCisg
ICAgJzwnLCAweDMwNjYsICc9JywgMHgzMGM2LCAnPScsIDB4ZmY4MywgJzwnLCAweDMwNjcsIAor
ICAgICc9JywgMHgzMGM3LCAnPCcsIDB4MzA2OCwgJz0nLCAweDMwYzgsICc9JywgMHhmZjg0LCAK
KyAgICAnPCcsIDB4MzA2OSwgJz0nLCAweDMwYzksICc8JywgMHgzMDZhLCAnPScsIDB4MzBjYSwg
CisgICAgJz0nLCAweGZmODUsICc8JywgMHgzMDZiLCAnPScsIDB4MzBjYiwgJz0nLCAweGZmODYs
IAorICAgICc8JywgMHgzMDZjLCAnPScsIDB4MzBjYywgJz0nLCAweGZmODcsICc8JywgMHgzMDZk
LCAKKyAgICAnPScsIDB4MzBjZCwgJz0nLCAweGZmODgsICc8JywgMHgzMDZlLCAnPScsIDB4MzBj
ZSwgCisgICAgJz0nLCAweGZmODksICc8JywgMHgzMDZmLCAnPScsIDB4MzBjZiwgJz0nLCAweGZm
OGEsIAorICAgICc8JywgMHgzMDcwLCAnPScsIDB4MzBkMCwgJzwnLCAweDMwNzEsICc9JywgMHgz
MGQxLCAKKyAgICAnPCcsIDB4MzA3MiwgJz0nLCAweDMwZDIsICc9JywgMHhmZjhiLCAnPCcsIDB4
MzA3MywgCisgICAgJz0nLCAweDMwZDMsICc8JywgMHgzMDc0LCAnPScsIDB4MzBkNCwgJzwnLCAw
eDMwNzUsIAorICAgICc9JywgMHgzMGQ1LCAnPScsIDB4ZmY4YywgJzwnLCAweDMwNzYsICc9Jywg
MHgzMGQ2LCAKKyAgICAnPCcsIDB4MzA3NywgJz0nLCAweDMwZDcsICc8JywgMHgzMDc4LCAnPScs
IDB4MzBkOCwgCisgICAgJz0nLCAweGZmOGQsICc8JywgMHgzMDc5LCAnPScsIDB4MzBkOSwgJzwn
LCAweDMwN2EsIAorICAgICc9JywgMHgzMGRhLCAnPCcsIDB4MzA3YiwgJz0nLCAweDMwZGIsICc9
JywgMHhmZjhlLCAKKyAgICAnPCcsIDB4MzA3YywgJz0nLCAweDMwZGMsICc8JywgMHgzMDdkLCAn
PScsIDB4MzBkZCwgCisgICAgJzwnLCAweDMwN2UsICc9JywgMHgzMGRlLCAnPScsIDB4ZmY4Ziwg
JzwnLCAweDMwN2YsIAorICAgICc9JywgMHgzMGRmLCAnPScsIDB4ZmY5MCwgJzwnLCAweDMwODAs
ICc9JywgMHgzMGUwLCAKKyAgICAnPScsIDB4ZmY5MSwgJzwnLCAweDMwODEsICc9JywgMHgzMGUx
LCAnPScsIDB4ZmY5MiwgCisgICAgJzwnLCAweDMwODIsICc9JywgMHgzMGUyLCAnPScsIDB4ZmY5
MywgJzwnLCAweDMwODMsIAorICAgICc9JywgMHgzMGUzLCAnPScsIDB4ZmY2YywgJzwnLCAweDMw
ODQsICc9JywgMHgzMGU0LCAKKyAgICAnPScsIDB4ZmY5NCwgJzwnLCAweDMwODUsICc9JywgMHgz
MGU1LCAnPScsIDB4ZmY2ZCwgCisgICAgJzwnLCAweDMwODYsICc9JywgMHgzMGU2LCAnPScsIDB4
ZmY5NSwgJzwnLCAweDMwODcsIAorICAgICc9JywgMHgzMGU3LCAnPScsIDB4ZmY2ZSwgJzwnLCAw
eDMwODgsICc9JywgMHgzMGU4LCAKKyAgICAnPScsIDB4ZmY5NiwgJzwnLCAweDMwODksICc9Jywg
MHgzMGU5LCAnPScsIDB4ZmY5NywgCisgICAgJzwnLCAweDMwOGEsICc9JywgMHgzMGVhLCAnPScs
IDB4ZmY5OCwgJzwnLCAweDMwOGIsIAorICAgICc9JywgMHgzMGViLCAnPScsIDB4ZmY5OSwgJzwn
LCAweDMwOGMsICc9JywgMHgzMGVjLCAKKyAgICAnPScsIDB4ZmY5YSwgJzwnLCAweDMwOGQsICc9
JywgMHgzMGVkLCAnPScsIDB4ZmY5YiwgCisgICAgJzwnLCAweDMwOGUsICc9JywgMHgzMGVlLCAn
PCcsIDB4MzA4ZiwgJz0nLCAweDMwZWYsIAorICAgICc9JywgMHhmZjljLCAnPCcsIDB4MzBmNywg
JzwnLCAweDMwOTAsICc9JywgMHgzMGYwLCAKKyAgICAnPCcsIDB4MzBmOCwgJzwnLCAweDMwOTEs
ICc9JywgMHgzMGYxLCAnPCcsIDB4MzA5MiwgCisgICAgJz0nLCAweDMwZjIsICc9JywgMHhmZjY2
LCAnPCcsIDB4MzA5MywgJz0nLCAweDMwZjMsIAorICAgICc9JywgMHhmZjlkLCAwCit9OworICAg
IAogc3RhdGljIFVTdHJpbmdTZWFyY2gqIGNyZWF0ZVNlYXJjaGVyKCkKIHsKICAgICAvLyBQcm92
aWRlIGEgbm9uLWVtcHR5IHBhdHRlcm4gYW5kIG5vbi1lbXB0eSB0ZXh0IHNvIHVzZWFyY2hfb3Bl
biB3aWxsIG5vdCBmYWlsLApAQCAtMTQ0MCw2ICsxNTA4LDIwIEBAIHN0YXRpYyBVU3RyaW5nU2Vh
cmNoKiBjcmVhdGVTZWFyY2hlcigpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgVVN0cmluZ1NlYXJjaCogc2VhcmNoZXIgPSB1c2VhcmNoX29wZW4oJm5ld2xpbmVD
aGFyYWN0ZXIsIDEsICZuZXdsaW5lQ2hhcmFjdGVyLCAxLCBjdXJyZW50U2VhcmNoTG9jYWxlSUQo
KSwgMCwgJnN0YXR1cyk7CiAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IgfHwgc3Rh
dHVzID09IFVfVVNJTkdfRkFMTEJBQ0tfV0FSTklORyB8fCBzdGF0dXMgPT0gVV9VU0lOR19ERUZB
VUxUX1dBUk5JTkcpOworICAgIAorICAgIHN0YXRpYyBVQ29sbGF0b3IqIGNvbGxhdG9yID0gMDsK
KyAgICBpZiAoIWNvbGxhdG9yKSB7CisgICAgICAgIC8vIFNldCB0YWlsb3JlZCBjb2xsYXRpb24g
cnVsZXMgdG8gZml4IEphcGFuZXNlIHRleHQgc2VhcmNoLgorICAgICAgICAvLyBTZWUgdGhlIGNv
bW1lbnRzIGJlZm9yZSBKQVBBTkVTRV9LQU5BX0NPTExBVElPTl9SVUxFUyBmb3IgZGV0YWlscy4K
KyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBjb2xsYXRvciA9IHVjb2xf
b3BlblJ1bGVzKEpBUEFORVNFX0tBTkFfQ09MTEFUSU9OX1JVTEVTLCAtMSwgVUNPTF9ERUZBVUxU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDT0xfREVGQVVMVF9TVFJFTkdU
SCwgMCwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SKTsK
KyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1c2VhcmNoX3NldENvbGxh
dG9yKHNlYXJjaGVyLCBjb2xsYXRvciwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VSVChzdGF0dXMg
PT0gVV9aRVJPX0VSUk9SKTsKKyAgICAgICAgdXNlYXJjaF9yZXNldChzZWFyY2hlcik7CisgICAg
fQogICAgIHJldHVybiBzZWFyY2hlcjsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDk3NjQpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAwOS0xMC0xOCAgU2F0b3NoaSBOYWthZ2F3YSAgPHBzeWNoc0BsaW1lY2hhdC5uZXQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgSmFwYW5l
c2UgdGV4dCBzZWFyY2ggcHJvYmxlbXMuCisgICAgICAgIFRyZWF0IHNtYWxsIGthbmEgbGV0dGVy
cyBhbmQga2FuYSBsZXR0ZXJzIGFzIGRpZmZlcmVudCBjaGFyYWN0ZXJzIGluIHNlYXJjaC4KKyAg
ICAgICAgRG8gbm90IGlnbm9yZSBkaWFjcml0aWMgbWFya3MgaW4gc2VhcmNoIGZvciBKYXBhbmVz
ZSB0ZXh0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA0MzcKKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWth
bmEtbGV0dGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0x
OCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0
dGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitTVUNDRVNTOiBGb3VuZCBoaXJhZ2FuYSBhbmQga2F0YWthbmEg
Y29ycmVjdGx5LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFw
YW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxl
dHRlcnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKzxodG1sPgorPGhlYWQ+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPjwvaGVhZD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9u
IGNhbkZpbmQodGFyZ2V0LCBzcGVjaW1lbikKKyAgICAgICAgeworICAgICAgICAgICAgZ2V0U2Vs
ZWN0aW9uKCkuZW1wdHkoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0g
c3BlY2ltZW47CisgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRmluZFN0cmluZyIs
IGZhbHNlLCB0YXJnZXQpOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGdldFNlbGVjdGlvbigp
LnJhbmdlQ291bnQgIT0gMDsKKyAgICAgICAgICAgIGdldFNlbGVjdGlvbigpLmVtcHR5KCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICAgICAgdmFyIHNtYWxsSGlyYWdhbmFBID0gU3RyaW5nLmZyb21DaGFy
Q29kZSgweDMwNDEpOworICAgICAgICAgICAgdmFyIGhpcmFnYW5hQSA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHgzMDQyKTsKKyAgICAgICAgICAgIHZhciBzbWFsbEthdGFrYW5hQSA9IFN0cmluZy5m
cm9tQ2hhckNvZGUoMHgzMGExKTsKKyAgICAgICAgICAgIHZhciBrYXRha2FuYUEgPSBTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MzBhMik7CisgICAgICAgICAgICB2YXIgaGFsZndpZHRoU21hbGxLYXRh
a2FuYUEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY2Nyk7CisgICAgICAgICAgICB2YXIgaGFs
ZndpZHRoS2F0YWthbmFBID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzEpOworICAgICAgICAg
ICAgdmFyIGhpcmFnYW5hS2EgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0Yik7CisgICAgICAg
ICAgICB2YXIgaGlyYWdhbmFHYSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDRjKTsKKworICAg
ICAgICAgICAgdmFyIHN1Y2Nlc3MgPSB0cnVlOworCisgICAgICAgICAgICB2YXIgbWVzc2FnZSA9
ICJGQUlMVVJFOiI7CisKKyAgICAgICAgICAgIGlmICghY2FuRmluZChzbWFsbEhpcmFnYW5hQSwg
c21hbGxIaXJhZ2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBzbWFsbCBoaXJhZ2FuYSBBIHdo
ZW4gc2VhcmNoaW5nIGZvciBzbWFsbCBoaXJhZ2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghY2FuRmluZChoaXJhZ2FuYUEsIGhpcmFnYW5hQSkpIHsKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENh
bm5vdCBmaW5kIGhpcmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5hIEEuIjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjYW5GaW5kKHNtYWxsS2F0YWthbmFBLCBz
bWFsbEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5vdCBmaW5kIHNtYWxsIGthdGFrYW5hIEEgd2hl
biBzZWFyY2hpbmcgZm9yIHNtYWxsIGthdGFrYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFjYW5GaW5kKGthdGFrYW5hQSwga2F0YWthbmFBKSkgeworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fu
bm90IGZpbmQga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Iga2F0YWthbmEgQS4iOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQoaGFsZndpZHRoU21hbGxLYXRh
a2FuYUEsIGhhbGZ3aWR0aFNtYWxsS2F0YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgaGFs
ZndpZHRoIHNtYWxsIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3aWR0aCBzbWFs
bCBrYXRha2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY2FuRmlu
ZChoYWxmd2lkdGhLYXRha2FuYUEsIGhhbGZ3aWR0aEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5v
dCBmaW5kIGhhbGZ3aWR0aCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoYWxmd2lkdGgg
a2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQo
c21hbGxIaXJhZ2FuYUEsIHNtYWxsS2F0YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgc21h
bGwga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Igc21hbGwgaGlyYWdhbmEgQS4iOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQoaGlyYWdhbmFBLCBoYWxmd2lk
dGhLYXRha2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBoYWxmd2lkdGgga2F0YWthbmEgQSB3
aGVuIHNlYXJjaGluZyBmb3IgaGlyYWdhbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoY2FuRmluZChzbWFsbEhpcmFnYW5hQSwgaGlyYWdhbmFBKSkgeworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91
bmQgc21hbGwgaGlyYWdhbmEgQSB3aGVuIHNlYXJjaGluZyBmb3IgaGlyYWdhbmEgQS4iOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FuRmluZChzbWFsbEthdGFrYW5hQSwga2F0
YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlICs9ICIgRm91bmQgc21hbGwga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBm
b3Iga2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FuRmlu
ZChoYWxmd2lkdGhTbWFsbEthdGFrYW5hQSwgaGFsZndpZHRoS2F0YWthbmFBKSkgeworICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIg
Rm91bmQgaGFsZndpZHRoIHNtYWxsIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3
aWR0aCBrYXRha2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjYW5G
aW5kKHNtYWxsSGlyYWdhbmFBLCBrYXRha2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2Vz
cyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBzbWFsbCBoaXJh
Z2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBrYXRha2FuYSBBLiI7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChjYW5GaW5kKGthdGFrYW5hQSwgaGFsZndpZHRoU21hbGxLYXRha2Fu
YUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAg
IG1lc3NhZ2UgKz0gIiBGb3VuZCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoYWxmd2lk
dGggc21hbGwga2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
Y2FuRmluZChoYWxmd2lkdGhLYXRha2FuYUEsIHNtYWxsSGlyYWdhbmFBKSkgeworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91
bmQgaGFsZndpZHRoIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIHNtYWxsIGhpcmFnYW5h
IEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNhbkZpbmQoaGlyYWdhbmFL
YSwgaGlyYWdhbmFHYSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIGhpcmFnYW5hIEthIHdoZW4gc2VhcmNoaW5n
IGZvciBoaXJhZ2FuYSBHYS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3Vj
Y2VzcykKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlNVQ0NFU1M6IEZvdW5kIGhpcmFnYW5h
IGFuZCBrYXRha2FuYSBjb3JyZWN0bHkuIjsKKworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5p
bm5lckhUTUwgPSBtZXNzYWdlOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPjwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="22863"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41486</attachid>
            <date>2009-10-19 23:57:39 -0700</date>
            <delta_ts>2009-10-20 19:08:45 -0700</delta_ts>
            <desc>Revised patch 2</desc>
            <filename>japanese-text-search.patch</filename>
            <type>text/plain</type>
            <size>12166</size>
            <attacher name="Satoshi Nakagawa">artension</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMTkgIFNhdG9zaGkgTmFrYWdhd2EgIDxwc3ljaHNAbGlt
ZWNoYXQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVkIEphcGFuZXNlIHRleHQgc2VhcmNoIHByb2JsZW1zLgorICAgICAgICBUcmVhdCBz
bWFsbCBrYW5hIGxldHRlcnMgYW5kIGthbmEgbGV0dGVycyBhcyBkaWZmZXJlbnQgY2hhcmFjdGVy
cyBpbiBzZWFyY2guCisgICAgICAgIERvIG5vdCBpZ25vcmUgZGlhY3JpdGljIG1hcmtzIGluIHNl
YXJjaCBmb3IgSmFwYW5lc2UgdGV4dHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMwNDM3CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbGxhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbGxhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNlYXJj
aGVyKToKKwogMjAwOS0xMC0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAkocmV2aXNpb24gNDk4NDApCisrKyBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMiw2ICsxNDMyLDk1IEBAIHN0YXRpYyBjb25z
dCBzaXplX3QgbWluaW11bVNlYXJjaEJ1ZmZlclMKIHN0YXRpYyBib29sIHNlYXJjaGVySW5Vc2U7
CiAjZW5kaWYKIAorLy8gVGFpbG9yZWQgY29sbGF0aW9uIHJ1bGVzIGZvciBKYXBhbmVzZSB0ZXh0
IHNlYXJjaC4KKy8vIFRoZSBkZWZhdWx0IFVuaWNvZGUgQ29sbGF0aW9uIEFsZ29yaXRobSBpcyB1
bm5hdHVyYWwgaW4gSmFwYW5lc2UuCisvLyBUaGVzZSBydWxlcyBpbnRlbmQgdG8gdHJlYXQgdGhl
IGZvbGxvd2luZyBjaGFyYWN0ZXJzIGFzIGRpZmZlcmVudCBjaGFyYWN0ZXJzLgorLy8KKy8vIC0g
U21hbGwga2FuYSBsZXR0ZXJzIGFuZCBub3JtYWwga2FuYSBsZXR0ZXJzCisvLyAtIFZvaWNlbGVz
cyBsZXR0ZXJzLCB2b2ljZWQgbGV0dGVycyBhbmQgc2VtaS12b2ljZWQgbGV0dGVycworLy8KKy8v
IFRoaXMgaXMgb3JpZ2luYWwgd29yayBidWlsdCBpbiByZWZlcmVuY2UgdG8gdGhlIGZvbGxvd2lu
ZyBVbmljb2RlIHN0YW5kYXJkIGRvY3VtZW50cy4KKy8vCisvLyAtIGh0dHA6Ly91bmljb2RlLm9y
Zy9yZXBvcnRzL3RyMTAvCisvLyAtIGh0dHA6Ly91bmljb2RlLm9yZy9QdWJsaWMvVUNBL2xhdGVz
dC9hbGxrZXlzLnR4dAorLy8KK3N0YXRpYyBjb25zdCBVQ2hhciBqYXBhbmVzZUthbmFDb2xsYXRp
b25SdWxlc1tdID0geworICAgICcmJywgMHgzMDQxLCAnPScsIDB4MzBhMSwgJz0nLCAweGZmNjcs
ICc8JywgMHgzMDQyLAorICAgICc9JywgMHgzMGEyLCAnPScsIDB4ZmY3MSwgJzwnLCAweDMwNDMs
ICc9JywgMHgzMGEzLAorICAgICc9JywgMHhmZjY4LCAnPCcsIDB4MzA0NCwgJz0nLCAweDMwYTQs
ICc9JywgMHhmZjcyLAorICAgICc8JywgMHgzMDQ1LCAnPScsIDB4MzBhNSwgJz0nLCAweGZmNjks
ICc8JywgMHgzMDQ2LAorICAgICc9JywgMHgzMGE2LCAnPScsIDB4ZmY3MywgJzwnLCAweDMwOTQs
ICc9JywgMHgzMGY0LAorICAgICc8JywgMHgzMDQ3LCAnPScsIDB4MzBhNywgJz0nLCAweGZmNmEs
ICc8JywgMHgzMDQ4LAorICAgICc9JywgMHgzMGE4LCAnPScsIDB4ZmY3NCwgJzwnLCAweDMwNDks
ICc9JywgMHgzMGE5LAorICAgICc9JywgMHhmZjZiLCAnPCcsIDB4MzA0YSwgJz0nLCAweDMwYWEs
ICc9JywgMHhmZjc1LAorICAgICc8JywgMHgzMDk1LCAnPScsIDB4MzBmNSwgJzwnLCAweDMwNGIs
ICc9JywgMHgzMGFiLAorICAgICc9JywgMHhmZjc2LCAnPCcsIDB4MzA0YywgJz0nLCAweDMwYWMs
ICc8JywgMHgzMDRkLAorICAgICc9JywgMHgzMGFkLCAnPScsIDB4ZmY3NywgJzwnLCAweDMwNGUs
ICc9JywgMHgzMGFlLAorICAgICc8JywgMHgzMDRmLCAnPScsIDB4MzBhZiwgJz0nLCAweGZmNzgs
ICc8JywgMHgzMDUwLAorICAgICc9JywgMHgzMGIwLCAnPCcsIDB4MzA5NiwgJz0nLCAweDMwZjYs
ICc8JywgMHgzMDUxLAorICAgICc9JywgMHgzMGIxLCAnPScsIDB4ZmY3OSwgJzwnLCAweDMwNTIs
ICc9JywgMHgzMGIyLAorICAgICc8JywgMHgzMDUzLCAnPScsIDB4MzBiMywgJz0nLCAweGZmN2Es
ICc8JywgMHgzMDU0LAorICAgICc9JywgMHgzMGI0LCAnPCcsIDB4MzA1NSwgJz0nLCAweDMwYjUs
ICc9JywgMHhmZjdiLAorICAgICc8JywgMHgzMDU2LCAnPScsIDB4MzBiNiwgJzwnLCAweDMwNTcs
ICc9JywgMHgzMGI3LAorICAgICc9JywgMHhmZjdjLCAnPCcsIDB4MzA1OCwgJz0nLCAweDMwYjgs
ICc8JywgMHgzMDU5LAorICAgICc9JywgMHgzMGI5LCAnPScsIDB4ZmY3ZCwgJzwnLCAweDMwNWEs
ICc9JywgMHgzMGJhLAorICAgICc8JywgMHgzMDViLCAnPScsIDB4MzBiYiwgJz0nLCAweGZmN2Us
ICc8JywgMHgzMDVjLAorICAgICc9JywgMHgzMGJjLCAnPCcsIDB4MzA1ZCwgJz0nLCAweDMwYmQs
ICc9JywgMHhmZjdmLAorICAgICc8JywgMHgzMDVlLCAnPScsIDB4MzBiZSwgJzwnLCAweDMwNWYs
ICc9JywgMHgzMGJmLAorICAgICc9JywgMHhmZjgwLCAnPCcsIDB4MzA2MCwgJz0nLCAweDMwYzAs
ICc8JywgMHgzMDYxLAorICAgICc9JywgMHgzMGMxLCAnPScsIDB4ZmY4MSwgJzwnLCAweDMwNjIs
ICc9JywgMHgzMGMyLAorICAgICc8JywgMHgzMDYzLCAnPScsIDB4MzBjMywgJz0nLCAweGZmNmYs
ICc8JywgMHgzMDY0LAorICAgICc9JywgMHgzMGM0LCAnPScsIDB4ZmY4MiwgJzwnLCAweDMwNjUs
ICc9JywgMHgzMGM1LAorICAgICc8JywgMHgzMDY2LCAnPScsIDB4MzBjNiwgJz0nLCAweGZmODMs
ICc8JywgMHgzMDY3LAorICAgICc9JywgMHgzMGM3LCAnPCcsIDB4MzA2OCwgJz0nLCAweDMwYzgs
ICc9JywgMHhmZjg0LAorICAgICc8JywgMHgzMDY5LCAnPScsIDB4MzBjOSwgJzwnLCAweDMwNmEs
ICc9JywgMHgzMGNhLAorICAgICc9JywgMHhmZjg1LCAnPCcsIDB4MzA2YiwgJz0nLCAweDMwY2Is
ICc9JywgMHhmZjg2LAorICAgICc8JywgMHgzMDZjLCAnPScsIDB4MzBjYywgJz0nLCAweGZmODcs
ICc8JywgMHgzMDZkLAorICAgICc9JywgMHgzMGNkLCAnPScsIDB4ZmY4OCwgJzwnLCAweDMwNmUs
ICc9JywgMHgzMGNlLAorICAgICc9JywgMHhmZjg5LCAnPCcsIDB4MzA2ZiwgJz0nLCAweDMwY2Ys
ICc9JywgMHhmZjhhLAorICAgICc8JywgMHgzMDcwLCAnPScsIDB4MzBkMCwgJzwnLCAweDMwNzEs
ICc9JywgMHgzMGQxLAorICAgICc8JywgMHgzMDcyLCAnPScsIDB4MzBkMiwgJz0nLCAweGZmOGIs
ICc8JywgMHgzMDczLAorICAgICc9JywgMHgzMGQzLCAnPCcsIDB4MzA3NCwgJz0nLCAweDMwZDQs
ICc8JywgMHgzMDc1LAorICAgICc9JywgMHgzMGQ1LCAnPScsIDB4ZmY4YywgJzwnLCAweDMwNzYs
ICc9JywgMHgzMGQ2LAorICAgICc8JywgMHgzMDc3LCAnPScsIDB4MzBkNywgJzwnLCAweDMwNzgs
ICc9JywgMHgzMGQ4LAorICAgICc9JywgMHhmZjhkLCAnPCcsIDB4MzA3OSwgJz0nLCAweDMwZDks
ICc8JywgMHgzMDdhLAorICAgICc9JywgMHgzMGRhLCAnPCcsIDB4MzA3YiwgJz0nLCAweDMwZGIs
ICc9JywgMHhmZjhlLAorICAgICc8JywgMHgzMDdjLCAnPScsIDB4MzBkYywgJzwnLCAweDMwN2Qs
ICc9JywgMHgzMGRkLAorICAgICc8JywgMHgzMDdlLCAnPScsIDB4MzBkZSwgJz0nLCAweGZmOGYs
ICc8JywgMHgzMDdmLAorICAgICc9JywgMHgzMGRmLCAnPScsIDB4ZmY5MCwgJzwnLCAweDMwODAs
ICc9JywgMHgzMGUwLAorICAgICc9JywgMHhmZjkxLCAnPCcsIDB4MzA4MSwgJz0nLCAweDMwZTEs
ICc9JywgMHhmZjkyLAorICAgICc8JywgMHgzMDgyLCAnPScsIDB4MzBlMiwgJz0nLCAweGZmOTMs
ICc8JywgMHgzMDgzLAorICAgICc9JywgMHgzMGUzLCAnPScsIDB4ZmY2YywgJzwnLCAweDMwODQs
ICc9JywgMHgzMGU0LAorICAgICc9JywgMHhmZjk0LCAnPCcsIDB4MzA4NSwgJz0nLCAweDMwZTUs
ICc9JywgMHhmZjZkLAorICAgICc8JywgMHgzMDg2LCAnPScsIDB4MzBlNiwgJz0nLCAweGZmOTUs
ICc8JywgMHgzMDg3LAorICAgICc9JywgMHgzMGU3LCAnPScsIDB4ZmY2ZSwgJzwnLCAweDMwODgs
ICc9JywgMHgzMGU4LAorICAgICc9JywgMHhmZjk2LCAnPCcsIDB4MzA4OSwgJz0nLCAweDMwZTks
ICc9JywgMHhmZjk3LAorICAgICc8JywgMHgzMDhhLCAnPScsIDB4MzBlYSwgJz0nLCAweGZmOTgs
ICc8JywgMHgzMDhiLAorICAgICc9JywgMHgzMGViLCAnPScsIDB4ZmY5OSwgJzwnLCAweDMwOGMs
ICc9JywgMHgzMGVjLAorICAgICc9JywgMHhmZjlhLCAnPCcsIDB4MzA4ZCwgJz0nLCAweDMwZWQs
ICc9JywgMHhmZjliLAorICAgICc8JywgMHgzMDhlLCAnPScsIDB4MzBlZSwgJzwnLCAweDMwOGYs
ICc9JywgMHgzMGVmLAorICAgICc9JywgMHhmZjljLCAnPCcsIDB4MzBmNywgJzwnLCAweDMwOTAs
ICc9JywgMHgzMGYwLAorICAgICc8JywgMHgzMGY4LCAnPCcsIDB4MzA5MSwgJz0nLCAweDMwZjEs
ICc8JywgMHgzMDkyLAorICAgICc9JywgMHgzMGYyLCAnPScsIDB4ZmY2NiwgJzwnLCAweDMwOTMs
ICc9JywgMHgzMGYzLAorICAgICc9JywgMHhmZjlkLCAwCit9OworCitzdGF0aWMgVUNvbGxhdG9y
KiBjcmVhdGVDb2xsYXRvcigpCit7CisgICAgLy8gU2V0IHRhaWxvcmVkIGNvbGxhdGlvbiBydWxl
cyB0byBmaXggSmFwYW5lc2UgdGV4dCBzZWFyY2guCisgICAgLy8gU2VlIHRoZSBjb21tZW50cyBi
ZWZvcmUgamFwYW5lc2VLYW5hQ29sbGF0aW9uUnVsZXMgZm9yIGRldGFpbHMuCisgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVUNvbGxhdG9yKiBjb2xsYXRvciA9IHVj
b2xfb3BlblJ1bGVzKGphcGFuZXNlS2FuYUNvbGxhdGlvblJ1bGVzLCAtMSwgVUNPTF9ERUZBVUxU
LCBVQ09MX0RFRkFVTFRfU1RSRU5HVEgsIDAsICZzdGF0dXMpOworICAgIEFTU0VSVChzdGF0dXMg
PT0gVV9aRVJPX0VSUk9SKTsKKyAgICByZXR1cm4gY29sbGF0b3I7Cit9CisKK3N0YXRpYyBVQ29s
bGF0b3IqIGNvbGxhdG9yKCkKK3sKKyAgICBzdGF0aWMgVUNvbGxhdG9yKiBjb2xsYXRvciA9IGNy
ZWF0ZUNvbGxhdG9yKCk7CisgICAgcmV0dXJuIGNvbGxhdG9yOworfQorCiBzdGF0aWMgVVN0cmlu
Z1NlYXJjaCogY3JlYXRlU2VhcmNoZXIoKQogewogICAgIC8vIFByb3ZpZGUgYSBub24tZW1wdHkg
cGF0dGVybiBhbmQgbm9uLWVtcHR5IHRleHQgc28gdXNlYXJjaF9vcGVuIHdpbGwgbm90IGZhaWws
CkBAIC0xNDQwLDYgKzE1MjksMTAgQEAgc3RhdGljIFVTdHJpbmdTZWFyY2gqIGNyZWF0ZVNlYXJj
aGVyKCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBVU3RyaW5n
U2VhcmNoKiBzZWFyY2hlciA9IHVzZWFyY2hfb3BlbigmbmV3bGluZUNoYXJhY3RlciwgMSwgJm5l
d2xpbmVDaGFyYWN0ZXIsIDEsIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpLCAwLCAmc3RhdHVzKTsK
ICAgICBBU1NFUlQoc3RhdHVzID09IFVfWkVST19FUlJPUiB8fCBzdGF0dXMgPT0gVV9VU0lOR19G
QUxMQkFDS19XQVJOSU5HIHx8IHN0YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyk7Cisg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVzZWFyY2hfc2V0Q29sbGF0b3Ioc2VhcmNo
ZXIsIGNvbGxhdG9yKCksICZzdGF0dXMpOworICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VS
Uk9SKTsKKyAgICB1c2VhcmNoX3Jlc2V0KHNlYXJjaGVyKTsKICAgICByZXR1cm4gc2VhcmNoZXI7
CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5ODQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTAtMTkgIFNhdG9zaGkgTmFr
YWdhd2EgIDxwc3ljaHNAbGltZWNoYXQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIEphcGFuZXNlIHRleHQgc2VhcmNoIHByb2JsZW1z
LgorICAgICAgICBUcmVhdCBzbWFsbCBrYW5hIGxldHRlcnMgYW5kIGthbmEgbGV0dGVycyBhcyBk
aWZmZXJlbnQgY2hhcmFjdGVycyBpbiBzZWFyY2guCisgICAgICAgIERvIG5vdCBpZ25vcmUgZGlh
Y3JpdGljIG1hcmtzIGluIHNlYXJjaCBmb3IgSmFwYW5lc2UgdGV4dHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDM3CisKKyAgICAgICAgKiBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5h
LWxldHRlcnMuaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMTkgIFJvYmluIFFpdSAgPHJvYmluLnFp
dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1t
ZXJtYW5uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5l
c2Uta2FuYS1sZXR0ZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFw
YW5lc2Uta2FuYS1sZXR0ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBA
QAorU1VDQ0VTUzogRm91bmQgaGlyYWdhbmEgYW5kIGthdGFrYW5hIGNvcnJlY3RseS4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVy
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2phcGFuZXNlLWthbmEtbGV0dGVycy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACis8aHRtbD4KKzxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij48L2hlYWQ+
Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBjYW5GaW5kKHRhcmdldCwg
c3BlY2ltZW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGdldFNlbGVjdGlvbigpLmVtcHR5KCk7
CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IHNwZWNpbWVuOworICAgICAg
ICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkZpbmRTdHJpbmciLCBmYWxzZSwgdGFyZ2V0KTsK
KyAgICAgICAgICAgIHZhciByZXN1bHQgPSBnZXRTZWxlY3Rpb24oKS5yYW5nZUNvdW50ICE9IDA7
CisgICAgICAgICAgICBnZXRTZWxlY3Rpb24oKS5lbXB0eSgpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAg
ICAgIHZhciBzbWFsbEhpcmFnYW5hQSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDQxKTsKKyAg
ICAgICAgICAgIHZhciBoaXJhZ2FuYUEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0Mik7Cisg
ICAgICAgICAgICB2YXIgc21hbGxLYXRha2FuYUEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBh
MSk7CisgICAgICAgICAgICB2YXIga2F0YWthbmFBID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMw
YTIpOworICAgICAgICAgICAgdmFyIGhhbGZ3aWR0aFNtYWxsS2F0YWthbmFBID0gU3RyaW5nLmZy
b21DaGFyQ29kZSgweGZmNjcpOworICAgICAgICAgICAgdmFyIGhhbGZ3aWR0aEthdGFrYW5hQSA9
IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjcxKTsKKyAgICAgICAgICAgIHZhciBoaXJhZ2FuYUth
ID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwNGIpOworICAgICAgICAgICAgdmFyIGhpcmFnYW5h
R2EgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0Yyk7CisKKyAgICAgICAgICAgIHZhciBzdWNj
ZXNzID0gdHJ1ZTsKKworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAiRkFJTFVSRToiOworCisg
ICAgICAgICAgICBpZiAoIWNhbkZpbmQoc21hbGxIaXJhZ2FuYUEsIHNtYWxsSGlyYWdhbmFBKSkg
eworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNz
YWdlICs9ICIgQ2Fubm90IGZpbmQgc21hbGwgaGlyYWdhbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Ig
c21hbGwgaGlyYWdhbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNh
bkZpbmQoaGlyYWdhbmFBLCBoaXJhZ2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9
IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBoaXJhZ2Fu
YSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoaXJhZ2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghY2FuRmluZChzbWFsbEthdGFrYW5hQSwgc21hbGxLYXRha2FuYUEpKSB7
CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgKz0gIiBDYW5ub3QgZmluZCBzbWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBz
bWFsbCBrYXRha2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY2Fu
RmluZChrYXRha2FuYUEsIGthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5vdCBmaW5kIGthdGFrYW5h
IEEgd2hlbiBzZWFyY2hpbmcgZm9yIGthdGFrYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFjYW5GaW5kKGhhbGZ3aWR0aFNtYWxsS2F0YWthbmFBLCBoYWxmd2lkdGhT
bWFsbEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5vdCBmaW5kIGhhbGZ3aWR0aCBzbWFsbCBrYXRh
a2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoYWxmd2lkdGggc21hbGwga2F0YWthbmEgQS4iOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQoaGFsZndpZHRoS2F0YWth
bmFBLCBoYWxmd2lkdGhLYXRha2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBoYWxmd2lkdGgg
a2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIGthdGFrYW5hIEEuIjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjYW5GaW5kKHNtYWxsSGlyYWdhbmFBLCBz
bWFsbEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5vdCBmaW5kIHNtYWxsIGthdGFrYW5hIEEgd2hl
biBzZWFyY2hpbmcgZm9yIHNtYWxsIGhpcmFnYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFjYW5GaW5kKGhpcmFnYW5hQSwgaGFsZndpZHRoS2F0YWthbmFBKSkgewor
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICIgQ2Fubm90IGZpbmQgaGFsZndpZHRoIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9y
IGhpcmFnYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNhbkZpbmQo
c21hbGxIaXJhZ2FuYUEsIGhpcmFnYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIHNtYWxsIGhpcmFnYW5h
IEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKGNhbkZpbmQoc21hbGxLYXRha2FuYUEsIGthdGFrYW5hQSkpIHsKKyAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAi
IEZvdW5kIHNtYWxsIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGthdGFrYW5hIEEuIjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNhbkZpbmQoaGFsZndpZHRoU21hbGxL
YXRha2FuYUEsIGhhbGZ3aWR0aEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIGhhbGZ3aWR0aCBz
bWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoYWxmd2lkdGgga2F0YWthbmEgQS4i
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FuRmluZChzbWFsbEhpcmFnYW5h
QSwga2F0YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91bmQgc21hbGwgaGlyYWdhbmEgQSB3aGVuIHNlYXJj
aGluZyBmb3Iga2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
Y2FuRmluZChrYXRha2FuYUEsIGhhbGZ3aWR0aFNtYWxsS2F0YWthbmFBKSkgeworICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91
bmQga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIHNtYWxsIGthdGFrYW5h
IEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNhbkZpbmQoaGFsZndpZHRo
S2F0YWthbmFBLCBzbWFsbEhpcmFnYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIGhhbGZ3aWR0aCBrYXRh
a2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBzbWFsbCBoaXJhZ2FuYSBBLiI7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChjYW5GaW5kKGhpcmFnYW5hS2EsIGhpcmFnYW5hR2EpKSB7
CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgKz0gIiBGb3VuZCBoaXJhZ2FuYSBLYSB3aGVuIHNlYXJjaGluZyBmb3IgaGlyYWdhbmEgR2Eu
IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAg
ICAgICAgbWVzc2FnZSA9ICJTVUNDRVNTOiBGb3VuZCBoaXJhZ2FuYSBhbmQga2F0YWthbmEgY29y
cmVjdGx5LiI7CisKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2Fn
ZTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0cygpIj48L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41543</attachid>
            <date>2009-10-20 19:08:45 -0700</date>
            <delta_ts>2010-01-10 17:39:32 -0800</delta_ts>
            <desc>Revised patch 3</desc>
            <filename>japanese-search-problems.patch</filename>
            <type>text/plain</type>
            <size>12250</size>
            <attacher name="Satoshi Nakagawa">artension</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjAgIFNhdG9zaGkgTmFrYWdhd2EgIDxwc3ljaHNAbGlt
ZWNoYXQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVkIEphcGFuZXNlIHRleHQgc2VhcmNoIHByb2JsZW1zLgorICAgICAgICBUcmVhdCBz
bWFsbCBrYW5hIGxldHRlcnMgYW5kIGthbmEgbGV0dGVycyBhcyBkaWZmZXJlbnQgY2hhcmFjdGVy
cyBpbiBzZWFyY2guCisgICAgICAgIERvIG5vdCBpZ25vcmUgZGlhY3JpdGljIG1hcmtzIGluIHNl
YXJjaCBmb3IgSmFwYW5lc2UgdGV4dHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMwNDM3CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbGxhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbGxhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNlYXJj
aGVyKToKKwogMjAwOS0xMC0yMCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAJKHJldmlzaW9uIDQ5ODk1KQorKysgV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzIsNiArMTQzMiw5NSBAQCBzdGF0aWMgY29uc3Qg
c2l6ZV90IG1pbmltdW1TZWFyY2hCdWZmZXJTCiBzdGF0aWMgYm9vbCBzZWFyY2hlckluVXNlOwog
I2VuZGlmCiAKKy8vIFRhaWxvcmVkIGNvbGxhdGlvbiBydWxlcyBmb3IgSmFwYW5lc2UgdGV4dCBz
ZWFyY2guCisvLyBUaGUgZGVmYXVsdCBVbmljb2RlIENvbGxhdGlvbiBBbGdvcml0aG0gaXMgdW5u
YXR1cmFsIGluIEphcGFuZXNlLgorLy8gVGhlc2UgcnVsZXMgaW50ZW5kIHRvIHRyZWF0IHRoZSBm
b2xsb3dpbmcgY2hhcmFjdGVycyBhcyBkaWZmZXJlbnQgY2hhcmFjdGVycy4KKy8vCisvLyAtIFNt
YWxsIGthbmEgbGV0dGVycyBhbmQgbm9ybWFsIGthbmEgbGV0dGVycworLy8gLSBWb2ljZWxlc3Mg
bGV0dGVycywgdm9pY2VkIGxldHRlcnMgYW5kIHNlbWktdm9pY2VkIGxldHRlcnMKKy8vCisvLyBU
aGlzIGlzIG9yaWdpbmFsIHdvcmsgYnVpbHQgaW4gcmVmZXJlbmNlIHRvIHRoZSBmb2xsb3dpbmcg
VW5pY29kZSBzdGFuZGFyZCBkb2N1bWVudHMuCisvLworLy8gLSBodHRwOi8vdW5pY29kZS5vcmcv
cmVwb3J0cy90cjEwLworLy8gLSBodHRwOi8vdW5pY29kZS5vcmcvUHVibGljL1VDQS9sYXRlc3Qv
YWxsa2V5cy50eHQKKy8vCitzdGF0aWMgY29uc3QgVUNoYXIgamFwYW5lc2VLYW5hQ29sbGF0aW9u
UnVsZXNbXSA9IHsKKyAgICAnJicsIDB4MzA0MSwgJz0nLCAweDMwYTEsICc9JywgMHhmZjY3LCAn
PCcsIDB4MzA0MiwKKyAgICAnPScsIDB4MzBhMiwgJz0nLCAweGZmNzEsICc8JywgMHgzMDQzLCAn
PScsIDB4MzBhMywKKyAgICAnPScsIDB4ZmY2OCwgJzwnLCAweDMwNDQsICc9JywgMHgzMGE0LCAn
PScsIDB4ZmY3MiwKKyAgICAnPCcsIDB4MzA0NSwgJz0nLCAweDMwYTUsICc9JywgMHhmZjY5LCAn
PCcsIDB4MzA0NiwKKyAgICAnPScsIDB4MzBhNiwgJz0nLCAweGZmNzMsICc8JywgMHgzMDk0LCAn
PScsIDB4MzBmNCwKKyAgICAnPCcsIDB4MzA0NywgJz0nLCAweDMwYTcsICc9JywgMHhmZjZhLCAn
PCcsIDB4MzA0OCwKKyAgICAnPScsIDB4MzBhOCwgJz0nLCAweGZmNzQsICc8JywgMHgzMDQ5LCAn
PScsIDB4MzBhOSwKKyAgICAnPScsIDB4ZmY2YiwgJzwnLCAweDMwNGEsICc9JywgMHgzMGFhLCAn
PScsIDB4ZmY3NSwKKyAgICAnPCcsIDB4MzA5NSwgJz0nLCAweDMwZjUsICc8JywgMHgzMDRiLCAn
PScsIDB4MzBhYiwKKyAgICAnPScsIDB4ZmY3NiwgJzwnLCAweDMwNGMsICc9JywgMHgzMGFjLCAn
PCcsIDB4MzA0ZCwKKyAgICAnPScsIDB4MzBhZCwgJz0nLCAweGZmNzcsICc8JywgMHgzMDRlLCAn
PScsIDB4MzBhZSwKKyAgICAnPCcsIDB4MzA0ZiwgJz0nLCAweDMwYWYsICc9JywgMHhmZjc4LCAn
PCcsIDB4MzA1MCwKKyAgICAnPScsIDB4MzBiMCwgJzwnLCAweDMwOTYsICc9JywgMHgzMGY2LCAn
PCcsIDB4MzA1MSwKKyAgICAnPScsIDB4MzBiMSwgJz0nLCAweGZmNzksICc8JywgMHgzMDUyLCAn
PScsIDB4MzBiMiwKKyAgICAnPCcsIDB4MzA1MywgJz0nLCAweDMwYjMsICc9JywgMHhmZjdhLCAn
PCcsIDB4MzA1NCwKKyAgICAnPScsIDB4MzBiNCwgJzwnLCAweDMwNTUsICc9JywgMHgzMGI1LCAn
PScsIDB4ZmY3YiwKKyAgICAnPCcsIDB4MzA1NiwgJz0nLCAweDMwYjYsICc8JywgMHgzMDU3LCAn
PScsIDB4MzBiNywKKyAgICAnPScsIDB4ZmY3YywgJzwnLCAweDMwNTgsICc9JywgMHgzMGI4LCAn
PCcsIDB4MzA1OSwKKyAgICAnPScsIDB4MzBiOSwgJz0nLCAweGZmN2QsICc8JywgMHgzMDVhLCAn
PScsIDB4MzBiYSwKKyAgICAnPCcsIDB4MzA1YiwgJz0nLCAweDMwYmIsICc9JywgMHhmZjdlLCAn
PCcsIDB4MzA1YywKKyAgICAnPScsIDB4MzBiYywgJzwnLCAweDMwNWQsICc9JywgMHgzMGJkLCAn
PScsIDB4ZmY3ZiwKKyAgICAnPCcsIDB4MzA1ZSwgJz0nLCAweDMwYmUsICc8JywgMHgzMDVmLCAn
PScsIDB4MzBiZiwKKyAgICAnPScsIDB4ZmY4MCwgJzwnLCAweDMwNjAsICc9JywgMHgzMGMwLCAn
PCcsIDB4MzA2MSwKKyAgICAnPScsIDB4MzBjMSwgJz0nLCAweGZmODEsICc8JywgMHgzMDYyLCAn
PScsIDB4MzBjMiwKKyAgICAnPCcsIDB4MzA2MywgJz0nLCAweDMwYzMsICc9JywgMHhmZjZmLCAn
PCcsIDB4MzA2NCwKKyAgICAnPScsIDB4MzBjNCwgJz0nLCAweGZmODIsICc8JywgMHgzMDY1LCAn
PScsIDB4MzBjNSwKKyAgICAnPCcsIDB4MzA2NiwgJz0nLCAweDMwYzYsICc9JywgMHhmZjgzLCAn
PCcsIDB4MzA2NywKKyAgICAnPScsIDB4MzBjNywgJzwnLCAweDMwNjgsICc9JywgMHgzMGM4LCAn
PScsIDB4ZmY4NCwKKyAgICAnPCcsIDB4MzA2OSwgJz0nLCAweDMwYzksICc8JywgMHgzMDZhLCAn
PScsIDB4MzBjYSwKKyAgICAnPScsIDB4ZmY4NSwgJzwnLCAweDMwNmIsICc9JywgMHgzMGNiLCAn
PScsIDB4ZmY4NiwKKyAgICAnPCcsIDB4MzA2YywgJz0nLCAweDMwY2MsICc9JywgMHhmZjg3LCAn
PCcsIDB4MzA2ZCwKKyAgICAnPScsIDB4MzBjZCwgJz0nLCAweGZmODgsICc8JywgMHgzMDZlLCAn
PScsIDB4MzBjZSwKKyAgICAnPScsIDB4ZmY4OSwgJzwnLCAweDMwNmYsICc9JywgMHgzMGNmLCAn
PScsIDB4ZmY4YSwKKyAgICAnPCcsIDB4MzA3MCwgJz0nLCAweDMwZDAsICc8JywgMHgzMDcxLCAn
PScsIDB4MzBkMSwKKyAgICAnPCcsIDB4MzA3MiwgJz0nLCAweDMwZDIsICc9JywgMHhmZjhiLCAn
PCcsIDB4MzA3MywKKyAgICAnPScsIDB4MzBkMywgJzwnLCAweDMwNzQsICc9JywgMHgzMGQ0LCAn
PCcsIDB4MzA3NSwKKyAgICAnPScsIDB4MzBkNSwgJz0nLCAweGZmOGMsICc8JywgMHgzMDc2LCAn
PScsIDB4MzBkNiwKKyAgICAnPCcsIDB4MzA3NywgJz0nLCAweDMwZDcsICc8JywgMHgzMDc4LCAn
PScsIDB4MzBkOCwKKyAgICAnPScsIDB4ZmY4ZCwgJzwnLCAweDMwNzksICc9JywgMHgzMGQ5LCAn
PCcsIDB4MzA3YSwKKyAgICAnPScsIDB4MzBkYSwgJzwnLCAweDMwN2IsICc9JywgMHgzMGRiLCAn
PScsIDB4ZmY4ZSwKKyAgICAnPCcsIDB4MzA3YywgJz0nLCAweDMwZGMsICc8JywgMHgzMDdkLCAn
PScsIDB4MzBkZCwKKyAgICAnPCcsIDB4MzA3ZSwgJz0nLCAweDMwZGUsICc9JywgMHhmZjhmLCAn
PCcsIDB4MzA3ZiwKKyAgICAnPScsIDB4MzBkZiwgJz0nLCAweGZmOTAsICc8JywgMHgzMDgwLCAn
PScsIDB4MzBlMCwKKyAgICAnPScsIDB4ZmY5MSwgJzwnLCAweDMwODEsICc9JywgMHgzMGUxLCAn
PScsIDB4ZmY5MiwKKyAgICAnPCcsIDB4MzA4MiwgJz0nLCAweDMwZTIsICc9JywgMHhmZjkzLCAn
PCcsIDB4MzA4MywKKyAgICAnPScsIDB4MzBlMywgJz0nLCAweGZmNmMsICc8JywgMHgzMDg0LCAn
PScsIDB4MzBlNCwKKyAgICAnPScsIDB4ZmY5NCwgJzwnLCAweDMwODUsICc9JywgMHgzMGU1LCAn
PScsIDB4ZmY2ZCwKKyAgICAnPCcsIDB4MzA4NiwgJz0nLCAweDMwZTYsICc9JywgMHhmZjk1LCAn
PCcsIDB4MzA4NywKKyAgICAnPScsIDB4MzBlNywgJz0nLCAweGZmNmUsICc8JywgMHgzMDg4LCAn
PScsIDB4MzBlOCwKKyAgICAnPScsIDB4ZmY5NiwgJzwnLCAweDMwODksICc9JywgMHgzMGU5LCAn
PScsIDB4ZmY5NywKKyAgICAnPCcsIDB4MzA4YSwgJz0nLCAweDMwZWEsICc9JywgMHhmZjk4LCAn
PCcsIDB4MzA4YiwKKyAgICAnPScsIDB4MzBlYiwgJz0nLCAweGZmOTksICc8JywgMHgzMDhjLCAn
PScsIDB4MzBlYywKKyAgICAnPScsIDB4ZmY5YSwgJzwnLCAweDMwOGQsICc9JywgMHgzMGVkLCAn
PScsIDB4ZmY5YiwKKyAgICAnPCcsIDB4MzA4ZSwgJz0nLCAweDMwZWUsICc8JywgMHgzMDhmLCAn
PScsIDB4MzBlZiwKKyAgICAnPScsIDB4ZmY5YywgJzwnLCAweDMwZjcsICc8JywgMHgzMDkwLCAn
PScsIDB4MzBmMCwKKyAgICAnPCcsIDB4MzBmOCwgJzwnLCAweDMwOTEsICc9JywgMHgzMGYxLCAn
PCcsIDB4MzA5MiwKKyAgICAnPScsIDB4MzBmMiwgJz0nLCAweGZmNjYsICc8JywgMHgzMDkzLCAn
PScsIDB4MzBmMywKKyAgICAnPScsIDB4ZmY5ZCwgMAorfTsKKworc3RhdGljIFVDb2xsYXRvciog
Y3JlYXRlQ29sbGF0b3IoKQoreworICAgIC8vIFNldCB0YWlsb3JlZCBjb2xsYXRpb24gcnVsZXMg
dG8gZml4IEphcGFuZXNlIHRleHQgc2VhcmNoLgorICAgIC8vIFNlZSB0aGUgY29tbWVudHMgYmVm
b3JlIGphcGFuZXNlS2FuYUNvbGxhdGlvblJ1bGVzIGZvciBkZXRhaWxzLgorICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFVDb2xsYXRvciogY29sbGF0b3IgPSB1Y29s
X29wZW5SdWxlcyhqYXBhbmVzZUthbmFDb2xsYXRpb25SdWxlcywgLTEsIFVDT0xfREVGQVVMVCwg
VUNPTF9ERUZBVUxUX1NUUkVOR1RILCAwLCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoc3RhdHVzID09
IFVfWkVST19FUlJPUiB8fCBzdGF0dXMgPT0gVV9VU0lOR19GQUxMQkFDS19XQVJOSU5HIHx8IHN0
YXR1cyA9PSBVX1VTSU5HX0RFRkFVTFRfV0FSTklORyk7CisgICAgcmV0dXJuIGNvbGxhdG9yOwor
fQorCitzdGF0aWMgVUNvbGxhdG9yKiBjb2xsYXRvcigpCit7CisgICAgc3RhdGljIFVDb2xsYXRv
ciogY29sbGF0b3IgPSBjcmVhdGVDb2xsYXRvcigpOworICAgIHJldHVybiBjb2xsYXRvcjsKK30K
KyAgICAKIHN0YXRpYyBVU3RyaW5nU2VhcmNoKiBjcmVhdGVTZWFyY2hlcigpCiB7CiAgICAgLy8g
UHJvdmlkZSBhIG5vbi1lbXB0eSBwYXR0ZXJuIGFuZCBub24tZW1wdHkgdGV4dCBzbyB1c2VhcmNo
X29wZW4gd2lsbCBub3QgZmFpbCwKQEAgLTE0NDAsNiArMTUyOSwxMCBAQCBzdGF0aWMgVVN0cmlu
Z1NlYXJjaCogY3JlYXRlU2VhcmNoZXIoKQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgIFVTdHJpbmdTZWFyY2gqIHNlYXJjaGVyID0gdXNlYXJjaF9vcGVuKCZuZXds
aW5lQ2hhcmFjdGVyLCAxLCAmbmV3bGluZUNoYXJhY3RlciwgMSwgY3VycmVudFNlYXJjaExvY2Fs
ZUlEKCksIDAsICZzdGF0dXMpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SIHx8
IHN0YXR1cyA9PSBVX1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcgfHwgc3RhdHVzID09IFVfVVNJTkdf
REVGQVVMVF9XQVJOSU5HKTsKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdXNlYXJj
aF9zZXRDb2xsYXRvcihzZWFyY2hlciwgY29sbGF0b3IoKSwgJnN0YXR1cyk7CisgICAgQVNTRVJU
KHN0YXR1cyA9PSBVX1pFUk9fRVJST1IgfHwgc3RhdHVzID09IFVfVVNJTkdfRkFMTEJBQ0tfV0FS
TklORyB8fCBzdGF0dXMgPT0gVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcpOworICAgIHVzZWFyY2hf
cmVzZXQoc2VhcmNoZXIpOwogICAgIHJldHVybiBzZWFyY2hlcjsKIH0KIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNDk4OTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAwOS0xMC0yMCAgU2F0b3NoaSBOYWthZ2F3YSAgPHBzeWNoc0BsaW1l
Y2hhdC5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRml4ZWQgSmFwYW5lc2UgdGV4dCBzZWFyY2ggcHJvYmxlbXMuCisgICAgICAgIFRyZWF0IHNt
YWxsIGthbmEgbGV0dGVycyBhbmQga2FuYSBsZXR0ZXJzIGFzIGRpZmZlcmVudCBjaGFyYWN0ZXJz
IGluIHNlYXJjaC4KKyAgICAgICAgRG8gbm90IGlnbm9yZSBkaWFjcml0aWMgbWFya3MgaW4gc2Vh
cmNoIGZvciBKYXBhbmVzZSB0ZXh0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzA0MzcKKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy5odG1sOiBBZGRl
ZC4KKwogMjAwOS0xMC0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgQW5vdGhlciBiYXRjaCBvZiBza2lwcGVkIHRlc3RzIHdpdGggbGlua3MgdG8gdGhlaXIgYnVn
cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWth
bmEtbGV0dGVycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNl
LWthbmEtbGV0dGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1NV
Q0NFU1M6IEZvdW5kIGhpcmFnYW5hIGFuZCBrYXRha2FuYSBjb3JyZWN0bHkuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBh
bmVzZS1rYW5hLWxldHRlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBmdW5jdGlvbiBjYW5GaW5kKHRhcmdldCwgc3BlY2ltZW4pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdldFNlbGVjdGlvbigpLmVtcHR5KCk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCA9IHNwZWNpbWVuOworICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkZp
bmRTdHJpbmciLCBmYWxzZSwgdGFyZ2V0KTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBnZXRT
ZWxlY3Rpb24oKS5yYW5nZUNvdW50ICE9IDA7CisgICAgICAgICAgICBnZXRTZWxlY3Rpb24oKS5l
bXB0eSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgICAgIHZhciBzbWFsbEhpcmFnYW5hQSA9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgzMDQxKTsKKyAgICAgICAgICAgIHZhciBoaXJhZ2FuYUEgPSBTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4MzA0Mik7CisgICAgICAgICAgICB2YXIgc21hbGxLYXRha2FuYUEg
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhMSk7CisgICAgICAgICAgICB2YXIga2F0YWthbmFB
ID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTIpOworICAgICAgICAgICAgdmFyIGhhbGZ3aWR0
aFNtYWxsS2F0YWthbmFBID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNjcpOworICAgICAgICAg
ICAgdmFyIGhhbGZ3aWR0aEthdGFrYW5hQSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjcxKTsK
KyAgICAgICAgICAgIHZhciBoaXJhZ2FuYUthID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwNGIp
OworICAgICAgICAgICAgdmFyIGhpcmFnYW5hR2EgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0
Yyk7CisKKyAgICAgICAgICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKworICAgICAgICAgICAgdmFy
IG1lc3NhZ2UgPSAiRkFJTFVSRToiOworCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQoc21hbGxI
aXJhZ2FuYUEsIHNtYWxsSGlyYWdhbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgc21hbGwgaGly
YWdhbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Igc21hbGwgaGlyYWdhbmEgQS4iOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIWNhbkZpbmQoaGlyYWdhbmFBLCBoaXJhZ2FuYUEpKSB7
CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgKz0gIiBDYW5ub3QgZmluZCBoaXJhZ2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoaXJhZ2Fu
YSBBLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY2FuRmluZChzbWFsbEth
dGFrYW5hQSwgc21hbGxLYXRha2FuYUEpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBzbWFsbCBrYXRh
a2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBzbWFsbCBrYXRha2FuYSBBLiI7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICghY2FuRmluZChrYXRha2FuYUEsIGthdGFrYW5hQSkpIHsK
KyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAiIENhbm5vdCBmaW5kIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGthdGFrYW5h
IEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjYW5GaW5kKGhhbGZ3aWR0
aFNtYWxsS2F0YWthbmFBLCBoYWxmd2lkdGhTbWFsbEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5v
dCBmaW5kIGhhbGZ3aWR0aCBzbWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoYWxm
d2lkdGggc21hbGwga2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIWNhbkZpbmQoaGFsZndpZHRoS2F0YWthbmFBLCBoYWxmd2lkdGhLYXRha2FuYUEpKSB7Cisg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
Kz0gIiBDYW5ub3QgZmluZCBoYWxmd2lkdGgga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Ig
aGFsZndpZHRoIGthdGFrYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFjYW5GaW5kKHNtYWxsSGlyYWdhbmFBLCBzbWFsbEthdGFrYW5hQSkpIHsKKyAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENhbm5v
dCBmaW5kIHNtYWxsIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIHNtYWxsIGhpcmFnYW5h
IEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjYW5GaW5kKGhpcmFnYW5h
QSwgaGFsZndpZHRoS2F0YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgaGFsZndpZHRoIGth
dGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5hIEEuIjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGNhbkZpbmQoc21hbGxIaXJhZ2FuYUEsIGhpcmFnYW5hQSkpIHsK
KyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAiIEZvdW5kIHNtYWxsIGhpcmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5h
IEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNhbkZpbmQoc21hbGxLYXRh
a2FuYUEsIGthdGFrYW5hQSkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIHNtYWxsIGthdGFrYW5hIEEgd2hlbiBz
ZWFyY2hpbmcgZm9yIGthdGFrYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGNhbkZpbmQoaGFsZndpZHRoU21hbGxLYXRha2FuYUEsIGhhbGZ3aWR0aEthdGFrYW5hQSkp
IHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVz
c2FnZSArPSAiIEZvdW5kIGhhbGZ3aWR0aCBzbWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5n
IGZvciBoYWxmd2lkdGgga2F0YWthbmEgQS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoY2FuRmluZChzbWFsbEhpcmFnYW5hQSwga2F0YWthbmFBKSkgeworICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91bmQg
c21hbGwgaGlyYWdhbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Iga2F0YWthbmEgQS4iOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FuRmluZChrYXRha2FuYUEsIGhhbGZ3aWR0aFNt
YWxsS2F0YWthbmFBKSkgeworICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBtZXNzYWdlICs9ICIgRm91bmQga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBm
b3IgaGFsZndpZHRoIHNtYWxsIGthdGFrYW5hIEEuIjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGNhbkZpbmQoaGFsZndpZHRoS2F0YWthbmFBLCBzbWFsbEhpcmFnYW5hQSkpIHsK
KyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAiIEZvdW5kIGhhbGZ3aWR0aCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBzbWFs
bCBoaXJhZ2FuYSBBLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjYW5GaW5k
KGhpcmFnYW5hS2EsIGhpcmFnYW5hR2EpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZh
bHNlOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBoaXJhZ2FuYSBLYSB3aGVu
IHNlYXJjaGluZyBmb3IgaGlyYWdhbmEgR2EuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJTVUNDRVNTOiBGb3Vu
ZCBoaXJhZ2FuYSBhbmQga2F0YWthbmEgY29ycmVjdGx5LiI7CisKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj48L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46103</attachid>
            <date>2010-01-07 17:56:09 -0800</date>
            <delta_ts>2010-01-10 17:39:32 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>JapaneseSearchPatch.txt</filename>
            <type>text/plain</type>
            <size>8532</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA1Mjk0NSkKKysrIFdlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMSArNzMs
MTcgQEAgcHVibGljOgogI2lmIFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFU
SU9OCiAKIHByaXZhdGU6CisgICAgYm9vbCBpc0JhZE1hdGNoKGNvbnN0IFVDaGFyKiwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7CisKICAgICBTdHJpbmcgbV90YXJnZXQ7CiAgICAgVmVjdG9yPFVDaGFy
PiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9vdmVybGFwOwogICAgIGJvb2wgbV9hdEJyZWFrOwog
CisgICAgYm9vbCBtX3RhcmdldFJlcXVpcmVzSGlyaWdhbmFLYXRha2FuYVdvcmthcm91bmQ7Cisg
ICAgVmVjdG9yPFVDaGFyPiBtX25vcm1hbGl6ZWRUYXJnZXQ7CisgICAgbXV0YWJsZSBWZWN0b3I8
VUNoYXI+IG1fbm9ybWFsaXplZE1hdGNoOworCiAjZWxzZQogCiBwcml2YXRlOgpAQCAtMTQ4OSw5
ICsxNDk1LDIwMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrU2VhcmNoZXIoKQogI2VuZGlm
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0hpcmlnYW5hT3JLYXRha2FuYShVQ2hhciBjaGFy
YWN0ZXIpCit7CisgICAgLy8gSGlyYWdhbmEKKyAgICBpZiAoY2hhcmFjdGVyID49IDB4MzA0MSAm
JiBjaGFyYWN0ZXIgPD0gMHgzMDk2KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEth
dGFrYW5hCisgICAgaWYgKGNoYXJhY3RlciA+PSAweDMwQTAgJiYgY2hhcmFjdGVyIDw9IDB4MzBG
RikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYWxmd2lkdGggS2F0YWthbmEgYW5k
IEhpcmFnYW5hCisgICAgaWYgKGNoYXJhY3RlciA+PSAweDMxRjAgJiYgY2hhcmFjdGVyIDw9IDB4
MzFGRikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBIYWxmd2lkdGggS2F0YWthbmEg
YW5kIEhpcmFnYW5hCisgICAgaWYgKGNoYXJhY3RlciA+PSAweEZGNjUgJiYgY2hhcmFjdGVyIDw9
IDB4RkY5RikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NtYWxsSGlyaWdhbmFPckthdGFrYW5hKFVDaGFyIGNoYXJh
Y3RlcikKK3sKKyAgICBBU1NFUlQoaXNIaXJpZ2FuYU9yS2F0YWthbmEoY2hhcmFjdGVyKSk7CisK
KyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2UgMHgzMDQxOgorICAgIGNhc2UgMHgz
MDQzOgorICAgIGNhc2UgMHgzMDQ1OgorICAgIGNhc2UgMHgzMDQ3OgorICAgIGNhc2UgMHgzMDQ5
OgorICAgIGNhc2UgMHgzMDYzOgorICAgIGNhc2UgMHgzMDgzOgorICAgIGNhc2UgMHgzMDg1Ogor
ICAgIGNhc2UgMHgzMDg3OgorICAgIGNhc2UgMHgzMDhFOgorICAgIGNhc2UgMHgzMDk1OgorICAg
IGNhc2UgMHgzMDk2OgorICAgIGNhc2UgMHgzMEExOgorICAgIGNhc2UgMHgzMEEzOgorICAgIGNh
c2UgMHgzMEE1OgorICAgIGNhc2UgMHgzMEE3OgorICAgIGNhc2UgMHgzMEE5OgorICAgIGNhc2Ug
MHgzMEMzOgorICAgIGNhc2UgMHgzMEUzOgorICAgIGNhc2UgMHgzMEU1OgorICAgIGNhc2UgMHgz
MEU3OgorICAgIGNhc2UgMHgzMEY1OgorICAgIGNhc2UgMHgzMEY2OgorICAgIGNhc2UgMHgzMUYw
OgorICAgIGNhc2UgMHgzMUYxOgorICAgIGNhc2UgMHgzMUYyOgorICAgIGNhc2UgMHgzMUYzOgor
ICAgIGNhc2UgMHgzMUY0OgorICAgIGNhc2UgMHgzMUY1OgorICAgIGNhc2UgMHgzMUY2OgorICAg
IGNhc2UgMHgzMUY3OgorICAgIGNhc2UgMHgzMUY4OgorICAgIGNhc2UgMHgzMUY5OgorICAgIGNh
c2UgMHgzMUZBOgorICAgIGNhc2UgMHgzMUZCOgorICAgIGNhc2UgMHgzMUZDOgorICAgIGNhc2Ug
MHgzMUZEOgorICAgIGNhc2UgMHgzMUZFOgorICAgIGNhc2UgMHgzMUZGOgorICAgIGNhc2UgMHhG
RjY3OgorICAgIGNhc2UgMHhGRjY4OgorICAgIGNhc2UgMHhGRjY5OgorICAgIGNhc2UgMHhGRjZB
OgorICAgIGNhc2UgMHhGRjZCOgorICAgIGNhc2UgMHhGRjZDOgorICAgIGNhc2UgMHhGRjZEOgor
ICAgIGNhc2UgMHhGRjZFOgorICAgIGNhc2UgMHhGRjZGOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitlbnVtIFZvaWNpbmdNYXJrVHlwZSB7Cisg
ICAgTm9Wb2ljaW5nTWFyaywKKyAgICBWb2ljZWRTb3VuZE1hcmssCisgICAgU2VtaVZvaWNlZFNv
dW5kTWFyaworfTsKKworc3RhdGljIGlubGluZSBWb2ljaW5nTWFya1R5cGUgY29tcG9zZWRWb2lj
aW5nTWFyayhVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgQVNTRVJUKGlzSGlyaWdhbmFPckthdGFr
YW5hKGNoYXJhY3RlcikpOworCisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAgICBjYXNlIDB4
MzA0QzoKKyAgICBjYXNlIDB4MzA0RToKKyAgICBjYXNlIDB4MzA1MDoKKyAgICBjYXNlIDB4MzA1
MjoKKyAgICBjYXNlIDB4MzA1NDoKKyAgICBjYXNlIDB4MzA1NjoKKyAgICBjYXNlIDB4MzA1ODoK
KyAgICBjYXNlIDB4MzA1QToKKyAgICBjYXNlIDB4MzA1QzoKKyAgICBjYXNlIDB4MzA1RToKKyAg
ICBjYXNlIDB4MzA2MDoKKyAgICBjYXNlIDB4MzA2MjoKKyAgICBjYXNlIDB4MzA2NToKKyAgICBj
YXNlIDB4MzA2NzoKKyAgICBjYXNlIDB4MzA2OToKKyAgICBjYXNlIDB4MzA3MDoKKyAgICBjYXNl
IDB4MzA3MzoKKyAgICBjYXNlIDB4MzA3NjoKKyAgICBjYXNlIDB4MzA3OToKKyAgICBjYXNlIDB4
MzA3QzoKKyAgICBjYXNlIDB4MzA5NDoKKyAgICBjYXNlIDB4MzBBQzoKKyAgICBjYXNlIDB4MzBB
RToKKyAgICBjYXNlIDB4MzBCMDoKKyAgICBjYXNlIDB4MzBCMjoKKyAgICBjYXNlIDB4MzBCNDoK
KyAgICBjYXNlIDB4MzBCNjoKKyAgICBjYXNlIDB4MzBCODoKKyAgICBjYXNlIDB4MzBCQToKKyAg
ICBjYXNlIDB4MzBCQzoKKyAgICBjYXNlIDB4MzBCRToKKyAgICBjYXNlIDB4MzBDMDoKKyAgICBj
YXNlIDB4MzBDMjoKKyAgICBjYXNlIDB4MzBDNToKKyAgICBjYXNlIDB4MzBDNzoKKyAgICBjYXNl
IDB4MzBDOToKKyAgICBjYXNlIDB4MzBEMDoKKyAgICBjYXNlIDB4MzBEMzoKKyAgICBjYXNlIDB4
MzBENjoKKyAgICBjYXNlIDB4MzBEOToKKyAgICBjYXNlIDB4MzBEQzoKKyAgICBjYXNlIDB4MzBG
NDoKKyAgICBjYXNlIDB4MzBGNzoKKyAgICBjYXNlIDB4MzBGODoKKyAgICBjYXNlIDB4MzBGOToK
KyAgICBjYXNlIDB4MzBGQToKKyAgICBjYXNlIDB4MzBGRToKKyAgICBjYXNlIDB4RkY2RjoKKyAg
ICBjYXNlIDB4RkY4MjoKKyAgICAgICAgcmV0dXJuIFZvaWNlZFNvdW5kTWFyazsKKyAgICBjYXNl
IDB4MzA3MToKKyAgICBjYXNlIDB4MzA3NDoKKyAgICBjYXNlIDB4MzA3NzoKKyAgICBjYXNlIDB4
MzA3QToKKyAgICBjYXNlIDB4MzA3RDoKKyAgICBjYXNlIDB4MzBEMToKKyAgICBjYXNlIDB4MzBE
NDoKKyAgICBjYXNlIDB4MzBENzoKKyAgICBjYXNlIDB4MzBEQToKKyAgICBjYXNlIDB4MzBERDoK
KyAgICAgICAgcmV0dXJuIFNlbWlWb2ljZWRTb3VuZE1hcms7CisgICAgfQorICAgIHJldHVybiBO
b1ZvaWNpbmdNYXJrOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb21iaW5pbmdWb2ljaW5n
TWFyayhVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAgICBj
YXNlIDB4MzA5OToKKyAgICBjYXNlIDB4MzA5QToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGNvbnRhaW5zSGly
YWdhbmFPckthdGFrYW5hKGNvbnN0IFN0cmluZyYgcGF0dGVybikKK3sKKyAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IHBhdHRlcm4uY2hhcmFjdGVycygpOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHBhdHRlcm4ubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmIChpc0hpcmlnYW5hT3JLYXRha2FuYShjaGFyYWN0ZXJzW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyB2b2lkIG5vcm1hbGl6ZUNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPFVDaGFyPiYgYnVmZmVyKQoreworICAgIEFTU0VS
VChsZW5ndGgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSB1bm9ybV9ub3JtYWxpemUoY2hhcmFjdGVycywgbGVuZ3RoLCBV
Tk9STV9ORkMsIDAsIDAsIDAsICZzdGF0dXMpOworICAgIEFTU0VSVChzdGF0dXMgPT0gVV9CVUZG
RVJfT1ZFUkZMT1dfRVJST1IpOworICAgIEFTU0VSVChidWZmZXJTaXplKTsKKworICAgIGJ1ZmZl
ci5yZXNpemUoYnVmZmVyU2l6ZSk7CisKKyAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
dW5vcm1fbm9ybWFsaXplKGNoYXJhY3RlcnMsIGxlbmd0aCwgVU5PUk1fTkZDLCAwLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXJTaXplLCAmc3RhdHVzKTsKKyAgICBBU1NFUlQoc3RhdHVzID09IFVfU1RS
SU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcpOworfQorCiBpbmxpbmUgU2VhcmNoQnVmZmVyOjpT
ZWFyY2hCdWZmZXIoY29uc3QgU3RyaW5nJiB0YXJnZXQsIGJvb2wgaXNDYXNlU2Vuc2l0aXZlKQog
ICAgIDogbV90YXJnZXQodGFyZ2V0KQogICAgICwgbV9hdEJyZWFrKHRydWUpCisgICAgLCBtX3Rh
cmdldFJlcXVpcmVzSGlyaWdhbmFLYXRha2FuYVdvcmthcm91bmQoY29udGFpbnNIaXJhZ2FuYU9y
S2F0YWthbmEobV90YXJnZXQpKQogewogICAgIEFTU0VSVCghbV90YXJnZXQuaXNFbXB0eSgpKTsK
IApAQCAtMTUyMSw2ICsxNzIwLDkgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVy
KGNvbnN0IAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIHVzZWFy
Y2hfc2V0UGF0dGVybihzZWFyY2hlciwgbV90YXJnZXQuY2hhcmFjdGVycygpLCB0YXJnZXRMZW5n
dGgsICZzdGF0dXMpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SKTsKKworICAg
IGlmIChtX3RhcmdldFJlcXVpcmVzSGlyaWdhbmFLYXRha2FuYVdvcmthcm91bmQpCisgICAgICAg
IG5vcm1hbGl6ZUNoYXJhY3RlcnMobV90YXJnZXQuY2hhcmFjdGVycygpLCBtX3RhcmdldC5sZW5n
dGgoKSwgbV9ub3JtYWxpemVkVGFyZ2V0KTsKIH0KIAogaW5saW5lIFNlYXJjaEJ1ZmZlcjo6flNl
YXJjaEJ1ZmZlcigpCkBAIC0xNTU4LDYgKzE3NjAsNDIgQEAgaW5saW5lIHZvaWQgU2VhcmNoQnVm
ZmVyOjpyZWFjaGVkQnJlYWsoKQogICAgIG1fYXRCcmVhayA9IHRydWU7CiB9CiAKK2lubGluZSBi
b29sIFNlYXJjaEJ1ZmZlcjo6aXNCYWRNYXRjaChjb25zdCBVQ2hhciogbWF0Y2gsIHNpemVfdCBt
YXRjaExlbmd0aCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGFyZ2V0UmVxdWlyZXNIaXJpZ2FuYUth
dGFrYW5hV29ya2Fyb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbm9ybWFsaXpl
Q2hhcmFjdGVycyhtYXRjaCwgbWF0Y2hMZW5ndGgsIG1fbm9ybWFsaXplZE1hdGNoKTsKKworICAg
IGNvbnN0IFVDaGFyKiBhID0gbV9ub3JtYWxpemVkVGFyZ2V0LmJlZ2luKCk7CisgICAgY29uc3Qg
VUNoYXIqIGFFbmQgPSBtX25vcm1hbGl6ZWRUYXJnZXQuZW5kKCk7CisKKyAgICBjb25zdCBVQ2hh
ciogYiA9IG1fbm9ybWFsaXplZE1hdGNoLmJlZ2luKCk7CisgICAgY29uc3QgVUNoYXIqIGJFbmQg
PSBtX25vcm1hbGl6ZWRNYXRjaC5lbmQoKTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IHdoaWxlIChhIDwgYUVuZCAmJiAhaXNIaXJpZ2FuYU9yS2F0YWthbmEoKmEpKQorICAgICAgICAg
ICAgKythOworICAgICAgICB3aGlsZSAoYiA8IGJFbmQgJiYgIWlzSGlyaWdhbmFPckthdGFrYW5h
KCpiKSkKKyAgICAgICAgICAgICsrYjsKKyAgICAgICAgaWYgKGEgPT0gYUVuZCB8fCBiID09IGJF
bmQpIHsKKyAgICAgICAgICAgIEFTU0VSVChhID09IGFFbmQpOworICAgICAgICAgICAgQVNTRVJU
KGIgPT0gYkVuZCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGlzU21hbGxIaXJpZ2FuYU9yS2F0YWthbmEoKmEpICE9IGlzU21hbGxIaXJpZ2FuYU9y
S2F0YWthbmEoKmIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChjb21w
b3NlZFZvaWNpbmdNYXJrKCphKSAhPSBjb21wb3NlZFZvaWNpbmdNYXJrKCpiKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICArK2E7CisgICAgICAgICsrYjsKKyAgICAgICAgd2hp
bGUgKGEgPCBhRW5kICYmIGIgPCBiRW5kICYmIGlzQ29tYmluaW5nVm9pY2luZ01hcmsoKmEpICYm
IGlzQ29tYmluaW5nVm9pY2luZ01hcmsoKmIpKSB7CisgICAgICAgICAgICBpZiAoKmEgIT0gKmIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKIGlu
bGluZSBzaXplX3QgU2VhcmNoQnVmZmVyOjpzZWFyY2goc2l6ZV90JiBzdGFydCkKIHsKICAgICBz
aXplX3Qgc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKQEAgLTE1NzcsNiArMTgxNSw4IEBAIGlubGlu
ZSBzaXplX3QgU2VhcmNoQnVmZmVyOjpzZWFyY2goc2l6ZV8KIAogICAgIGludCBtYXRjaFN0YXJ0
ID0gdXNlYXJjaF9maXJzdChzZWFyY2hlciwgJnN0YXR1cyk7CiAgICAgQVNTRVJUKHN0YXR1cyA9
PSBVX1pFUk9fRVJST1IpOworCituZXh0TWF0Y2g6CiAgICAgaWYgKCEobWF0Y2hTdGFydCA+PSAw
ICYmIHN0YXRpY19jYXN0PHNpemVfdD4obWF0Y2hTdGFydCkgPCBzaXplKSkgewogICAgICAgICBB
U1NFUlQobWF0Y2hTdGFydCA9PSBVU0VBUkNIX0RPTkUpOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTE1OTEsMTIgKzE4MzEsMjEgQEAgaW5saW5lIHNpemVfdCBTZWFyY2hCdWZmZXI6OnNlYXJjaChz
aXplXwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBzaXplX3QgbWF0Y2hlZExlbmd0
aCA9IHVzZWFyY2hfZ2V0TWF0Y2hlZExlbmd0aChzZWFyY2hlcik7CisgICAgQVNTRVJUKG1hdGNo
U3RhcnQgKyBtYXRjaGVkTGVuZ3RoIDw9IHNpemUpOworCisgICAgaWYgKGlzQmFkTWF0Y2gobV9i
dWZmZXIuZGF0YSgpICsgbWF0Y2hTdGFydCwgbWF0Y2hlZExlbmd0aCkpIHsKKyAgICAgICAgbWF0
Y2hTdGFydCA9IHVzZWFyY2hfbmV4dChzZWFyY2hlciwgJnN0YXR1cyk7CisgICAgICAgIEFTU0VS
VChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SKTsKKyAgICAgICAgZ290byBuZXh0TWF0Y2g7CisgICAg
fQorCiAgICAgc2l6ZV90IG5ld1NpemUgPSBzaXplIC0gKG1hdGNoU3RhcnQgKyAxKTsKICAgICBt
ZW1tb3ZlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuZGF0YSgpICsgbWF0Y2hTdGFydCArIDEs
IG5ld1NpemUgKiBzaXplb2YoVUNoYXIpKTsKICAgICBtX2J1ZmZlci5zaHJpbmsobmV3U2l6ZSk7
CiAKICAgICBzdGFydCA9IHNpemUgLSBtYXRjaFN0YXJ0OwotICAgIHJldHVybiB1c2VhcmNoX2dl
dE1hdGNoZWRMZW5ndGgoc2VhcmNoZXIpOworICAgIHJldHVybiBtYXRjaGVkTGVuZ3RoOwogfQog
CiAjZWxzZSAvLyAhSUNVX1VOSUNPREUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0
ZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTI5NDUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi1GQUlMVVJFOiBGb3VuZCBzbWFsbCBoaXJhZ2FuYSBBIHdo
ZW4gc2VhcmNoaW5nIGZvciBoaXJhZ2FuYSBBLiBGb3VuZCBzbWFsbCBrYXRha2FuYSBBIHdoZW4g
c2VhcmNoaW5nIGZvciBrYXRha2FuYSBBLiBGb3VuZCBoYWxmd2lkdGggc21hbGwga2F0YWthbmEg
QSB3aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIGthdGFrYW5hIEEuIEZvdW5kIHNtYWxsIGhp
cmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGthdGFrYW5hIEEuIEZvdW5kIGthdGFrYW5hIEEg
d2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3aWR0aCBzbWFsbCBrYXRha2FuYSBBLiBGb3VuZCBoYWxm
d2lkdGgga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Igc21hbGwgaGlyYWdhbmEgQS4gRm91
bmQgaGlyYWdhbmEgS2Egd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5hIEdhLgorU1VDQ0VTUzog
Rm91bmQgaGlyYWdhbmEgYW5kIGthdGFrYW5hIGNvcnJlY3RseS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46249</attachid>
            <date>2010-01-10 17:39:32 -0800</date>
            <delta_ts>2010-01-10 23:02:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>KanaSearchPatch.txt</filename>
            <type>text/plain</type>
            <size>39355</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JF
U1NJT046IEphcGFuZXNlIHRleHQgc2VhcmNoIGlnbm9yZXMgc21hbGwgdnMuIGxhcmdlIGFuZCB2
b2ljaW5nIG1hcmsgZGlmZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwNDM3CisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ZpbmQta2Fu
YS5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc0thbmFMZXR0ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzU21hbGxL
YW5hTGV0dGVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjb21wb3NlZFZvaWNlZFNvdW5k
TWFyayk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDb21iaW5pbmdWb2ljZWRTb3VuZE1h
cmspOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5zS2FuYUxldHRlcnMpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZUNoYXJhY3RlcnMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVmZmVyKTogSW5pdGlhbGl6ZSB0aGUg
ZGF0YSBtZW1iZXJzCisgICAgICAgIG1fdGFyZ2V0UmVxdWlyZXNLYW5hV29ya2Fyb3VuZCBhbmQg
bV9ub3JtYWxpemVkVGFyZ2V0LgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjppc0Jh
ZE1hdGNoKTogQWRkZWQuIENoZWNrcyBmb3IgbWF0Y2hlcyB0aGF0CisgICAgICAgIElDVSdzIGRl
ZmF1bHQgY29sbGF0aW9uIGNvbnNpZGVycyBjb3JyZWN0LCBidXQgd2UgY29uc2lkZXIgaW5jb3Jy
ZWN0LgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpzZWFyY2gpOiBBZGRlZCBjb2Rl
IHRvIGNhbGwgaXNCYWRNYXRjaCBhbmQKKyAgICAgICAgbW92ZSB0byB0aGUgbmV4dCBtYXRjaCB3
aXRoIHVzZWFyY2hfbmV4dCBpZiB0aGUgcmVzdWx0IGlzIHRydWUuCisKIDIwMTAtMDEtMTAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA1MzA1NikK
KysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhleSBQcm9za3Vy
eWFrb3YuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03MywxMSArNzMsMTcgQEAgcHVibGljOgogI2lm
IFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCiAKIHByaXZhdGU6Cisg
ICAgYm9vbCBpc0JhZE1hdGNoKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisK
ICAgICBTdHJpbmcgbV90YXJnZXQ7CiAgICAgVmVjdG9yPFVDaGFyPiBtX2J1ZmZlcjsKICAgICBz
aXplX3QgbV9vdmVybGFwOwogICAgIGJvb2wgbV9hdEJyZWFrOwogCisgICAgYm9vbCBtX3Rhcmdl
dFJlcXVpcmVzS2FuYVdvcmthcm91bmQ7CisgICAgVmVjdG9yPFVDaGFyPiBtX25vcm1hbGl6ZWRU
YXJnZXQ7CisgICAgbXV0YWJsZSBWZWN0b3I8VUNoYXI+IG1fbm9ybWFsaXplZE1hdGNoOworCiAj
ZWxzZQogCiBwcml2YXRlOgpAQCAtMTQ4OSw5ICsxNDk1LDIwOCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgdW5sb2NrU2VhcmNoZXIoKQogI2VuZGlmCiB9CiAKKy8vIElDVSdzIHNlYXJjaCBpZ25vcmVz
IHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHNtYWxsIGthbmEgbGV0dGVycyBhbmQgb25lcworLy8g
dGhhdCBhcmUgbm90IHNtYWxsLCBhbmQgYWxzbyBjaGFyYWN0ZXJzIHRoYXQgZGlmZmVyIG9ubHkg
aW4gdGhlIHZvaWNpbmcKKy8vIG1hcmtzIHdoZW4gY29uc2lkZXJpbmcgb25seSBwcmltYXJ5IGNv
bGxhdGlvbiBzdHJlbmd0aCBkaWZmcmVuY2VzLgorLy8gVGhpcyBpcyBub3QgaGVscGZ1bCBmb3Ig
ZW5kIHVzZXJzLCBzaW5jZSB0aGVzZSBkaWZmZXJlbmNlcyBtYWtlIHdvcmRzCisvLyBkaXN0aW5j
dCwgc28gZm9yIG91ciBwdXJwb3NlcyB3ZSBuZWVkIHRoZXNlIHRvIGJlIGNvbnNpZGVyZWQuCisv
LyBUaGUgVW5pY29kZSBmb2xrcyBkbyBub3QgdGhpbmsgdGhlIGNvbGxhdGlvbiBhbGdvcml0aG0g
c2hvdWxkIGJlCisvLyBjaGFuZ2VkLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSB3b3VsZCBsaWtl
IHRvIHRhaWxvciB0aGUgSUNVIHNlYXJjaGVyLAorLy8gYnV0IHdlIGNhbid0IGdldCB0aGF0IHRv
IHdvcmsgeWV0LiBTbyBpbnN0ZWFkLCB3ZSBjaGVjayBmb3IgY2FzZXMgd2hlcmUKKy8vIHRoZXNl
IGRpZmZlcmVuY2VzIG9jY3VyLCBhbmQgc2tpcCB0aG9zZSBtYXRjaGVzLgorCisvLyBXZSByZWZl
ciB0byB0aGUgYWJvdmUgdGVjaG5pcXVlIGFzIHRoZSAia2FuYSB3b3JrYXJvdW5kIi4gVGhlIG5l
eHQgZmV3CisvLyBmdW5jdGlvbnMgYXJlIGhlbHBlciBmdW5jdGlub3MgZm9yIHRoZSBrYW5hIHdv
cmthcm91bmQuCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0thbmFMZXR0ZXIoVUNoYXIgY2hhcmFj
dGVyKQoreworICAgIC8vIEhpcmFnYW5hIGxldHRlcnMuCisgICAgaWYgKGNoYXJhY3RlciA+PSAw
eDMwNDEgJiYgY2hhcmFjdGVyIDw9IDB4MzA5NikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBLYXRha2FuYSBsZXR0ZXJzLgorICAgIGlmIChjaGFyYWN0ZXIgPj0gMHgzMEExICYmIGNo
YXJhY3RlciA8PSAweDMwRkEpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjaGFyYWN0
ZXIgPj0gMHgzMUYwICYmIGNoYXJhY3RlciA8PSAweDMxRkYpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSGFsZndpZHRoIGthdGFrYW5hIGxldHRlcnMuCisgICAgaWYgKGNoYXJhY3Rl
ciA+PSAweEZGNjYgJiYgY2hhcmFjdGVyIDw9IDB4RkY5RCAmJiBjaGFyYWN0ZXIgIT0gMHhGRjcw
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj
IGlubGluZSBib29sIGlzU21hbGxLYW5hTGV0dGVyKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBB
U1NFUlQoaXNLYW5hTGV0dGVyKGNoYXJhY3RlcikpOworCisgICAgc3dpdGNoIChjaGFyYWN0ZXIp
IHsKKyAgICBjYXNlIDB4MzA0MTogLy8gSElSQUdBTkEgTEVUVEVSIFNNQUxMIEEKKyAgICBjYXNl
IDB4MzA0MzogLy8gSElSQUdBTkEgTEVUVEVSIFNNQUxMIEkKKyAgICBjYXNlIDB4MzA0NTogLy8g
SElSQUdBTkEgTEVUVEVSIFNNQUxMIFUKKyAgICBjYXNlIDB4MzA0NzogLy8gSElSQUdBTkEgTEVU
VEVSIFNNQUxMIEUKKyAgICBjYXNlIDB4MzA0OTogLy8gSElSQUdBTkEgTEVUVEVSIFNNQUxMIE8K
KyAgICBjYXNlIDB4MzA2MzogLy8gSElSQUdBTkEgTEVUVEVSIFNNQUxMIFRVCisgICAgY2FzZSAw
eDMwODM6IC8vIEhJUkFHQU5BIExFVFRFUiBTTUFMTCBZQQorICAgIGNhc2UgMHgzMDg1OiAvLyBI
SVJBR0FOQSBMRVRURVIgU01BTEwgWVUKKyAgICBjYXNlIDB4MzA4NzogLy8gSElSQUdBTkEgTEVU
VEVSIFNNQUxMIFlPCisgICAgY2FzZSAweDMwOEU6IC8vIEhJUkFHQU5BIExFVFRFUiBTTUFMTCBX
QQorICAgIGNhc2UgMHgzMDk1OiAvLyBISVJBR0FOQSBMRVRURVIgU01BTEwgS0EKKyAgICBjYXNl
IDB4MzA5NjogLy8gSElSQUdBTkEgTEVUVEVSIFNNQUxMIEtFCisgICAgY2FzZSAweDMwQTE6IC8v
IEtBVEFLQU5BIExFVFRFUiBTTUFMTCBBCisgICAgY2FzZSAweDMwQTM6IC8vIEtBVEFLQU5BIExF
VFRFUiBTTUFMTCBJCisgICAgY2FzZSAweDMwQTU6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBV
CisgICAgY2FzZSAweDMwQTc6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBFCisgICAgY2FzZSAw
eDMwQTk6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBPCisgICAgY2FzZSAweDMwQzM6IC8vIEtB
VEFLQU5BIExFVFRFUiBTTUFMTCBUVQorICAgIGNhc2UgMHgzMEUzOiAvLyBLQVRBS0FOQSBMRVRU
RVIgU01BTEwgWUEKKyAgICBjYXNlIDB4MzBFNTogLy8gS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlV
CisgICAgY2FzZSAweDMwRTc6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTworICAgIGNhc2Ug
MHgzMEVFOiAvLyBLQVRBS0FOQSBMRVRURVIgU01BTEwgV0EKKyAgICBjYXNlIDB4MzBGNTogLy8g
S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtBCisgICAgY2FzZSAweDMwRjY6IC8vIEtBVEFLQU5BIExF
VFRFUiBTTUFMTCBLRQorICAgIGNhc2UgMHgzMUYwOiAvLyBLQVRBS0FOQSBMRVRURVIgU01BTEwg
S1UKKyAgICBjYXNlIDB4MzFGMTogLy8gS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFNJCisgICAgY2Fz
ZSAweDMxRjI6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBTVQorICAgIGNhc2UgMHgzMUYzOiAv
LyBLQVRBS0FOQSBMRVRURVIgU01BTEwgVE8KKyAgICBjYXNlIDB4MzFGNDogLy8gS0FUQUtBTkEg
TEVUVEVSIFNNQUxMIE5VCisgICAgY2FzZSAweDMxRjU6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFM
TCBIQQorICAgIGNhc2UgMHgzMUY2OiAvLyBLQVRBS0FOQSBMRVRURVIgU01BTEwgSEkKKyAgICBj
YXNlIDB4MzFGNzogLy8gS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEhVCisgICAgY2FzZSAweDMxRjg6
IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBIRQorICAgIGNhc2UgMHgzMUY5OiAvLyBLQVRBS0FO
QSBMRVRURVIgU01BTEwgSE8KKyAgICBjYXNlIDB4MzFGQTogLy8gS0FUQUtBTkEgTEVUVEVSIFNN
QUxMIE1VCisgICAgY2FzZSAweDMxRkI6IC8vIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBSQQorICAg
IGNhc2UgMHgzMUZDOiAvLyBLQVRBS0FOQSBMRVRURVIgU01BTEwgUkkKKyAgICBjYXNlIDB4MzFG
RDogLy8gS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFJVCisgICAgY2FzZSAweDMxRkU6IC8vIEtBVEFL
QU5BIExFVFRFUiBTTUFMTCBSRQorICAgIGNhc2UgMHgzMUZGOiAvLyBLQVRBS0FOQSBMRVRURVIg
U01BTEwgUk8KKyAgICBjYXNlIDB4RkY2NzogLy8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBT
TUFMTCBBCisgICAgY2FzZSAweEZGNjg6IC8vIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01B
TEwgSQorICAgIGNhc2UgMHhGRjY5OiAvLyBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxM
IFUKKyAgICBjYXNlIDB4RkY2QTogLy8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBF
CisgICAgY2FzZSAweEZGNkI6IC8vIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgTwor
ICAgIGNhc2UgMHhGRjZDOiAvLyBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBCisg
ICAgY2FzZSAweEZGNkQ6IC8vIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWVUKKyAg
ICBjYXNlIDB4RkY2RTogLy8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTworICAg
IGNhc2UgMHhGRjZGOiAvLyBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFRVCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2VudW0gVm9p
Y2VkU291bmRNYXJrVHlwZSB7IE5vVm9pY2VkU291bmRNYXJrLCBWb2ljZWRTb3VuZE1hcmssIFNl
bWlWb2ljZWRTb3VuZE1hcmsgfTsKKworc3RhdGljIGlubGluZSBWb2ljZWRTb3VuZE1hcmtUeXBl
IGNvbXBvc2VkVm9pY2VkU291bmRNYXJrKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQo
aXNLYW5hTGV0dGVyKGNoYXJhY3RlcikpOworCisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAg
ICBjYXNlIDB4MzA0QzogLy8gSElSQUdBTkEgTEVUVEVSIEdBCisgICAgY2FzZSAweDMwNEU6IC8v
IEhJUkFHQU5BIExFVFRFUiBHSQorICAgIGNhc2UgMHgzMDUwOiAvLyBISVJBR0FOQSBMRVRURVIg
R1UKKyAgICBjYXNlIDB4MzA1MjogLy8gSElSQUdBTkEgTEVUVEVSIEdFCisgICAgY2FzZSAweDMw
NTQ6IC8vIEhJUkFHQU5BIExFVFRFUiBHTworICAgIGNhc2UgMHgzMDU2OiAvLyBISVJBR0FOQSBM
RVRURVIgWkEKKyAgICBjYXNlIDB4MzA1ODogLy8gSElSQUdBTkEgTEVUVEVSIFpJCisgICAgY2Fz
ZSAweDMwNUE6IC8vIEhJUkFHQU5BIExFVFRFUiBaVQorICAgIGNhc2UgMHgzMDVDOiAvLyBISVJB
R0FOQSBMRVRURVIgWkUKKyAgICBjYXNlIDB4MzA1RTogLy8gSElSQUdBTkEgTEVUVEVSIFpPCisg
ICAgY2FzZSAweDMwNjA6IC8vIEhJUkFHQU5BIExFVFRFUiBEQQorICAgIGNhc2UgMHgzMDYyOiAv
LyBISVJBR0FOQSBMRVRURVIgREkKKyAgICBjYXNlIDB4MzA2NTogLy8gSElSQUdBTkEgTEVUVEVS
IERVCisgICAgY2FzZSAweDMwNjc6IC8vIEhJUkFHQU5BIExFVFRFUiBERQorICAgIGNhc2UgMHgz
MDY5OiAvLyBISVJBR0FOQSBMRVRURVIgRE8KKyAgICBjYXNlIDB4MzA3MDogLy8gSElSQUdBTkEg
TEVUVEVSIEJBCisgICAgY2FzZSAweDMwNzM6IC8vIEhJUkFHQU5BIExFVFRFUiBCSQorICAgIGNh
c2UgMHgzMDc2OiAvLyBISVJBR0FOQSBMRVRURVIgQlUKKyAgICBjYXNlIDB4MzA3OTogLy8gSElS
QUdBTkEgTEVUVEVSIEJFCisgICAgY2FzZSAweDMwN0M6IC8vIEhJUkFHQU5BIExFVFRFUiBCTwor
ICAgIGNhc2UgMHgzMDk0OiAvLyBISVJBR0FOQSBMRVRURVIgVlUKKyAgICBjYXNlIDB4MzBBQzog
Ly8gS0FUQUtBTkEgTEVUVEVSIEdBCisgICAgY2FzZSAweDMwQUU6IC8vIEtBVEFLQU5BIExFVFRF
UiBHSQorICAgIGNhc2UgMHgzMEIwOiAvLyBLQVRBS0FOQSBMRVRURVIgR1UKKyAgICBjYXNlIDB4
MzBCMjogLy8gS0FUQUtBTkEgTEVUVEVSIEdFCisgICAgY2FzZSAweDMwQjQ6IC8vIEtBVEFLQU5B
IExFVFRFUiBHTworICAgIGNhc2UgMHgzMEI2OiAvLyBLQVRBS0FOQSBMRVRURVIgWkEKKyAgICBj
YXNlIDB4MzBCODogLy8gS0FUQUtBTkEgTEVUVEVSIFpJCisgICAgY2FzZSAweDMwQkE6IC8vIEtB
VEFLQU5BIExFVFRFUiBaVQorICAgIGNhc2UgMHgzMEJDOiAvLyBLQVRBS0FOQSBMRVRURVIgWkUK
KyAgICBjYXNlIDB4MzBCRTogLy8gS0FUQUtBTkEgTEVUVEVSIFpPCisgICAgY2FzZSAweDMwQzA6
IC8vIEtBVEFLQU5BIExFVFRFUiBEQQorICAgIGNhc2UgMHgzMEMyOiAvLyBLQVRBS0FOQSBMRVRU
RVIgREkKKyAgICBjYXNlIDB4MzBDNTogLy8gS0FUQUtBTkEgTEVUVEVSIERVCisgICAgY2FzZSAw
eDMwQzc6IC8vIEtBVEFLQU5BIExFVFRFUiBERQorICAgIGNhc2UgMHgzMEM5OiAvLyBLQVRBS0FO
QSBMRVRURVIgRE8KKyAgICBjYXNlIDB4MzBEMDogLy8gS0FUQUtBTkEgTEVUVEVSIEJBCisgICAg
Y2FzZSAweDMwRDM6IC8vIEtBVEFLQU5BIExFVFRFUiBCSQorICAgIGNhc2UgMHgzMEQ2OiAvLyBL
QVRBS0FOQSBMRVRURVIgQlUKKyAgICBjYXNlIDB4MzBEOTogLy8gS0FUQUtBTkEgTEVUVEVSIEJF
CisgICAgY2FzZSAweDMwREM6IC8vIEtBVEFLQU5BIExFVFRFUiBCTworICAgIGNhc2UgMHgzMEY0
OiAvLyBLQVRBS0FOQSBMRVRURVIgVlUKKyAgICBjYXNlIDB4MzBGNzogLy8gS0FUQUtBTkEgTEVU
VEVSIFZBCisgICAgY2FzZSAweDMwRjg6IC8vIEtBVEFLQU5BIExFVFRFUiBWSQorICAgIGNhc2Ug
MHgzMEY5OiAvLyBLQVRBS0FOQSBMRVRURVIgVkUKKyAgICBjYXNlIDB4MzBGQTogLy8gS0FUQUtB
TkEgTEVUVEVSIFZPCisgICAgY2FzZSAweDMwRkU6IC8vIEtBVEFLQU5BIFZPSUNFRCBJVEVSQVRJ
T04gTUFSSworICAgICAgICByZXR1cm4gVm9pY2VkU291bmRNYXJrOworICAgIGNhc2UgMHgzMDcx
OiAvLyBISVJBR0FOQSBMRVRURVIgUEEKKyAgICBjYXNlIDB4MzA3NDogLy8gSElSQUdBTkEgTEVU
VEVSIFBJCisgICAgY2FzZSAweDMwNzc6IC8vIEhJUkFHQU5BIExFVFRFUiBQVQorICAgIGNhc2Ug
MHgzMDdBOiAvLyBISVJBR0FOQSBMRVRURVIgUEUKKyAgICBjYXNlIDB4MzA3RDogLy8gSElSQUdB
TkEgTEVUVEVSIFBPCisgICAgY2FzZSAweDMwRDE6IC8vIEtBVEFLQU5BIExFVFRFUiBQQQorICAg
IGNhc2UgMHgzMEQ0OiAvLyBLQVRBS0FOQSBMRVRURVIgUEkKKyAgICBjYXNlIDB4MzBENzogLy8g
S0FUQUtBTkEgTEVUVEVSIFBVCisgICAgY2FzZSAweDMwREE6IC8vIEtBVEFLQU5BIExFVFRFUiBQ
RQorICAgIGNhc2UgMHgzMEREOiAvLyBLQVRBS0FOQSBMRVRURVIgUE8KKyAgICAgICAgcmV0dXJu
IFNlbWlWb2ljZWRTb3VuZE1hcms7CisgICAgfQorICAgIHJldHVybiBOb1ZvaWNlZFNvdW5kTWFy
azsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzQ29tYmluaW5nVm9pY2VkU291bmRNYXJrKFVD
aGFyIGNoYXJhY3RlcikKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2UgMHgz
MDk5OiAvLyBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUksKKyAg
ICBjYXNlIDB4MzA5QTogLy8gQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VE
IFNPVU5EIE1BUksKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGNvbnRhaW5zS2FuYUxldHRlcnMoY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKQoreworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcGF0dGVybi5j
aGFyYWN0ZXJzKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKGlz
S2FuYUxldHRlcihjaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIG5vcm1hbGl6ZUNoYXJhY3Rl
cnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPFVDaGFy
PiYgYnVmZmVyKQoreworICAgIEFTU0VSVChsZW5ndGgpOworCisgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSB1bm9ybV9ub3JtYWxp
emUoY2hhcmFjdGVycywgbGVuZ3RoLCBVTk9STV9ORkMsIDAsIDAsIDAsICZzdGF0dXMpOworICAg
IEFTU0VSVChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOworICAgIEFTU0VSVChi
dWZmZXJTaXplKTsKKworICAgIGJ1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CisKKyAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5vcm1fbm9ybWFsaXplKGNoYXJhY3RlcnMsIGxlbmd0
aCwgVU5PUk1fTkZDLCAwLCBidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplLCAmc3RhdHVzKTsKKyAg
ICBBU1NFUlQoc3RhdHVzID09IFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcpOworfQor
CiBpbmxpbmUgU2VhcmNoQnVmZmVyOjpTZWFyY2hCdWZmZXIoY29uc3QgU3RyaW5nJiB0YXJnZXQs
IGJvb2wgaXNDYXNlU2Vuc2l0aXZlKQogICAgIDogbV90YXJnZXQodGFyZ2V0KQogICAgICwgbV9h
dEJyZWFrKHRydWUpCisgICAgLCBtX3RhcmdldFJlcXVpcmVzS2FuYVdvcmthcm91bmQoY29udGFp
bnNLYW5hTGV0dGVycyhtX3RhcmdldCkpCiB7CiAgICAgQVNTRVJUKCFtX3RhcmdldC5pc0VtcHR5
KCkpOwogCkBAIC0xNTIxLDYgKzE3MjYsMTAgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNo
QnVmZmVyKGNvbnN0IAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IHVzZWFyY2hfc2V0UGF0dGVybihzZWFyY2hlciwgbV90YXJnZXQuY2hhcmFjdGVycygpLCB0YXJn
ZXRMZW5ndGgsICZzdGF0dXMpOwogICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SKTsK
KworICAgIC8vIFRoZSBrYW5hIHdvcmthcm91bmQgcmVxdWlyZXMgYSBub3JtYWxpemVkIGNvcHkg
b2YgdGhlIHRhcmdldCBzdHJpbmcuCisgICAgaWYgKG1fdGFyZ2V0UmVxdWlyZXNLYW5hV29ya2Fy
b3VuZCkKKyAgICAgICAgbm9ybWFsaXplQ2hhcmFjdGVycyhtX3RhcmdldC5jaGFyYWN0ZXJzKCks
IG1fdGFyZ2V0Lmxlbmd0aCgpLCBtX25vcm1hbGl6ZWRUYXJnZXQpOwogfQogCiBpbmxpbmUgU2Vh
cmNoQnVmZmVyOjp+U2VhcmNoQnVmZmVyKCkKQEAgLTE1NTgsNiArMTc2Nyw1OSBAQCBpbmxpbmUg
dm9pZCBTZWFyY2hCdWZmZXI6OnJlYWNoZWRCcmVhaygpCiAgICAgbV9hdEJyZWFrID0gdHJ1ZTsK
IH0KIAoraW5saW5lIGJvb2wgU2VhcmNoQnVmZmVyOjppc0JhZE1hdGNoKGNvbnN0IFVDaGFyKiBt
YXRjaCwgc2l6ZV90IG1hdGNoTGVuZ3RoKSBjb25zdAoreworICAgIC8vIFRoaXMgZnVuY3Rpb24g
aW1wbGVtZW50cyB0aGUga2FuYSB3b3JrYXJvdW5kLiBJZiB1c2VhcmNoIHRyZWF0cworICAgIC8v
IGl0IGFzIGEgbWF0Y2gsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0bywgdGhlbiBpdCdzIGEgImJhZCBt
YXRjaCIuCisgICAgaWYgKCFtX3RhcmdldFJlcXVpcmVzS2FuYVdvcmthcm91bmQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIE5vcm1hbGl6ZSBpbnRvIGEgbWF0Y2ggYnVmZmVyLiBX
ZSByZXVzZSBhIHNpbmdsZSBidWZmZXIgcmF0aGVyIHRoYW4KKyAgICAvLyBjcmVhdGluZyBhIG5l
dyBvbmUgZWFjaCB0aW1lLgorICAgIG5vcm1hbGl6ZUNoYXJhY3RlcnMobWF0Y2gsIG1hdGNoTGVu
Z3RoLCBtX25vcm1hbGl6ZWRNYXRjaCk7CisKKyAgICBjb25zdCBVQ2hhciogYSA9IG1fbm9ybWFs
aXplZFRhcmdldC5iZWdpbigpOworICAgIGNvbnN0IFVDaGFyKiBhRW5kID0gbV9ub3JtYWxpemVk
VGFyZ2V0LmVuZCgpOworCisgICAgY29uc3QgVUNoYXIqIGIgPSBtX25vcm1hbGl6ZWRNYXRjaC5i
ZWdpbigpOworICAgIGNvbnN0IFVDaGFyKiBiRW5kID0gbV9ub3JtYWxpemVkTWF0Y2guZW5kKCk7
CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAvLyBTa2lwIHJ1bnMgb2Ygbm9uLWthbmEt
bGV0dGVyIGNoYXJhY3RlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHdlIGNhbgorICAgICAgICAv
LyBjb3JyZWN0bHkgaGFuZGxlIHN0cmluZ3Mgd2hlcmUgdGhlIHRhcmdldCBhbmQgbWF0Y2ggaGF2
ZSBkaWZmZXJlbnQtbGVuZ3RoCisgICAgICAgIC8vIHJ1bnMgb2YgY2hhcmFjdGVycyB0aGF0IG1h
dGNoLCB3aGlsZSBzdGlsbCBkb3VibGUgY2hlY2tpbmcgdGhlIGNvcnJlY3RuZXNzCisgICAgICAg
IC8vIG9mIG1hdGNoZXMgb2Yga2FuYSBsZXR0ZXJzIHdpdGggb3RoZXIga2FuYSBsZXR0ZXJzLgor
ICAgICAgICB3aGlsZSAoYSAhPSBhRW5kICYmICFpc0thbmFMZXR0ZXIoKmEpKQorICAgICAgICAg
ICAgKythOworICAgICAgICB3aGlsZSAoYiAhPSBiRW5kICYmICFpc0thbmFMZXR0ZXIoKmIpKQor
ICAgICAgICAgICAgKytiOworCisgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiBl
aXRoZXIgdGhlIHRhcmdldCBvciB0aGUgbWF0Y2gsIHdlIHNob3VsZCBoYXZlCisgICAgICAgIC8v
IHJlYWNoZWQgdGhlIGVuZCBvZiBib3RoOyBib3RoIHNob3VsZCBoYXZlIHRoZSBzYW1lIG51bWJl
ciBvZiBrYW5hIGxldHRlcnMuCisgICAgICAgIGlmIChhID09IGFFbmQgfHwgYiA9PSBiRW5kKSB7
CisgICAgICAgICAgICBBU1NFUlQoYSA9PSBhRW5kKTsKKyAgICAgICAgICAgIEFTU0VSVChiID09
IGJFbmQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2hlY2sgZm9yIGRpZmZlcmVuY2VzIGluIHRoZSBrYW5hIGxldHRlciBjaGFyYWN0ZXIgaXRz
ZWxmLgorICAgICAgICBpZiAoaXNTbWFsbEthbmFMZXR0ZXIoKmEpICE9IGlzU21hbGxLYW5hTGV0
dGVyKCpiKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoY29tcG9zZWRW
b2ljZWRTb3VuZE1hcmsoKmEpICE9IGNvbXBvc2VkVm9pY2VkU291bmRNYXJrKCpiKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICArK2E7CisgICAgICAgICsrYjsKKworICAgICAg
ICAvLyBDaGVjayBmb3IgZGlmZmVyZW5jZXMgaW4gY29tYmluaW5nIHZvaWNlZCBzb3VuZCBtYXJr
cyBmb3VuZCBhZnRlciB0aGUgbGV0dGVyLgorICAgICAgICB3aGlsZSAoYSAhPSBhRW5kICYmIGIg
IT0gYkVuZCAmJiBpc0NvbWJpbmluZ1ZvaWNlZFNvdW5kTWFyaygqYSkgJiYgaXNDb21iaW5pbmdW
b2ljZWRTb3VuZE1hcmsoKmIpKSB7CisgICAgICAgICAgICBpZiAoKmEgIT0gKmIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICArK2E7CisgICAgICAgICAgICArK2I7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIGlubGluZSBzaXplX3QgU2VhcmNoQnVmZmVyOjpzZWFy
Y2goc2l6ZV90JiBzdGFydCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsK
QEAgLTE1NzcsNiArMTgzOSw4IEBAIGlubGluZSBzaXplX3QgU2VhcmNoQnVmZmVyOjpzZWFyY2go
c2l6ZV8KIAogICAgIGludCBtYXRjaFN0YXJ0ID0gdXNlYXJjaF9maXJzdChzZWFyY2hlciwgJnN0
YXR1cyk7CiAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IpOworCituZXh0TWF0Y2g6
CiAgICAgaWYgKCEobWF0Y2hTdGFydCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obWF0Y2hT
dGFydCkgPCBzaXplKSkgewogICAgICAgICBBU1NFUlQobWF0Y2hTdGFydCA9PSBVU0VBUkNIX0RP
TkUpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE1OTEsMTIgKzE4NTUsMjIgQEAgaW5saW5lIHNp
emVfdCBTZWFyY2hCdWZmZXI6OnNlYXJjaChzaXplXwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICBzaXplX3QgbWF0Y2hlZExlbmd0aCA9IHVzZWFyY2hfZ2V0TWF0Y2hlZExlbmd0aChz
ZWFyY2hlcik7CisgICAgQVNTRVJUKG1hdGNoU3RhcnQgKyBtYXRjaGVkTGVuZ3RoIDw9IHNpemUp
OworCisgICAgLy8gSWYgdGhpcyBtYXRjaCBpcyAiYmFkIiwgbW92ZSBvbiB0byB0aGUgbmV4dCBt
YXRjaC4KKyAgICBpZiAoaXNCYWRNYXRjaChtX2J1ZmZlci5kYXRhKCkgKyBtYXRjaFN0YXJ0LCBt
YXRjaGVkTGVuZ3RoKSkgeworICAgICAgICBtYXRjaFN0YXJ0ID0gdXNlYXJjaF9uZXh0KHNlYXJj
aGVyLCAmc3RhdHVzKTsKKyAgICAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IpOwor
ICAgICAgICBnb3RvIG5leHRNYXRjaDsKKyAgICB9CisKICAgICBzaXplX3QgbmV3U2l6ZSA9IHNp
emUgLSAobWF0Y2hTdGFydCArIDEpOwogICAgIG1lbW1vdmUobV9idWZmZXIuZGF0YSgpLCBtX2J1
ZmZlci5kYXRhKCkgKyBtYXRjaFN0YXJ0ICsgMSwgbmV3U2l6ZSAqIHNpemVvZihVQ2hhcikpOwog
ICAgIG1fYnVmZmVyLnNocmluayhuZXdTaXplKTsKIAogICAgIHN0YXJ0ID0gc2l6ZSAtIG1hdGNo
U3RhcnQ7Ci0gICAgcmV0dXJuIHVzZWFyY2hfZ2V0TWF0Y2hlZExlbmd0aChzZWFyY2hlcik7Cisg
ICAgcmV0dXJuIG1hdGNoZWRMZW5ndGg7CiB9CiAKICNlbHNlIC8vICFJQ1VfVU5JQ09ERQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTMwNTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMS0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUkVHUkVTU0lPTjogSmFwYW5lc2UgdGV4dCBzZWFyY2ggaWdub3JlcyBzbWFsbCB2cy4gbGFy
Z2UgYW5kIHZvaWNpbmcgbWFyayBkaWZmZXJlbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0MzcKKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2phcGFuZXNlLWthbmEtbGV0dGVycy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisg
ICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0
bWw6IFJlbW92ZWQuCisKKyAgICAgICAgKiBmYXN0L3RleHQvZmluZC1rYW5hLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ZpbmQta2FuYS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3RleHQvc2NyaXB0LXRlc3RzL2ZpbmQta2FuYS5qczogQWRkZWQuCisgICAg
ICAgIFRoaXMgaW5jbHVkZXMgYWxsIHRoZSB0ZXN0cyB0aGF0IHdlcmUgaW4gdGhlIG9sZCB0ZXN0
IHJlbW92ZWQgYWJvdmUsIHdpdGggdGhyZWUKKyAgICAgICAgZGlmZmVyZW5jZXM6CisgICAgICAg
ICAgICAxKSBNb3ZlZCBvdXQgb2YgImludGVybmF0aW9uYWwiIGRpcmVjdG9yeSBiZWNhdXNlIE1p
dHogd2FudHMgdG8gcGhhc2UgdGhhdAorICAgICAgICAgICAgICAgZGlyZWN0b3J5IG91dC4KKyAg
ICAgICAgICAgIDIpIEFkZGVkIG1vcmUgdGVzdHMgdG8gY292ZXIgbW9yZSBjYXNlcyBpbnZvbHZp
bmcgdGhpbmdzIGxpa2UgZGVjb21wb3NlZAorICAgICAgICAgICAgICAgY2hhcmFjdGVycyBhbmQg
ZGlmZmVyZW50IHZvaWNlIG1hcmtzLgorICAgICAgICAgICAgMykgVXNlIHNjcmlwdC10ZXN0cywg
c28gaXQgZG9lc24ndCBqdXN0IGxpc3QgZmFpbGluZyB0ZXN0cy4KKyAgICAgICAgV2UgY291bGQg
c3RpbGwgdGVzdCBldmVuIG1vcmUsIGJ1dCB0aGlzIHNob3VsZCBhdCBsZWFzdCBjb3ZlciBhbGwg
dGhlIGxpbmVzIG9mCisgICAgICAgIGNvZGUgaW4gdGhlIGN1cnJlbnQgYnVnIGZpeCBwYXRjaC4K
KwogMjAxMC0wMS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2Zp
bmQta2FuYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ZpbmQta2FuYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3RleHQvZmluZC1rYW5hLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUg
QEAKK1Rlc3RzIGZpbmQgZm9yIHN0cmluZ3Mgd2l0aCBrYW5hIGxldHRlcnMgaW4gdGhlbS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0V4YWN0IG1hdGNoZXMgZmlyc3QgYXMgYSBi
YXNlbGluZQorCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGRlY29t
cG9zZWRIaXJhZ2FuYUxldHRlckdhKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEth
dGFrYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRLYXRha2FuYUxldHRlckdhKSBpcyB0cnVlCitQQVNT
IGNhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUsIGRlY29tcG9z
ZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoaGFs
ZndpZHRoS2F0YWthbmFMZXR0ZXJBLCBoYWxmd2lkdGhLYXRha2FuYUxldHRlckEpIGlzIHRydWUK
K1BBU1MgY2FuRmluZChoYWxmd2lkdGhLYXRha2FuYUxldHRlclNtYWxsQSwgaGFsZndpZHRoS2F0
YWthbmFMZXR0ZXJTbWFsbEEpIGlzIHRydWUKK1BBU1MgY2FuRmluZChoaXJhZ2FuYUxldHRlckEs
IGhpcmFnYW5hTGV0dGVyQSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyQSwg
aGlyYWdhbmFMZXR0ZXJBKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJCYSwg
aGlyYWdhbmFMZXR0ZXJCYSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyR2Es
IGhpcmFnYW5hTGV0dGVyR2EpIGlzIHRydWUKK1BBU1MgY2FuRmluZChoaXJhZ2FuYUxldHRlckhh
LCBoaXJhZ2FuYUxldHRlckhhKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJL
YSwgaGlyYWdhbmFMZXR0ZXJLYSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVy
UGEsIGhpcmFnYW5hTGV0dGVyUGEpIGlzIHRydWUKK1BBU1MgY2FuRmluZChrYXRha2FuYUxldHRl
ckEsIGthdGFrYW5hTGV0dGVyQSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGthdGFrYW5hTGV0dGVy
U21hbGxBLCBrYXRha2FuYUxldHRlclNtYWxsQSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGxhdGlu
Q2FwaXRhbExldHRlckFXaXRoR3JhdmUsIGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUpIGlz
IHRydWUKKworSGlyYWdhbmEsIGthdGFrYW5hLCBhbmQgaGFsZiB3aWR0aCBrYXRha2FuYTogTXVz
dCBiZSB0cmVhdGVkIGFzIGVxdWFsCisKK1BBU1MgY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFM
ZXR0ZXJHYSwgZGVjb21wb3NlZEthdGFrYW5hTGV0dGVyR2EpIGlzIHRydWUKK1BBU1MgY2FuRmlu
ZChkZWNvbXBvc2VkS2F0YWthbmFMZXR0ZXJHYSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2Ep
IGlzIHRydWUKK1BBU1MgY2FuRmluZChoaXJhZ2FuYUxldHRlckEsIGhhbGZ3aWR0aEthdGFrYW5h
TGV0dGVyQSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyQSwga2F0YWthbmFM
ZXR0ZXJBKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoa2F0YWthbmFMZXR0ZXJTbWFsbEEsIGhpcmFn
YW5hTGV0dGVyU21hbGxBKSBpcyB0cnVlCisKK0NvbXBvc2VkIGFuZCBkZWNvbXBvc2VkIGZvcm1z
OiBNdXN0IGJlIHRyZWF0ZWQgYXMgZXF1YWwKKworUEFTUyBjYW5GaW5kKGRlY29tcG9zZWRIaXJh
Z2FuYUxldHRlckJhLCBoaXJhZ2FuYUxldHRlckJhKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoZGVj
b21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRLYXRha2FuYUxldHRlckdhKSBpcyB0
cnVlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGhpcmFnYW5hTGV0
dGVyR2EpIGlzIHRydWUKK1BBU1MgY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJHYSwg
a2F0YWthbmFMZXR0ZXJHYSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGRlY29tcG9zZWRIaXJhZ2Fu
YUxldHRlclBhLCBoaXJhZ2FuYUxldHRlclBhKSBpcyB0cnVlCitQQVNTIGNhbkZpbmQoZGVjb21w
b3NlZEthdGFrYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhKSBpcyB0cnVl
CitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUsIGxh
dGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUpIGlzIHRydWUKK1BBU1MgY2FuRmluZChoaXJhZ2Fu
YUxldHRlckJhLCBkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJCYSkgaXMgdHJ1ZQorUEFTUyBjYW5G
aW5kKGhpcmFnYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhKSBpcyB0cnVl
CitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJQYSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVy
UGEpIGlzIHRydWUKK1BBU1MgY2FuRmluZChrYXRha2FuYUxldHRlckdhLCBkZWNvbXBvc2VkSGly
YWdhbmFMZXR0ZXJHYSkgaXMgdHJ1ZQorUEFTUyBjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRlckFX
aXRoR3JhdmUsIGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlKSBpcyB0cnVl
CisKK1NtYWxsIGFuZCBub24tc21hbGwga2FuYSBsZXR0ZXJzOiBNdXN0ICpub3QqIGJlIHRyZWF0
ZWQgYXMgZXF1YWwKKworUEFTUyBjYW5GaW5kKGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyQSwgaGly
YWdhbmFMZXR0ZXJTbWFsbEEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGFsZndpZHRoS2F0YWth
bmFMZXR0ZXJTbWFsbEEsIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyQSkgaXMgZmFsc2UKK1BBU1Mg
Y2FuRmluZChoaXJhZ2FuYUxldHRlckEsIGhpcmFnYW5hTGV0dGVyU21hbGxBKSBpcyBmYWxzZQor
UEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyU21hbGxBLCBrYXRha2FuYUxldHRlckEpIGlzIGZh
bHNlCitQQVNTIGNhbkZpbmQoa2F0YWthbmFMZXR0ZXJBLCBoYWxmd2lkdGhLYXRha2FuYUxldHRl
clNtYWxsQSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChrYXRha2FuYUxldHRlclNtYWxsQSwga2F0
YWthbmFMZXR0ZXJBKSBpcyBmYWxzZQorCitLYW5hIGxldHRlcnMgd2hlcmUgdGhlIG9ubHkgZGlm
ZmVyZW5jZSBpcyBpbiB2b2ljZWQgc291bmQgbWFya3M6IE11c3QgKm5vdCogYmUgdHJlYXRlZCBh
cyBlcXVhbAorCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyQmEsIGhpcmFn
YW5hTGV0dGVySGEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0
dGVyQmEsIGhpcmFnYW5hTGV0dGVyUGEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3Nl
ZEhpcmFnYW5hTGV0dGVyR2EsIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyS2EpIGlzIGZhbHNlCitQ
QVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGhpcmFnYW5hTGV0dGVyS2Ep
IGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGhpcmFn
YW5hTGV0dGVyS2EpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0
dGVyUGEsIGhpcmFnYW5hTGV0dGVyQmEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3Nl
ZEhpcmFnYW5hTGV0dGVyUGEsIGhpcmFnYW5hTGV0dGVySGEpIGlzIGZhbHNlCitQQVNTIGNhbkZp
bmQoaGFsZndpZHRoS2F0YWthbmFMZXR0ZXJLYSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2Ep
IGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJCYSwgZGVjb21wb3NlZEhpcmFn
YW5hTGV0dGVyUGEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJCYSwgaGly
YWdhbmFMZXR0ZXJIYSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChoaXJhZ2FuYUxldHRlckJhLCBo
aXJhZ2FuYUxldHRlclBhKSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyR2Es
IGhpcmFnYW5hTGV0dGVyS2EpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJI
YSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyQmEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGly
YWdhbmFMZXR0ZXJIYSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyUGEpIGlzIGZhbHNlCitQQVNT
IGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJIYSwgaGlyYWdhbmFMZXR0ZXJCYSkgaXMgZmFsc2UKK1BB
U1MgY2FuRmluZChoaXJhZ2FuYUxldHRlckhhLCBoaXJhZ2FuYUxldHRlclBhKSBpcyBmYWxzZQor
UEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyS2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdh
KSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyS2EsIGRlY29tcG9zZWRIaXJh
Z2FuYUxldHRlckdhKSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGhpcmFnYW5hTGV0dGVyS2EsIGhp
cmFnYW5hTGV0dGVyR2EpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGlyYWdhbmFMZXR0ZXJQYSwg
ZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyQmEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoaGlyYWdh
bmFMZXR0ZXJQYSwgaGlyYWdhbmFMZXR0ZXJCYSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChoaXJh
Z2FuYUxldHRlclBhLCBoaXJhZ2FuYUxldHRlckhhKSBpcyBmYWxzZQorCitDb21wb3NlZC9kZWNv
bXBvc2VkIGZvcm0gZGlmZmVyZW5jZXMgYmVmb3JlIGthbmEgY2hhcmFjdGVycyBtdXN0IGhhdmUg
bm8gZWZmZWN0CisKK1BBU1MgY2FuRmluZChkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdp
dGhHcmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyQSwgbGF0aW5DYXBpdGFsTGV0dGVyQVdp
dGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyU21hbGxBKSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGRl
Y29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGFsZndpZHRoS2F0YWthbmFM
ZXR0ZXJTbWFsbEEsIGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRh
a2FuYUxldHRlckEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRh
bExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckEsIGxhdGluQ2FwaXRhbExldHRlckFX
aXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlclNtYWxsQSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChk
ZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyR2Es
IGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckdhKSBpcyB0cnVl
CitQQVNTIGNhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBo
aXJhZ2FuYUxldHRlckdhLCBsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFM
ZXR0ZXJLYSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0
dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyS2EsIGxhdGluQ2FwaXRhbExldHRlckFXaXRo
R3JhdmUgKyBoaXJhZ2FuYUxldHRlckdhKSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGRlY29tcG9z
ZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0ZXJTbWFsbEEsIGxh
dGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBrYXRha2FuYUxldHRlckEpIGlzIGZhbHNlCitQ
QVNTIGNhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBrYXRh
a2FuYUxldHRlckEsIGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRh
a2FuYUxldHRlclNtYWxsQSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChkZWNvbXBvc2VkTGF0aW5D
YXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGthdGFrYW5hTGV0dGVyU21hbGxBLCBsYXRpbkNhcGl0
YWxMZXR0ZXJBV2l0aEdyYXZlICsga2F0YWthbmFMZXR0ZXJBKSBpcyBmYWxzZQorUEFTUyBjYW5G
aW5kKGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRha2FuYUxldHRl
ckEsIGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0
ZXJTbWFsbEEpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQobGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhH
cmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyU21hbGxBLCBkZWNvbXBvc2VkTGF0aW5DYXBp
dGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyQSkgaXMgZmFsc2UK
K1BBU1MgY2FuRmluZChsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0
ZXJBLCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0
dGVyU21hbGxBKSBpcyBmYWxzZQorUEFTUyBjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRlckFXaXRo
R3JhdmUgKyBoaXJhZ2FuYUxldHRlckdhLCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdp
dGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyR2EpIGlzIHRydWUKK1BBU1MgY2FuRmluZChsYXRpbkNh
cGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0ZXJHYSwgZGVjb21wb3NlZExhdGlu
Q2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckthKSBpcyBmYWxzZQorUEFT
UyBjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckth
LCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVy
R2EpIGlzIGZhbHNlCitQQVNTIGNhbkZpbmQobGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSAr
IGhpcmFnYW5hTGV0dGVyU21hbGxBLCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhH
cmF2ZSArIGthdGFrYW5hTGV0dGVyQSkgaXMgZmFsc2UKK1BBU1MgY2FuRmluZChsYXRpbkNhcGl0
YWxMZXR0ZXJBV2l0aEdyYXZlICsga2F0YWthbmFMZXR0ZXJBLCBkZWNvbXBvc2VkTGF0aW5DYXBp
dGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyU21hbGxBKSBpcyBm
YWxzZQorUEFTUyBjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBrYXRha2Fu
YUxldHRlclNtYWxsQSwgZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBr
YXRha2FuYUxldHRlckEpIGlzIGZhbHNlCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvZmluZC1rYW5hLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpbmQta2Fu
YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9maW5kLWthbmEuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9maW5kLWthbmEuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9maW5kLWthbmEuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2Zp
bmQta2FuYS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0
bWwKQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9qYXBhbmVzZS1rYW5hLWxldHRlcnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2phcGFu
ZXNlLWthbmEtbGV0dGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUzMDU2KQorKysgTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi1GQUlMVVJFOiBGb3VuZCBzbWFs
bCBoaXJhZ2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoaXJhZ2FuYSBBLiBGb3VuZCBzbWFsbCBr
YXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBrYXRha2FuYSBBLiBGb3VuZCBoYWxmd2lkdGgg
c21hbGwga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIGthdGFrYW5hIEEu
IEZvdW5kIHNtYWxsIGhpcmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGthdGFrYW5hIEEuIEZv
dW5kIGthdGFrYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3aWR0aCBzbWFsbCBrYXRha2Fu
YSBBLiBGb3VuZCBoYWxmd2lkdGgga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Igc21hbGwg
aGlyYWdhbmEgQS4gRm91bmQgaGlyYWdhbmEgS2Egd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5h
IEdhLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Ut
a2FuYS1sZXR0ZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0ZXJzLmh0bWwJKHJldmlzaW9uIDUzMDU2KQor
KysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvamFwYW5lc2Uta2FuYS1sZXR0
ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+
Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgZnVuY3Rpb24gY2FuRmluZCh0YXJnZXQsIHNwZWNpbWVu
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnZXRTZWxlY3Rpb24oKS5lbXB0eSgpOwotICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBzcGVjaW1lbjsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJGaW5kU3RyaW5nIiwgZmFsc2UsIHRhcmdldCk7Ci0gICAgICAg
ICAgICB2YXIgcmVzdWx0ID0gZ2V0U2VsZWN0aW9uKCkucmFuZ2VDb3VudCAhPSAwOwotICAgICAg
ICAgICAgZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBydW5UZXN0cygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgICAgICAgICB2YXIg
c21hbGxIaXJhZ2FuYUEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0MSk7Ci0gICAgICAgICAg
ICB2YXIgaGlyYWdhbmFBID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwNDIpOwotICAgICAgICAg
ICAgdmFyIHNtYWxsS2F0YWthbmFBID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTEpOwotICAg
ICAgICAgICAgdmFyIGthdGFrYW5hQSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGEyKTsKLSAg
ICAgICAgICAgIHZhciBoYWxmd2lkdGhTbWFsbEthdGFrYW5hQSA9IFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHhmZjY3KTsKLSAgICAgICAgICAgIHZhciBoYWxmd2lkdGhLYXRha2FuYUEgPSBTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4ZmY3MSk7Ci0gICAgICAgICAgICB2YXIgaGlyYWdhbmFLYSA9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgzMDRiKTsKLSAgICAgICAgICAgIHZhciBoaXJhZ2FuYUdhID0gU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDMwNGMpOwotCi0gICAgICAgICAgICB2YXIgc3VjY2VzcyA9IHRy
dWU7Ci0KLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gIkZBSUxVUkU6IjsKLQotICAgICAgICAg
ICAgaWYgKCFjYW5GaW5kKHNtYWxsSGlyYWdhbmFBLCBzbWFsbEhpcmFnYW5hQSkpIHsKLSAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAi
IENhbm5vdCBmaW5kIHNtYWxsIGhpcmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIHNtYWxsIGhp
cmFnYW5hIEEuIjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjYW5GaW5kKGhp
cmFnYW5hQSwgaGlyYWdhbmFBKSkgewotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgaGlyYWdhbmEgQSB3aGVu
IHNlYXJjaGluZyBmb3IgaGlyYWdhbmEgQS4iOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoIWNhbkZpbmQoc21hbGxLYXRha2FuYUEsIHNtYWxsS2F0YWthbmFBKSkgewotICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIg
Q2Fubm90IGZpbmQgc21hbGwga2F0YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3Igc21hbGwga2F0
YWthbmEgQS4iOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWNhbkZpbmQoa2F0
YWthbmFBLCBrYXRha2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBrYXRha2FuYSBBIHdoZW4g
c2VhcmNoaW5nIGZvciBrYXRha2FuYSBBLiI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghY2FuRmluZChoYWxmd2lkdGhTbWFsbEthdGFrYW5hQSwgaGFsZndpZHRoU21hbGxLYXRh
a2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBoYWxmd2lkdGggc21hbGwga2F0YWthbmEgQSB3
aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIHNtYWxsIGthdGFrYW5hIEEuIjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCFjYW5GaW5kKGhhbGZ3aWR0aEthdGFrYW5hQSwgaGFs
ZndpZHRoS2F0YWthbmFBKSkgewotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgQ2Fubm90IGZpbmQgaGFsZndpZHRoIGthdGFrYW5h
IEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3aWR0aCBrYXRha2FuYSBBLiI7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICghY2FuRmluZChzbWFsbEhpcmFnYW5hQSwgc21hbGxLYXRh
a2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgKz0gIiBDYW5ub3QgZmluZCBzbWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNo
aW5nIGZvciBzbWFsbCBoaXJhZ2FuYSBBLiI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghY2FuRmluZChoaXJhZ2FuYUEsIGhhbGZ3aWR0aEthdGFrYW5hQSkpIHsKLSAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIENh
bm5vdCBmaW5kIGhhbGZ3aWR0aCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBoaXJhZ2Fu
YSBBLiI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjYW5GaW5kKHNtYWxsSGly
YWdhbmFBLCBoaXJhZ2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBzbWFsbCBoaXJhZ2FuYSBBIHdoZW4g
c2VhcmNoaW5nIGZvciBoaXJhZ2FuYSBBLiI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChjYW5GaW5kKHNtYWxsS2F0YWthbmFBLCBrYXRha2FuYUEpKSB7Ci0gICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBz
bWFsbCBrYXRha2FuYSBBIHdoZW4gc2VhcmNoaW5nIGZvciBrYXRha2FuYSBBLiI7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjYW5GaW5kKGhhbGZ3aWR0aFNtYWxsS2F0YWthbmFB
LCBoYWxmd2lkdGhLYXRha2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBoYWxmd2lkdGggc21hbGwga2F0
YWthbmEgQSB3aGVuIHNlYXJjaGluZyBmb3IgaGFsZndpZHRoIGthdGFrYW5hIEEuIjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNhbkZpbmQoc21hbGxIaXJhZ2FuYUEsIGthdGFr
YW5hQSkpIHsKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgbWVzc2FnZSArPSAiIEZvdW5kIHNtYWxsIGhpcmFnYW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9y
IGthdGFrYW5hIEEuIjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNhbkZpbmQo
a2F0YWthbmFBLCBoYWxmd2lkdGhTbWFsbEthdGFrYW5hQSkpIHsKLSAgICAgICAgICAgICAgICBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIEZvdW5kIGthdGFr
YW5hIEEgd2hlbiBzZWFyY2hpbmcgZm9yIGhhbGZ3aWR0aCBzbWFsbCBrYXRha2FuYSBBLiI7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjYW5GaW5kKGhhbGZ3aWR0aEthdGFrYW5h
QSwgc21hbGxIaXJhZ2FuYUEpKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBGb3VuZCBoYWxmd2lkdGgga2F0YWthbmEgQSB3
aGVuIHNlYXJjaGluZyBmb3Igc21hbGwgaGlyYWdhbmEgQS4iOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoY2FuRmluZChoaXJhZ2FuYUthLCBoaXJhZ2FuYUdhKSkgewotICAgICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIg
Rm91bmQgaGlyYWdhbmEgS2Egd2hlbiBzZWFyY2hpbmcgZm9yIGhpcmFnYW5hIEdhLiI7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSAiU1VDQ0VTUzogRm91bmQgaGlyYWdhbmEgYW5kIGthdGFrYW5hIGNvcnJlY3RseS4i
OwotCi0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IG1lc3NhZ2U7Ci0gICAg
ICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+
PC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3NjcmlwdC10ZXN0
cy9maW5kLWthbmEuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3Njcmlw
dC10ZXN0cy9maW5kLWthbmEuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvc2NyaXB0LXRlc3RzL2ZpbmQta2FuYS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDkg
QEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBmaW5kIGZvciBzdHJpbmdzIHdpdGgga2FuYSBsZXR0ZXJz
IGluIHRoZW0uIik7CisKK2Z1bmN0aW9uIGNhbkZpbmQodGFyZ2V0LCBzcGVjaW1lbikKK3sKKyAg
ICBnZXRTZWxlY3Rpb24oKS5lbXB0eSgpOworICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHNwZWNpbWVuKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRl
eHROb2RlKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRmluZFN0cmluZyIsIGZhbHNlLCB0
YXJnZXQpOworICAgIHZhciByZXN1bHQgPSBnZXRTZWxlY3Rpb24oKS5yYW5nZUNvdW50ICE9IDA7
CisgICAgZ2V0U2VsZWN0aW9uKCkuZW1wdHkoKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKHRleHROb2RlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgY29tYmluaW5nR3Jh
dmVBY2NlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDMwMCk7Cit2YXIgY29tYmluaW5nS2F0
YWthbmFIaXJhZ2FuYVNlbWlWb2ljZWRTb3VuZE1hcmsgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
MzA5QSk7Cit2YXIgY29tYmluaW5nS2F0YWthbmFIaXJhZ2FuYVZvaWNlZFNvdW5kTWFyayA9IFN0
cmluZy5mcm9tQ2hhckNvZGUoMHgzMDk5KTsKK3ZhciBoYWxmd2lkdGhLYXRha2FuYUxldHRlckEg
PSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY3MSk7Cit2YXIgaGFsZndpZHRoS2F0YWthbmFMZXR0
ZXJLYSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjc2KTsKK3ZhciBoYWxmd2lkdGhLYXRha2Fu
YUxldHRlclNtYWxsQSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjY3KTsKK3ZhciBoaXJhZ2Fu
YUxldHRlckEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA0Mik7Cit2YXIgaGlyYWdhbmFMZXR0
ZXJCYSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDcwKTsKK3ZhciBoaXJhZ2FuYUxldHRlckdh
ID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwNEMpOwordmFyIGhpcmFnYW5hTGV0dGVySGEgPSBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA2Rik7Cit2YXIgaGlyYWdhbmFMZXR0ZXJLYSA9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgzMDRCKTsKK3ZhciBoaXJhZ2FuYUxldHRlclBhID0gU3RyaW5nLmZy
b21DaGFyQ29kZSgweDMwNzEpOwordmFyIGhpcmFnYW5hTGV0dGVyU21hbGxBID0gU3RyaW5nLmZy
b21DaGFyQ29kZSgweDMwNDEpOwordmFyIGthdGFrYW5hTGV0dGVyQSA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHgzMEEyKTsKK3ZhciBrYXRha2FuYUxldHRlckdhID0gU3RyaW5nLmZyb21DaGFyQ29k
ZSgweDMwQUMpOwordmFyIGthdGFrYW5hTGV0dGVyS2EgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
MzBBQik7Cit2YXIga2F0YWthbmFMZXR0ZXJTbWFsbEEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
MzBBMSk7Cit2YXIgbGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHgwMEMwKTsKKwordmFyIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckJhID0gaGlyYWdh
bmFMZXR0ZXJIYSArIGNvbWJpbmluZ0thdGFrYW5hSGlyYWdhbmFWb2ljZWRTb3VuZE1hcms7Cit2
YXIgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EgPSBoaXJhZ2FuYUxldHRlckthICsgY29tYmlu
aW5nS2F0YWthbmFIaXJhZ2FuYVZvaWNlZFNvdW5kTWFyazsKK3ZhciBkZWNvbXBvc2VkSGlyYWdh
bmFMZXR0ZXJQYSA9IGhpcmFnYW5hTGV0dGVySGEgKyBjb21iaW5pbmdLYXRha2FuYUhpcmFnYW5h
U2VtaVZvaWNlZFNvdW5kTWFyazsKK3ZhciBkZWNvbXBvc2VkS2F0YWthbmFMZXR0ZXJHYSA9IGth
dGFrYW5hTGV0dGVyS2EgKyBjb21iaW5pbmdLYXRha2FuYUhpcmFnYW5hVm9pY2VkU291bmRNYXJr
OwordmFyIGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlID0gJ0EnICsgY29t
YmluaW5nR3JhdmVBY2NlbnQ7CisKK2RlYnVnKCdFeGFjdCBtYXRjaGVzIGZpcnN0IGFzIGEgYmFz
ZWxpbmUnKTsKK2RlYnVnKCcnKTsKKworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZEhpcmFn
YW5hTGV0dGVyR2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhKScsICd0cnVlJyk7CitzaG91
bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkS2F0YWthbmFMZXR0ZXJHYSwgZGVjb21wb3NlZEthdGFr
YW5hTGV0dGVyR2EpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29tcG9zZWRMYXRp
bkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlLCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdp
dGhHcmF2ZSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGFsZndpZHRoS2F0YWthbmFM
ZXR0ZXJBLCBoYWxmd2lkdGhLYXRha2FuYUxldHRlckEpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdj
YW5GaW5kKGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyU21hbGxBLCBoYWxmd2lkdGhLYXRha2FuYUxl
dHRlclNtYWxsQSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGlyYWdhbmFMZXR0ZXJB
LCBoaXJhZ2FuYUxldHRlckEpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5h
TGV0dGVyQSwgaGlyYWdhbmFMZXR0ZXJBKScsICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZCho
aXJhZ2FuYUxldHRlckJhLCBoaXJhZ2FuYUxldHRlckJhKScsICd0cnVlJyk7CitzaG91bGRCZSgn
Y2FuRmluZChoaXJhZ2FuYUxldHRlckdhLCBoaXJhZ2FuYUxldHRlckdhKScsICd0cnVlJyk7Citz
aG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlckhhLCBoaXJhZ2FuYUxldHRlckhhKScsICd0
cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlckthLCBoaXJhZ2FuYUxldHRl
ckthKScsICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlclBhLCBoaXJh
Z2FuYUxldHRlclBhKScsICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZChrYXRha2FuYUxldHRl
ckEsIGthdGFrYW5hTGV0dGVyQSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoa2F0YWth
bmFMZXR0ZXJTbWFsbEEsIGthdGFrYW5hTGV0dGVyU21hbGxBKScsICd0cnVlJyk7CitzaG91bGRC
ZSgnY2FuRmluZChsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlLCBsYXRpbkNhcGl0YWxMZXR0
ZXJBV2l0aEdyYXZlKScsICd0cnVlJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdIaXJhZ2FuYSwg
a2F0YWthbmEsIGFuZCBoYWxmIHdpZHRoIGthdGFrYW5hOiBNdXN0IGJlIHRyZWF0ZWQgYXMgZXF1
YWwnKTsKK2RlYnVnKCcnKTsKKworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5h
TGV0dGVyR2EsIGRlY29tcG9zZWRLYXRha2FuYUxldHRlckdhKScsICd0cnVlJyk7CitzaG91bGRC
ZSgnY2FuRmluZChkZWNvbXBvc2VkS2F0YWthbmFMZXR0ZXJHYSwgZGVjb21wb3NlZEhpcmFnYW5h
TGV0dGVyR2EpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5hTGV0dGVyQSwg
aGFsZndpZHRoS2F0YWthbmFMZXR0ZXJBKScsICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZCho
aXJhZ2FuYUxldHRlckEsIGthdGFrYW5hTGV0dGVyQSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2Nh
bkZpbmQoa2F0YWthbmFMZXR0ZXJTbWFsbEEsIGhpcmFnYW5hTGV0dGVyU21hbGxBKScsICd0cnVl
Jyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdDb21wb3NlZCBhbmQgZGVjb21wb3NlZCBmb3Jtczog
TXVzdCBiZSB0cmVhdGVkIGFzIGVxdWFsJyk7CitkZWJ1ZygnJyk7CisKK3Nob3VsZEJlKCdjYW5G
aW5kKGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckJhLCBoaXJhZ2FuYUxldHRlckJhKScsICd0cnVl
Jyk7CitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJHYSwgZGVjb21w
b3NlZEthdGFrYW5hTGV0dGVyR2EpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29t
cG9zZWRIaXJhZ2FuYUxldHRlckdhLCBoaXJhZ2FuYUxldHRlckdhKScsICd0cnVlJyk7CitzaG91
bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJHYSwga2F0YWthbmFMZXR0ZXJH
YSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVy
UGEsIGhpcmFnYW5hTGV0dGVyUGEpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29t
cG9zZWRLYXRha2FuYUxldHRlckdhLCBkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJHYSknLCAndHJ1
ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRo
R3JhdmUsIGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUpJywgJ3RydWUnKTsKK3Nob3VsZEJl
KCdjYW5GaW5kKGhpcmFnYW5hTGV0dGVyQmEsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckJhKScs
ICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlckdhLCBkZWNvbXBvc2Vk
SGlyYWdhbmFMZXR0ZXJHYSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGlyYWdhbmFM
ZXR0ZXJQYSwgZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyUGEpJywgJ3RydWUnKTsKK3Nob3VsZEJl
KCdjYW5GaW5kKGthdGFrYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhKScs
ICd0cnVlJyk7CitzaG91bGRCZSgnY2FuRmluZChsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZl
LCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSknLCAndHJ1ZScpOworCitk
ZWJ1ZygnJyk7CitkZWJ1ZygnU21hbGwgYW5kIG5vbi1zbWFsbCBrYW5hIGxldHRlcnM6IE11c3Qg
Km5vdCogYmUgdHJlYXRlZCBhcyBlcXVhbCcpOworZGVidWcoJycpOworCitzaG91bGRCZSgnY2Fu
RmluZChoYWxmd2lkdGhLYXRha2FuYUxldHRlckEsIGhpcmFnYW5hTGV0dGVyU21hbGxBKScsICdm
YWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGFsZndpZHRoS2F0YWthbmFMZXR0ZXJTbWFsbEEs
IGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyQSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5k
KGhpcmFnYW5hTGV0dGVyQSwgaGlyYWdhbmFMZXR0ZXJTbWFsbEEpJywgJ2ZhbHNlJyk7CitzaG91
bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlclNtYWxsQSwga2F0YWthbmFMZXR0ZXJBKScsICdm
YWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoa2F0YWthbmFMZXR0ZXJBLCBoYWxmd2lkdGhLYXRh
a2FuYUxldHRlclNtYWxsQSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGthdGFrYW5h
TGV0dGVyU21hbGxBLCBrYXRha2FuYUxldHRlckEpJywgJ2ZhbHNlJyk7CisKK2RlYnVnKCcnKTsK
K2RlYnVnKCdLYW5hIGxldHRlcnMgd2hlcmUgdGhlIG9ubHkgZGlmZmVyZW5jZSBpcyBpbiB2b2lj
ZWQgc291bmQgbWFya3M6IE11c3QgKm5vdCogYmUgdHJlYXRlZCBhcyBlcXVhbCcpOworZGVidWco
JycpOworCitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFMZXR0ZXJCYSwgaGly
YWdhbmFMZXR0ZXJIYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29tcG9zZWRI
aXJhZ2FuYUxldHRlckJhLCBoaXJhZ2FuYUxldHRlclBhKScsICdmYWxzZScpOworc2hvdWxkQmUo
J2NhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyR2EsIGhhbGZ3aWR0aEthdGFrYW5hTGV0
dGVyS2EpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkSGlyYWdhbmFM
ZXR0ZXJHYSwgaGlyYWdhbmFMZXR0ZXJLYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5k
KGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhLCBoaXJhZ2FuYUxldHRlckthKScsICdmYWxzZScp
Oworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZEhpcmFnYW5hTGV0dGVyUGEsIGhpcmFnYW5h
TGV0dGVyQmEpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkSGlyYWdh
bmFMZXR0ZXJQYSwgaGlyYWdhbmFMZXR0ZXJIYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5G
aW5kKGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyS2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdh
KScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGlyYWdhbmFMZXR0ZXJCYSwgZGVjb21w
b3NlZEhpcmFnYW5hTGV0dGVyUGEpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJh
Z2FuYUxldHRlckJhLCBoaXJhZ2FuYUxldHRlckhhKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2Nh
bkZpbmQoaGlyYWdhbmFMZXR0ZXJCYSwgaGlyYWdhbmFMZXR0ZXJQYSknLCAnZmFsc2UnKTsKK3No
b3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5hTGV0dGVyR2EsIGhpcmFnYW5hTGV0dGVyS2EpJywgJ2Zh
bHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlckhhLCBkZWNvbXBvc2VkSGly
YWdhbmFMZXR0ZXJCYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5hTGV0
dGVySGEsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlclBhKScsICdmYWxzZScpOworc2hvdWxkQmUo
J2NhbkZpbmQoaGlyYWdhbmFMZXR0ZXJIYSwgaGlyYWdhbmFMZXR0ZXJCYSknLCAnZmFsc2UnKTsK
K3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5hTGV0dGVySGEsIGhpcmFnYW5hTGV0dGVyUGEpJywg
J2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChoaXJhZ2FuYUxldHRlckthLCBkZWNvbXBvc2Vk
SGlyYWdhbmFMZXR0ZXJHYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5h
TGV0dGVyS2EsIGRlY29tcG9zZWRIaXJhZ2FuYUxldHRlckdhKScsICdmYWxzZScpOworc2hvdWxk
QmUoJ2NhbkZpbmQoaGlyYWdhbmFMZXR0ZXJLYSwgaGlyYWdhbmFMZXR0ZXJHYSknLCAnZmFsc2Un
KTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFnYW5hTGV0dGVyUGEsIGRlY29tcG9zZWRIaXJhZ2Fu
YUxldHRlckJhKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoaGlyYWdhbmFMZXR0ZXJQ
YSwgaGlyYWdhbmFMZXR0ZXJCYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGhpcmFn
YW5hTGV0dGVyUGEsIGhpcmFnYW5hTGV0dGVySGEpJywgJ2ZhbHNlJyk7CisKK2RlYnVnKCcnKTsK
K2RlYnVnKCdDb21wb3NlZC9kZWNvbXBvc2VkIGZvcm0gZGlmZmVyZW5jZXMgYmVmb3JlIGthbmEg
Y2hhcmFjdGVycyBtdXN0IGhhdmUgbm8gZWZmZWN0Jyk7CitkZWJ1ZygnJyk7CisKK3Nob3VsZEJl
KCdjYW5GaW5kKGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGFsZndp
ZHRoS2F0YWthbmFMZXR0ZXJBLCBsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdh
bmFMZXR0ZXJTbWFsbEEpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2Vk
TGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVyU21h
bGxBLCBsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGFsZndpZHRoS2F0YWthbmFMZXR0
ZXJBKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRh
bExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckEsIGxhdGluQ2FwaXRhbExldHRlckFX
aXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlclNtYWxsQSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdj
YW5GaW5kKGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFM
ZXR0ZXJHYSwgbGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyR2Ep
JywgJ3RydWUnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0
ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0ZXJHYSwgbGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhH
cmF2ZSArIGhpcmFnYW5hTGV0dGVyS2EpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChk
ZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyS2Es
IGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckdhKScsICdmYWxz
ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQoZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRo
R3JhdmUgKyBoaXJhZ2FuYUxldHRlclNtYWxsQSwgbGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2
ZSArIGthdGFrYW5hTGV0dGVyQSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGRlY29t
cG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsga2F0YWthbmFMZXR0ZXJBLCBsYXRp
bkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGFsZndpZHRoS2F0YWthbmFMZXR0ZXJTbWFsbEEp
JywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0
dGVyQVdpdGhHcmF2ZSArIGthdGFrYW5hTGV0dGVyU21hbGxBLCBsYXRpbkNhcGl0YWxMZXR0ZXJB
V2l0aEdyYXZlICsga2F0YWthbmFMZXR0ZXJBKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZp
bmQobGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhhbGZ3aWR0aEthdGFrYW5hTGV0dGVy
QSwgZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRl
clNtYWxsQSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRl
ckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRha2FuYUxldHRlclNtYWxsQSwgZGVjb21wb3NlZExh
dGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRha2FuYUxldHRlckEpJywg
J2ZhbHNlJyk7CitzaG91bGRCZSgnY2FuRmluZChsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZl
ICsgaGlyYWdhbmFMZXR0ZXJBLCBkZWNvbXBvc2VkTGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2
ZSArIGhpcmFnYW5hTGV0dGVyU21hbGxBKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQo
bGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyR2EsIGRlY29tcG9z
ZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFMZXR0ZXJHYSknLCAndHJ1
ZScpOworc2hvdWxkQmUoJ2NhbkZpbmQobGF0aW5DYXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhp
cmFnYW5hTGV0dGVyR2EsIGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsg
aGlyYWdhbmFMZXR0ZXJLYSknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGxhdGluQ2Fw
aXRhbExldHRlckFXaXRoR3JhdmUgKyBoaXJhZ2FuYUxldHRlckthLCBkZWNvbXBvc2VkTGF0aW5D
YXBpdGFsTGV0dGVyQVdpdGhHcmF2ZSArIGhpcmFnYW5hTGV0dGVyR2EpJywgJ2ZhbHNlJyk7Citz
aG91bGRCZSgnY2FuRmluZChsYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsgaGlyYWdhbmFM
ZXR0ZXJTbWFsbEEsIGRlY29tcG9zZWRMYXRpbkNhcGl0YWxMZXR0ZXJBV2l0aEdyYXZlICsga2F0
YWthbmFMZXR0ZXJBKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2NhbkZpbmQobGF0aW5DYXBpdGFs
TGV0dGVyQVdpdGhHcmF2ZSArIGthdGFrYW5hTGV0dGVyQSwgZGVjb21wb3NlZExhdGluQ2FwaXRh
bExldHRlckFXaXRoR3JhdmUgKyBoYWxmd2lkdGhLYXRha2FuYUxldHRlclNtYWxsQSknLCAnZmFs
c2UnKTsKK3Nob3VsZEJlKCdjYW5GaW5kKGxhdGluQ2FwaXRhbExldHRlckFXaXRoR3JhdmUgKyBr
YXRha2FuYUxldHRlclNtYWxsQSwgZGVjb21wb3NlZExhdGluQ2FwaXRhbExldHRlckFXaXRoR3Jh
dmUgKyBrYXRha2FuYUxldHRlckEpJywgJ2ZhbHNlJyk7CisKK2RlYnVnKCcnKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="28479"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>