<?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>24342</bug_id>
          
          <creation_ts>2009-03-03 20:42:06 -0800</creation_ts>
          <short_desc>Cannot insert a Thai character after a Thai prepend character when using ICU 4.0</short_desc>
          <delta_ts>2009-05-05 00:27:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>hbono</cc>
    
    <cc>jshin</cc>
    
    <cc>suteanfx</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112125</commentid>
    <comment_count>0</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-03 20:42:06 -0800</bug_when>
    <thetext>Copied from &quot;http://crbug.com/3523&quot;

* Additional Builds and Platforms:

Other browsers tested:
Add OK or FAIL after other browsers where you have tested this issue:
   Safari 3: OK
  Firefox 3: OK
       IE 7: OK

* Steps to Reproduce:

1. Type &quot;&amp;#3629;&amp;#3618;&amp;#3634;&amp;#3585;&amp;#3597;&amp;#3637;&amp;#3656;&amp;#3611;&amp;#3640;&amp;#3656;&amp;#3609;&quot; in an input field.
2. move cursor to before &quot;&amp;#3597;&amp;#3637;&amp;#3656;&amp;#3611;&amp;#3640;&amp;#3656;&amp;#3609;&quot; after &quot;&amp;#3629;&amp;#3618;&amp;#3634;&amp;#3585;&quot; like this  &quot;&amp;#3629;&amp;#3618;&amp;#3634;&amp;#3585;|&amp;#3597;&amp;#3637;&amp;#3656;&amp;#3611;&amp;#3640;&amp;#3656;&amp;#3609;&quot;
3. Type &quot;&amp;#3652;&amp;#3611;&quot;

* Expected Result:

The input field becomes &quot;&amp;#3629;&amp;#3618;&amp;#3634;&amp;#3585;&amp;#3652;&amp;#3611;&amp;#3597;&amp;#3637;&amp;#3656;&amp;#3611;&amp;#3640;&amp;#3656;&amp;#3609;&quot;.

* Actual Result:

The input field becomes &quot;&amp;#3629;&amp;#3618;&amp;#3634;&amp;#3585;&amp;#3652;&amp;#3597;&amp;#3637;&amp;#3656;&amp;#3611;&amp;#3611;&amp;#3640;&amp;#3656;&amp;#3609;&quot;

* Additional Information:

ICU 4.0 changed character-break rules to comply with UAX #29 &quot;http://unicode.org/reports/tr29/&quot; and prevent inserting a character break after a &quot;prepend&quot; character. Even though this rule is good for displaying Thai characters, it is not good for inputting them because Thai people are familiar with the behavior of ICU 3.8 for inputting Thai characters.
(ICU 4.0 permits inserting a character-break before a half-width katakana voiced mark again.)

To prevent this problem, we should add a new break iterator for inputting characters and use custom rules (based on the character-break rules of ICU 3.8) to avoid using the character-break rules of ICU 4.0 for inputting characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112128</commentid>
    <comment_count>1</comment_count>
      <attachid>28254</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-03 21:02:41 -0800</bug_when>
    <thetext>Created attachment 28254
A proposed fix

Even though this issue may happen all platforms which uses ICU 4.0, I&apos;m wondering if we should change &quot;TextBreakIteratorICU.cpp&quot; because this issue currently happens only on Chromium.
Would it be possible to give me your comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112135</commentid>
    <comment_count>2</comment_count>
      <attachid>28254</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-03-03 22:02:05 -0800</bug_when>
    <thetext>Comment on attachment 28254
A proposed fix

It seems incorrect that the declaration of codepointBreakIterator is wrapped in #if PLATFORM(CHROMIUM) but called on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112152</commentid>
    <comment_count>3</comment_count>
      <attachid>28254</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-04 00:17:41 -0800</bug_when>
    <thetext>Comment on attachment 28254
A proposed fix

It is definitely appropriate to fix this for all platforms that use ICU. Are all the ICU functions used here available in at least ICU 3.2?

&gt; +        This change creates a new break iterator &quot;codepointBreakIterator&quot; for
&gt; +        inputting characters.

The name &quot;codepointBreakIterator&quot; is extremely misleading. I would expect it to move by a code point (i.e. one or two UTF-16 code units).

What is this new iterator actually used for? It&apos;s called from RenderText::previousOffset() and RenderText::nextOffset(), which are used for far more than just typing text. Is it perhaps a general cursor movement iterator?

Please note that cursor movement conventions may be different on each platform, so we should clearly document what this iterator does conceptually, so that platform-specific overrides could be added safely.

+#if PLATFORM(CHROMIUM)
+    TextBreakIterator* codepointBreakIterator(const UChar*, int length);
+#endif

As mentioned by Mark, this shouldn&apos;t be Chromium-specific.

 #include &quot;TextBreakIteratorInternalICU.h&quot;
+#include &quot;AtomicString.h&quot;

Please keep include lists sorted. But I do not think you need AtomicString here. The rules string is only used once, and it is immediately destroyed.

+    if (!iterator)
+      return 0;

Incorrect indentation here.

+    if (U_FAILURE(setTextStatus))
+      return 0;

And here.

+    // This rule is based on the character-break iterator rules of ICU 3.8.
+    // http://source.icu-project.org/repos/icu/icu/tags/release-3-8/source/data/brkitr/char.txt

As mentioned above, the name &quot;codepointBreakIterator&quot; is not appropriate. It&apos;s good to tell where these rules come from, but this comment should also expand on what they are expected to do.

+    return setUpIteratorWithRules(createdCodepointBreakIterator,
+        staticCodepointBreakIterator, kRules, string, length);

There is no need to break this line, it&apos;s quite short.

&gt; Property changes on: LayoutTests/editing/inserting/insert-thai-characters-001.html
&gt; ___________________________________________________________________
&gt; Name: svn:executable
&gt;    + *

Please don&apos;t make new files executable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112176</commentid>
    <comment_count>4</comment_count>
      <attachid>28262</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-04 03:17:38 -0800</bug_when>
    <thetext>Created attachment 28262
A proposed fix 2

Thank you for your comments and sorry for sending a stupid fix which contains lots of simple mistakes.
I changed my fix to apply your comments as much as possible.
(I assume this rule set works also with ICU 3.2 because it does not contain any rules that depend on ICU 3.8 or later. But I have not verified because I don&apos;t have any platforms which use ICU 3.2. Sorry.)

Would it be possible to review the updated one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112177</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-04 03:35:10 -0800</bug_when>
    <thetext>+    // For example, we should not insert a character break after a Thai preposed
+    // character (a Thai vowel character) because it breaks a syllable.
+    // On the other hand, we should be able to move an input cursor even after
+    // a Thai preposed character.

Where should the former character break iterator come into play? Should we allow selections that only cover a prepend character, for example?

I&apos;d like to have as many examples of use cases for either iterator as possible, to avoid future confusion.

What about my AtomicString comment? I still don&apos;t think that you need atomic strings here. The reason for them to exist is quick comparison - two AtomicStrings are equal if and only if their impl pointers are equal.

+    // The only difference from the original rules is:
+    //   added &quot;!!chain&quot; to change this rule set to chained.

Please expand this comment to explain why we need to make the rule set chained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112353</commentid>
    <comment_count>6</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-05 04:13:32 -0800</bug_when>
    <thetext>Thank you for your comments.
Sorry for the lack of writing backgrounds. Yes, it is very confusing to figure
out this problem without examples.
Even though I may not be able to understand this issue totally because I&apos;m not either
a native Thai speaker or a WebKit guru who have good knowledge about WebKit, I would like
to describe the backgrounds of this issue as much as possible.

(In reply to comment #5)
&gt; +    // For example, we should not insert a character break after a Thai preposed
&gt; +    // character (a Thai vowel character) because it breaks a syllable.
&gt; +    // On the other hand, we should be able to move an input cursor even after
&gt; +    // a Thai preposed character.
&gt; 
&gt; Where should the former character break iterator come into play? Should we
&gt; allow selections that only cover a prepend character, for example?

To write from a conclusion, yes, Thai people would like to select only a prepend
character, delete it or replace it with another prepend character.

In brief, prepend characters (U+0E40,...,U+0E44 and U+0EC0,..,U+0EC4) are vowel
characters placed but they are NOT COMBINING CHARACTERS. It is a Thai alphabet
placed BEFORE a consonant to denote the first vowel of a Thai syllable.
So, a Thai syllable may look like two characters from our eyes.

To write the original problem, it is that:
  they cannot insert a Thai syllable (which consists of a prepend character &apos;A&apos;
  and a consonant &apos;B&apos; and looks like two characters &apos;AB&apos; from our eyes) before
  another Thai syllable (which consists of a consonant and combining characters
  and looks like a character &apos;C&apos; from our eyes).
  When they type a prepend character &apos;A&apos;, the input cursor moves after the end
  of the syllable &apos;C&apos; and the consonant &apos;B&apos; is inserted after the &apos;C&apos;. So, the
  actual result looks like &apos;ACB&apos; from our eyes. (Its expected result looks like
  &apos;ABC&apos; from our eyes.)
  Also, they cannot delete only a prepend character &apos;A&apos; from &apos;ACB&apos; because they
  cannot move the input cursor after the prepend character &apos;A&apos;.

To investigate this issue deeply, we noticed this issue was caused by a design
change of the character-break iterator in ICU 4.0.

Before ICU 4.0, its character-break iterator splits a string into grapheme
clusters. a grapheme cluster is a set of characters that look like only one
character from our eyes. So, it splits a Thai syllable &apos;AB&apos; which consists of
a prepend character and a consonant into two pieces, &apos;A&apos; and &apos;B&apos;.
The only exception is Japanese half-width katakana voiced marks. It does not
split a Japanese syllable which consists of a half-width katanaka and 
 half-width katakana voiced mark into pieces.

On the other hand, ICU 4.0 changed its character-break iterator to split a
string into &quot;extended&quot; grapheme clusters. For most languages, an &quot;extended&quot;
grapheme cluster is same as a grapheme cluster. But, unfortunately for Thai and
Lao, an &quot;extended&quot; grapheme cluster becomes a syllable. So, even if a Thai
syllable &apos;AB&apos; looks like two characters from our eyes, it does not split into pieces.
On the other hand, somehow, the character-break iterator of ICU 4.0 deletes the
exception for Japanese half-width katakana voiced mark, i.e. it does split a
Japanese syllable which consists of a half-width katanaka and a half-width
katakana voiced mark into pieces as it did in ICU 3.2. So, we have to re-enable
a workaround for ICU 3.2 in RenderText::previousOffset() and RenderText::nextOffset()
for ICU 4.0.

Even though future ICU may change the behaviors of its character-break iterator,
we thought we should use a custom iterator for cursor iteration to avoid problems
related to ICU versions.

&gt; I&apos;d like to have as many examples of use cases for either iterator as possible,
&gt; to avoid future confusion.

Sorry for your confusion. My description always lacks important background
information and it is confusing.
 
&gt; What about my AtomicString comment? I still don&apos;t think that you need atomic
&gt; strings here. The reason for them to exist is quick comparison - two
&gt; AtomicStrings are equal if and only if their impl pointers are equal.

Sorry again for this problem. I thought I changed this AtomicString to String,
but, actually, I forgot changing it.
 
&gt; +    // The only difference from the original rules is:
&gt; +    //   added &quot;!!chain&quot; to change this rule set to chained.
&gt;
&gt; Please expand this comment to explain why we need to make the rule set chained.

This line is for preventing two or more rules from matching to an input string.
Nevertheless, to read the latest rule set, there are not any rules matching at
once. Even though this line is harmless, I&apos;m going to remove this line to avoid
confusion.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112361</commentid>
    <comment_count>7</comment_count>
      <attachid>28262</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-05 06:38:16 -0800</bug_when>
    <thetext>Comment on attachment 28262
A proposed fix 2

I&apos;ve now built a local copy of ICU 4.0.1, and I can reproduce this problem in Safari with it. I think that the approach in this fix is absolutely correct.

Instead of inputCursorIterator, I&apos;d say &quot;cursorMovementIterator&quot; - it is not directly related to input, as it will be used for e.g. selecting non-editable text.

Looking over other uses of characterBreakIterator in WebCore, I noticed another case that might be incorrect, which is in CoreTextController::offsetForPosition(). It&apos;s better to handle it separately though.

Clearing review flag for now, as you said that you were going to submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112362</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-05 07:00:44 -0800</bug_when>
    <thetext>Ironically, ICU 4 fixes the test case from bug 15790, so I expect that this patch will break it again. That&apos;s OK, I just wanted to have it cross-referenced here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112522</commentid>
    <comment_count>9</comment_count>
      <attachid>28346</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-05 20:43:46 -0800</bug_when>
    <thetext>Created attachment 28346
a proposed fix 3

Thank you for your useful comments and sorry for my slow updates.
I renamed inputCursorIterator to cursorMovementIterator, and AtomicString to String. Also I removed a redundant &quot;!!chain;&quot; rule and updated comments.
(As for Issue 15790, I&apos;m also checking it with my local build of Chrome. I&apos;m going to update the issue when I find something.)
Would it be possible to review it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112558</commentid>
    <comment_count>10</comment_count>
      <attachid>28346</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-06 02:08:59 -0800</bug_when>
    <thetext>Comment on attachment 28346
a proposed fix 3

r=me

I&apos;m going to tweak the comments a little more when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112565</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-06 03:28:51 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/41477&gt;. Could you please check the comments that I modified for accuracy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112566</commentid>
    <comment_count>12</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2009-03-06 03:52:05 -0800</bug_when>
    <thetext>Thank you for your review and updates.

(In reply to comment #11)
&gt; Committed &lt;http://trac.webkit.org/changeset/41477&gt;. Could you please check the
&gt; comments that I modified for accuracy?

Awesome. They are pretty simple and practical for users who use WebKit. I realized I didn&apos;t consider users who use this new iterator so much. Thank you for your correction.
Also I think they are pretty accurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119931</commentid>
    <comment_count>13</comment_count>
    <who name="mossila">suteanfx</who>
    <bug_when>2009-05-05 00:27:37 -0700</bug_when>
    <thetext>this bug is found on libwebkit-1.0 gtk+, and webkitmm,too</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28254</attachid>
            <date>2009-03-03 21:02:41 -0800</date>
            <delta_ts>2009-03-04 03:17:38 -0800</delta_ts>
            <desc>A proposed fix</desc>
            <filename>issue24342-patch1.txt</filename>
            <type>text/plain</type>
            <size>16477</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDMtMDMgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzQyCisgICAgICAgIEJ1
ZyAyNDM0MjogW0Nocm9taXVtXSBjYW5ub3QgaW5zZXJ0IGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIg
YSBUaGFpCisgICAgICAgIHByZXBlbmQgY2hhcmFjdGVyCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
Y3JlYXRlcyBhIG5ldyBicmVhayBpdGVyYXRvciAiY29kZXBvaW50QnJlYWtJdGVyYXRvciIgZm9y
CisgICAgICAgIGlucHV0dGluZyBjaGFyYWN0ZXJzLgorICAgICAgICBJbiAiVGV4dEJyZWFrSXRl
cmF0b3JJQ1UuY3BwIiwgdGhpcyBicmVhayBpdGVyYXRvciB1c2VzIGN1c3RvbSBydWxlcworICAg
ICAgICBiYXNlZCBvbiB0aGUgb25lcyBvZiBJQ1UgMy44LgorICAgICAgICBPbiB0aGUgb3RoZXIg
aGFuZCwgaW4gIlRleHRCcmVha0l0ZXJhdG9yUXQuY3BwIiwgdGhpcyBicmVhayBpdGVyYXRvcgor
ICAgICAgICBqdXN0IGNhbGxzIHRoZSBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgVGVzdDogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXRoYWktY2hhcmFjdGVy
cy0wMDEuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
OiBBZGRlZCBhIG5ldyBmdW5jdGlvbiBjb2RlcG9pbnRCcmVha0l0ZXJhdG9yKCkuCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6IEltcGxlbWVudGVkIHRo
ZSBjb2RlcG9pbnRCcmVha0l0ZXJhdG9yKCkgZnVuY3Rpb24gZm9yIElDVS4KKyAgICAgICAgKFdl
YkNvcmU6OnNldFVwSXRlcmF0b3JXaXRoUnVsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmNvZGVwb2ludEJyZWFrSXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwOiBJbXBsZW1lbnRlZCB0aGUgY29kZXBvaW50QnJl
YWtJdGVyYXRvcigpIGZ1bmN0aW9uIGZvciBRdC4KKyAgICAgICAgKFdlYkNvcmU6OmNvZGVwb2lu
dEJyZWFrSXRlcmF0b3IpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHA6IENhbGwgdGhlIGNvZGVwb2ludEJyZWFrSXRlcmF0b3IoKSBmdW5jdGlvbiB3aGVuIG1vdmlu
ZyBhbiBpbnB1dCBjdXJzb3IuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpwcmV2aW91
c09mZnNldCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNl
dCk6IERpdHRvLgorCiAyMDA5LTAzLTAzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCShyZXZpc2lvbiA0MTQxNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBUZXh0QnJl
YWtJdGVyYXRvcjsKIAogICAgIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29k
IG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLgorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjb2RlcG9pbnRCcmVha0l0ZXJhdG9yKGNvbnN0
IFVDaGFyKiwgaW50IGxlbmd0aCk7CisjZW5kaWYKICAgICBUZXh0QnJlYWtJdGVyYXRvciogY2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIFRleHRC
cmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCBsZW5ndGgp
OwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhcios
IGludCBsZW5ndGgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiA0MTQxNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcg
QEAKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVS5oIgorI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCiAjaW5j
bHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTEx
NCw0ICsxMTUsNjMgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogYmksIAog
ICAgIHJldHVybiB1YnJrX2lzQm91bmRhcnkoYmksIHBvcyk7CiB9CiAKK3N0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0VXBJdGVyYXRvcldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3Is
IFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IsCisgICAgY29uc3QgY2hhciogYnJlYWtSdWxl
cywgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoIXN0cmluZykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWNyZWF0ZWRJdGVyYXRvcikgeworICAgICAg
ICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICBBdG9taWNTdHJpbmcgcnVsZXMoYnJlYWtSdWxlcyk7
CisgICAgICAgIGl0ZXJhdG9yID0gc3RhdGljX2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
X29wZW5SdWxlcyhydWxlcy5jaGFyYWN0ZXJzKCksIHJ1bGVzLmxlbmd0aCgpLCAwLCAwLCAmcGFy
c2VTdGF0dXMsICZvcGVuU3RhdHVzKSk7CisgICAgICAgIGNyZWF0ZWRJdGVyYXRvciA9IHRydWU7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNV
IGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShv
cGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7CisgICAgfQorICAgIGlmICghaXRlcmF0b3IpCisgICAg
ICByZXR1cm4gMDsKKworICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJP
UjsKKyAgICB1YnJrX3NldFRleHQoaXRlcmF0b3IsIHN0cmluZywgbGVuZ3RoLCAmc2V0VGV4dFN0
YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCitUZXh0QnJlYWtJdGVyYXRvciogY29kZXBv
aW50QnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAg
IC8vIFRoaXMgcnVsZSBpcyBiYXNlZCBvbiB0aGUgY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1
bGVzIG9mIElDVSAzLjguCisgICAgLy8gaHR0cDovL3NvdXJjZS5pY3UtcHJvamVjdC5vcmcvcmVw
b3MvaWN1L2ljdS90YWdzL3JlbGVhc2UtMy04L3NvdXJjZS9kYXRhL2Jya2l0ci9jaGFyLnR4dAor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrUnVsZXMgPQorICAgICAgICAiJENSICAgICAgPSBbXFxw
e0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDUn1dOyIKKyAgICAgICAgIiRMRiAgICAgID0gW1xc
cHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTEZ9XTsiCisgICAgICAgICIkQ29udHJvbCA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENvbnRyb2x9XTsiCisgICAgICAgICIkVm9pY2VN
YXJrcyA9IFtcXHVmZjllXFx1ZmY5Zl07IgorICAgICAgICAiJEV4dGVuZCAgPSBbXFxwe0dyYXBo
ZW1lX0NsdXN0ZXJfQnJlYWsgPSBFeHRlbmR9ICRWb2ljZU1hcmtzXTsiCisgICAgICAgICIkTCAg
ICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEx9XTsiCisgICAgICAgICIkViAg
ICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFZ9XTsiCisgICAgICAgICIkVCAg
ICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFR9XTsiCisgICAgICAgICIkTFYg
ICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWfV07IgorICAgICAgICAiJExW
VCAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVlR9XTsiCisgICAgICAgICIk
SGFuZ3VsU3lsbGFibGUgPSAkTCsgfCAoJEwqICgkTFY/ICRWKyB8ICRMViB8ICRMVlQpICRUKikg
fCAkVCs7IgorICAgICAgICAiISFjaGFpbjsiCisgICAgICAgICIhIWZvcndhcmQ7IgorICAgICAg
ICAiJENSICRMRjsiCisgICAgICAgICIoW14kQ29udHJvbCAkQ1IgJExGXSB8ICRIYW5ndWxTeWxs
YWJsZSkgJEV4dGVuZCo7IgorICAgICAgICAiISFyZXZlcnNlOyIKKyAgICAgICAgIiRCYWNrSGFu
Z3VsU3lsbGFibGUgPSAkTCsgfCAoJFQqICgkViskTFY/IHwgJExWIHwgJExWVCkgJEwqKSB8ICRU
KzsiCisgICAgICAgICIkQmFja09uZUNsdXN0ZXIgPSAoJExGICRDUikgfCAoJEV4dGVuZCogKFte
JENvbnRyb2wgJENSICRMRl0gfCAkQmFja0hhbmd1bFN5bGxhYmxlKSk7IgorICAgICAgICAiJEJh
Y2tPbmVDbHVzdGVyOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiRWKyAk
TDsiCisgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgICAgICIkVisgJFQ7IjsKKyAgICBz
dGF0aWMgYm9vbCBjcmVhdGVkQ29kZXBvaW50QnJlYWtJdGVyYXRvciA9IGZhbHNlOworICAgIHN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ29kZXBvaW50QnJlYWtJdGVyYXRvcjsKKyAg
ICByZXR1cm4gc2V0VXBJdGVyYXRvcldpdGhSdWxlcyhjcmVhdGVkQ29kZXBvaW50QnJlYWtJdGVy
YXRvciwKKyAgICAgICAgc3RhdGljQ29kZXBvaW50QnJlYWtJdGVyYXRvciwga1J1bGVzLCBzdHJp
bmcsIGxlbmd0aCk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
QnJlYWtJdGVyYXRvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
cXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDQxNDE0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2MywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKICAgICB9CiAKKyAgICBUZXh0
QnJlYWtJdGVyYXRvciogY29kZXBvaW50QnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5n
LCBpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlckJyZWFrSXRlcmF0
b3Ioc3RyaW5nLCBsZW5ndGgpOworICAgIH0KKwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5l
QnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogICAgIHsKICAg
ICAgICAgc3RhdGljIFFUZXh0Qm91bmRhcnlGaW5kZXIgKml0ZXJhdG9yID0gMDsKQEAgLTI1MCw2
ICsyNTUsMTEgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0bwogICAg
IHJldHVybiBpdGVyYXRvcjsKIH0KIAorVGV4dEJyZWFrSXRlcmF0b3IqIGNvZGVwb2ludEJyZWFr
SXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
Y2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKIFRleHRCcmVha0l0
ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCkKIHsKICAgICAvLyBu
b3QgeWV0IGltcGxlbWVudGVkCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNp
b24gNDE0MTQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhS
ZW5kZXJlZE9mZgogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBj
b25zdAogewogICAgIFN0cmluZ0ltcGwqIHNpID0gbV90ZXh0LmdldCgpOwotICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciA9IGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc2ktPmNoYXJhY3Rl
cnMoKSwgc2ktPmxlbmd0aCgpKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBj
b2RlcG9pbnRCcmVha0l0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSk7CiAg
ICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCkBAIC0xMjcw
LDcgKzEyNzAsNyBAQCBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyCiBp
bnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBTdHJp
bmdJbXBsKiBzaSA9IG1fdGV4dC5nZXQoKTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgo
KSk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY29kZXBvaW50QnJlYWtJdGVy
YXRvcihzaS0+Y2hhcmFjdGVycygpLCBzaS0+bGVuZ3RoKCkpOwogICAgIGlmICghaXRlcmF0b3Ip
CiAgICAgICAgIHJldHVybiBjdXJyZW50ICsgMTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDE0MTQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAwOS0wMy0wMyAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNDIKKyAgICAgICAgQnVnIDI0MzQyOiBbQ2hy
b21pdW1dIGNhbm5vdCBpbnNlcnQgYSBUaGFpIGNoYXJhY3RlciBhZnRlciBhIFRoYWkKKyAgICAg
ICAgcHJlcGVuZCBjaGFyYWN0ZXIKKworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgdmVyaWZpZXMg
d2UgY2FuIGluc2VydCBhIGNoYXJhY3RlciBhZnRlciBhIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXIu
CisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJh
Y3RlcnMtMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRp
bmcvaW5zZXJ0LXRoYWktY2hhcmFjdGVycy0wMDEuaHRtbDogQWRkZWQuCisKIDIwMDktMDMtMDMg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKb2huIFN1bGxpdmFuLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcv
aW5zZXJ0LXRoYWktY2hhcmFjdGVycy0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MCBAQAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViB0byAwIG9mIERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IERJViB0byAxIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBESVYgdG8gMSBvZiAjdGV4dCA+IERJViB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IERJViB0byAyIG9mICN0ZXh0ID4gRElWIGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hv
dWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBESVYgdG8g
MiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViB0
byAzIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDMgb2YgI3RleHQgPiBESVYgdG8gMyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gNCBvZiAjdGV4dCA+IERJViB0byA0IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0Rp
ZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+IERJ
ViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViB0byA1IG9mICN0ZXh0ID4g
RElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBE
SVYgdG8gNSBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4dCA+
IERJViB0byA2IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDYgb2YgI3RleHQgPiBESVYgdG8gNiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gNyBvZiAjdGV4dCA+IERJViB0byA3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDcgb2YgI3RleHQgPiBESVYgdG8gNyBvZiAjdGV4
dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViB0byA4IG9mICN0
ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDggb2YgI3Rl
eHQgPiBESVYgdG8gOCBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOSBvZiAj
dGV4dCA+IERJViB0byA5IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5v
dGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDkgb2YgI3RleHQgPiBESVYgdG8gOSBvZiAjdGV4dCA+IERJViB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMTAgb2YgI3RleHQgPiBESVYgdG8gMTAgb2YgI3RleHQgPiBESVYgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMTAgb2YgI3RleHQgPiBESVYgdG8g
MTAgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElW
IHRvIDExIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+
IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViB0byA1IG9mICN0ZXh0
ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQg
PiBESVYgdG8gNSBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4
dCA+IERJViB0byA2IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgorVGhpcyB0ZXN0IHRlc3RzIHdoZXRoZXIgd2UgY2FuIGluc2VydCBhIFRoYWkgY2hh
cmFjdGVyIGFmdGVyIGEgVGhhaSAicHJlcGVuZCIgY2hhcmFjdGVyLgorCitJZiB0aGlzIHRlc3Qg
c3VjY2VlZHMsIHlvdSBjYW4gc2VlIGEgc3RyaW5nICJzdWNjZWVkZWQiIGJlbG93LgorCisKK1N1
Y2NlZWRlZC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFp
LWNoYXJhY3RlcnMtMDAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9p
bnNlcnRpbmcvaW5zZXJ0LXRoYWktY2hhcmFjdGVycy0wMDEuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAx
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+RWRpdGluZyBUZXN0IChJbnNlcnRpbmcgYSBUaGFpIGNoYXJhY3RlciBhZnRlciBhIFRoYWkg
cHJlcGVuZCBjaGFyYWN0ZXIpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIiBs
YW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxz
Y3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5j
dGlvbiBsb2coc3RyKSB7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGki
KTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAg
ICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAg
Y29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgdGV4dGFyZWEuZm9jdXMoKTsKKyAgICB0eXBl
Q2hhcmFjdGVyQ29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUyRCkpOworICAgIHR5cGVD
aGFyYWN0ZXJDb21tYW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTIyKSk7CisgICAgdHlwZUNo
YXJhY3RlckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMzIpKTsKKyAgICB0eXBlQ2hh
cmFjdGVyQ29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUwMSkpOworICAgIHR5cGVDaGFy
YWN0ZXJDb21tYW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTBEKSk7CisgICAgdHlwZUNoYXJh
Y3RlckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMzUpKTsKKyAgICB0eXBlQ2hhcmFj
dGVyQ29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEU0OCkpOworICAgIHR5cGVDaGFyYWN0
ZXJDb21tYW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTFCKSk7CisgICAgdHlwZUNoYXJhY3Rl
ckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMzgpKTsKKyAgICB0eXBlQ2hhcmFjdGVy
Q29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEU0OCkpOworICAgIHR5cGVDaGFyYWN0ZXJD
b21tYW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTE5KSk7CisgICAgbW92ZVNlbGVjdGlvbkJh
Y2t3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7CisgICAgbW92ZVNlbGVjdGlvbkJhY2t3YXJkQnlD
aGFyYWN0ZXJDb21tYW5kKCk7CisgICAgbW92ZVNlbGVjdGlvbkJhY2t3YXJkQnlDaGFyYWN0ZXJD
b21tYW5kKCk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgw
eDBFNDQpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
MEUxQikpOworICAgIHZhciBleHBlY3RlZF9yZXN1bHQgPSAiXHUwRTJEXHUwRTIyXHUwRTMyXHUw
RTAxXHUwRTQ0XHUwRTFCXHUwRTBEXHUwRTM1XHUwRTQ4XHUwRTFCXHUwRTM4XHUwRTQ4XHUwRTE5
IjsKKyAgICBpZiAodGV4dGFyZWEudmFsdWUgPT0gZXhwZWN0ZWRfcmVzdWx0KQorICAgICAgICBs
b2coIlN1Y2NlZWRlZC4iKTsKKyAgICAgZWxzZQorICAgICAgICBsb2coIkZhaWxlZC4gQWN0dWFs
OiBcIiIgKyB0ZXh0YXJlYS52YWx1ZSArICJcIiwgRXhwZWN0ZWQ6IFwiIiArIGV4cGVjdGVkX3Jl
c3VsdCArICJcIi4iKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRl
c3QgdGVzdHMgd2hldGhlciB3ZSBjYW4gaW5zZXJ0IGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIgYSBU
aGFpICJwcmVwZW5kIiBjaGFyYWN0ZXIuPC9wPgorPHA+SWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB5
b3UgY2FuIHNlZSBhIHN0cmluZyAic3VjY2VlZGVkIiBiZWxvdy48L3A+Cis8dGV4dGFyZWEgaWQ9
InRlc3QiIHJvd3M9IjEiIGNvbHM9IjQwIj48L3RleHRhcmVhPgorPHVsIGlkPSJjb25zb2xlIj48
L3VsPgorPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK3J1bkVkaXRpbmdUZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFp
LWNoYXJhY3RlcnMtMDAxLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICAr
ICoKCg==
</data>
<flag name="review"
          id="13816"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28262</attachid>
            <date>2009-03-04 03:17:38 -0800</date>
            <delta_ts>2009-03-05 20:43:46 -0800</delta_ts>
            <desc>A proposed fix 2</desc>
            <filename>issue24342-patch2.txt</filename>
            <type>text/plain</type>
            <size>16788</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMDMtMDQgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzQyCisgICAgICAgIEJ1
ZyAyNDM0MjogW0Nocm9taXVtXSBjYW5ub3QgaW5zZXJ0IGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIg
YSBUaGFpCisgICAgICAgIHByZXBlbmQgY2hhcmFjdGVyCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
Y3JlYXRlcyBhIG5ldyBpdGVyYXRvciAiaW5wdXRDdXJzb3JJdGVyYXRvciIgZm9yIG1vdmluZyBh
biBpbnB1dCBjdXJzb3IKKyAgICAgICAgYmVjYXVzZSBjb252ZW50aW9uIHJ1bGVzIGZvciBtb3Zp
bmcgYW4gaW5wdXQgY3Vyc29yIGFyZSBub3QgYWx3YXlzIGVxdWFsIHRvIG9uZXMKKyAgICAgICAg
dXNlZCBmb3IgdGV4dCBzZWdtZW50YXRpb24uCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9ySUNV
LmNwcCB1c2VzIGN1c3RvbSBydWxlcyBiYXNlZCBvbiB0aGUgb25lcyBvZiBJQ1UgMy44IHRvIGlt
cGxlbWVudAorICAgICAgICB0aGlzIGl0ZXJhdG9yLgorICAgICAgICBPbiB0aGUgb3RoZXIgaGFu
ZCwgVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAganVzdCBjYWxscyB0aGUgY2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcigpCisgICAgICAgIGZ1bmN0aW9uIHRvIGltcGxlbWVudCB0aGlzIGl0ZXJhdG9yLgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMt
MDAxLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDog
QWRkZWQgYSBuZXcgZnVuY3Rpb24gaW5wdXRDdXJzb3JJdGVyYXRvcigpLgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOiBJbXBsZW1lbnRlZCBpbnB1dEN1
cnNvckl0ZXJhdG9yKCkgZm9yIElDVS4KKyAgICAgICAgKFdlYkNvcmU6OnNldFVwSXRlcmF0b3JX
aXRoUnVsZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlucHV0Q3Vyc29ySXRlcmF0b3Ip
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQu
Y3BwOiBJbXBsZW1lbnRlZCBpbnB1dEN1cnNvckl0ZXJhdG9yKCkgZm9yIFF0LgorICAgICAgICAo
V2ViQ29yZTo6aW5wdXRDdXJzb3JJdGVyYXRvcik6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcDogQ2FsbCBpbnB1dEN1cnNvckl0ZXJhdG9yKCkgd2hlbiBtb3Zpbmcg
YW4gaW5wdXQgY3Vyc29yLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNP
ZmZzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQp
OiBEaXR0by4KKwogMjAwOS0wMy0wMyAgTWlrZSBCZWxzaGUgIDxtaWtlQGJlbHNoZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCShyZXZpc2lvbiA0MTQxNCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CiAgICAgVGV4
dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCBs
ZW5ndGgpOwogCisgICAgLy8gY29udmVudGlvbiBydWxlcyB1c2VkIGZvciBpbnNlcnRpbmcgYW4g
aW5wdXQgY3Vyc29yIGhlYXZpbHkgZGVwZW5kIG9uCisgICAgLy8gcGxhdGZvcm0gYW5kIHRoZXkg
YXJlIG5vdCBhbHdheXMgZXF1YWwgdG8gb25lcyB1c2VkIGZvciB0ZXh0IHNlZ21lbnRhdGlvbi4K
KyAgICAvLyBGb3IgZXhhbXBsZSwgd2Ugc2hvdWxkIG5vdCBpbnNlcnQgYSBjaGFyYWN0ZXIgYnJl
YWsgYWZ0ZXIgYSBUaGFpIHByZXBvc2VkCisgICAgLy8gY2hhcmFjdGVyIChhIFRoYWkgdm93ZWwg
Y2hhcmFjdGVyKSBiZWNhdXNlIGl0IGJyZWFrcyBhIHN5bGxhYmxlLgorICAgIC8vIE9uIHRoZSBv
dGhlciBoYW5kLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBtb3ZlIGFuIGlucHV0IGN1cnNvciBldmVu
IGFmdGVyCisgICAgLy8gYSBUaGFpIHByZXBvc2VkIGNoYXJhY3Rlci4KKyAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaW5wdXRDdXJzb3JJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwor
CiAgICAgaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKik7CiAgICAgaW50IHRl
eHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKICAgICBpbnQgdGV4dEJyZWFrQ3VycmVu
dChUZXh0QnJlYWtJdGVyYXRvciopOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRC
cmVha0l0ZXJhdG9ySUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiA0MTQxNCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgogCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVS5oIgogCiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CkBAIC0x
MTQsNCArMTE1LDY0IEBAIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGJpLCAK
ICAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KGJpLCBwb3MpOwogfQogCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3JXaXRoUnVsZXMoYm9vbCYgY3JlYXRlZEl0ZXJhdG9y
LCBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yLAorICAgIGNvbnN0IGNoYXIqIGJyZWFrUnVs
ZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCit7CisgICAgaWYgKCFzdHJpbmcp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpIHsKKyAgICAg
ICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgQXRvbWljU3RyaW5nIHJ1bGVzKGJyZWFrUnVsZXMp
OworICAgICAgICBpdGVyYXRvciA9IHN0YXRpY19jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4odWJy
a19vcGVuUnVsZXMocnVsZXMuY2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBh
cnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgICAgICBjcmVhdGVkSXRlcmF0b3IgPSB0cnVl
OworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklD
VSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUo
b3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOworICAgIH0KKyAgICBpZiAoIWl0ZXJhdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICB1YnJrX3NldFRleHQoaXRlcmF0b3IsIHN0cmluZywgbGVuZ3RoLCAmc2V0VGV4
dFN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBp
bnB1dEN1cnNvckl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCit7Cisg
ICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNlZCBvbiB0aGUgY2hhcmFjdGVyLWJyZWFrIGl0ZXJh
dG9yIHJ1bGVzIG9mIElDVSAzLjg6CisgICAgLy8gICBodHRwOi8vc291cmNlLmljdS1wcm9qZWN0
Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS0zLTgvc291cmNlL2RhdGEvYnJraXRyL2No
YXIudHh0CisgICAgLy8gVGhlIG9ubHkgZGlmZmVyZW5jZSBmcm9tIHRoZSBvcmlnaW5hbCBydWxl
cyBpczoKKyAgICAvLyAgIGFkZGVkICIhIWNoYWluIiB0byBjaGFuZ2UgdGhpcyBydWxlIHNldCB0
byBjaGFpbmVkLgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrUnVsZXMgPQorICAgICAgICAiJENS
ICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDUn1dOyIKKyAgICAgICAgIiRM
RiAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTEZ9XTsiCisgICAgICAgICIk
Q29udHJvbCA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENvbnRyb2x9XTsiCisgICAg
ICAgICIkVm9pY2VNYXJrcyA9IFtcXHVmZjllXFx1ZmY5Zl07IgorICAgICAgICAiJEV4dGVuZCAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBFeHRlbmR9ICRWb2ljZU1hcmtzXTsiCisg
ICAgICAgICIkTCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEx9XTsiCisg
ICAgICAgICIkViAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFZ9XTsiCisg
ICAgICAgICIkVCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFR9XTsiCisg
ICAgICAgICIkTFYgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWfV07Igor
ICAgICAgICAiJExWVCAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVlR9XTsi
CisgICAgICAgICIkSGFuZ3VsU3lsbGFibGUgPSAkTCsgfCAoJEwqICgkTFY/ICRWKyB8ICRMViB8
ICRMVlQpICRUKikgfCAkVCs7IgorICAgICAgICAiISFjaGFpbjsiCisgICAgICAgICIhIWZvcndh
cmQ7IgorICAgICAgICAiJENSICRMRjsiCisgICAgICAgICIoW14kQ29udHJvbCAkQ1IgJExGXSB8
ICRIYW5ndWxTeWxsYWJsZSkgJEV4dGVuZCo7IgorICAgICAgICAiISFyZXZlcnNlOyIKKyAgICAg
ICAgIiRCYWNrSGFuZ3VsU3lsbGFibGUgPSAkTCsgfCAoJFQqICgkViskTFY/IHwgJExWIHwgJExW
VCkgJEwqKSB8ICRUKzsiCisgICAgICAgICIkQmFja09uZUNsdXN0ZXIgPSAoJExGICRDUikgfCAo
JEV4dGVuZCogKFteJENvbnRyb2wgJENSICRMRl0gfCAkQmFja0hhbmd1bFN5bGxhYmxlKSk7Igor
ICAgICAgICAiJEJhY2tPbmVDbHVzdGVyOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAg
ICAgICAgIiRWKyAkTDsiCisgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgICAgICIkVisg
JFQ7IjsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVkSW5wdXRDdXJzb3JJdGVyYXRvciA9IGZhbHNl
OworICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljSW5wdXRDdXJzb3JJdGVyYXRv
cjsKKyAgICByZXR1cm4gc2V0VXBJdGVyYXRvcldpdGhSdWxlcyhjcmVhdGVkSW5wdXRDdXJzb3JJ
dGVyYXRvciwgc3RhdGljSW5wdXRDdXJzb3JJdGVyYXRvciwga1J1bGVzLCBzdHJpbmcsIGxlbmd0
aCk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJy
ZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDQxNDE0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
MywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKICAgICB9CiAKKyAgICBUZXh0QnJlYWtJdGVy
YXRvciogaW5wdXRDdXJzb3JJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBs
ZW5ndGgpOworICAgIH0KKwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRv
cihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgc3RhdGlj
IFFUZXh0Qm91bmRhcnlGaW5kZXIgKml0ZXJhdG9yID0gMDsKQEAgLTI1MCw2ICsyNTUsMTEgQEAg
VGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0bwogICAgIHJldHVybiBpdGVy
YXRvcjsKIH0KIAorVGV4dEJyZWFrSXRlcmF0b3IqIGlucHV0Q3Vyc29ySXRlcmF0b3IoY29uc3Qg
VUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gY2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5lQnJl
YWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCkKIHsKICAgICAvLyBub3QgeWV0IGltcGxlbWVu
dGVkCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gNDE0MTQpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0Nyw3
ICsxMTQ3LDcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhSZW5kZXJlZE9mZgogaW50
IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogewogICAgIFN0
cmluZ0ltcGwqIHNpID0gbV90ZXh0LmdldCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciA9IGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc2ktPmNoYXJhY3RlcnMoKSwgc2ktPmxlbmd0
aCgpKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBpbnB1dEN1cnNvckl0ZXJh
dG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikK
ICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQg
UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyCiBpbnQgUmVuZGVyVGV4dDo6bmV4
dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBTdHJpbmdJbXBsKiBzaSA9IG1fdGV4
dC5nZXQoKTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBjaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSk7CisgICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gaW5wdXRDdXJzb3JJdGVyYXRvcihzaS0+Y2hhcmFjdGVycygp
LCBzaS0+bGVuZ3RoKCkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBjdXJy
ZW50ICsgMTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDE0MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wMy0wNCAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzNDIKKyAgICAgICAgQnVnIDI0MzQyOiBbQ2hyb21pdW1dIGNhbm5vdCBpbnNlcnQg
YSBUaGFpIGNoYXJhY3RlciBhZnRlciBhIFRoYWkKKyAgICAgICAgcHJlcGVuZCBjaGFyYWN0ZXIK
KworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgdmVyaWZpZXMgd2UgY2FuIGluc2VydCBhIGNoYXJh
Y3RlciBhZnRlciBhIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXIuCisgICAgICAgIAorICAgICAgICAq
IGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXRoYWktY2hhcmFj
dGVycy0wMDEuaHRtbDogQWRkZWQuCisKIDIwMDktMDMtMDMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXRoYWktY2hhcmFjdGVy
cy0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3Rl
cnMtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViB0
byAwIG9mIERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViB0byAxIG9m
ICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2Yg
I3RleHQgPiBESVYgdG8gMSBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBv
ZiAjdGV4dCA+IERJViB0byAyIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBESVYgdG8gMiBvZiAjdGV4dCA+IERJViB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViB0byAzIG9mICN0ZXh0ID4gRElWIGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hv
dWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgdG8g
MyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViB0
byA0IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDQgb2YgI3RleHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gNSBvZiAjdGV4dCA+IERJViB0byA1IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0Rp
ZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgdG8gNSBvZiAjdGV4dCA+IERJ
ViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4dCA+IERJViB0byA2IG9mICN0ZXh0ID4g
RElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDYgb2YgI3RleHQgPiBE
SVYgdG8gNiBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNyBvZiAjdGV4dCA+
IERJViB0byA3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDcgb2YgI3RleHQgPiBESVYgdG8gNyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViB0byA4IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDggb2YgI3RleHQgPiBESVYgdG8gOCBvZiAjdGV4
dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOSBvZiAjdGV4dCA+IERJViB0byA5IG9mICN0
ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDkgb2YgI3Rl
eHQgPiBESVYgdG8gOSBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTAgb2Yg
I3RleHQgPiBESVYgdG8gMTAgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOnJhbmdlIGZyb20gMTAgb2YgI3RleHQgPiBESVYgdG8gMTAgb2YgI3RleHQgPiBESVYgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDExIG9mICN0ZXh0ID4gRElWIHRvIDExIG9mICN0ZXh0ID4gRElW
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDQgb2YgI3RleHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IERJViB0byA1IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgdG8gNSBvZiAjdGV4dCA+
IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4dCA+IERJViB0byA2IG9mICN0ZXh0
ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorVGhpcyB0ZXN0IHRl
c3RzIHdoZXRoZXIgd2UgY2FuIGluc2VydCBhIFRoYWkgY2hhcmFjdGVyIGFmdGVyIGEgVGhhaSAi
cHJlcGVuZCIgY2hhcmFjdGVyLgorCitJZiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSBjYW4gc2Vl
IGEgc3RyaW5nICJzdWNjZWVkZWQiIGJlbG93LgorCisKK1N1Y2NlZWRlZC4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXRoYWkt
Y2hhcmFjdGVycy0wMDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+RWRpdGluZyBUZXN0IChJbnNl
cnRpbmcgYSBUaGFpIGNoYXJhY3RlciBhZnRlciBhIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXIpPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIiBsYW5ndWFnZT0iamF2YXNjcmlwdCIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2coc3RyKSB7CisgICAg
dmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBsaS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICB2YXIgY29uc29sZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChs
aSk7Cit9CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIHZhciB0ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
Iik7CisgICAgdGV4dGFyZWEuZm9jdXMoKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4MEUyRCkpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwRTIyKSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3RyaW5n
LmZyb21DaGFyQ29kZSgweDBFMzIpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MEUwMSkpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0cmluZy5m
cm9tQ2hhckNvZGUoMHgwRTBEKSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3RyaW5nLmZy
b21DaGFyQ29kZSgweDBFMzUpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4MEU0OCkpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwRTFCKSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3RyaW5nLmZyb21D
aGFyQ29kZSgweDBFMzgpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJpbmcuZnJvbUNo
YXJDb2RlKDB4MEU0OCkpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHgwRTE5KSk7CisgICAgbW92ZVNlbGVjdGlvbkJhY2t3YXJkQnlDaGFyYWN0ZXJDb21t
YW5kKCk7CisgICAgbW92ZVNlbGVjdGlvbkJhY2t3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7Cisg
ICAgbW92ZVNlbGVjdGlvbkJhY2t3YXJkQnlDaGFyYWN0ZXJDb21tYW5kKCk7CisgICAgdHlwZUNo
YXJhY3RlckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFNDQpKTsKKyAgICB0eXBlQ2hh
cmFjdGVyQ29tbWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUxQikpOworICAgIHZhciBleHBl
Y3RlZF9yZXN1bHQgPSAiXHUwRTJEXHUwRTIyXHUwRTMyXHUwRTAxXHUwRTQ0XHUwRTFCXHUwRTBE
XHUwRTM1XHUwRTQ4XHUwRTFCXHUwRTM4XHUwRTQ4XHUwRTE5IjsKKyAgICBpZiAodGV4dGFyZWEu
dmFsdWUgPT0gZXhwZWN0ZWRfcmVzdWx0KQorICAgICAgICBsb2coIlN1Y2NlZWRlZC4iKTsKKyAg
ICAgZWxzZQorICAgICAgICBsb2coIkZhaWxlZC4gQWN0dWFsOiBcIiIgKyB0ZXh0YXJlYS52YWx1
ZSArICJcIiwgRXhwZWN0ZWQ6IFwiIiArIGV4cGVjdGVkX3Jlc3VsdCArICJcIi4iKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgdGVzdHMgd2hldGhlciB3ZSBj
YW4gaW5zZXJ0IGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIgYSBUaGFpICJwcmVwZW5kIiBjaGFyYWN0
ZXIuPC9wPgorPHA+SWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB5b3UgY2FuIHNlZSBhIHN0cmluZyAi
c3VjY2VlZGVkIiBiZWxvdy48L3A+Cis8dGV4dGFyZWEgaWQ9InRlc3QiIHJvd3M9IjEiIGNvbHM9
IjQwIj48L3RleHRhcmVhPgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK3J1bkVkaXRpbmdUZXN0KCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28346</attachid>
            <date>2009-03-05 20:43:46 -0800</date>
            <delta_ts>2009-03-06 02:08:59 -0800</delta_ts>
            <desc>a proposed fix 3</desc>
            <filename>issue24342-patch3.txt</filename>
            <type>text/plain</type>
            <size>16969</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQ3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDMtMDUgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzQyCisgICAgICAgIEJ1
ZyAyNDM0MjogW0Nocm9taXVtXSBjYW5ub3QgaW5zZXJ0IGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIg
YSBUaGFpCisgICAgICAgIHByZXBlbmQgY2hhcmFjdGVyCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
Y3JlYXRlcyBhIG5ldyBicmVhayBpdGVyYXRvciAiY3Vyc29yTW92ZW1lbnRJdGVyYXRvciIgZm9y
CisgICAgICAgIG1vdmluZyBjdXJzb3JzIGFuZCB1c2UgaXQgd2hlbiBtb3ZpbmcgYW4gaW5wdXQg
Y3Vyc29yLgorICAgICAgICBJbiAiVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwIiwgdGhpcyBicmVh
ayBpdGVyYXRvciB1c2VzIGN1c3RvbSBydWxlc2V0CisgICAgICAgIGJhc2VkIG9uIHRoZSBvbmUg
b2YgSUNVIDMuOC4KKyAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGluICJUZXh0QnJlYWtJdGVy
YXRvclF0LmNwcCIsIHRoaXMgYnJlYWsgaXRlcmF0b3IKKyAgICAgICAganVzdCBjYWxscyB0aGUg
Y2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpIGZ1bmN0aW9uLgorCisgICAgICAgIFRlc3Q6IGVkaXRp
bmcvaW5zZXJ0aW5nL2luc2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLmh0bWwKKworICAgICAgICAq
IHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDogQWRkZWQgYSBuZXcgZnVuY3Rpb24g
Y3Vyc29yTW92ZW1lbnRJdGVyYXRvcigpLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwOiBJbXBsZW1lbnRlZCB0aGUgY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cigpIGZ1bmN0aW9uIGZvciBJQ1UuCisgICAgICAgIChXZWJDb3JlOjpzZXRVcEl0ZXJhdG9yV2l0
aFJ1bGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9y
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0
LmNwcDogSW1wbGVtZW50ZWQgdGhlIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoKSBmdW5jdGlvbiBm
b3IgUXQuCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKTogRGl0dG8u
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOiBDYWxsIHRoZSBjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKCkgZnVuY3Rpb24gd2hlbiBtb3ZpbmcgYW4gaW5wdXQgY3Vyc29yLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQpOiBEaXR0by4KKwogMjAwOS0wMy0w
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZlIEh5YXR0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaAkocmV2aXNpb24gNDE0NjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRvcihj
b25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKIAorICAgIC8vIENvbnZl
bnRpb24gcnVsZXMgdXNlZCBmb3IgbW92aW5nIGEgY3Vyc29yIGhlYXZpbHkgZGVwZW5kIG9uIHBs
YXRmb3JtIGFuZAorICAgIC8vIHRoZXkgYXJlIG5vdCBhbHdheXMgZXF1YWwgdG8gb25lcyB1c2Vk
IGZvciB0ZXh0IHNlZ21lbnRhdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIDQuMCBwcmV2
ZW50cyBpbnNlcnRpbmcgYSBjaGFyYWN0ZXIgYnJlYWsgYWZ0ZXIgYSBUaGFpCisgICAgLy8gcHJl
cGVuZCBjaGFyYWN0ZXIgKGEgVGhhaSB2b3dlbCBhbHBoYWJldCBwbGFjZWQgQkVGT1JFIGEgY29u
c29uYW50CisgICAgLy8gYWxwaGFiZXQpIGJlY2F1c2UgaXQgYnJlYWtzIGEgc3lsbGFibGUuCisg
ICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHVzZXJzIHdvdWxkIGxpa2UgdG8gbW92ZSBhIGN1cnNv
ciBldmVuIGFmdGVyCisgICAgLy8gYSBUaGFpIHByZXBlbmQgY2hhcmFjdGVyIHRvOgorICAgIC8v
ICogU2VsZWN0IG9ubHkgYSBwcmVwZW5kIGNoYXJhY3RlcjsKKyAgICAvLyAqIFJlcGxhY2UgdGhl
IHByZXBvc2VkIGNoYXJhY3RlciB3aXRoIGFub3RoZXIgcHJvcG9zZWQgY2hhcmFjdGVyCisgICAg
Ly8gICAoY2hhbmdpbmcgYSB2b3dlbCksIG9yOworICAgIC8vICogQWRkIGEgY29uc29uYW50IGNo
YXJhY3RlciBhZnRlciB0aGUgcHJvcG9zZWQgY2hhcmFjdGVyIChjaGFuZ2luZworICAgIC8vICAg
YSBjb25zb25hbnQpLgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJh
dG9yKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CisKICAgICBpbnQgdGV4dEJyZWFrRmlyc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKICAgICBpbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVy
YXRvciopOwogICAgIGludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJ
KHJldmlzaW9uIDQxNDY3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
IAogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgpAQCAtMTE0LDQgKzExNSw2MiBAQCBib29sIGlz
VGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBiaSwgCiAgICAgcmV0dXJuIHVicmtfaXNCb3Vu
ZGFyeShiaSwgcG9zKTsKIH0KIAorc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJh
dG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBp
dGVyYXRvciwKKyAgICBjb25zdCBjaGFyKiBicmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5n
LCBpbnQgbGVuZ3RoKQoreworICAgIGlmICghc3RyaW5nKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmICghY3JlYXRlZEl0ZXJhdG9yKSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3Rh
dHVzOworICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIFN0cmluZyBydWxlcyhicmVha1J1bGVzKTsKKyAgICAgICAgaXRlcmF0b3IgPSBzdGF0aWNf
Y2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1bGVzKHJ1bGVzLmNoYXJhY3RlcnMo
KSwgcnVsZXMubGVuZ3RoKCksIDAsIDAsICZwYXJzZVN0YXR1cywgJm9wZW5TdGF0dXMpKTsKKyAg
ICAgICAgY3JlYXRlZEl0ZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShVX1NVQ0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVy
YXRvcjogJXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAg
ICB9CisgICAgaWYgKCFpdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVRXJyb3JD
b2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdWJya19zZXRUZXh0KGl0ZXJh
dG9yLCBzdHJpbmcsIGxlbmd0aCwgJnNldFRleHRTdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
c2V0VGV4dFN0YXR1cykpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGl0ZXJhdG9y
OworfQorCitUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBV
Q2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQoreworICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFz
ZWQgb24gdGhlIGNoYXJhY3Rlci1icmVhayBpdGVyYXRvciBydWxlcyBvZiBJQ1UgMy44ICgqMSkg
YW5kCisgICAgLy8gcmVtb3ZlZCBjb21tZW50cyBhbmQgZW1wdHkgbGluZXMgaW4gaXQuCisgICAg
Ly8gKCoxKSBodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3Mv
cmVsZWFzZS0zLTgvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rl
cl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0
ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0gW1xccHtHcmFwaGVtZV9DbHVz
dGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2ljZU1hcmtzID0gW1xcdWZmOWVc
XHVmZjlmXTsiCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVh
ayA9IEV4dGVuZH0gJFZvaWNlTWFya3NdOyIKKyAgICAgICAgIiRMICAgICAgID0gW1xccHtHcmFw
aGVtZV9DbHVzdGVyX0JyZWFrID0gTH1dOyIKKyAgICAgICAgIiRWICAgICAgID0gW1xccHtHcmFw
aGVtZV9DbHVzdGVyX0JyZWFrID0gVn1dOyIKKyAgICAgICAgIiRUICAgICAgID0gW1xccHtHcmFw
aGVtZV9DbHVzdGVyX0JyZWFrID0gVH1dOyIKKyAgICAgICAgIiRMViAgICAgID0gW1xccHtHcmFw
aGVtZV9DbHVzdGVyX0JyZWFrID0gTFZ9XTsiCisgICAgICAgICIkTFZUICAgICA9IFtcXHB7R3Jh
cGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWVH1dOyIKKyAgICAgICAgIiRIYW5ndWxTeWxsYWJsZSA9
ICRMKyB8ICgkTCogKCRMVj8gJFYrIHwgJExWIHwgJExWVCkgJFQqKSB8ICRUKzsiCisgICAgICAg
ICIhIWZvcndhcmQ7IgorICAgICAgICAiJENSICRMRjsiCisgICAgICAgICIoW14kQ29udHJvbCAk
Q1IgJExGXSB8ICRIYW5ndWxTeWxsYWJsZSkgJEV4dGVuZCo7IgorICAgICAgICAiISFyZXZlcnNl
OyIKKyAgICAgICAgIiRCYWNrSGFuZ3VsU3lsbGFibGUgPSAkTCsgfCAoJFQqICgkViskTFY/IHwg
JExWIHwgJExWVCkgJEwqKSB8ICRUKzsiCisgICAgICAgICIkQmFja09uZUNsdXN0ZXIgPSAoJExG
ICRDUikgfCAoJEV4dGVuZCogKFteJENvbnRyb2wgJENSICRMRl0gfCAkQmFja0hhbmd1bFN5bGxh
YmxlKSk7IgorICAgICAgICAiJEJhY2tPbmVDbHVzdGVyOyIKKyAgICAgICAgIiEhc2FmZV9yZXZl
cnNlOyIKKyAgICAgICAgIiRWKyAkTDsiCisgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAg
ICAgICIkVisgJFQ7IjsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVkSW5wdXRDdXJzb3JJdGVyYXRv
ciA9IGZhbHNlOworICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljSW5wdXRDdXJz
b3JJdGVyYXRvcjsKKyAgICByZXR1cm4gc2V0VXBJdGVyYXRvcldpdGhSdWxlcyhjcmVhdGVkSW5w
dXRDdXJzb3JJdGVyYXRvciwgc3RhdGljSW5wdXRDdXJzb3JJdGVyYXRvciwga1J1bGVzLCBzdHJp
bmcsIGxlbmd0aCk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
QnJlYWtJdGVyYXRvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
cXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDQxNDY3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2MywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKICAgICB9CiAKKyAgICBUZXh0
QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5n
LCBpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoYXJhY3RlckJyZWFrSXRlcmF0
b3Ioc3RyaW5nLCBsZW5ndGgpOworICAgIH0KKwogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5l
QnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogICAgIHsKICAg
ICAgICAgc3RhdGljIFFUZXh0Qm91bmRhcnlGaW5kZXIgKml0ZXJhdG9yID0gMDsKQEAgLTI1MCw2
ICsyNTUsMTEgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0bwogICAg
IHJldHVybiBpdGVyYXRvcjsKIH0KIAorVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4g
Y2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKIFRleHRCcmVha0l0
ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCkKIHsKICAgICAvLyBu
b3QgeWV0IGltcGxlbWVudGVkCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNp
b24gNDE0NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhS
ZW5kZXJlZE9mZgogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBj
b25zdAogewogICAgIFN0cmluZ0ltcGwqIHNpID0gbV90ZXh0LmdldCgpOwotICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciA9IGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc2ktPmNoYXJhY3Rl
cnMoKSwgc2ktPmxlbmd0aCgpKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBj
dXJzb3JNb3ZlbWVudEl0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSk7CiAg
ICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCkBAIC0xMjcw
LDcgKzEyNzAsNyBAQCBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyCiBp
bnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBTdHJp
bmdJbXBsKiBzaSA9IG1fdGV4dC5nZXQoKTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgo
KSk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVy
YXRvcihzaS0+Y2hhcmFjdGVycygpLCBzaS0+bGVuZ3RoKCkpOwogICAgIGlmICghaXRlcmF0b3Ip
CiAgICAgICAgIHJldHVybiBjdXJyZW50ICsgMTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDE0NzEp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAwOS0wMy0wNSAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNDIKKyAgICAgICAgQnVnIDI0MzQyOiBbQ2hy
b21pdW1dIGNhbm5vdCBpbnNlcnQgYSBUaGFpIGNoYXJhY3RlciBhZnRlciBhIFRoYWkKKyAgICAg
ICAgcHJlcGVuZCBjaGFyYWN0ZXIKKworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgdmVyaWZpZXMg
d2UgY2FuIGluc2VydCBhIGNoYXJhY3RlciBhZnRlciBhIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXIu
CisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtdGhhaS1jaGFyYWN0ZXJzLTAw
MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2Vy
dC10aGFpLWNoYXJhY3RlcnMtMDAxLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAzLTA1ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmUgSHlhdHQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC10aGFp
LWNoYXJhY3RlcnMtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2luc2VydGluZy9pbnNlcnQtdGhhaS1jaGFyYWN0ZXJzLTAwMS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtdGhh
aS1jaGFyYWN0ZXJzLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAg
QEAKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiBESVYgdG8gMCBvZiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBE
SVYgdG8gMSBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mICN0ZXh0ID4gRElWIHRvIDEgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5n
ZSBmcm9tIDIgb2YgI3RleHQgPiBESVYgdG8gMiBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyIG9mICN0ZXh0ID4gRElWIHRvIDIgb2YgI3RleHQg
PiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgdG8gMyBvZiAjdGV4
dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0
ID4gRElWIHRvIDMgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3Rl
eHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWIHRvIDQgb2YgI3RleHQgPiBESVYgdG9ET01SYW5n
ZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgdG8gNSBvZiAjdGV4dCA+IERJViBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWIHRvIDUgb2Yg
I3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDYgb2YgI3RleHQgPiBESVYgdG8gNiBv
ZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA2IG9m
ICN0ZXh0ID4gRElWIHRvIDYgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDcg
b2YgI3RleHQgPiBESVYgdG8gNyBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFu
Z2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWIHRvIDcgb2YgI3RleHQgPiBESVYgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDggb2YgI3RleHQgPiBESVYgdG8gOCBvZiAjdGV4dCA+IERJViBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0ID4gRElWIHRv
IDggb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDkgb2YgI3RleHQgPiBESVYg
dG8gOSBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA5IG9mICN0ZXh0ID4gRElWIHRvIDkgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDEwIG9mICN0ZXh0ID4gRElWIHRvIDEwIG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEwIG9mICN0ZXh0ID4gRElWIHRvIDEwIG9mICN0ZXh0
ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxMSBvZiAjdGV4dCA+IERJViB0byAxMSBvZiAj
dGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNl
bGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWIHRvIDQgb2YgI3RleHQgPiBESVYgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgdG8gNSBvZiAjdGV4dCA+IERJViBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWIHRvIDUg
b2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDYgb2YgI3RleHQgPiBESVYgdG8g
NiBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK1Ro
aXMgdGVzdCB0ZXN0cyB3aGV0aGVyIHdlIGNhbiBpbnNlcnQgYSBUaGFpIGNoYXJhY3RlciBhZnRl
ciBhIFRoYWkgInByZXBlbmQiIGNoYXJhY3Rlci4KKworSWYgdGhpcyB0ZXN0IHN1Y2NlZWRzLCB5
b3UgY2FuIHNlZSBhIHN0cmluZyAic3VjY2VlZGVkIiBiZWxvdy4KKworCitTdWNjZWVkZWQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtdGhhaS1jaGFyYWN0ZXJz
LTAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2lu
c2VydC10aGFpLWNoYXJhY3RlcnMtMDAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtdGhhaS1jaGFyYWN0ZXJzLTAwMS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkVkaXRpbmcg
VGVzdCAoSW5zZXJ0aW5nIGEgVGhhaSBjaGFyYWN0ZXIgYWZ0ZXIgYSBUaGFpIHByZXBlbmQgY2hh
cmFjdGVyKTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyIgbGFuZ3VhZ2U9Imph
dmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IGxhbmd1
YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9nKHN0
cikgeworICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgbGku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobGkpOworfQorZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICB2YXIgdGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdCIpOworICAgIHRleHRhcmVhLmZvY3VzKCk7CisgICAgdHlwZUNoYXJhY3RlckNv
bW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMkQpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29t
bWFuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUyMikpOworICAgIHR5cGVDaGFyYWN0ZXJDb21t
YW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTMyKSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1h
bmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMDEpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFu
ZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUwRCkpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5k
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTM1KSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQo
U3RyaW5nLmZyb21DaGFyQ29kZSgweDBFNDgpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MEUxQikpOworICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0
cmluZy5mcm9tQ2hhckNvZGUoMHgwRTM4KSk7CisgICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDBFNDgpKTsKKyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZChTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4MEUxOSkpOworICAgIG1vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hh
cmFjdGVyQ29tbWFuZCgpOworICAgIG1vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hhcmFjdGVyQ29t
bWFuZCgpOworICAgIG1vdmVTZWxlY3Rpb25CYWNrd2FyZEJ5Q2hhcmFjdGVyQ29tbWFuZCgpOwor
ICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwRTQ0KSk7Cisg
ICAgdHlwZUNoYXJhY3RlckNvbW1hbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDBFMUIpKTsKKyAg
ICB2YXIgZXhwZWN0ZWRfcmVzdWx0ID0gIlx1MEUyRFx1MEUyMlx1MEUzMlx1MEUwMVx1MEU0NFx1
MEUxQlx1MEUwRFx1MEUzNVx1MEU0OFx1MEUxQlx1MEUzOFx1MEU0OFx1MEUxOSI7CisgICAgaWYg
KHRleHRhcmVhLnZhbHVlID09IGV4cGVjdGVkX3Jlc3VsdCkKKyAgICAgICAgbG9nKCJTdWNjZWVk
ZWQuIik7CisgICAgIGVsc2UKKyAgICAgICAgbG9nKCJGYWlsZWQuIEFjdHVhbDogXCIiICsgdGV4
dGFyZWEudmFsdWUgKyAiXCIsIEV4cGVjdGVkOiBcIiIgKyBleHBlY3RlZF9yZXN1bHQgKyAiXCIu
Iik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHRlc3RzIHdo
ZXRoZXIgd2UgY2FuIGluc2VydCBhIFRoYWkgY2hhcmFjdGVyIGFmdGVyIGEgVGhhaSAicHJlcGVu
ZCIgY2hhcmFjdGVyLjwvcD4KKzxwPklmIHRoaXMgdGVzdCBzdWNjZWVkcywgeW91IGNhbiBzZWUg
YSBzdHJpbmcgInN1Y2NlZWRlZCIgYmVsb3cuPC9wPgorPHRleHRhcmVhIGlkPSJ0ZXN0IiByb3dz
PSIxIiBjb2xzPSI0MCI+PC90ZXh0YXJlYT4KKzx1bCBpZD0iY29uc29sZSI+PC91bD4KKzxzY3Jp
cHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitydW5FZGl0
aW5nVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="13882"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>