<?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>40273</bug_id>
          
          <creation_ts>2010-06-07 17:52:16 -0700</creation_ts>
          <short_desc>Canvas: &quot;currentColor&quot; should inherit the canvas element&apos;s color</short_desc>
          <delta_ts>2010-10-14 05:44:58 -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>Canvas</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://philip.html5.org/tests/canvas/suite/tests/index.2d.fillStyle.parse.current.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Erik Hanssen">jhanssen</reporter>
          <assigned_to name="Csaba Osztrogonác">ossy</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>heldercorreia</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jhanssen</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235074</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Erik Hanssen">jhanssen</who>
    <bug_when>2010-06-07 17:52:16 -0700</bug_when>
    <thetext>The HTML5 canvas 2d.fillStyle.parse.current.* tests do not pass, currentColor is not parsed to the &quot;computed value of the &apos;color&apos; property&quot; of the canvas element style as specified in the spec (http://philip.html5.org/tests/canvas/suite/tests/spec.html#testrefs.2d.currentColor.outofdoc).

Tests:
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.current.basic.html
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.current.changed.html
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.current.removed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243351</commentid>
    <comment_count>1</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-26 02:19:20 -0700</bug_when>
    <thetext>*** Bug 41246 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243352</commentid>
    <comment_count>2</comment_count>
      <attachid>59826</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-26 02:28:41 -0700</bug_when>
    <thetext>Created attachment 59826
Proposed patch

Proposed patch. Personally I&apos;m not a big fan of the string literal, so if anyone has a better idea, do tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243353</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-26 02:30:25 -0700</bug_when>
    <thetext>Attachment 59826 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/canvas/CanvasRenderingContext2D.cpp:82:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243354</commentid>
    <comment_count>4</comment_count>
      <attachid>59827</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-26 02:38:20 -0700</bug_when>
    <thetext>Created attachment 59827
Proposed patch

Same patch, style fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243387</commentid>
    <comment_count>5</comment_count>
      <attachid>59827</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-26 09:45:58 -0700</bug_when>
    <thetext>Comment on attachment 59827
Proposed patch

The bug title should be &quot;add support for special color named currentColor&quot;. This patch is about adding a missing feature, more than about fixing a particular test case in a test suite!

&gt; +    RGBA32 rgba = Color::black;
&gt; +    if (canvas-&gt;inDocument())
&gt; +        CSSParser::parseColor(rgba, canvas-&gt;style()-&gt;getPropertyValue(CSSPropertyColor));
&gt; +    return rgba;

WebKit normally uses early return style. So it would be like this:

    if (!canvas-&gt;inDocument())
        return Color::black;
    RGBA32 color = Color::black;
    CSSParser::parseColor(color, canvas-&gt;style()-&gt;getPropertyValue(CSSPropertyColor));
    return rgba;

I don&apos;t think this function needs &quot;from canvas&quot; in its name. I think currentColor would be fine.

&gt; +    if (color.lower() == &quot;currentcolor&quot;)

The most efficient way to do this check is:

    equalIgnoringCase(color, &quot;currentcolor&quot;)

Among other things, calling lower() means we&apos;ll allocate a new string if there are any uppercase characters.

I&apos;m not that fond of a function named &quot;useCurrentColor&quot;. I think you would want to name it something more like parseColorOrCurrentColor. Another possibility would be to name it parseColor and make it a private member of CanvasRenderingContext2D. I think I like that design best.

&gt; +    if (!useCurrentColor(canvas(), state().m_shadowColor, color)) {
&gt; +        if (!CSSParser::parseColor(state().m_shadowColor, color))
&gt; +            return;
&gt; +    }

This code calls parseColor twice. Once inside useCurrentColor and once here at the call site. I suggest the parseColorOrCurrentColor design and removing the extra call to parseColor.

&gt; +    if (color.lower() == &quot;currentcolor&quot;)
&gt; +        return adoptRef(new CanvasStyle());

We should not have the string &quot;currentcolor&quot; in two different places in the code. We should find a way to share this. A single that would have a parseColor function that can return either failure, flag indicating current color, or an RGBA value. Then CanvasRenderingContext2D and CanvasStyle can both use it. I think it would be good to put it in the CanvasStyle header. One design would be:

    enum ColorParseResult { ParsedRGBA, ParsedCurrentColor, ParseFailed };
    ColorParseResult parseColor(const String&amp; colorString, RGBA&amp; parsedColor);

This could be a free function in CanvasStyle.h, or a static function member of CanvasStyle.

review- because at the very least we want to use equalIgnoringCase for this.

Do you think the test suite covers all the code paths here? Do we need to add any new tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243444</commentid>
    <comment_count>6</comment_count>
      <attachid>59848</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-27 02:50:26 -0700</bug_when>
    <thetext>Created attachment 59848
Proposed patch v2

The first revision wasn&apos;t covering all API&apos;s. This one does, including CanvasGradient::addColorStop() and WebKit&apos;s non-standard CRC2D methods.

I&apos;ve also included a layout test which covers the various code paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243445</commentid>
    <comment_count>7</comment_count>
      <attachid>59849</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-27 02:52:09 -0700</bug_when>
    <thetext>Created attachment 59849
Proposed patch v2

Click the right file this time..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243446</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-27 02:54:46 -0700</bug_when>
    <thetext>Attachment 59849 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/canvas/CanvasGradient.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243472</commentid>
    <comment_count>9</comment_count>
      <attachid>59849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-27 09:52:09 -0700</bug_when>
    <thetext>Comment on attachment 59849
Proposed patch v2

This looks really good.

&gt; -        static PassRefPtr&lt;CanvasGradient&gt; create(const FloatPoint&amp; p0, const FloatPoint&amp; p1)
&gt; +        static PassRefPtr&lt;CanvasGradient&gt; create(HTMLCanvasElement* canvas, const FloatPoint&amp; p0, const FloatPoint&amp; p1)

I am pretty sure this is wrong. There is no guarantee that a gradient will be used only with the canvas it was created from. Instead, the canvas or its current color should be passed to functions in CanvasStyle, and in turn passed in to the functions on the CanvasGradient.

We should create at least one test case that creates a gradient on one canvas and then uses it with another, which has a different current color, to test that the behavior is correct.

&gt; +    RGBA32 currentColor(HTMLCanvasElement* canvas);
&gt; +    bool parseColorOrCurrentColor(RGBA32&amp; parsedColor, const String&amp; colorString, HTMLCanvasElement* canvas);

The argument name &quot;canvas&quot; should be omitted from both of these function declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243494</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-27 13:10:36 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 59849 [details])
&gt; &gt; -        static PassRefPtr&lt;CanvasGradient&gt; create(const FloatPoint&amp; p0, const FloatPoint&amp; p1)
&gt; &gt; +        static PassRefPtr&lt;CanvasGradient&gt; create(HTMLCanvasElement* canvas, const FloatPoint&amp; p0, const FloatPoint&amp; p1)
&gt; 
&gt; I am pretty sure this is wrong. There is no guarantee that a gradient will be used only with the canvas it was created from. Instead, the canvas or its current color should be passed to functions in CanvasStyle, and in turn passed in to the functions on the CanvasGradient.

I spoke with Philip Taylor about this and ended up filing a bug on w3.org:

http://www.w3.org/Bugs/Public/show_bug.cgi?id=10023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272804</commentid>
    <comment_count>11</comment_count>
      <attachid>66213</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-01 08:08:02 -0700</bug_when>
    <thetext>Created attachment 66213
Proposed patch v3

HTML5 has now been updated to say that &quot;currentColor&quot; means fully opaque black in the context of addColorStop().
Diff: http://html5.org/tools/web-apps-tracker?from=5388&amp;to=5389

I&apos;ve updated the patch to reflect this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272810</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-01 08:19:35 -0700</bug_when>
    <thetext>Attachment 66213 did not build on mac:
Build output: http://queues.webkit.org/results/3937021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272818</commentid>
    <comment_count>13</comment_count>
      <attachid>66216</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-01 08:41:06 -0700</bug_when>
    <thetext>Created attachment 66216
Proposed patch v4

Fixed GCC warnings (missing cases.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290824</commentid>
    <comment_count>14</comment_count>
      <attachid>70040</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-06 23:20:44 -0700</bug_when>
    <thetext>Created attachment 70040
Proposed patch v5

Rebased patch. Remove relevant tests from Gtk+ skiplist as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293821</commentid>
    <comment_count>15</comment_count>
      <attachid>70040</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-13 17:01:48 -0700</bug_when>
    <thetext>Comment on attachment 70040
Proposed patch v5

View in context: https://bugs.webkit.org/attachment.cgi?id=70040&amp;action=review

&gt; WebCore/html/canvas/CanvasStyle.cpp:81
&gt; +    if (parseResult == ParseFailed)
&gt; +        return false;
&gt; +    if (parseResult == ParsedCurrentColor)
&gt; +        parsedColor = currentColor(canvas);
&gt; +    return true;

This should use a switch statement, because then the compiler will check to be sure we cover all values of ColorParseResult.

&gt; WebCore/html/canvas/CanvasStyle.cpp:135
&gt; +    if (parseResult == ParseFailed)
&gt;          return 0;
&gt; +    if (parseResult == ParsedCurrentColor)
&gt; +        return adoptRef(new CanvasStyle(CurrentColor));
&gt;      return adoptRef(new CanvasStyle(rgba));

This should use a switch statement, because then the compiler will check to be sure we cover all values of ColorParseResult.

&gt; WebCore/html/canvas/CanvasStyle.h:53
&gt; +        float overrideAlpha() const { return m_overrideAlpha; }

This should assert that m_type is CurrentColorWithOverrideAlpha.

&gt; WebCore/html/canvas/CanvasStyle.h:55
&gt;          String color() const { return Color(m_rgba).serialized(); }

This should assert that m_type is RGBA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294036</commentid>
    <comment_count>16</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-14 03:38:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; WebCore/html/canvas/CanvasStyle.h:55
&gt; &gt;          String color() const { return Color(m_rgba).serialized(); }
&gt; 
&gt; This should assert that m_type is RGBA.

That would assert when retrieving a stroke or fill color that was set from CMYKA components. I will land with ASSERT(m_type == RGBA || m_type == CMYKA);

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294037</commentid>
    <comment_count>17</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-14 03:48:00 -0700</bug_when>
    <thetext>Committed r69755: &lt;http://trac.webkit.org/changeset/69755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294061</commentid>
    <comment_count>18</comment_count>
      <attachid>70728</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-14 05:22:20 -0700</bug_when>
    <thetext>Created attachment 70728
proposed warning fix for r69755 

http://trac.webkit.org/changeset/69755 caused warnings
because of missing default cases:

../../../WebCore/html/canvas/CanvasStyle.cpp:157: warning: control reaches end of non-void function
../../../WebCore/html/canvas/CanvasStyle.cpp:143: warning: control reaches end of non-void function
../../../WebCore/html/canvas/CanvasStyle.cpp:86: warning: control reaches end of non-void function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294070</commentid>
    <comment_count>19</comment_count>
      <attachid>70728</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-14 05:43:33 -0700</bug_when>
    <thetext>Comment on attachment 70728
proposed warning fix for r69755 

Clearing flags on attachment: 70728

Committed r69759: &lt;http://trac.webkit.org/changeset/69759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294071</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-14 05:43:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294072</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 05:44:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/69755 might have broken Chromium Mac Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59826</attachid>
            <date>2010-06-26 02:28:41 -0700</date>
            <delta_ts>2010-06-26 02:38:20 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-40273.diff</filename>
            <type>text/plain</type>
            <size>8686</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlODE1YjRhLi4wYmFmYmNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYt
MjYgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgSFRNTDUgY2FudmFzIDJk
LmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LiogdGVzdHMgZG8gbm90IHBhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjczCisKKyAgICAgICAgVW5z
a2lwcGVkIDMgdGVzdHMgdGhhdCBub3cgcGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMDYtMjUgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJp
IEdsYXprb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDEyYTA3NjAuLjE4YmU0OGMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0yMDYsOSArMjA2LDYgQEAgY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuaW5jb21wbGV0ZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmRyYXdJbWFnZS5udWxsLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0lt
YWdlLndyb25ndHlwZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS56ZXJv
Y2FudmFzLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJl
bnQuYmFzaWMuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3Vy
cmVudC5jaGFuZ2VkLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNl
LmN1cnJlbnQucmVtb3ZlZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtMy5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtNC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtNS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA4NzQ5Njc1
Li40ZTM3ZjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTUyNDksOSArNTI0OSw2IEBA
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm5lZ2F0aXZlc291cmNlLmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5kcmF3SW1hZ2Uud3Jvbmd0eXBlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZHJhd0ltYWdlLnplcm9jYW52YXMuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5
bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxT
dHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5m
aWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC0zLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC00Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC01Lmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q1MzNiMS4uYjA1YmFmOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMC0wNi0yNiAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBIVE1MNSBjYW52YXMgMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuKiB0ZXN0cyBkbyBu
b3QgcGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAyNzMKKworICAgICAgICBXaGVuICJjdXJyZW50Q29sb3IiIGlzIHNwZWNpZmllZCBmb3IgYW55
IENSQzJEIGNvbG9yIHByb3BlcnR5LAorICAgICAgICBpbmhlcml0IHRoZSBjb2xvciBmcm9tIHRo
ZSBjYW52YXMgZWxlbWVudCBpZiBpdCdzIGluLWRvY3VtZW50LAorICAgICAgICBvdGhlcndpc2Ug
dXNlIGZ1bGx5IG9wYXF1ZSBibGFjay4KKworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4
dAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRDb2xvckZyb21DYW52YXMpOgorICAgICAgICAoV2Vi
Q29yZTo6dXNlQ3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dHlsZTo6aXNDdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6Oik6
CisKIDIwMTAtMDYtMjYgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjI4NGU1MC4uMTZlODg0
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcApAQCAtNjksNiArNjksMjEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiI7CiAK
K3N0YXRpYyBSR0JBMzIgY3VycmVudENvbG9yRnJvbUNhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzKQoreworICAgIFJHQkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgIGlmIChjYW52
YXMtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNh
bnZhcy0+c3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CisgICAg
cmV0dXJuIHJnYmE7Cit9CisKK3N0YXRpYyBib29sIHVzZUN1cnJlbnRDb2xvcihIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzLCBSR0JBMzImIHJnYmEsIGNvbnN0IFN0cmluZyYgY29sb3IpCit7Cisg
ICAgaWYgKGNvbG9yLmxvd2VyKCkgPT0gImN1cnJlbnRjb2xvciIpCisgICAgICAgIHJldHVybiBj
dXJyZW50Q29sb3JGcm9tQ2FudmFzKGNhbnZhcyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4g
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKK30KIAogY2xhc3MgQ2FudmFzU3Ry
b2tlU3R5bGVBcHBsaWVyIDogcHVibGljIFN0cm9rZVN0eWxlQXBwbGllciB7CiBwdWJsaWM6CkBA
IC0xNzAsNyArMTg1LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9r
ZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogICAgIGlmICghc3R5bGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgeworICAg
IGlmIChzdHlsZS0+aXNDdXJyZW50Q29sb3IoKSkKKyAgICAgICAgc3R5bGUgPSBDYW52YXNTdHls
ZTo6Y3JlYXRlKGN1cnJlbnRDb2xvckZyb21DYW52YXMoY2FudmFzKCkpKTsKKyAgICBlbHNlIGlm
IChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBpZiAoQ2FudmFzUGF0dGVybiog
cGF0dGVybiA9IHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKICAgICAgICAgICAgIGlmICghcGF0
dGVybi0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgICAgICAgICBjYW52YXMoKS0+c2V0T3JpZ2lu
VGFpbnRlZCgpOwpAQCAtMTkzLDggKzIxMCwxMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogewogICAg
IGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAKLSAgICBpZiAoY2FudmFzKCktPm9yaWdp
bkNsZWFuKCkpIHsKKworICAgIGlmIChzdHlsZS0+aXNDdXJyZW50Q29sb3IoKSkKKyAgICAgICAg
c3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlKGN1cnJlbnRDb2xvckZyb21DYW52YXMoY2FudmFz
KCkpKTsKKyAgICBlbHNlIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBp
ZiAoQ2FudmFzUGF0dGVybiogcGF0dGVybiA9IHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKICAg
ICAgICAgICAgIGlmICghcGF0dGVybi0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgICAgICAgICBj
YW52YXMoKS0+c2V0T3JpZ2luVGFpbnRlZCgpOwpAQCAtMzIwLDggKzMzOSwxMCBAQCBTdHJpbmcg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9y
KQogewotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xv
ciwgY29sb3IpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCF1c2VDdXJyZW50Q29sb3IoY2Fu
dmFzKCksIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKSB7CisgICAgICAgIGlmICghQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGFwcGx5U2hhZG93KCk7CiB9CkBAIC04MjcsOCAr
ODQ4LDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1cikKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVy
LCBjb25zdCBTdHJpbmcmIGNvbG9yKQogewotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKQotICAgICAgICByZXR1cm47CisgICAgaWYg
KCF1c2VDdXJyZW50Q29sb3IoY2FudmFzKCksIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3Ip
KSB7CisgICAgICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dD
b2xvciwgY29sb3IpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5t
X3NoYWRvd0JsdXIgPSBibHVyOwpAQCAtODUyLDggKzg3NSwxMCBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0
IGJsdXIsCiB7CiAgICAgUkdCQTMyIHJnYmE7CiAKLSAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VD
b2xvcihyZ2JhLCBjb2xvcikpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIXVzZUN1cnJlbnRD
b2xvcihjYW52YXMoKSwgcmdiYSwgY29sb3IpKSB7CisgICAgICAgIGlmICghQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFs
cGhhKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWln
aHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCA2N2U4MjAxLi41OWMzY2Rm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApAQCAtNDgsNiArNDgsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoKQorICAgIDog
bV90eXBlKEN1cnJlbnRDb2xvcikKK3sKK30KKwogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFJH
QkEzMiByZ2JhKQogICAgIDogbV90eXBlKFJHQkEpCiAgICAgLCBtX3JnYmEocmdiYSkKQEAgLTkz
LDYgKzk4LDggQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0
dGVybj4gcGF0dGVybikKIAogUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIGNvbG9yKQogeworICAgIGlmIChjb2xvci5sb3dlcigpID09ICJj
dXJyZW50Y29sb3IiKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKCkp
OwogICAgIFJHQkEzMiByZ2JhOwogICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEs
IGNvbG9yKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1N0eWxlLmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5k
ZXggMThlNTVjZi4uMDY1MDg4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNDgs
NiArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENhbnZhc1N0eWxlPiBjcmVhdGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQp
OwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybik7CiAKKyAgICAgICAgYm9vbCBpc0N1cnJlbnRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDdXJyZW50Q29sb3I7IH0KKwogICAgICAgICBT
dHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX3JnYmEpLnNlcmlhbGl6ZWQoKTsg
fQogICAgICAgICBDYW52YXNHcmFkaWVudCogY2FudmFzR3JhZGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAgICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRl
cm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KQEAgLTU2LDYgKzU4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhp
Y3NDb250ZXh0Kik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBDYW52YXNTdHlsZSgpOwogICAg
ICAgICBDYW52YXNTdHlsZShSR0JBMzIgcmdiYSk7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0
IGdyYXlMZXZlbCk7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQg
YWxwaGEpOwpAQCAtNjQsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENh
bnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+KTsKICAgICAgICAgQ2FudmFzU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPik7CiAKLSAgICAgICAgZW51bSBUeXBlIHsgUkdC
QSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4gfTsKKyAgICAgICAgZW51bSBUeXBlIHsg
UkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4sIEN1cnJlbnRDb2xvciB9OwogCiAg
ICAgICAgIFR5cGUgbV90eXBlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59827</attachid>
            <date>2010-06-26 02:38:20 -0700</date>
            <delta_ts>2010-06-27 02:50:26 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-40273-stylefix.diff</filename>
            <type>text/plain</type>
            <size>8672</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlODE1YjRhLi4wYmFmYmNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYt
MjYgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgSFRNTDUgY2FudmFzIDJk
LmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LiogdGVzdHMgZG8gbm90IHBhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjczCisKKyAgICAgICAgVW5z
a2lwcGVkIDMgdGVzdHMgdGhhdCBub3cgcGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMDYtMjUgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJp
IEdsYXprb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDEyYTA3NjAuLjE4YmU0OGMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0yMDYsOSArMjA2LDYgQEAgY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuaW5jb21wbGV0ZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmRyYXdJbWFnZS5udWxsLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0lt
YWdlLndyb25ndHlwZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS56ZXJv
Y2FudmFzLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJl
bnQuYmFzaWMuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3Vy
cmVudC5jaGFuZ2VkLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNl
LmN1cnJlbnQucmVtb3ZlZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtMy5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtNC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5w
YXJzZS5yZ2ItY2xhbXAtNS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA4NzQ5Njc1
Li40ZTM3ZjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTUyNDksOSArNTI0OSw2IEBA
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm5lZ2F0aXZlc291cmNlLmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5kcmF3SW1hZ2Uud3Jvbmd0eXBlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZHJhd0ltYWdlLnplcm9jYW52YXMuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5
bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxT
dHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5m
aWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC0zLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC00Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFtcC01Lmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q1MzNiMS4uYjA1YmFmOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxMC0wNi0yNiAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBIVE1MNSBjYW52YXMgMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuKiB0ZXN0cyBkbyBu
b3QgcGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAyNzMKKworICAgICAgICBXaGVuICJjdXJyZW50Q29sb3IiIGlzIHNwZWNpZmllZCBmb3IgYW55
IENSQzJEIGNvbG9yIHByb3BlcnR5LAorICAgICAgICBpbmhlcml0IHRoZSBjb2xvciBmcm9tIHRo
ZSBjYW52YXMgZWxlbWVudCBpZiBpdCdzIGluLWRvY3VtZW50LAorICAgICAgICBvdGhlcndpc2Ug
dXNlIGZ1bGx5IG9wYXF1ZSBibGFjay4KKworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4
dAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRDb2xvckZyb21DYW52YXMpOgorICAgICAgICAoV2Vi
Q29yZTo6dXNlQ3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dHlsZTo6aXNDdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6Oik6
CisKIDIwMTAtMDYtMjYgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjI4NGU1MC4uMjA5MDgx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcApAQCAtNjksNiArNjksMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiI7CiAK
K3N0YXRpYyBSR0JBMzIgY3VycmVudENvbG9yRnJvbUNhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzKQoreworICAgIFJHQkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgIGlmIChjYW52
YXMtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNh
bnZhcy0+c3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CisgICAg
cmV0dXJuIHJnYmE7Cit9CisKK3N0YXRpYyBib29sIHVzZUN1cnJlbnRDb2xvcihIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzLCBSR0JBMzImIHJnYmEsIGNvbnN0IFN0cmluZyYgY29sb3IpCit7Cisg
ICAgaWYgKGNvbG9yLmxvd2VyKCkgPT0gImN1cnJlbnRjb2xvciIpCisgICAgICAgIHJldHVybiBj
dXJyZW50Q29sb3JGcm9tQ2FudmFzKGNhbnZhcyk7CisgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFy
c2VDb2xvcihyZ2JhLCBjb2xvcik7Cit9CiAKIGNsYXNzIENhbnZhc1N0cm9rZVN0eWxlQXBwbGll
ciA6IHB1YmxpYyBTdHJva2VTdHlsZUFwcGxpZXIgewogcHVibGljOgpAQCAtMTcwLDcgKzE4NCw5
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVm
UHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKKyAgICBpZiAoc3R5bGUtPmlz
Q3VycmVudENvbG9yKCkpCisgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGU6OmNyZWF0ZShjdXJy
ZW50Q29sb3JGcm9tQ2FudmFzKGNhbnZhcygpKSk7CisgICAgZWxzZSBpZiAoY2FudmFzKCktPm9y
aWdpbkNsZWFuKCkpIHsKICAgICAgICAgaWYgKENhbnZhc1BhdHRlcm4qIHBhdHRlcm4gPSBzdHls
ZS0+Y2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgICAgICBpZiAoIXBhdHRlcm4tPm9yaWdpbkNs
ZWFuKCkpCiAgICAgICAgICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKQEAg
LTE5Myw4ICsyMDksMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxT
dHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKIHsKICAgICBpZiAoIXN0eWxlKQog
ICAgICAgICByZXR1cm47Ci0gCi0gICAgaWYgKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CisK
KyAgICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9yKCkpCisgICAgICAgIHN0eWxlID0gQ2FudmFz
U3R5bGU6OmNyZWF0ZShjdXJyZW50Q29sb3JGcm9tQ2FudmFzKGNhbnZhcygpKSk7CisgICAgZWxz
ZSBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKICAgICAgICAgaWYgKENhbnZhc1BhdHRl
cm4qIHBhdHRlcm4gPSBzdHlsZS0+Y2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgICAgICBpZiAo
IXBhdHRlcm4tPm9yaWdpbkNsZWFuKCkpCiAgICAgICAgICAgICAgICAgY2FudmFzKCktPnNldE9y
aWdpblRhaW50ZWQoKTsKQEAgLTMyMCw4ICszMzgsMTAgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2hhZG93Q29sb3IoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U2hhZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBpZiAo
IUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmICghdXNlQ3VycmVudENvbG9yKGNhbnZhcygpLCBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IsIGNvbG9yKSkgeworICAgICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VD
b2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBhcHBseVNoYWRvdygpOwogfQpAQCAtODI3LDggKzg0NywxMCBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5n
JiBjb2xvcikKIHsKLSAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IsIGNvbG9yKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghdXNlQ3VycmVudENv
bG9yKGNhbnZhcygpLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkgeworICAgICAgICBp
ZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0
ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0g
Ymx1cjsKQEAgLTg1Miw4ICs4NzQsMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogewogICAg
IFJHQkEzMiByZ2JhOwogCi0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29s
b3IpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCF1c2VDdXJyZW50Q29sb3IoY2FudmFzKCks
IHJnYmEsIGNvbG9yKSkgeworICAgICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2Jh
LCBjb2xvcikpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgc3RhdGUoKS5tX3No
YWRvd0NvbG9yID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSk7CiAgICAgc3Rh
dGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggNjdlODIwMS4uNTljM2NkZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKCkKKyAgICA6IG1fdHlwZShDdXJyZW50
Q29sb3IpCit7Cit9CisKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKICAg
ICA6IG1fdHlwZShSR0JBKQogICAgICwgbV9yZ2JhKHJnYmEpCkBAIC05Myw2ICs5OCw4IEBAIENh
bnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4p
CiAKIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBjb2xvcikKIHsKKyAgICBpZiAoY29sb3IubG93ZXIoKSA9PSAiY3VycmVudGNvbG9yIikK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZSgpKTsKICAgICBSR0JBMzIg
cmdiYTsKICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHls
ZS5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmluZGV4IDE4ZTU1Y2YuLjA2
NTA4OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAorKysg
Yi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4g
Y3JlYXRlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KTsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHBhdHRlcm4pOwogCisgICAgICAgIGJvb2wgaXNDdXJyZW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gQ3VycmVudENvbG9yOyB9CisKICAgICAgICAgU3RyaW5nIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gQ29sb3IobV9yZ2JhKS5zZXJpYWxpemVkKCk7IH0KICAgICAgICAgQ2Fu
dmFzR3JhZGllbnQqIGNhbnZhc0dyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudC5n
ZXQoKTsgfQogICAgICAgICBDYW52YXNQYXR0ZXJuKiBjYW52YXNQYXR0ZXJuKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CkBAIC01Niw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCopOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FudmFzU3R5bGUoKTsKICAgICAgICAgQ2FudmFzU3R5
bGUoUkdCQTMyIHJnYmEpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwpOwog
ICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKQEAgLTY0
LDcgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYW52YXNTdHlsZShQYXNz
UmVmUHRyPENhbnZhc0dyYWRpZW50Pik7CiAgICAgICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQdHI8
Q2FudmFzUGF0dGVybj4pOwogCi0gICAgICAgIGVudW0gVHlwZSB7IFJHQkEsIENNWUtBLCBHcmFk
aWVudCwgSW1hZ2VQYXR0ZXJuIH07CisgICAgICAgIGVudW0gVHlwZSB7IFJHQkEsIENNWUtBLCBH
cmFkaWVudCwgSW1hZ2VQYXR0ZXJuLCBDdXJyZW50Q29sb3IgfTsKIAogICAgICAgICBUeXBlIG1f
dHlwZTsKIAo=
</data>
<flag name="review"
          id="46933"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="46934"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59848</attachid>
            <date>2010-06-27 02:50:26 -0700</date>
            <delta_ts>2010-06-27 02:52:09 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-33373.diff~</filename>
            <type>text/plain</type>
            <size>6932</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDU1NjBkMC4uOTM2NTNjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMS0xMSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRW5hYmxlIHNjcm9sbGluZyBvcHRpbWl6YXRpb24g
Zm9yIHBhZ2VzIHdpdGggZW1iZWRkZWQgd2lkZ2V0cworCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzM3MworCisgICAgICAgIEFkZGVkIGEgYmFzaWMg
bWFudWFsIHRlc3QgZm9yIHNjcm9sbGluZyBvZiBlbWJlZGRlZCBRV2lkZ2V0cy4KKworICAgICAg
ICAqIG1hbnVhbC10ZXN0cy9xdC9xdHBsdWdpbi1zY3JvbGxpbmcuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRQ
YXJlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtQWRk
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1SZW1vdmVDaGls
ZCk6CisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6dXBkYXRlUGx1Z2luV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KToKKwogMjAxMC0wMS0xMSAgSm9hbm1hcmllIERp
Z2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBY
YW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdHBsdWdpbi1z
Y3JvbGxpbmcuaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL3F0L3F0cGx1Z2luLXNjcm9sbGlu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDM4MzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9xdC9xdHBsdWdpbi1zY3JvbGxpbmcu
aHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNzcGFj
ZXIgeworICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisKKzxwPgorICAgIFNjcm9sbCB0aGUgcGFnZSwgZW5zdXJlIHRoYXQgdGhlIHR3byBs
YWJlbHMgbW92ZSBuaWNlbHkgYWxvbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZG9jdW1lbnQuCis8
L3A+CisKKzxkaXY+Cis8b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiBjbGFz
c2lkPSJhbGllbl9RTGFiZWwiIG5hbWU9ImxhYmVsMSIgaGVpZ2h0PSIzMCI+PC9vYmplY3Q+Cis8
L2Rpdj4KKworPGRpdj4KKzxvYmplY3QgdHlwZT0iYXBwbGljYXRpb24veC1xdC1wbHVnaW4iIGNs
YXNzaWQ9IlFMYWJlbCIgbmFtZT0ibGFiZWwyIiBoZWlnaHQ9IjMwIj48L29iamVjdD4KKzwvZGl2
PgorCis8ZGl2IGlkPSJzcGFjZXIiPjxwPiZuYnNwOzwvcD48L2Rpdj4KKworPHNjcmlwdD4KK2Rv
Y3VtZW50LmxhYmVsMS5zZXRUZXh0KCJMYWJlbCBvbmUiKTsKK2RvY3VtZW50LmxhYmVsMi5zZXRU
ZXh0KCJMYWJlbCB0d28iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggMTM3OTI1Yi4uMGY2OTIwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICAgICAgaG9zdFdpbmRvdygpLT5yZXBhaW50
KHBhblNjcm9sbEljb25EaXJ0eVJlY3QsIHRydWUpOwogICAgIH0KIAotICAgIGlmIChjYW5CbGl0
T25TY3JvbGwoKSAmJiAhcm9vdFByZXZlbnRzQmxpdHRpbmcoKSkgeyAvLyBUaGUgbWFpbiBmcmFt
ZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRvdworICAgIGlmIChjYW5CbGl0T25TY3Jv
bGwoKSkgeyAvLyBUaGUgbWFpbiBmcmFtZSBjYW4ganVzdCBibGl0IHRoZSBXZWJWaWV3IHdpbmRv
dwogICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGJsaXQgc3ViZnJhbWVzIHdpdGhvdXQg
YmxpdHRpbmcgb3ZlcmxhcHBpbmcgY29udGVudAogICAgICAgIGhvc3RXaW5kb3coKS0+c2Nyb2xs
KC1zY3JvbGxEZWx0YSwgc2Nyb2xsVmlld1JlY3QsIGNsaXBSZWN0KTsKICAgICB9IGVsc2UgeyAK
QEAgLTYwMywxNCArNjAzLDYgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmll
dyogcGFyZW50VmlldykKICAgICBpZiAobV9zY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyICYmIHBh
cmVudCgpKQogICAgICAgICBwYXJlbnQoKS0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXpl
ckNvdW50KC1tX3Njcm9sbGJhcnNBdm9pZGluZ1Jlc2l6ZXIpOwogCi0jaWYgUExBVEZPUk0oUVQp
Ci0gICAgaWYgKG1fd2lkZ2V0c1ByZXZlbnRpbmdCbGl0dGluZyAmJiBwYXJlbnQoKSkKLSAgICAg
ICAgcGFyZW50KCktPmFkanVzdFdpZGdldHNQcmV2ZW50aW5nQmxpdHRpbmdDb3VudCgtbV93aWRn
ZXRzUHJldmVudGluZ0JsaXR0aW5nKTsKLQotICAgIGlmIChtX3dpZGdldHNQcmV2ZW50aW5nQmxp
dHRpbmcgJiYgcGFyZW50VmlldykKLSAgICAgICAgcGFyZW50Vmlldy0+YWRqdXN0V2lkZ2V0c1By
ZXZlbnRpbmdCbGl0dGluZ0NvdW50KG1fd2lkZ2V0c1ByZXZlbnRpbmdCbGl0dGluZyk7Ci0jZW5k
aWYKLQogICAgIFdpZGdldDo6c2V0UGFyZW50KHBhcmVudFZpZXcpOwogCiAgICAgaWYgKG1fc2Ny
b2xsYmFyc0F2b2lkaW5nUmVzaXplciAmJiBwYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggY2E3MjkwMC4uYTcxNzNhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTMxMiwxNiArMzEy
LDYgQEAgcHJpdmF0ZToKICAgICBOU1Njcm9sbFZpZXc8V2ViQ29yZUZyYW1lU2Nyb2xsVmlldz4q
IHNjcm9sbFZpZXcoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpCi1wdWJsaWM6
Ci0gICAgdm9pZCBhZGp1c3RXaWRnZXRzUHJldmVudGluZ0JsaXR0aW5nQ291bnQoaW50IGRlbHRh
KTsKLXByaXZhdGU6Ci0gICAgYm9vbCByb290UHJldmVudHNCbGl0dGluZygpIGNvbnN0IHsgcmV0
dXJuIHJvb3QoKS0+bV93aWRnZXRzUHJldmVudGluZ0JsaXR0aW5nID4gMDsgfQotICAgIHVuc2ln
bmVkIG1fd2lkZ2V0c1ByZXZlbnRpbmdCbGl0dGluZzsKLSNlbHNlCi0gICAgYm9vbCByb290UHJl
dmVudHNCbGl0dGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKEdUSykKIHB1YmxpYzoKICAgICB2b2lkIHNldEd0a0FkanVzdG1lbnRzKEd0a0FkanVz
dG1lbnQqIGhhZGosIEd0a0FkanVzdG1lbnQqIHZhZGopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxW
aWV3UXQuY3BwCmluZGV4IGNjYmQ3NTEuLjE3YWQyNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9s
bFZpZXdRdC5jcHAKQEAgLTM2LDMyICszNiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0KCkKIHsKLSAgICBtX3dpZGdldHNQcmV2ZW50aW5n
QmxpdHRpbmcgPSAwOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiB7
CiB9CiAKLS8vIFdpbmRvd2VkIHBsdWdpbnMgYXJlIHVzaW5nIG5hdGl2ZSB3aW5kb3dzIGFuZCBh
cmUgdGh1cyBwcmV2ZW50aW5nCi0vLyB1cyBmcm9tIGRvaW5nIGFueSBraW5kIG9mIHNjcm9sbGlu
ZyBvcHRpbWl6YXRpb24uCi0KLXZvaWQgU2Nyb2xsVmlldzo6YWRqdXN0V2lkZ2V0c1ByZXZlbnRp
bmdCbGl0dGluZ0NvdW50KGludCBkZWx0YSkKLXsKLSAgICBtX3dpZGdldHNQcmV2ZW50aW5nQmxp
dHRpbmcgKz0gZGVsdGE7Ci0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+YWRq
dXN0V2lkZ2V0c1ByZXZlbnRpbmdCbGl0dGluZ0NvdW50KGRlbHRhKTsKLX0KLQogdm9pZCBTY3Jv
bGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopCiB7Ci0gICAgYWRqdXN0V2lkZ2V0c1By
ZXZlbnRpbmdCbGl0dGluZ0NvdW50KDEpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
UmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKIHsKICAgICBjaGlsZC0+aGlkZSgpOwotICAgIGFk
anVzdFdpZGdldHNQcmV2ZW50aW5nQmxpdHRpbmdDb3VudCgtMSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIvV2ViQ29yZS9wbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXggZmI4YmEwOC4uYTAzMTViZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5z
L3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTEyNyw2ICsxMjcsMTAgQEAgdm9pZCBQbHVnaW5WaWV3
Ojp1cGRhdGVQbHVnaW5XaWRnZXQoKQogICAgIC8vIHNjcm9sbCwgd2UgbmVlZCB0byBtb3ZlL3Jl
c2l6ZSBpbW1lZGlhdGVseS4KICAgICBpZiAoIW1fd2luZG93UmVjdC5pbnRlcnNlY3RzKGZyYW1l
Vmlldy0+ZnJhbWVSZWN0KCkpKQogICAgICAgICBzZXROUFdpbmRvd0lmTmVlZGVkKCk7CisKKyAg
ICAvLyBNYWtlIHN1cmUgd2UgZ2V0IHJlcGFpbnRlZCBhZnRlcndhcmRzLiBUaGlzIGlzIG5lY2Vz
c2FyeSBmb3IgZG93bndhcmQKKyAgICAvLyBzY3JvbGxpbmcgdG8gbW92ZSB0aGUgcGx1Z2luIHdp
ZGdldCBwcm9wZXJseS4KKyAgICBpbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6
c2V0Rm9jdXMoKQpAQCAtNjQ0LDcgKzY0OCw4IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFs
dWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogdm9pZCBQbHVnaW5WaWV3Ojpp
bnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2lzV2luZG93
ZWQpIHsKLSAgICAgICAgcGxhdGZvcm1XaWRnZXQoKS0+dXBkYXRlKHJlY3QpOworICAgICAgICBp
ZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgICAgIHBsYXRmb3JtV2lkZ2V0KCktPnVwZGF0
ZShyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhlYWY0NTUuLjc1MDQ4
M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMS0xMSAgQW5kcmVhcyBLbGluZyAgPGFu
ZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gQWRkIGFuICJhbGllbl9RTGFiZWwiIGNsYXNzSWQgZm9yIG1h
bnVhbCB0ZXN0aW5nIG9mIGFsaWVuIHdpZGdldHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMzczCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21h
aW4uY3BwOgorICAgICAgICAoV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKwogMjAxMC0wMS0xMCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVk
IGJ5IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1F0TGF1bmNoZXIvbWFp
bi5jcHAgYi9XZWJLaXRUb29scy9RdExhdW5jaGVyL21haW4uY3BwCmluZGV4IGRkZjg3MjkuLjMw
ZmE3OWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1F0TGF1bmNoZXIvbWFpbi5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvUXRMYXVuY2hlci9tYWluLmNwcApAQCAtNjUxLDYgKzY1MSwxMyBAQCBRT2Jq
ZWN0KiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oY29uc3QgUVN0cmluZyAmY2xhc3NJZCwgY29uc3Qg
UVVybCAmdXJsLCBjb25zdCBRUwogICAgIFFfVU5VU0VEKHVybCk7CiAgICAgUV9VTlVTRUQocGFy
YW1OYW1lcyk7CiAgICAgUV9VTlVTRUQocGFyYW1WYWx1ZXMpOworCisgICAgaWYgKGNsYXNzSWQg
PT0gImFsaWVuX1FMYWJlbCIpIHsKKyAgICAgICAgUUxhYmVsKiBsID0gbmV3IFFMYWJlbDsKKyAg
ICAgICAgKHZvaWQpIGwtPndpbklkKCk7CisgICAgICAgIHJldHVybiBsOworICAgIH0KKwogI2lm
bmRlZiBRVF9OT19VSVRPT0xTCiAgICAgUVVpTG9hZGVyIGxvYWRlcjsKICAgICByZXR1cm4gbG9h
ZGVyLmNyZWF0ZVdpZGdldChjbGFzc0lkLCB2aWV3KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59849</attachid>
            <date>2010-06-27 02:52:09 -0700</date>
            <delta_ts>2010-09-01 08:08:02 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-40273-v2.diff</filename>
            <type>text/plain</type>
            <size>25878</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYjlhNmI5Li5jOTZmOGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYt
MjcgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29s
b3IiIHNob3VsZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFk
ZGVkIHRlc3QgdG8gdmVyaWZ5IHN1cHBvcnQgZm9yICJjdXJyZW50Q29sb3IiIHZhbHVlIGluIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC4KKworICAgICAgICBBbHNvIHVuc2tpcHBlZCAzIHRlc3Rz
IHdoaWNoIG5vdyBwYXNzOgorCisgICAgICAgIC0gY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxs
U3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1sCisgICAgICAgIC0gY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5jaGFuZ2VkLmh0bWwKKyAgICAgICAgLSBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LnJlbW92ZWQuaHRt
bAorCisgICAgICAgIFNwZWMgbGluazogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jMmRjb250ZXh0CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvY2FudmFzLWN1cnJlbnRDb2xvci5qczogQWRkZWQuCisgICAgICAgIChh
dHRhY2hDYW52YXNUb0RvY3VtZW50KToKKyAgICAgICAgKHRyeUxpbmVhckdyYWRpZW50Q29sb3Ip
OgorICAgICAgICAodHJ5UmFkaWFsR3JhZGllbnRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wNi0y
NiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgdGV4dCBleHBlY3RhdGlvbnMgdXBkYXRlIGFmdGVyIHI2MTk1Ni4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcyYTM2NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3It
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1Rlc3QgdGhhdCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQgc3VwcG9ydHMgdGhlICdjdXJyZW50Q29sb3InIHZhbHVlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAnI2YwMCc7IGN0eC5z
aGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ2N1cnJlbnRD
b2xvcic7IGN0eC5zaGFkb3dDb2xvciBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LmZpbGxTdHlsZSA9
ICcjZjAwJzsgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LmZpbGxTdHlsZSA9
ICdjdXJyZW50Q29sb3InOyBjdHguZmlsbFN0eWxlIGlzICcjMDAwMDAwJworUEFTUyBjdHguc3Ry
b2tlU3R5bGUgPSAnI2YwMCc7IGN0eC5zdHJva2VTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4
LnN0cm9rZVN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zdHJva2VTdHlsZSBpcyAnIzAwMDAw
MCcKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2YwMCcpOyBjdHguc2hhZG93Q29sb3Ig
aXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicp
OyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zZXRTaGFkb3coMCwgMCwg
MCwgJyNmMDAnLCAwLjApOyBjdHguc2hhZG93Q29sb3IgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjAp
JworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InLCAwLjApOyBjdHgu
c2hhZG93Q29sb3IgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldFN0cm9rZUNv
bG9yKCcjZjAwJyk7IGN0eC5zdHJva2VTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNldFN0
cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LnN0cm9rZVN0eWxlIGlzICcjMDAwMDAwJwor
UEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUgaXMg
J3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRD
b2xvcicsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFT
UyBjdHguc2V0RmlsbENvbG9yKCcjZjAwJyk7IGN0eC5maWxsU3R5bGUgaXMgJyNmZjAwMDAnCitQ
QVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicpOyBjdHguZmlsbFN0eWxlIGlzICcj
MDAwMDAwJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCcjZjAwJywgMC4wKTsgY3R4LmZpbGxTdHls
ZSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJl
bnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5bGUgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BB
U1MgdHJ5TGluZWFyR3JhZGllbnRDb2xvcignI2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1Mg
dHJ5TGluZWFyR3JhZGllbnRDb2xvcignY3VycmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BB
U1MgdHJ5UmFkaWFsR3JhZGllbnRDb2xvcignI2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1Mg
dHJ5UmFkaWFsR3JhZGllbnRDb2xvcignY3VycmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BB
U1MgYXR0YWNoQ2FudmFzVG9Eb2N1bWVudCgpIGlzIHRydWUKK1BBU1MgY2FudmFzLnN0eWxlLmNv
bG9yID0gJyMxMjM0NTYnOyBjYW52YXMuc3R5bGUuY29sb3IgaXMgJ3JnYigxOCwgNTIsIDg2KScK
K1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAnOyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAw
MDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdjdXJyZW50Q29sb3InOyBjdHguc2hhZG93Q29s
b3IgaXMgJyMxMjM0NTYnCitQQVNTIGN0eC5maWxsU3R5bGUgPSAnI2YwMCc7IGN0eC5maWxsU3R5
bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5maWxsU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4
LmZpbGxTdHlsZSBpcyAnIzEyMzQ1NicKK1BBU1MgY3R4LnN0cm9rZVN0eWxlID0gJyNmMDAnOyBj
dHguc3Ryb2tlU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zdHJva2VTdHlsZSA9ICdjdXJy
ZW50Q29sb3InOyBjdHguc3Ryb2tlU3R5bGUgaXMgJyMxMjM0NTYnCitQQVNTIGN0eC5zZXRTaGFk
b3coMCwgMCwgMCwgJyNmMDAnKTsgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmYwMDAwJworUEFTUyBj
dHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InKTsgY3R4LnNoYWRvd0NvbG9yIGlz
ICcjMTIzNDU2JworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJywgMC4wKTsgY3R4
LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldFNoYWRv
dygwLCAwLCAwLCAnY3VycmVudENvbG9yJywgMC4wKTsgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2Jh
KDE4LCA1MiwgODYsIDAuMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcpOyBjdHgu
c3Ryb2tlU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY3VycmVu
dENvbG9yJyk7IGN0eC5zdHJva2VTdHlsZSBpcyAnIzEyMzQ1NicKK1BBU1MgY3R4LnNldFN0cm9r
ZUNvbG9yKCcjZjAwJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIGlzICdyZ2JhKDI1NSwgMCwgMCwg
MC4wKScKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InLCAwLjApOyBjdHgu
c3Ryb2tlU3R5bGUgaXMgJ3JnYmEoMTgsIDUyLCA4NiwgMC4wKScKK1BBU1MgY3R4LnNldEZpbGxD
b2xvcignI2YwMCcpOyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2V0Rmls
bENvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LmZpbGxTdHlsZSBpcyAnIzEyMzQ1NicKK1BBU1Mg
Y3R4LnNldEZpbGxDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5maWxsU3R5bGUgaXMgJ3JnYmEoMjU1
LCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InLCAwLjAp
OyBjdHguZmlsbFN0eWxlIGlzICdyZ2JhKDE4LCA1MiwgODYsIDAuMCknCitQQVNTIHRyeUxpbmVh
ckdyYWRpZW50Q29sb3IoJyNmMDAnKSBpcyAnMjU1LDAsMCwyNTUnCitQQVNTIHRyeUxpbmVhckdy
YWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIGlzICcxOCw1Miw4NiwyNTUnCitQQVNTIHRyeVJh
ZGlhbEdyYWRpZW50Q29sb3IoJyNmMDAnKSBpcyAnMjU1LDAsMCwyNTUnCitQQVNTIHRyeVJhZGlh
bEdyYWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIGlzICcxOCw1Miw4NiwyNTUnCitQQVNTIGN0
eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmYwMDAwJworUEFT
UyBjdHguc2hhZG93Q29sb3IgPSAnQ1VSUkVOVENPTE9SJzsgY3R4LnNoYWRvd0NvbG9yIGlzICcj
MTIzNDU2JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29s
b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWI3MjQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvY2FudmFzLWN1cnJlbnRDb2xvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLWN1cnJlbnRDb2xvci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtY3VycmVudENvbG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmE4NjRhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWN1cnJlbnRDb2xvci5qcwpAQCAtMCwwICsxLDg5IEBA
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdXBwb3J0
cyB0aGUgJ2N1cnJlbnRDb2xvcicgdmFsdWUuIik7CisKK2NhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2NhbnZhcycpOworY2FudmFzLndpZHRoID0gMTAwOworY2FudmFzLmhlaWdodCA9
IDEwMDsKK2N0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitmdW5jdGlvbiBhdHRhY2hD
YW52YXNUb0RvY3VtZW50KCkgeworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFz
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlICE9IG51bGw7Cit9CisKK2Z1
bmN0aW9uIHRyeUxpbmVhckdyYWRpZW50Q29sb3IoY29sb3IpIHsKKyAgICB2YXIgZ3JhZGllbnQg
PSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMTAwLCAxMDApOworICAgIGdyYWRpZW50
LmFkZENvbG9yU3RvcCgwLCBjb2xvcik7CisgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIGNv
bG9yKTsKKyAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgY3R4LmZpbGxSZWN0KDAs
IDAsIDEwMCwgMTAwKTsKKyAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSkuZGF0YTsKKyAgICByZXR1cm4gJycgKyBkYXRhWzBdICsgJywnICsgZGF0YVsxXSArICcsJyAr
IGRhdGFbMl0gKyAnLCcgKyBkYXRhWzNdOworfQorCitmdW5jdGlvbiB0cnlSYWRpYWxHcmFkaWVu
dENvbG9yKGNvbG9yKSB7CisgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRp
ZW50KDAsIDAsIDEwMCwgMTAwLCAxMDAsIDEwMCk7CisgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9w
KDAsIGNvbG9yKTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgY29sb3IpOworICAgIGN0
eC5maWxsU3R5bGUgPSBncmFkaWVudDsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDAp
OworICAgIHZhciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKS5kYXRhOworICAg
IHJldHVybiAnJyArIGRhdGFbMF0gKyAnLCcgKyBkYXRhWzFdICsgJywnICsgZGF0YVsyXSArICcs
JyArIGRhdGFbM107Cit9CisKKy8vIEZpcnN0IHdlIHRlc3Qgd2l0aCB0aGUgY2FudmFzIG91dC1v
Zi1kb2N1bWVudCwgJ2N1cnJlbnRDb2xvcicgc2hvdWxkIG1lYW4gYmxhY2sKK3Nob3VsZEJlKCJj
dHguc2hhZG93Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dDb2xvciIsICInI2ZmMDAwMCciKTsK
K3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IgPSAnY3VycmVudENvbG9yJzsgY3R4LnNoYWRvd0Nv
bG9yIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUgPSAnI2YwMCc7IGN0
eC5maWxsU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LmZpbGxTdHlsZSA9ICdj
dXJyZW50Q29sb3InOyBjdHguZmlsbFN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0
eC5zdHJva2VTdHlsZSA9ICcjZjAwJzsgY3R4LnN0cm9rZVN0eWxlIiwgIicjZmYwMDAwJyIpOwor
c2hvdWxkQmUoImN0eC5zdHJva2VTdHlsZSA9ICdjdXJyZW50Q29sb3InOyBjdHguc3Ryb2tlU3R5
bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2Yw
MCcpOyBjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFNo
YWRvdygwLCAwLCAwLCAnY3VycmVudENvbG9yJyk7IGN0eC5zaGFkb3dDb2xvciIsICInIzAwMDAw
MCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJywgMC4wKTsgY3R4
LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDI1NSwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHgu
c2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InLCAwLjApOyBjdHguc2hhZG93Q29sb3Ii
LCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3Io
JyNmMDAnKTsgY3R4LnN0cm9rZVN0eWxlIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJyk7IGN0eC5zdHJva2VTdHlsZSIsICInIzAwMDAw
MCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnLCAwLjApOyBjdHguc3Ry
b2tlU3R5bGUiLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5zZXRT
dHJva2VDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIiwgIidyZ2Jh
KDAsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignI2YwMCcpOyBj
dHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3Io
J2N1cnJlbnRDb2xvcicpOyBjdHguZmlsbFN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUo
ImN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnLCAwLjApOyBjdHguZmlsbFN0eWxlIiwgIidyZ2JhKDI1
NSwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29s
b3InLCAwLjApOyBjdHguZmlsbFN0eWxlIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CitzaG91
bGRCZSgidHJ5TGluZWFyR3JhZGllbnRDb2xvcignI2YwMCcpIiwgIicyNTUsMCwwLDI1NSciKTsK
K3Nob3VsZEJlKCJ0cnlMaW5lYXJHcmFkaWVudENvbG9yKCdjdXJyZW50Q29sb3InKSIsICInMCww
LDAsMjU1JyIpOworc2hvdWxkQmUoInRyeVJhZGlhbEdyYWRpZW50Q29sb3IoJyNmMDAnKSIsICIn
MjU1LDAsMCwyNTUnIik7CitzaG91bGRCZSgidHJ5UmFkaWFsR3JhZGllbnRDb2xvcignY3VycmVu
dENvbG9yJykiLCAiJzAsMCwwLDI1NSciKTsKKworLy8gQXR0YWNoIHRvIHRoZSBkb2N1bWVudCBh
bmQgc2V0IHRoZSBjYW52YXMncyBjb2xvciB0byAjMTIzNDU2CitzaG91bGRCZSgiYXR0YWNoQ2Fu
dmFzVG9Eb2N1bWVudCgpIiwgInRydWUiKTsKK3Nob3VsZEJlKCJjYW52YXMuc3R5bGUuY29sb3Ig
PSAnIzEyMzQ1Nic7IGNhbnZhcy5zdHlsZS5jb2xvciIsICIncmdiKDE4LCA1MiwgODYpJyIpOwor
CisvLyAnY3VycmVudENvbG9yJyBzaG91bGQgbm93IG1lYW4gIzEyMzQ1Ngorc2hvdWxkQmUoImN0
eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOwor
c2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICdjdXJyZW50Q29sb3InOyBjdHguc2hhZG93Q29s
b3IiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsgY3R4
LmZpbGxTdHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlID0gJ2N1
cnJlbnRDb2xvcic7IGN0eC5maWxsU3R5bGUiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4
LnN0cm9rZVN0eWxlID0gJyNmMDAnOyBjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7Citz
aG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zdHJva2VTdHls
ZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAw
Jyk7IGN0eC5zaGFkb3dDb2xvciIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hh
ZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InKTsgY3R4LnNoYWRvd0NvbG9yIiwgIicjMTIzNDU2
JyIpOworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnLCAwLjApOyBjdHgu
c2hhZG93Q29sb3IiLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIs
ICIncmdiYSgxOCwgNTIsIDg2LCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xv
cignI2YwMCcpOyBjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4
LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMTIz
NDU2JyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5z
dHJva2VTdHlsZSIsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNl
dFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUiLCAiJ3Jn
YmEoMTgsIDUyLCA4NiwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCcjZjAw
Jyk7IGN0eC5maWxsU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxD
b2xvcignY3VycmVudENvbG9yJyk7IGN0eC5maWxsU3R5bGUiLCAiJyMxMjM0NTYnIik7CitzaG91
bGRCZSgiY3R4LnNldEZpbGxDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5maWxsU3R5bGUiLCAiJ3Jn
YmEoMjU1LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJl
bnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5bGUiLCAiJ3JnYmEoMTgsIDUyLCA4NiwgMC4wKSci
KTsKK3Nob3VsZEJlKCJ0cnlMaW5lYXJHcmFkaWVudENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAs
MjU1JyIpOworc2hvdWxkQmUoInRyeUxpbmVhckdyYWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicp
IiwgIicxOCw1Miw4NiwyNTUnIik7CitzaG91bGRCZSgidHJ5UmFkaWFsR3JhZGllbnRDb2xvcign
I2YwMCcpIiwgIicyNTUsMCwwLDI1NSciKTsKK3Nob3VsZEJlKCJ0cnlSYWRpYWxHcmFkaWVudENv
bG9yKCdjdXJyZW50Q29sb3InKSIsICInMTgsNTIsODYsMjU1JyIpOworCisvLyBMYXN0IGJ1dCBu
b3QgbGVhc3QsIHZlcmlmeSB0aGF0IHdlJ3JlIGNhc2UgaW5zZW5zaXRpdmUKK3Nob3VsZEJlKCJj
dHguc2hhZG93Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dDb2xvciIsICInI2ZmMDAwMCciKTsK
K3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IgPSAnQ1VSUkVOVENPTE9SJzsgY3R4LnNoYWRvd0Nv
bG9yIiwgIicjMTIzNDU2JyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMTJhMDc2MC4uMThiZTQ4YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKQEAgLTIwNiw5ICsyMDYsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmRyYXdJbWFnZS5pbmNvbXBsZXRlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0lt
YWdlLm51bGwuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2Uud3Jvbmd0eXBl
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLnplcm9jYW52YXMuaHRtbAot
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQu
aHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1v
dmVkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC0zLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC00Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC01Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDJlODQzNGMuLmRkZGNhNTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtNTI0Myw5ICs1MjQzLDYgQEAgY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5kcmF3SW1hZ2UubmVnYXRpdmVzb3VyY2UuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5kcmF3SW1hZ2UubnVsbC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJ
bWFnZS53cm9uZ3R5cGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuemVy
b2NhbnZhcy5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJy
ZW50LmJhc2ljLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1
cnJlbnQuY2hhbmdlZC5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJz
ZS5jdXJyZW50LnJlbW92ZWQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUu
cGFyc2UucmdiLWNsYW1wLTMuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUu
cGFyc2UucmdiLWNsYW1wLTQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUu
cGFyc2UucmdiLWNsYW1wLTUuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MzU4M2Q0Li4xNjYyNGM2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisy
MDEwLTA2LTI3ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzOiAiY3Vy
cmVudENvbG9yIiBzaG91bGQgaW5oZXJpdCB0aGUgY2FudmFzIGVsZW1lbnQncyBjb2xvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzMKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgImN1cnJlbnRDb2xvciIgaW4gQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEIEFQSXMuCisgICAgICAgIElmIHRoZSBjYW52YXMgaXMgaW4tZG9jdW1lbnQsICJjdXJy
ZW50Q29sb3IiIGlzIHJlcGxhY2VkIGJ5IGNhbnZhcy5zdHlsZS5jb2xvciwKKyAgICAgICAgb3Ro
ZXJ3aXNlIHdlIHVzZSBmdWxseSBvcGFxdWUgYmxhY2suCisKKyAgICAgICAgQ2FudmFzR3JhZGll
bnQgbm93IGhhcyBhIGJhY2tsaW5rIHRvIHRoZSBIVE1MQ2FudmFzRWxlbWVudCBpdCB3YXMgY3Jl
YXRlZCBvbi4KKworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4dAorCisgICAgICAgIFRl
c3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRtbAorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzR3Jh
ZGllbnQ6OmFkZENvbG9yU3RvcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzR3JhZGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzR3JhZGllbnQ6OnNldENhbnZhcyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFk
aWFsR3JhZGllbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0N1cnJlbnRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aGFzT3ZlcnJpZGVBbHBoYSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNTdHlsZTo6b3ZlcnJpZGVBbHBoYSk6CisKIDIwMTAtMDYtMjcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAKaW5kZXggZmQ0ODE5
NC4uODUwNzI2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAKQEAgLTI3
LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVu
dC5oIgogCisjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgorI2luY2x1ZGUgIkNhbnZhc1N0eWxl
LmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
CkBAIC01Miw3ICs1NCw3IEBAIHZvaWQgQ2FudmFzR3JhZGllbnQ6OmFkZENvbG9yU3RvcChmbG9h
dCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xvciwgRXhjZXB0aW9uQ29kCiAgICAgfQogCiAgICAg
UkdCQTMyIHJnYmEgPSAwOwotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNv
bG9yKSkgeworICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKHJnYmEsIGNvbG9yLCBt
X2NhbnZhcy5nZXQoKSkpIHsKICAgICAgICAgaWYgKCFtX2Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1v
ZGUpCiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBiL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaAppbmRleCAwYTc3NjUyLi5kZTkwZWJlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oCkBAIC0yOCwyNCArMjgsMzAgQEAKICNkZWZpbmUg
Q2FudmFzR3JhZGllbnRfaAogCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgSFRN
TENhbnZhc0VsZW1lbnQ7CiAgICAgY2xhc3MgU3RyaW5nOwogCiAgICAgdHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKIAogICAgIGNsYXNzIENhbnZhc0dyYWRpZW50IDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FudmFzR3JhZGllbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENhbnZhc0dyYWRpZW50PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgcDAsIGNvbnN0IEZs
b2F0UG9pbnQmIHAxKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4g
Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBj
b25zdCBGbG9hdFBvaW50JiBwMSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDYW52YXNHcmFkaWVudChwMCwgcDEpKTsKKyAgICAgICAgICAgIENhbnZhc0dyYWRp
ZW50KiBncmFkaWVudCA9IG5ldyBDYW52YXNHcmFkaWVudChwMCwgcDEpOworICAgICAgICAgICAg
Z3JhZGllbnQtPnNldENhbnZhcyhjYW52YXMpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KGdyYWRpZW50KTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxv
YXRQb2ludCYgcDEsIGZsb2F0IHIxKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNH
cmFkaWVudD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGNvbnN0IEZsb2F0UG9p
bnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGZsb2F0IHIxKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc0dyYWRpZW50KHAwLCBy
MCwgcDEsIHIxKSk7CisgICAgICAgICAgICBDYW52YXNHcmFkaWVudCogZ3JhZGllbnQgPSBuZXcg
Q2FudmFzR3JhZGllbnQocDAsIHIwLCBwMSwgcjEpOworICAgICAgICAgICAgZ3JhZGllbnQtPnNl
dENhbnZhcyhjYW52YXMpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGdyYWRpZW50KTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgR3JhZGllbnQqIGdyYWRpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9ncmFkaWVudC5nZXQoKTsgfQpAQCAtNjEsNyArNjcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIENhbnZhc0dyYWRpZW50KGNvbnN0IEZs
b2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSk7CiAgICAgICAgIENhbnZhc0dyYWRp
ZW50KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBmbG9hdCByMCwgY29uc3QgRmxvYXRQb2ludCYgcDEs
IGZsb2F0IHIxKTsKKworICAgICAgICB2b2lkIHNldENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCog
Y2FudmFzKSB7IG1fY2FudmFzID0gY2FudmFzOyB9CiAgICAgICAgIAorICAgICAgICBSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbnQ+IG1fY2FudmFzOwogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IG1f
Z3JhZGllbnQ7CiAgICAgICAgIGJvb2wgbV9kYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlOwogICAg
IH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKaW5kZXggNjI4NGU1MC4uZmFjNzkxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNjksNyArNjksNiBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGVmYXVsdEZvbnQg
PSAiMTBweCBzYW5zLXNlcmlmIjsKIAotCiBjbGFzcyBDYW52YXNTdHJva2VTdHlsZUFwcGxpZXIg
OiBwdWJsaWMgU3Ryb2tlU3R5bGVBcHBsaWVyIHsKIHB1YmxpYzoKICAgICBDYW52YXNTdHJva2VT
dHlsZUFwcGxpZXIoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjYW52YXNDb250ZXh0KQpAQCAt
MTcwLDcgKzE2OSwxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tl
U3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUpCiAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNhbnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CisgICAg
aWYgKHN0eWxlLT5pc0N1cnJlbnRDb2xvcigpKSB7CisgICAgICAgIGlmIChzdHlsZS0+aGFzT3Zl
cnJpZGVBbHBoYSgpKQorICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlKGNv
bG9yV2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKGNhbnZhcygpKSwgc3R5bGUtPm92ZXJy
aWRlQWxwaGEoKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0
eWxlOjpjcmVhdGUoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CisgICAgfSBlbHNlIGlmIChjYW52
YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBpZiAoQ2FudmFzUGF0dGVybiogcGF0dGVy
biA9IHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKICAgICAgICAgICAgIGlmICghcGF0dGVybi0+
b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgICAgICAgICBjYW52YXMoKS0+c2V0T3JpZ2luVGFpbnRl
ZCgpOwpAQCAtMTkzLDggKzE5NywxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogewogICAgIGlmICgh
c3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAKLSAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFu
KCkpIHsKKworICAgIGlmIChzdHlsZS0+aXNDdXJyZW50Q29sb3IoKSkgeworICAgICAgICBpZiAo
c3R5bGUtPmhhc092ZXJyaWRlQWxwaGEoKSkKKyAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5
bGU6OmNyZWF0ZShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSks
IHN0eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3R5
bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlKGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOworICAgIH0g
ZWxzZSBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKICAgICAgICAgaWYgKENhbnZhc1Bh
dHRlcm4qIHBhdHRlcm4gPSBzdHlsZS0+Y2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgICAgICBp
ZiAoIXBhdHRlcm4tPm9yaWdpbkNsZWFuKCkpCiAgICAgICAgICAgICAgICAgY2FudmFzKCktPnNl
dE9yaWdpblRhaW50ZWQoKTsKQEAgLTMyMCw3ICszMjksNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQogewotICAgIGlm
ICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKQor
ICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwg
Y29sb3IsIGNhbnZhcygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlTaGFkb3coKTsK
QEAgLTgyNyw3ICs4MzYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBpZiAoIUNTU1BhcnNlcjo6
cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKKyAgICBpZiAoIXBhcnNl
Q29sb3JPckN1cnJlbnRDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yLCBjYW52YXMo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9h
dFNpemUod2lkdGgsIGhlaWdodCk7CkBAIC04NTIsNyArODYxLDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLAogewogICAgIFJHQkEzMiByZ2JhOwogCi0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNl
Q29sb3IocmdiYSwgY29sb3IpKQorICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKHJn
YmEsIGNvbG9yLCBjYW52YXMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRlKCkubV9z
aGFkb3dDb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpOwpAQCAtMTI0
OSw3ICsxMjU4LDcgQEAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdAogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCA9IENhbnZh
c0dyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50KHgxLCB5MSkp
OworICAgIFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50ID0gQ2FudmFzR3JhZGll
bnQ6OmNyZWF0ZShjYW52YXMoKSwgRmxvYXRQb2ludCh4MCwgeTApLCBGbG9hdFBvaW50KHgxLCB5
MSkpOwogICAgIHByZXBhcmVHcmFkaWVudEZvckRhc2hib2FyZChncmFkaWVudC5nZXQoKSk7CiAg
ICAgcmV0dXJuIGdyYWRpZW50OwogfQpAQCAtMTI2MSw3ICsxMjcwLDcgQEAgUGFzc1JlZlB0cjxD
YW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFk
aWVudChmbG9hdAogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9Ci0gICAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQgPSAg
Q2FudmFzR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIHIwLCBGbG9hdFBvaW50
KHgxLCB5MSksIHIxKTsKKyAgICBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCA9
ICBDYW52YXNHcmFkaWVudDo6Y3JlYXRlKGNhbnZhcygpLCBGbG9hdFBvaW50KHgwLCB5MCksIHIw
LCBGbG9hdFBvaW50KHgxLCB5MSksIHIxKTsKICAgICBwcmVwYXJlR3JhZGllbnRGb3JEYXNoYm9h
cmQoZ3JhZGllbnQuZ2V0KCkpOwogICAgIHJldHVybiBncmFkaWVudDsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKaW5kZXggNjdlODIwMS4uNjhhMzUyNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKQEAgLTMwLDkgKzMwLDExIEBACiAjaW5jbHVkZSAiQ2FudmFzU3R5
bGUuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShD
RykKQEAgLTQ4LDYgKzUwLDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBDb2xv
clBhcnNlUmVzdWx0IHsgUGFyc2VkUkdCQSwgUGFyc2VkQ3VycmVudENvbG9yLCBQYXJzZUZhaWxl
ZCB9OworCitzdGF0aWMgQ29sb3JQYXJzZVJlc3VsdCBwYXJzZUNvbG9yKFJHQkEzMiYgcGFyc2Vk
Q29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCit7CisgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGNvbG9yU3RyaW5nLCAiY3VycmVudGNvbG9yIikpCisgICAgICAgIHJldHVybiBQYXJz
ZWRDdXJyZW50Q29sb3I7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihwYXJzZWRDb2xv
ciwgY29sb3JTdHJpbmcpKQorICAgICAgICByZXR1cm4gUGFyc2VkUkdCQTsKKyAgICByZXR1cm4g
UGFyc2VGYWlsZWQ7Cit9CisKK1JHQkEzMiBjdXJyZW50Q29sb3IoSFRNTENhbnZhc0VsZW1lbnQq
IGNhbnZhcykKK3sKKyAgICBpZiAoIWNhbnZhcy0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1
cm4gQ29sb3I6OmJsYWNrOworICAgIFJHQkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgIENT
U1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjYW52YXMtPnN0eWxlKCktPmdldFByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlDb2xvcikpOworICAgIHJldHVybiByZ2JhOworfQorCitib29sIHBhcnNl
Q29sb3JPckN1cnJlbnRDb2xvcihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNv
bG9yU3RyaW5nLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQoreworICAgIENvbG9yUGFyc2VS
ZXN1bHQgcGFyc2VSZXN1bHQgPSBwYXJzZUNvbG9yKHBhcnNlZENvbG9yLCBjb2xvclN0cmluZyk7
CisgICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlRmFpbGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlZEN1cnJlbnRDb2xvcikKKyAgICAgICAg
cGFyc2VkQ29sb3IgPSBjdXJyZW50Q29sb3IoY2FudmFzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFR5cGUgdHlwZSwgZmxvYXQgb3ZlcnJpZGVBbHBo
YSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9vdmVycmlkZUFscGhhKG92ZXJyaWRlQWxw
aGEpCit7Cit9CisKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKICAgICA6
IG1fdHlwZShSR0JBKQogICAgICwgbV9yZ2JhKHJnYmEpCkBAIC05NCwxNiArMTMyLDIyIEBAIENh
bnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4p
CiBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiB7CiAgICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNl
Q29sb3IocmdiYSwgY29sb3IpKQorICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VSZXN1bHQgPSBw
YXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VGYWls
ZWQpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChwYXJzZVJlc3VsdCA9PSBQYXJzZWRDdXJy
ZW50Q29sb3IpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoQ3VycmVu
dENvbG9yKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7CiB9
CiAKIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCiB7CiAgICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFD
U1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgIENvbG9yUGFyc2VSZXN1bHQg
cGFyc2VSZXN1bHQgPSBwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKKyAgICBpZiAocGFyc2VSZXN1
bHQgPT0gUGFyc2VGYWlsZWQpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChwYXJzZVJlc3Vs
dCA9PSBQYXJzZWRDdXJyZW50Q29sb3IpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2Fu
dmFzU3R5bGUoQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGEsIGFscGhhKSk7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEs
IGFscGhhKSkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggMThlNTVjZi4u
NTFkZmVkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisr
KyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzR3JhZGllbnQ7CiAgICAgY2xhc3Mg
Q2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgY2xhc3MgSFRN
TENhbnZhc0VsZW1lbnQ7CiAKICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENhbnZhc1N0eWxlPiB7CiAgICAgcHVibGljOgpAQCAtNDgsNiArNDksMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3Jl
YXRlKFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KTsKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+
IHBhdHRlcm4pOwogCisgICAgICAgIGJvb2wgaXNDdXJyZW50Q29sb3IoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gQ3VycmVudENvbG9yIHx8IG1fdHlwZSA9PSBDdXJyZW50Q29sb3JXaXRoT3Zl
cnJpZGVBbHBoYTsgfQorICAgICAgICBib29sIGhhc092ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE7IH0KKyAgICAgICAg
ZmxvYXQgb3ZlcnJpZGVBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVBbHBoYTsgfQor
CiAgICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiYSkuc2Vy
aWFsaXplZCgpOyB9CiAgICAgICAgIENhbnZhc0dyYWRpZW50KiBjYW52YXNHcmFkaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JhZGllbnQuZ2V0KCk7IH0KICAgICAgICAgQ2FudmFzUGF0dGVybiog
Y2FudmFzUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQpAQCAtNTYs
NiArNjEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgYXBwbHlTdHJva2VD
b2xvcihHcmFwaGljc0NvbnRleHQqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGVudW0gVHlw
ZSB7IFJHQkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuLCBDdXJyZW50Q29sb3IsIEN1
cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhIH07CisKKyAgICAgICAgQ2FudmFzU3R5bGUoVHlw
ZSwgZmxvYXQgb3ZlcnJpZGVBbHBoYSA9IDApOwogICAgICAgICBDYW52YXNTdHlsZShSR0JBMzIg
cmdiYSk7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCk7CiAgICAgICAgIENh
bnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOwpAQCAtNjQsMTEgKzcyLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxD
YW52YXNHcmFkaWVudD4pOwogICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1Bh
dHRlcm4+KTsKIAotICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQsIElt
YWdlUGF0dGVybiB9OwotCiAgICAgICAgIFR5cGUgbV90eXBlOwogCi0gICAgICAgIFJHQkEzMiBt
X3JnYmE7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIFJHQkEzMiBtX3JnYmE7CisgICAg
ICAgICAgICBmbG9hdCBtX292ZXJyaWRlQWxwaGE7CisgICAgICAgIH07CiAKICAgICAgICAgUmVm
UHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAgICBSZWZQdHI8Q2FudmFzUGF0
dGVybj4gbV9wYXR0ZXJuOwpAQCAtODQsNiArOTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIH0gbV9jbXlrYTsKICAgICB9OwogCisgICAgUkdCQTMyIGN1cnJlbnRDb2xvcihIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzKTsKKyAgICBib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xv
cihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="46968"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="46969"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66213</attachid>
            <date>2010-09-01 08:08:02 -0700</date>
            <delta_ts>2010-09-01 08:41:06 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-40273-v3.diff</filename>
            <type>text/plain</type>
            <size>23029</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OGQ4ODdlLi5jNDc5ZGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDkt
MDEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29s
b3IiIHNob3VsZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFk
ZGVkIHRlc3QgdG8gdmVyaWZ5IHN1cHBvcnQgZm9yICJjdXJyZW50Q29sb3IiIHZhbHVlIGluIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC4KKworICAgICAgICBBbHNvIHVuc2tpcHBlZCAzIHRlc3Rz
IHdoaWNoIG5vdyBwYXNzOgorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0
eWxlLnBhcnNlLmN1cnJlbnQuYmFzaWMuaHRtbAorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuY2hhbmdlZC5odG1sCisgICAgICAgIC0gY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwK
KworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4dAorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29sb3IuanM6IEFkZGVkLgorICAg
ICAgICAoYXR0YWNoQ2FudmFzVG9Eb2N1bWVudCk6CisgICAgICAgICh0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKToKKyAgICAgICAgKHRyeVJhZGlhbEdyYWRpZW50Q29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIw
MTAtMDktMDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODU0YzZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1NyBAQAorVGVzdCB0aGF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdXBwb3J0
cyB0aGUgJ2N1cnJlbnRDb2xvcicgdmFsdWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4LnNoYWRvd0NvbG9yIGlzICcj
ZmYwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAnY3VycmVudENvbG9yJzsgY3R4LnNoYWRv
d0NvbG9yIGlzICcjMDAwMDAwJworUEFTUyBjdHguZmlsbFN0eWxlID0gJyNmMDAnOyBjdHguZmls
bFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguZmlsbFN0eWxlID0gJ2N1cnJlbnRDb2xvcic7
IGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zdHJva2VTdHlsZSA9ICcjZjAw
JzsgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc3Ryb2tlU3R5bGUgPSAn
Y3VycmVudENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIGlzICcjMDAwMDAwJworUEFTUyBjdHguc2V0
U2hhZG93KDAsIDAsIDAsICcjZjAwJyk7IGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BB
U1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3VycmVudENvbG9yJyk7IGN0eC5zaGFkb3dDb2xv
ciBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2YwMCcsIDAuMCk7
IGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRT
aGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnKTsgY3R4
LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJl
bnRDb2xvcicpOyBjdHguc3Ryb2tlU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zZXRTdHJv
a2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAs
IDAuMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4
LnN0cm9rZVN0eWxlIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRGaWxsQ29s
b3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNldEZpbGxD
b2xvcignY3VycmVudENvbG9yJyk7IGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0
eC5zZXRGaWxsQ29sb3IoJyNmMDAnLCAwLjApOyBjdHguZmlsbFN0eWxlIGlzICdyZ2JhKDI1NSwg
MCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsg
Y3R4LmZpbGxTdHlsZSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlMaW5lYXJHcmFk
aWVudENvbG9yKCcjZjAwJykgaXMgJzI1NSwwLDAsMjU1JworUEFTUyB0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKCdjdXJyZW50Q29sb3InKSBpcyAnMCwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFk
aWVudENvbG9yKCcjZjAwJykgaXMgJzI1NSwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFkaWVu
dENvbG9yKCdjdXJyZW50Q29sb3InKSBpcyAnMCwwLDAsMjU1JworUEFTUyBhdHRhY2hDYW52YXNU
b0RvY3VtZW50KCkgaXMgdHJ1ZQorUEFTUyBjYW52YXMuc3R5bGUuY29sb3IgPSAnIzEyMzQ1Nic7
IGNhbnZhcy5zdHlsZS5jb2xvciBpcyAncmdiKDE4LCA1MiwgODYpJworUEFTUyBjdHguc2hhZG93
Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNo
YWRvd0NvbG9yID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zaGFkb3dDb2xvciBpcyAnIzEyMzQ1NicK
K1BBU1MgY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcK
K1BBU1MgY3R4LmZpbGxTdHlsZSA9ICdjdXJyZW50Q29sb3InOyBjdHguZmlsbFN0eWxlIGlzICcj
MTIzNDU2JworUEFTUyBjdHguc3Ryb2tlU3R5bGUgPSAnI2YwMCc7IGN0eC5zdHJva2VTdHlsZSBp
cyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnN0cm9rZVN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5z
dHJva2VTdHlsZSBpcyAnIzEyMzQ1NicKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2Yw
MCcpOyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRTaGFkb3coMCwg
MCwgMCwgJ2N1cnJlbnRDb2xvcicpOyBjdHguc2hhZG93Q29sb3IgaXMgJyMxMjM0NTYnCitQQVNT
IGN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnLCAwLjApOyBjdHguc2hhZG93Q29sb3IgaXMg
J3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJy
ZW50Q29sb3InLCAwLjApOyBjdHguc2hhZG93Q29sb3IgaXMgJ3JnYmEoMTgsIDUyLCA4NiwgMC4w
KScKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAwJyk7IGN0eC5zdHJva2VTdHlsZSBpcyAn
I2ZmMDAwMCcKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LnN0
cm9rZVN0eWxlIGlzICcjMTIzNDU2JworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnLCAw
LjApOyBjdHguc3Ryb2tlU3R5bGUgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyBjdHgu
c2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSBpcyAn
cmdiYSgxOCwgNTIsIDg2LCAwLjApJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCcjZjAwJyk7IGN0
eC5maWxsU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRD
b2xvcicpOyBjdHguZmlsbFN0eWxlIGlzICcjMTIzNDU2JworUEFTUyBjdHguc2V0RmlsbENvbG9y
KCcjZjAwJywgMC4wKTsgY3R4LmZpbGxTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQ
QVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5bGUg
aXMgJ3JnYmEoMTgsIDUyLCA4NiwgMC4wKScKK1BBU1MgdHJ5TGluZWFyR3JhZGllbnRDb2xvcign
I2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1MgdHJ5TGluZWFyR3JhZGllbnRDb2xvcignY3Vy
cmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BBU1MgdHJ5UmFkaWFsR3JhZGllbnRDb2xvcign
I2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1MgdHJ5UmFkaWFsR3JhZGllbnRDb2xvcignY3Vy
cmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAn
OyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdD
VVJSRU5UQ09MT1InOyBjdHguc2hhZG93Q29sb3IgaXMgJyMxMjM0NTYnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY5YjcyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMt
Y3VycmVudENvbG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY3VycmVudENvbG9y
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50
Q29sb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwN2JlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtY3VycmVudENvbG9yLmpzCkBAIC0wLDAgKzEsODkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRo
YXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHN1cHBvcnRzIHRoZSAnY3VycmVudENvbG9yJyB2
YWx1ZS4iKTsKKworY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citj
YW52YXMud2lkdGggPSAxMDA7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworY3R4ID0gY2FudmFzLmdl
dENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIGF0dGFjaENhbnZhc1RvRG9jdW1lbnQoKSB7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworICAgIHJldHVybiBkb2N1bWVu
dC5ib2R5LnBhcmVudE5vZGUgIT0gbnVsbDsKK30KKworZnVuY3Rpb24gdHJ5TGluZWFyR3JhZGll
bnRDb2xvcihjb2xvcikgeworICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFk
aWVudCgwLCAwLCAxMDAsIDEwMCk7CisgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGNvbG9y
KTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgY29sb3IpOworICAgIGN0eC5maWxsU3R5
bGUgPSBncmFkaWVudDsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIHZh
ciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKS5kYXRhOworICAgIHJldHVybiAn
JyArIGRhdGFbMF0gKyAnLCcgKyBkYXRhWzFdICsgJywnICsgZGF0YVsyXSArICcsJyArIGRhdGFb
M107Cit9CisKK2Z1bmN0aW9uIHRyeVJhZGlhbEdyYWRpZW50Q29sb3IoY29sb3IpIHsKKyAgICB2
YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAxMDAsIDEw
MCwgMTAwKTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgY29sb3IpOworICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgxLCBjb2xvcik7CisgICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpLmRhdGE7CisgICAgcmV0dXJuICcnICsgZGF0YVswXSAr
ICcsJyArIGRhdGFbMV0gKyAnLCcgKyBkYXRhWzJdICsgJywnICsgZGF0YVszXTsKK30KKworLy8g
Rmlyc3Qgd2UgdGVzdCB3aXRoIHRoZSBjYW52YXMgb3V0LW9mLWRvY3VtZW50LCAnY3VycmVudENv
bG9yJyBzaG91bGQgbWVhbiBibGFjaworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICcjZjAw
JzsgY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dD
b2xvciA9ICdjdXJyZW50Q29sb3InOyBjdHguc2hhZG93Q29sb3IiLCAiJyMwMDAwMDAnIik7Citz
aG91bGRCZSgiY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsgY3R4LmZpbGxTdHlsZSIsICInI2ZmMDAw
MCciKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5maWxs
U3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlID0gJyNmMDAn
OyBjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0
eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zdHJva2VTdHlsZSIsICInIzAwMDAwMCciKTsKK3No
b3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJyk7IGN0eC5zaGFkb3dDb2xvciIs
ICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50
Q29sb3InKTsgY3R4LnNoYWRvd0NvbG9yIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnLCAwLjApOyBjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEo
MjU1LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1
cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgwLCAwLCAwLCAwLjAp
JyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcpOyBjdHguc3Ryb2tlU3R5
bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50
Q29sb3InKTsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTdHJva2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSIsICIncmdiYSgyNTUs
IDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29s
b3InLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3No
b3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCcjZjAwJyk7IGN0eC5maWxsU3R5bGUiLCAiJyNmZjAw
MDAnIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJyk7IGN0eC5m
aWxsU3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignI2Yw
MCcsIDAuMCk7IGN0eC5maWxsU3R5bGUiLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOworc2hv
dWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5
bGUiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJ0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAsMjU1JyIpOworc2hvdWxkQmUoInRyeUxpbmVhckdy
YWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIiwgIicwLDAsMCwyNTUnIik7CitzaG91bGRCZSgi
dHJ5UmFkaWFsR3JhZGllbnRDb2xvcignI2YwMCcpIiwgIicyNTUsMCwwLDI1NSciKTsKK3Nob3Vs
ZEJlKCJ0cnlSYWRpYWxHcmFkaWVudENvbG9yKCdjdXJyZW50Q29sb3InKSIsICInMCwwLDAsMjU1
JyIpOworCisvLyBBdHRhY2ggdG8gdGhlIGRvY3VtZW50IGFuZCBzZXQgdGhlIGNhbnZhcydzIGNv
bG9yIHRvICMxMjM0NTYKK3Nob3VsZEJlKCJhdHRhY2hDYW52YXNUb0RvY3VtZW50KCkiLCAidHJ1
ZSIpOworc2hvdWxkQmUoImNhbnZhcy5zdHlsZS5jb2xvciA9ICcjMTIzNDU2JzsgY2FudmFzLnN0
eWxlLmNvbG9yIiwgIidyZ2IoMTgsIDUyLCA4NiknIik7CisKKy8vICdjdXJyZW50Q29sb3InIHNo
b3VsZCBub3cgbWVhbiAjMTIzNDU2CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAn
OyBjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0Nv
bG9yID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zaGFkb3dDb2xvciIsICInIzEyMzQ1NiciKTsKK3No
b3VsZEJlKCJjdHguZmlsbFN0eWxlID0gJyNmMDAnOyBjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAw
JyIpOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LmZpbGxT
dHlsZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUgPSAnI2YwMCc7
IGN0eC5zdHJva2VTdHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5
bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMTIzNDU2JyIpOworc2hv
dWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnKTsgY3R4LnNoYWRvd0NvbG9yIiwg
IicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRD
b2xvcicpOyBjdHguc2hhZG93Q29sb3IiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4LnNl
dFNoYWRvdygwLCAwLCAwLCAnI2YwMCcsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgy
NTUsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3Vy
cmVudENvbG9yJywgMC4wKTsgY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDE4LCA1MiwgODYsIDAu
MCknIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAwJyk7IGN0eC5zdHJva2VT
dHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJl
bnRDb2xvcicpOyBjdHguc3Ryb2tlU3R5bGUiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4
LnNldFN0cm9rZUNvbG9yKCcjZjAwJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIiwgIidyZ2JhKDI1
NSwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRD
b2xvcicsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSIsICIncmdiYSgxOCwgNTIsIDg2LCAwLjApJyIp
Oworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSIsICIn
I2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InKTsg
Y3R4LmZpbGxTdHlsZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9y
KCcjZjAwJywgMC4wKTsgY3R4LmZpbGxTdHlsZSIsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LmZp
bGxTdHlsZSIsICIncmdiYSgxOCwgNTIsIDg2LCAwLjApJyIpOworc2hvdWxkQmUoInRyeUxpbmVh
ckdyYWRpZW50Q29sb3IoJyNmMDAnKSIsICInMjU1LDAsMCwyNTUnIik7CitzaG91bGRCZSgidHJ5
TGluZWFyR3JhZGllbnRDb2xvcignY3VycmVudENvbG9yJykiLCAiJzAsMCwwLDI1NSciKTsKK3No
b3VsZEJlKCJ0cnlSYWRpYWxHcmFkaWVudENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAsMjU1JyIp
Oworc2hvdWxkQmUoInRyeVJhZGlhbEdyYWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIiwgIicw
LDAsMCwyNTUnIik7CisKKy8vIExhc3QgYnV0IG5vdCBsZWFzdCwgdmVyaWZ5IHRoYXQgd2UncmUg
Y2FzZSBpbnNlbnNpdGl2ZQorc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4
LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9
ICdDVVJSRU5UQ09MT1InOyBjdHguc2hhZG93Q29sb3IiLCAiJyMxMjM0NTYnIik7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCAz
OTgwNzcxLi40NTYxMGNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMTg1LDkgKzE4
NSw2IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJu
LnNvdXJjZS1vdXQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuYnJva2Vu
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLmluY29tcGxldGUuaHRtbAog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UubnVsbC5odG1sCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmJhc2ljLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuY2hhbmdlZC5odG1sCi1jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LnJlbW92ZWQuaHRtbAogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2Uuc3lzdGVtLmh0bWwKIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuZnJvbnQuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKaW5kZXggZmU2OWYwNi4uYzA2ZmUzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC01MjIyLDkgKzUyMjIsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51
bmNvdmVyZWQucGF0dGVybi5zb3VyY2Utb3V0Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZHJhd0ltYWdlLmJyb2tlbi5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5p
bmNvbXBsZXRlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRt
bAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5o
dG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5n
ZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5y
ZW1vdmVkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnN5c3Rl
bS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmJlaGlu
ZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmJlc2lk
ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY5YTNlNTguLjZjYmU4NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDktMDEgIEFuZHJl
YXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29sb3IiIHNob3Vs
ZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciAiY3VycmVudENvbG9yIiBpbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgQVBJcy4KKyAg
ICAgICAgSWYgdGhlIGNhbnZhcyBpcyBpbi1kb2N1bWVudCwgImN1cnJlbnRDb2xvciIgaXMgcmVw
bGFjZWQgYnkgY2FudmFzLnN0eWxlLmNvbG9yLAorICAgICAgICBvdGhlcndpc2Ugd2UgdXNlIGZ1
bGx5IG9wYXF1ZSBibGFjay4KKworICAgICAgICBGb3IgZ3JhZGllbnQgYWRkQ29sb3JTdG9wKCks
ICJjdXJyZW50Q29sb3IiIGFsd2F5cyBtZWFucyBmdWxseSBvcGFxdWUgYmxhY2suCisKKyAgICAg
ICAgU3BlYyBsaW5rOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyMyZGNvbnRleHQKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9j
YW52YXMtY3VycmVudENvbG9yLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dy
YWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0
b3ApOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxl
Ojppc0N1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aGFzT3Zl
cnJpZGVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6b3ZlcnJpZGVBbHBo
YSk6CisKIDIwMTAtMDktMDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc0dyYWRpZW50LmNwcAppbmRleCBmZDQ4MTk0Li43Yzk4YTgyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCiAKKyNpbmNsdWRlICJDYW52YXNQ
YXR0ZXJuLmgiCisjaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKQEAgLTUyLDcgKzU0LDcgQEAgdm9pZCBD
YW52YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNv
bG9yLCBFeGNlcHRpb25Db2QKICAgICB9CiAKICAgICBSR0JBMzIgcmdiYSA9IDA7Ci0gICAgaWYg
KCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKSB7CisgICAgaWYgKCFwYXJzZUNv
bG9yT3JDdXJyZW50Q29sb3IocmdiYSwgY29sb3IsIDAgLypjYW52YXMqLykpIHsKICAgICAgICAg
aWYgKCFtX2Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpCiAgICAgICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2ZGY2YWJmLi5kODk5N2Y1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC03OSw3
ICs3OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBkZWZhdWx0Rm9udCA9ICIxMHB4IHNhbnMtc2VyaWYiOwogCi0KIGNsYXNzIENhbnZh
c1N0cm9rZVN0eWxlQXBwbGllciA6IHB1YmxpYyBTdHJva2VTdHlsZUFwcGxpZXIgewogcHVibGlj
OgogICAgIENhbnZhc1N0cm9rZVN0eWxlQXBwbGllcihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQq
IGNhbnZhc0NvbnRleHQpCkBAIC0yMzksNyArMjM4LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkK
ICAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+
aXNFcXVpdmFsZW50Q29sb3IoKnN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNh
bnZhcygpLT5vcmlnaW5DbGVhbigpKSB7CisgICAgaWYgKHN0eWxlLT5pc0N1cnJlbnRDb2xvcigp
KSB7CisgICAgICAgIGlmIChzdHlsZS0+aGFzT3ZlcnJpZGVBbHBoYSgpKQorICAgICAgICAgICAg
c3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY29sb3JXaXRoT3ZlcnJpZGVBbHBo
YShjdXJyZW50Q29sb3IoY2FudmFzKCkpLCBzdHlsZS0+b3ZlcnJpZGVBbHBoYSgpKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21SR0JB
KGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOworICAgIH0gZWxzZSBpZiAoY2FudmFzKCktPm9yaWdp
bkNsZWFuKCkpIHsKICAgICAgICAgaWYgKENhbnZhc1BhdHRlcm4qIHBhdHRlcm4gPSBzdHlsZS0+
Y2FudmFzUGF0dGVybigpKSB7CiAgICAgICAgICAgICBpZiAoIXBhdHRlcm4tPm9yaWdpbkNsZWFu
KCkpCiAgICAgICAgICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKQEAgLTI2
Nyw3ICsyNzEsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHls
ZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBzdHlsZSkKICAgICBpZiAoc3RhdGUoKS5tX2ZpbGxT
dHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFuKCkpIHsKKyAg
ICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0eWxlLT5oYXNP
dmVycmlkZUFscGhhKCkpCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVhdGVG
cm9tUkdCQShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0
eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3R5bGUg
PSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZhcygpKSk7Cisg
ICAgfSBlbHNlIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBpZiAoQ2Fu
dmFzUGF0dGVybiogcGF0dGVybiA9IHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKICAgICAgICAg
ICAgIGlmICghcGF0dGVybi0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgICAgICAgICBjYW52YXMo
KS0+c2V0T3JpZ2luVGFpbnRlZCgpOwpAQCAtMzk0LDcgKzQwMyw3IEBAIFN0cmluZyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNoYWRvd0NvbG9yKCkgY29uc3QKIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd0NvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0g
ICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBjb2xv
cikpCisgICAgaWYgKCFwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3Ioc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yLCBjb2xvciwgY2FudmFzKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBhcHBseVNoYWRv
dygpOwpAQCAtOTczLDcgKzk4Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1cikKIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yKQogewotICAgIGlmICghQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IpKQorICAgIGlmICgh
cGFyc2VDb2xvck9yQ3VycmVudENvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IsIGNh
bnZhcygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9
IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTk5OCw3ICsxMDA3LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLAogewogICAgIFJHQkEzMiByZ2JhOwogCi0gICAgaWYgKCFDU1NQYXJzZXI6
OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENv
bG9yKHJnYmEsIGNvbG9yLCBjYW52YXMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRl
KCkubV9zaGFkb3dDb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCBmZDNjNmU1Li40MDllMjQ1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApAQCAtMzAsOSArMzAsMTEgQEAKICNpbmNsdWRl
ICJDYW52YXNTdHlsZS5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAi
Q2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC00OSw2ICs1MSw0MiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2VudW0gQ29sb3JQYXJzZVJlc3VsdCB7IFBhcnNlZFJHQkEsIFBhcnNlZEN1
cnJlbnRDb2xvciwgUGFyc2VGYWlsZWQgfTsKKworc3RhdGljIENvbG9yUGFyc2VSZXN1bHQgcGFy
c2VDb2xvcihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQor
eworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjb2xvclN0cmluZywgImN1cnJlbnRjb2xvciIp
KQorICAgICAgICByZXR1cm4gUGFyc2VkQ3VycmVudENvbG9yOworICAgIGlmIChDU1NQYXJzZXI6
OnBhcnNlQ29sb3IocGFyc2VkQ29sb3IsIGNvbG9yU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIFBh
cnNlZFJHQkE7CisgICAgcmV0dXJuIFBhcnNlRmFpbGVkOworfQorCitSR0JBMzIgY3VycmVudENv
bG9yKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCit7CisgICAgaWYgKCFjYW52YXMgfHwgIWNh
bnZhcy0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOworICAgIFJH
QkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2Jh
LCBjYW52YXMtPnN0eWxlKCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlDb2xvcikpOwor
ICAgIHJldHVybiByZ2JhOworfQorCitib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihSR0JB
MzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVE1MQ2FudmFzRWxl
bWVudCogY2FudmFzKQoreworICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VSZXN1bHQgPSBwYXJz
ZUNvbG9yKHBhcnNlZENvbG9yLCBjb2xvclN0cmluZyk7CisgICAgaWYgKHBhcnNlUmVzdWx0ID09
IFBhcnNlRmFpbGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhcnNlUmVzdWx0
ID09IFBhcnNlZEN1cnJlbnRDb2xvcikKKyAgICAgICAgcGFyc2VkQ29sb3IgPSBjdXJyZW50Q29s
b3IoY2FudmFzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ2FudmFzU3R5bGU6OkNhbnZhc1N0
eWxlKFR5cGUgdHlwZSwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKKyAgICA6IG1fdHlwZSh0eXBlKQor
ICAgICwgbV9vdmVycmlkZUFscGhhKG92ZXJyaWRlQWxwaGEpCit7Cit9CisKIENhbnZhc1N0eWxl
OjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKICAgICA6IG1fdHlwZShSR0JBKQogICAgICwgbV9y
Z2JhKHJnYmEpCkBAIC04OSwxNiArMTI3LDIyIEBAIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQ
YXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCiBQYXNzUmVmUHRyPENhbnZhc1N0eWxl
PiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yKQogewog
ICAgIFJHQkEzMiByZ2JhOwotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNv
bG9yKSkKKyAgICBDb2xvclBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2Jh
LCBjb2xvcik7CisgICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlRmFpbGVkKQogICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VkQ3VycmVudENvbG9yKQorICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRDb2xvcikpOwogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUocmdiYSkpOwogfQogCiBQYXNzUmVmUHRy
PENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFs
cGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogewogICAgIFJHQkEzMiByZ2Jh
OwotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICBDb2xv
clBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CisgICAg
aWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlRmFpbGVkKQogICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VkQ3VycmVudENvbG9yKQorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhLCBhbHBo
YSkpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShyZ2JhLCBhbHBoYSkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmlu
ZGV4IDNjYTc2MGEuLmExMTU4NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhbnZhc0dyYWRpZW50
OwogICAgIGNsYXNzIENhbnZhc1BhdHRlcm47CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
ICAgIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCiAgICAgY2xhc3MgQ2FudmFzU3R5bGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewogICAgIHB1YmxpYzoKQEAgLTQ3LDYgKzQ4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZUZyb21HcmFkaWVudChQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50Pik7
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tUGF0dGVy
bihQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKIAorICAgICAgICBib29sIGlzQ3VycmVudENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvciB8fCBtX3R5cGUgPT0g
Q3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE7IH0KKyAgICAgICAgYm9vbCBoYXNPdmVycmlk
ZUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvcldpdGhPdmVycmlk
ZUFscGhhOyB9CisgICAgICAgIGZsb2F0IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBt
X292ZXJyaWRlQWxwaGE7IH0KKwogICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVy
biBDb2xvcihtX3JnYmEpLnNlcmlhbGl6ZWQoKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCog
Y2FudmFzR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAg
ICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm4uZ2V0KCk7IH0KQEAgLTU5LDYgKzY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0
IGssIGZsb2F0IGEpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZW51bSBUeXBlIHsg
UkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4sIEN1cnJlbnRDb2xvciwgQ3VycmVu
dENvbG9yV2l0aE92ZXJyaWRlQWxwaGEgfTsKKworICAgICAgICBDYW52YXNTdHlsZShUeXBlLCBm
bG9hdCBvdmVycmlkZUFscGhhID0gMCk7CiAgICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMiByZ2Jh
KTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7CiAg
ICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwpA
QCAtNjYsMTEgKzc0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FudmFzU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwogICAgICAgICBDYW52YXNTdHlsZShQYXNz
UmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKIAotICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlL
QSwgR3JhZGllbnQsIEltYWdlUGF0dGVybiB9OwotCiAgICAgICAgIFR5cGUgbV90eXBlOwogCi0g
ICAgICAgIFJHQkEzMiBtX3JnYmE7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIFJHQkEz
MiBtX3JnYmE7CisgICAgICAgICAgICBmbG9hdCBtX292ZXJyaWRlQWxwaGE7CisgICAgICAgIH07
CiAKICAgICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAgICBS
ZWZQdHI8Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwpAQCAtODYsNiArOTUsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIH0gbV9jbXlrYTsKICAgICB9OwogCisgICAgUkdCQTMyIGN1
cnJlbnRDb2xvcihIVE1MQ2FudmFzRWxlbWVudCopOworICAgIGJvb2wgcGFyc2VDb2xvck9yQ3Vy
cmVudENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcs
IEhUTUxDYW52YXNFbGVtZW50Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66216</attachid>
            <date>2010-09-01 08:41:06 -0700</date>
            <delta_ts>2010-10-06 23:20:44 -0700</delta_ts>
            <desc>Proposed patch v4</desc>
            <filename>bug-40273-v4.diff</filename>
            <type>text/plain</type>
            <size>24504</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OGQ4ODdlLi5jNDc5ZGVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDkt
MDEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29s
b3IiIHNob3VsZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFk
ZGVkIHRlc3QgdG8gdmVyaWZ5IHN1cHBvcnQgZm9yICJjdXJyZW50Q29sb3IiIHZhbHVlIGluIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC4KKworICAgICAgICBBbHNvIHVuc2tpcHBlZCAzIHRlc3Rz
IHdoaWNoIG5vdyBwYXNzOgorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0
eWxlLnBhcnNlLmN1cnJlbnQuYmFzaWMuaHRtbAorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuY2hhbmdlZC5odG1sCisgICAgICAgIC0gY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwK
KworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4dAorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29sb3IuanM6IEFkZGVkLgorICAg
ICAgICAoYXR0YWNoQ2FudmFzVG9Eb2N1bWVudCk6CisgICAgICAgICh0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKToKKyAgICAgICAgKHRyeVJhZGlhbEdyYWRpZW50Q29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIw
MTAtMDktMDEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODU0YzZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1NyBAQAorVGVzdCB0aGF0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBzdXBwb3J0
cyB0aGUgJ2N1cnJlbnRDb2xvcicgdmFsdWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4LnNoYWRvd0NvbG9yIGlzICcj
ZmYwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAnY3VycmVudENvbG9yJzsgY3R4LnNoYWRv
d0NvbG9yIGlzICcjMDAwMDAwJworUEFTUyBjdHguZmlsbFN0eWxlID0gJyNmMDAnOyBjdHguZmls
bFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguZmlsbFN0eWxlID0gJ2N1cnJlbnRDb2xvcic7
IGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zdHJva2VTdHlsZSA9ICcjZjAw
JzsgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc3Ryb2tlU3R5bGUgPSAn
Y3VycmVudENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIGlzICcjMDAwMDAwJworUEFTUyBjdHguc2V0
U2hhZG93KDAsIDAsIDAsICcjZjAwJyk7IGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BB
U1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3VycmVudENvbG9yJyk7IGN0eC5zaGFkb3dDb2xv
ciBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2YwMCcsIDAuMCk7
IGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRT
aGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciBpcyAn
cmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnKTsgY3R4
LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJl
bnRDb2xvcicpOyBjdHguc3Ryb2tlU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zZXRTdHJv
a2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAs
IDAuMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4
LnN0cm9rZVN0eWxlIGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRGaWxsQ29s
b3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNldEZpbGxD
b2xvcignY3VycmVudENvbG9yJyk7IGN0eC5maWxsU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0
eC5zZXRGaWxsQ29sb3IoJyNmMDAnLCAwLjApOyBjdHguZmlsbFN0eWxlIGlzICdyZ2JhKDI1NSwg
MCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsg
Y3R4LmZpbGxTdHlsZSBpcyAncmdiYSgwLCAwLCAwLCAwLjApJworUEFTUyB0cnlMaW5lYXJHcmFk
aWVudENvbG9yKCcjZjAwJykgaXMgJzI1NSwwLDAsMjU1JworUEFTUyB0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKCdjdXJyZW50Q29sb3InKSBpcyAnMCwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFk
aWVudENvbG9yKCcjZjAwJykgaXMgJzI1NSwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFkaWVu
dENvbG9yKCdjdXJyZW50Q29sb3InKSBpcyAnMCwwLDAsMjU1JworUEFTUyBhdHRhY2hDYW52YXNU
b0RvY3VtZW50KCkgaXMgdHJ1ZQorUEFTUyBjYW52YXMuc3R5bGUuY29sb3IgPSAnIzEyMzQ1Nic7
IGNhbnZhcy5zdHlsZS5jb2xvciBpcyAncmdiKDE4LCA1MiwgODYpJworUEFTUyBjdHguc2hhZG93
Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNo
YWRvd0NvbG9yID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zaGFkb3dDb2xvciBpcyAnIzEyMzQ1NicK
K1BBU1MgY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcK
K1BBU1MgY3R4LmZpbGxTdHlsZSA9ICdjdXJyZW50Q29sb3InOyBjdHguZmlsbFN0eWxlIGlzICcj
MTIzNDU2JworUEFTUyBjdHguc3Ryb2tlU3R5bGUgPSAnI2YwMCc7IGN0eC5zdHJva2VTdHlsZSBp
cyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnN0cm9rZVN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5z
dHJva2VTdHlsZSBpcyAnIzEyMzQ1NicKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnI2Yw
MCcpOyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRTaGFkb3coMCwg
MCwgMCwgJ2N1cnJlbnRDb2xvcicpOyBjdHguc2hhZG93Q29sb3IgaXMgJyMxMjM0NTYnCitQQVNT
IGN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnLCAwLjApOyBjdHguc2hhZG93Q29sb3IgaXMg
J3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJy
ZW50Q29sb3InLCAwLjApOyBjdHguc2hhZG93Q29sb3IgaXMgJ3JnYmEoMTgsIDUyLCA4NiwgMC4w
KScKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAwJyk7IGN0eC5zdHJva2VTdHlsZSBpcyAn
I2ZmMDAwMCcKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LnN0
cm9rZVN0eWxlIGlzICcjMTIzNDU2JworUEFTUyBjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnLCAw
LjApOyBjdHguc3Ryb2tlU3R5bGUgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJworUEFTUyBjdHgu
c2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSBpcyAn
cmdiYSgxOCwgNTIsIDg2LCAwLjApJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCcjZjAwJyk7IGN0
eC5maWxsU3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRD
b2xvcicpOyBjdHguZmlsbFN0eWxlIGlzICcjMTIzNDU2JworUEFTUyBjdHguc2V0RmlsbENvbG9y
KCcjZjAwJywgMC4wKTsgY3R4LmZpbGxTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQ
QVNTIGN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5bGUg
aXMgJ3JnYmEoMTgsIDUyLCA4NiwgMC4wKScKK1BBU1MgdHJ5TGluZWFyR3JhZGllbnRDb2xvcign
I2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1MgdHJ5TGluZWFyR3JhZGllbnRDb2xvcignY3Vy
cmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BBU1MgdHJ5UmFkaWFsR3JhZGllbnRDb2xvcign
I2YwMCcpIGlzICcyNTUsMCwwLDI1NScKK1BBU1MgdHJ5UmFkaWFsR3JhZGllbnRDb2xvcignY3Vy
cmVudENvbG9yJykgaXMgJzAsMCwwLDI1NScKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAn
OyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdD
VVJSRU5UQ09MT1InOyBjdHguc2hhZG93Q29sb3IgaXMgJyMxMjM0NTYnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY5YjcyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMt
Y3VycmVudENvbG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY3VycmVudENvbG9y
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50
Q29sb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwN2JlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtY3VycmVudENvbG9yLmpzCkBAIC0wLDAgKzEsODkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRo
YXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHN1cHBvcnRzIHRoZSAnY3VycmVudENvbG9yJyB2
YWx1ZS4iKTsKKworY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citj
YW52YXMud2lkdGggPSAxMDA7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworY3R4ID0gY2FudmFzLmdl
dENvbnRleHQoJzJkJyk7CisKK2Z1bmN0aW9uIGF0dGFjaENhbnZhc1RvRG9jdW1lbnQoKSB7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworICAgIHJldHVybiBkb2N1bWVu
dC5ib2R5LnBhcmVudE5vZGUgIT0gbnVsbDsKK30KKworZnVuY3Rpb24gdHJ5TGluZWFyR3JhZGll
bnRDb2xvcihjb2xvcikgeworICAgIHZhciBncmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFk
aWVudCgwLCAwLCAxMDAsIDEwMCk7CisgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGNvbG9y
KTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMSwgY29sb3IpOworICAgIGN0eC5maWxsU3R5
bGUgPSBncmFkaWVudDsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgIHZh
ciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKS5kYXRhOworICAgIHJldHVybiAn
JyArIGRhdGFbMF0gKyAnLCcgKyBkYXRhWzFdICsgJywnICsgZGF0YVsyXSArICcsJyArIGRhdGFb
M107Cit9CisKK2Z1bmN0aW9uIHRyeVJhZGlhbEdyYWRpZW50Q29sb3IoY29sb3IpIHsKKyAgICB2
YXIgZ3JhZGllbnQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQoMCwgMCwgMTAwLCAxMDAsIDEw
MCwgMTAwKTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgY29sb3IpOworICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgxLCBjb2xvcik7CisgICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpLmRhdGE7CisgICAgcmV0dXJuICcnICsgZGF0YVswXSAr
ICcsJyArIGRhdGFbMV0gKyAnLCcgKyBkYXRhWzJdICsgJywnICsgZGF0YVszXTsKK30KKworLy8g
Rmlyc3Qgd2UgdGVzdCB3aXRoIHRoZSBjYW52YXMgb3V0LW9mLWRvY3VtZW50LCAnY3VycmVudENv
bG9yJyBzaG91bGQgbWVhbiBibGFjaworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICcjZjAw
JzsgY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dD
b2xvciA9ICdjdXJyZW50Q29sb3InOyBjdHguc2hhZG93Q29sb3IiLCAiJyMwMDAwMDAnIik7Citz
aG91bGRCZSgiY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsgY3R4LmZpbGxTdHlsZSIsICInI2ZmMDAw
MCciKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5maWxs
U3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0eWxlID0gJyNmMDAn
OyBjdHguc3Ryb2tlU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnN0cm9rZVN0
eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zdHJva2VTdHlsZSIsICInIzAwMDAwMCciKTsKK3No
b3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJyk7IGN0eC5zaGFkb3dDb2xvciIs
ICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50
Q29sb3InKTsgY3R4LnNoYWRvd0NvbG9yIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnLCAwLjApOyBjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEo
MjU1LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1
cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgwLCAwLCAwLCAwLjAp
JyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcpOyBjdHguc3Ryb2tlU3R5
bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50
Q29sb3InKTsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTdHJva2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSIsICIncmdiYSgyNTUs
IDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29s
b3InLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3No
b3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCcjZjAwJyk7IGN0eC5maWxsU3R5bGUiLCAiJyNmZjAw
MDAnIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJyk7IGN0eC5m
aWxsU3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignI2Yw
MCcsIDAuMCk7IGN0eC5maWxsU3R5bGUiLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjApJyIpOworc2hv
dWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0eC5maWxsU3R5
bGUiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJ0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAsMjU1JyIpOworc2hvdWxkQmUoInRyeUxpbmVhckdy
YWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIiwgIicwLDAsMCwyNTUnIik7CitzaG91bGRCZSgi
dHJ5UmFkaWFsR3JhZGllbnRDb2xvcignI2YwMCcpIiwgIicyNTUsMCwwLDI1NSciKTsKK3Nob3Vs
ZEJlKCJ0cnlSYWRpYWxHcmFkaWVudENvbG9yKCdjdXJyZW50Q29sb3InKSIsICInMCwwLDAsMjU1
JyIpOworCisvLyBBdHRhY2ggdG8gdGhlIGRvY3VtZW50IGFuZCBzZXQgdGhlIGNhbnZhcydzIGNv
bG9yIHRvICMxMjM0NTYKK3Nob3VsZEJlKCJhdHRhY2hDYW52YXNUb0RvY3VtZW50KCkiLCAidHJ1
ZSIpOworc2hvdWxkQmUoImNhbnZhcy5zdHlsZS5jb2xvciA9ICcjMTIzNDU2JzsgY2FudmFzLnN0
eWxlLmNvbG9yIiwgIidyZ2IoMTgsIDUyLCA4NiknIik7CisKKy8vICdjdXJyZW50Q29sb3InIHNo
b3VsZCBub3cgbWVhbiAjMTIzNDU2CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAn
OyBjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0Nv
bG9yID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5zaGFkb3dDb2xvciIsICInIzEyMzQ1NiciKTsKK3No
b3VsZEJlKCJjdHguZmlsbFN0eWxlID0gJyNmMDAnOyBjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAw
JyIpOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LmZpbGxT
dHlsZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUgPSAnI2YwMCc7
IGN0eC5zdHJva2VTdHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5
bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMTIzNDU2JyIpOworc2hv
dWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnKTsgY3R4LnNoYWRvd0NvbG9yIiwg
IicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRD
b2xvcicpOyBjdHguc2hhZG93Q29sb3IiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4LnNl
dFNoYWRvdygwLCAwLCAwLCAnI2YwMCcsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgy
NTUsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3Vy
cmVudENvbG9yJywgMC4wKTsgY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDE4LCA1MiwgODYsIDAu
MCknIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAwJyk7IGN0eC5zdHJva2VT
dHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJl
bnRDb2xvcicpOyBjdHguc3Ryb2tlU3R5bGUiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4
LnNldFN0cm9rZUNvbG9yKCcjZjAwJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIiwgIidyZ2JhKDI1
NSwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRD
b2xvcicsIDAuMCk7IGN0eC5zdHJva2VTdHlsZSIsICIncmdiYSgxOCwgNTIsIDg2LCAwLjApJyIp
Oworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSIsICIn
I2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InKTsg
Y3R4LmZpbGxTdHlsZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9y
KCcjZjAwJywgMC4wKTsgY3R4LmZpbGxTdHlsZSIsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7
CitzaG91bGRCZSgiY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LmZp
bGxTdHlsZSIsICIncmdiYSgxOCwgNTIsIDg2LCAwLjApJyIpOworc2hvdWxkQmUoInRyeUxpbmVh
ckdyYWRpZW50Q29sb3IoJyNmMDAnKSIsICInMjU1LDAsMCwyNTUnIik7CitzaG91bGRCZSgidHJ5
TGluZWFyR3JhZGllbnRDb2xvcignY3VycmVudENvbG9yJykiLCAiJzAsMCwwLDI1NSciKTsKK3No
b3VsZEJlKCJ0cnlSYWRpYWxHcmFkaWVudENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAsMjU1JyIp
Oworc2hvdWxkQmUoInRyeVJhZGlhbEdyYWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIiwgIicw
LDAsMCwyNTUnIik7CisKKy8vIExhc3QgYnV0IG5vdCBsZWFzdCwgdmVyaWZ5IHRoYXQgd2UncmUg
Y2FzZSBpbnNlbnNpdGl2ZQorc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICcjZjAwJzsgY3R4
LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9
ICdDVVJSRU5UQ09MT1InOyBjdHguc2hhZG93Q29sb3IiLCAiJyMxMjM0NTYnIik7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCAz
OTgwNzcxLi40NTYxMGNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMTg1LDkgKzE4
NSw2IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJu
LnNvdXJjZS1vdXQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuYnJva2Vu
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLmluY29tcGxldGUuaHRtbAog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UubnVsbC5odG1sCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmJhc2ljLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuY2hhbmdlZC5odG1sCi1jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LnJlbW92ZWQuaHRtbAogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2Uuc3lzdGVtLmh0bWwKIGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuZnJvbnQuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKaW5kZXggZmU2OWYwNi4uYzA2ZmUzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC01MjIyLDkgKzUyMjIsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51
bmNvdmVyZWQucGF0dGVybi5zb3VyY2Utb3V0Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZHJhd0ltYWdlLmJyb2tlbi5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5p
bmNvbXBsZXRlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRt
bAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5o
dG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5n
ZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5y
ZW1vdmVkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnN5c3Rl
bS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmJlaGlu
ZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmJlc2lk
ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY5YTNlNTguLjljMGJiNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTAtMDktMDEgIEFuZHJl
YXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29sb3IiIHNob3Vs
ZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciAiY3VycmVudENvbG9yIiBpbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgQVBJcy4KKyAg
ICAgICAgSWYgdGhlIGNhbnZhcyBpcyBpbi1kb2N1bWVudCwgImN1cnJlbnRDb2xvciIgaXMgcmVw
bGFjZWQgYnkgY2FudmFzLnN0eWxlLmNvbG9yLAorICAgICAgICBvdGhlcndpc2Ugd2UgdXNlIGZ1
bGx5IG9wYXF1ZSBibGFjay4KKworICAgICAgICBGb3IgZ3JhZGllbnQgYWRkQ29sb3JTdG9wKCks
ICJjdXJyZW50Q29sb3IiIGFsd2F5cyBtZWFucyBmdWxseSBvcGFxdWUgYmxhY2suCisKKyAgICAg
ICAgU3BlYyBsaW5rOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyMyZGNvbnRleHQKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9j
YW52YXMtY3VycmVudENvbG9yLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dy
YWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0
b3ApOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3cpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzQ3VycmVudENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpoYXNPdmVycmlkZUFscGhhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpvdmVycmlkZUFscGhhKToKKwogMjAxMC0wOS0wMSAg
QW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0dyYWRpZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3Bw
CmluZGV4IGZkNDgxOTQuLjdjOThhODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGll
bnQuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q2FudmFzR3JhZGllbnQuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKKyNpbmNsdWRl
ICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKIApAQCAtNTIsNyArNTQsNyBAQCB2b2lkIENhbnZhc0dyYWRpZW50OjphZGRD
b2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29sb3IsIEV4Y2VwdGlvbkNvZAog
ICAgIH0KIAogICAgIFJHQkEzMiByZ2JhID0gMDsKLSAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VD
b2xvcihyZ2JhLCBjb2xvcikpIHsKKyAgICBpZiAoIXBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihy
Z2JhLCBjb2xvciwgMCAvKmNhbnZhcyovKSkgewogICAgICAgICBpZiAoIW1fZGFzaGJhcmRDb21w
YXRpYmlsaXR5TW9kZSkKICAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDZkZjZhYmYuLmQ4OTk3ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTc5LDcgKzc5LDYgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRGb250
ID0gIjEwcHggc2Fucy1zZXJpZiI7CiAKLQogY2xhc3MgQ2FudmFzU3Ryb2tlU3R5bGVBcHBsaWVy
IDogcHVibGljIFN0cm9rZVN0eWxlQXBwbGllciB7CiBwdWJsaWM6CiAgICAgQ2FudmFzU3Ryb2tl
U3R5bGVBcHBsaWVyKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY2FudmFzQ29udGV4dCkKQEAg
LTIzOSw3ICsyMzgsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9r
ZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLm1f
c3Ryb2tlU3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigq
c3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFu
KCkpIHsKKyAgICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0
eWxlLT5oYXNPdmVycmlkZUFscGhhKCkpCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxl
OjpjcmVhdGVGcm9tUkdCQShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52
YXMoKSksIHN0eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZh
cygpKSk7CisgICAgfSBlbHNlIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgewogICAgICAg
ICBpZiAoQ2FudmFzUGF0dGVybiogcGF0dGVybiA9IHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsK
ICAgICAgICAgICAgIGlmICghcGF0dGVybi0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgICAgICAg
ICBjYW52YXMoKS0+c2V0T3JpZ2luVGFpbnRlZCgpOwpAQCAtMjY3LDcgKzI3MSwxMiBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFz
U3R5bGU+IHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRlKCkubV9m
aWxsU3R5bGUtPmlzRXF1aXZhbGVudENvbG9yKCpzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkgeworICAgIGlmIChzdHlsZS0+aXNDdXJy
ZW50Q29sb3IoKSkgeworICAgICAgICBpZiAoc3R5bGUtPmhhc092ZXJyaWRlQWxwaGEoKSkKKyAg
ICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21SR0JBKGNvbG9yV2l0aE92
ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKGNhbnZhcygpKSwgc3R5bGUtPm92ZXJyaWRlQWxwaGEo
KSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tUkdCQShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKKyAgICB9IGVsc2UgaWYgKGNhbnZh
cygpLT5vcmlnaW5DbGVhbigpKSB7CiAgICAgICAgIGlmIChDYW52YXNQYXR0ZXJuKiBwYXR0ZXJu
ID0gc3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkgewogICAgICAgICAgICAgaWYgKCFwYXR0ZXJuLT5v
cmlnaW5DbGVhbigpKQogICAgICAgICAgICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVk
KCk7CkBAIC0zOTQsNyArNDAzLDcgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2hhZG93Q29sb3IoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBpZiAoIUNTU1BhcnNlcjo6
cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKKyAgICBpZiAoIXBhcnNl
Q29sb3JPckN1cnJlbnRDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yLCBjYW52YXMo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5U2hhZG93KCk7CkBAIC05NzMsNyArOTgy
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNv
bnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yLCBjb2xvcikpCisgICAgaWYgKCFwYXJzZUNvbG9yT3JDdXJyZW50
Q29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBjb2xvciwgY2FudmFzKCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpOwpAQCAtOTk4LDcgKzEwMDcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiB7CiAg
ICAgUkdCQTMyIHJnYmE7CiAKLSAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBj
b2xvcikpCisgICAgaWYgKCFwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IocmdiYSwgY29sb3IsIGNh
bnZhcygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3RhdGUoKS5tX3NoYWRvd0NvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCmluZGV4IGZkM2M2ZTUuLmY3ZjEwNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCkBAIC0zMCw5ICszMCwxMSBAQAogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCiAK
ICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKQEAgLTQ5LDYgKzUxLDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBD
b2xvclBhcnNlUmVzdWx0IHsgUGFyc2VkUkdCQSwgUGFyc2VkQ3VycmVudENvbG9yLCBQYXJzZUZh
aWxlZCB9OworCitzdGF0aWMgQ29sb3JQYXJzZVJlc3VsdCBwYXJzZUNvbG9yKFJHQkEzMiYgcGFy
c2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCit7CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGNvbG9yU3RyaW5nLCAiY3VycmVudGNvbG9yIikpCisgICAgICAgIHJldHVybiBQ
YXJzZWRDdXJyZW50Q29sb3I7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihwYXJzZWRD
b2xvciwgY29sb3JTdHJpbmcpKQorICAgICAgICByZXR1cm4gUGFyc2VkUkdCQTsKKyAgICByZXR1
cm4gUGFyc2VGYWlsZWQ7Cit9CisKK1JHQkEzMiBjdXJyZW50Q29sb3IoSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcykKK3sKKyAgICBpZiAoIWNhbnZhcyB8fCAhY2FudmFzLT5pbkRvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CisgICAgUkdCQTMyIHJnYmEgPSBDb2xvcjo6
YmxhY2s7CisgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNhbnZhcy0+c3R5bGUoKS0+
Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CisgICAgcmV0dXJuIHJnYmE7Cit9
CisKK2Jvb2wgcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNv
bnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCit7Cisg
ICAgQ29sb3JQYXJzZVJlc3VsdCBwYXJzZVJlc3VsdCA9IHBhcnNlQ29sb3IocGFyc2VkQ29sb3Is
IGNvbG9yU3RyaW5nKTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VGYWlsZWQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VkQ3VycmVudENv
bG9yKQorICAgICAgICBwYXJzZWRDb2xvciA9IGN1cnJlbnRDb2xvcihjYW52YXMpOworICAgIHJl
dHVybiB0cnVlOworfQorCitDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoVHlwZSB0eXBlLCBmbG9h
dCBvdmVycmlkZUFscGhhKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX292ZXJyaWRlQWxw
aGEob3ZlcnJpZGVBbHBoYSkKK3sKK30KKwogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFJHQkEz
MiByZ2JhKQogICAgIDogbV90eXBlKFJHQkEpCiAgICAgLCBtX3JnYmEocmdiYSkKQEAgLTg5LDE2
ICsxMjcsMjIgQEAgQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0
dGVybj4gcGF0dGVybikKIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3IpCiB7CiAgICAgUkdCQTMyIHJnYmE7Ci0g
ICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgIENvbG9yUGFy
c2VSZXN1bHQgcGFyc2VSZXN1bHQgPSBwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKKyAgICBpZiAo
cGFyc2VSZXN1bHQgPT0gUGFyc2VGYWlsZWQpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChw
YXJzZVJlc3VsdCA9PSBQYXJzZWRDdXJyZW50Q29sb3IpCisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2FudmFzU3R5bGUoQ3VycmVudENvbG9yKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDYW52YXNTdHlsZShyZ2JhKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZh
c1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29uc3QgU3RyaW5nJiBj
b2xvciwgZmxvYXQgYWxwaGEpCiB7CiAgICAgUkdCQTMyIHJnYmE7Ci0gICAgaWYgKCFDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpKQorICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VS
ZXN1bHQgPSBwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKKyAgICBpZiAocGFyc2VSZXN1bHQgPT0g
UGFyc2VGYWlsZWQpCiAgICAgICAgIHJldHVybiAwOworICAgIGlmIChwYXJzZVJlc3VsdCA9PSBQ
YXJzZWRDdXJyZW50Q29sb3IpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5
bGUoQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGEsIGFscGhhKSk7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFscGhh
KSkpOwogfQogCkBAIC0xMjEsMTYgKzE2NSwxOCBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2
YWxlbnRDb2xvcihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBDYW52YXNTdHlsZTo6
UkdCQToKKyAgICBjYXNlIFJHQkE6CiAgICAgICAgIHJldHVybiBtX3JnYmEgPT0gb3RoZXIubV9y
Z2JhOwotICAgIGNhc2UgQ2FudmFzU3R5bGU6OkNNWUtBOgorICAgIGNhc2UgQ01ZS0E6CiAgICAg
ICAgIHJldHVybiBtX2NteWthLmMgPT0gb3RoZXIubV9jbXlrYS5jCiAgICAgICAgICAgICAmJiBt
X2NteWthLm0gPT0gb3RoZXIubV9jbXlrYS5tCiAgICAgICAgICAgICAmJiBtX2NteWthLnkgPT0g
b3RoZXIubV9jbXlrYS55CiAgICAgICAgICAgICAmJiBtX2NteWthLmsgPT0gb3RoZXIubV9jbXlr
YS5rCiAgICAgICAgICAgICAmJiBtX2NteWthLmEgPT0gb3RoZXIubV9jbXlrYS5hOwotICAgIGNh
c2UgQ2FudmFzU3R5bGU6OkdyYWRpZW50OgotICAgIGNhc2UgQ2FudmFzU3R5bGU6OkltYWdlUGF0
dGVybjoKKyAgICBjYXNlIEdyYWRpZW50OgorICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgorICAgIGNh
c2UgQ3VycmVudENvbG9yOgorICAgIGNhc2UgQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE6
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE4OCw2ICsyMzQsMTAgQEAgdm9p
ZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CiAgICAgY2FzZSBJbWFnZVBhdHRlcm46CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVBhdHRl
cm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEN1cnJlbnRDb2xvcjoKKyAgICBjYXNlIEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQog
CkBAIC0yMjEsNiArMjcxLDEwIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICBjYXNlIEltYWdlUGF0dGVybjoKICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbFBhdHRlcm4oY2FudmFzUGF0dGVybigpLT5wYXR0ZXJuKCkpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEN1cnJlbnRDb2xvcjoKKyAgICBjYXNlIEN1cnJlbnRDb2xv
cldpdGhPdmVycmlkZUFscGhhOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1N0eWxlLmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggM2Nh
NzYwYS4uYTExNTg3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHls
ZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtMzUsNiArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzR3JhZGllbnQ7CiAgICAg
Y2xhc3MgQ2FudmFzUGF0dGVybjsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgY2xh
c3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKICAgICBjbGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENhbnZhc1N0eWxlPiB7CiAgICAgcHVibGljOgpAQCAtNDcsNiArNDgsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHls
ZT4gY3JlYXRlRnJvbUdyYWRpZW50KFBhc3NSZWZQdHI8Q2FudmFzR3JhZGllbnQ+KTsKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21QYXR0ZXJuKFBhc3NS
ZWZQdHI8Q2FudmFzUGF0dGVybj4pOwogCisgICAgICAgIGJvb2wgaXNDdXJyZW50Q29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3VycmVudENvbG9yIHx8IG1fdHlwZSA9PSBDdXJyZW50
Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYTsgfQorICAgICAgICBib29sIGhhc092ZXJyaWRlQWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE7
IH0KKyAgICAgICAgZmxvYXQgb3ZlcnJpZGVBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJp
ZGVBbHBoYTsgfQorCiAgICAgICAgIFN0cmluZyBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9y
KG1fcmdiYSkuc2VyaWFsaXplZCgpOyB9CiAgICAgICAgIENhbnZhc0dyYWRpZW50KiBjYW52YXNH
cmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnQuZ2V0KCk7IH0KICAgICAgICAgQ2Fu
dmFzUGF0dGVybiogY2FudmFzUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQo
KTsgfQpAQCAtNTksNiArNjQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
aXNFcXVpdmFsZW50Q01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxv
YXQgYSkgY29uc3Q7CiAKICAgICBwcml2YXRlOgorICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBD
TVlLQSwgR3JhZGllbnQsIEltYWdlUGF0dGVybiwgQ3VycmVudENvbG9yLCBDdXJyZW50Q29sb3JX
aXRoT3ZlcnJpZGVBbHBoYSB9OworCisgICAgICAgIENhbnZhc1N0eWxlKFR5cGUsIGZsb2F0IG92
ZXJyaWRlQWxwaGEgPSAwKTsKICAgICAgICAgQ2FudmFzU3R5bGUoUkdCQTMyIHJnYmEpOwogICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKICAgICAgICAg
Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CkBAIC02Niwx
MSArNzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYW52YXNTdHlsZShQYXNz
UmVmUHRyPENhbnZhc0dyYWRpZW50Pik7CiAgICAgICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQdHI8
Q2FudmFzUGF0dGVybj4pOwogCi0gICAgICAgIGVudW0gVHlwZSB7IFJHQkEsIENNWUtBLCBHcmFk
aWVudCwgSW1hZ2VQYXR0ZXJuIH07Ci0KICAgICAgICAgVHlwZSBtX3R5cGU7CiAKLSAgICAgICAg
UkdCQTMyIG1fcmdiYTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgUkdCQTMyIG1fcmdi
YTsKKyAgICAgICAgICAgIGZsb2F0IG1fb3ZlcnJpZGVBbHBoYTsKKyAgICAgICAgfTsKIAogICAg
ICAgICBSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IG1fZ3JhZGllbnQ7CiAgICAgICAgIFJlZlB0cjxD
YW52YXNQYXR0ZXJuPiBtX3BhdHRlcm47CkBAIC04Niw2ICs5NSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgfSBtX2NteWthOwogICAgIH07CiAKKyAgICBSR0JBMzIgY3VycmVudENv
bG9yKEhUTUxDYW52YXNFbGVtZW50Kik7CisgICAgYm9vbCBwYXJzZUNvbG9yT3JDdXJyZW50Q29s
b3IoUkdCQTMyJiBwYXJzZWRDb2xvciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgSFRNTENh
bnZhc0VsZW1lbnQqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70040</attachid>
            <date>2010-10-06 23:20:44 -0700</date>
            <delta_ts>2010-10-14 05:22:20 -0700</delta_ts>
            <desc>Proposed patch v5</desc>
            <filename>bug-40273-v5.diff</filename>
            <type>text/plain</type>
            <size>24967</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMThiM2FmLi43MjJhNGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAt
MDYgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6ICJjdXJyZW50Q29s
b3IiIHNob3VsZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVudCdzIGNvbG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI3MworCisgICAgICAgIEFk
ZGVkIHRlc3QgdG8gdmVyaWZ5IHN1cHBvcnQgZm9yICJjdXJyZW50Q29sb3IiIHZhbHVlIGluIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC4KKworICAgICAgICBBbHNvIHVuc2tpcHBlZCAzIHRlc3Rz
IHdoaWNoIG5vdyBwYXNzOgorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0
eWxlLnBhcnNlLmN1cnJlbnQuYmFzaWMuaHRtbAorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuY2hhbmdlZC5odG1sCisgICAgICAgIC0gY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwK
KworICAgICAgICBTcGVjIGxpbms6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvIzJkY29udGV4dAorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLWN1cnJlbnRDb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1jdXJyZW50Q29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29sb3IuanM6IEFkZGVkLgorICAg
ICAgICAoYXR0YWNoQ2FudmFzVG9Eb2N1bWVudCk6CisgICAgICAgICh0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKToKKyAgICAgICAgKHRyeVJhZGlhbEdyYWRpZW50Q29sb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMTAtMDYgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbiwgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1jdXJyZW50Q29sb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjc4NTRjNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtY3VycmVudENvbG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU3IEBA
CitUZXN0IHRoYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHN1cHBvcnRzIHRoZSAnY3VycmVu
dENvbG9yJyB2YWx1ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY3R4
LnNoYWRvd0NvbG9yID0gJyNmMDAnOyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNT
IGN0eC5zaGFkb3dDb2xvciA9ICdjdXJyZW50Q29sb3InOyBjdHguc2hhZG93Q29sb3IgaXMgJyMw
MDAwMDAnCitQQVNTIGN0eC5maWxsU3R5bGUgPSAnI2YwMCc7IGN0eC5maWxsU3R5bGUgaXMgJyNm
ZjAwMDAnCitQQVNTIGN0eC5maWxsU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LmZpbGxTdHls
ZSBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnN0cm9rZVN0eWxlID0gJyNmMDAnOyBjdHguc3Ryb2tl
U3R5bGUgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zdHJva2VTdHlsZSA9ICdjdXJyZW50Q29sb3In
OyBjdHguc3Ryb2tlU3R5bGUgaXMgJyMwMDAwMDAnCitQQVNTIGN0eC5zZXRTaGFkb3coMCwgMCwg
MCwgJyNmMDAnKTsgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2V0U2hh
ZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InKTsgY3R4LnNoYWRvd0NvbG9yIGlzICcjMDAwMDAw
JworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJywgMC4wKTsgY3R4LnNoYWRvd0Nv
bG9yIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAw
LCAnY3VycmVudENvbG9yJywgMC4wKTsgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDAsIDAsIDAs
IDAuMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcpOyBjdHguc3Ryb2tlU3R5bGUg
aXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJyk7IGN0
eC5zdHJva2VTdHlsZSBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAw
JywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1Mg
Y3R4LnNldFN0cm9rZUNvbG9yKCdjdXJyZW50Q29sb3InLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUg
aXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldEZpbGxDb2xvcignI2YwMCcpOyBj
dHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50
Q29sb3InKTsgY3R4LmZpbGxTdHlsZSBpcyAnIzAwMDAwMCcKK1BBU1MgY3R4LnNldEZpbGxDb2xv
cignI2YwMCcsIDAuMCk7IGN0eC5maWxsU3R5bGUgaXMgJ3JnYmEoMjU1LCAwLCAwLCAwLjApJwor
UEFTUyBjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InLCAwLjApOyBjdHguZmlsbFN0eWxl
IGlzICdyZ2JhKDAsIDAsIDAsIDAuMCknCitQQVNTIHRyeUxpbmVhckdyYWRpZW50Q29sb3IoJyNm
MDAnKSBpcyAnMjU1LDAsMCwyNTUnCitQQVNTIHRyeUxpbmVhckdyYWRpZW50Q29sb3IoJ2N1cnJl
bnRDb2xvcicpIGlzICcwLDAsMCwyNTUnCitQQVNTIHRyeVJhZGlhbEdyYWRpZW50Q29sb3IoJyNm
MDAnKSBpcyAnMjU1LDAsMCwyNTUnCitQQVNTIHRyeVJhZGlhbEdyYWRpZW50Q29sb3IoJ2N1cnJl
bnRDb2xvcicpIGlzICcwLDAsMCwyNTUnCitQQVNTIGF0dGFjaENhbnZhc1RvRG9jdW1lbnQoKSBp
cyB0cnVlCitQQVNTIGNhbnZhcy5zdHlsZS5jb2xvciA9ICcjMTIzNDU2JzsgY2FudmFzLnN0eWxl
LmNvbG9yIGlzICdyZ2IoMTgsIDUyLCA4NiknCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICcjZjAw
JzsgY3R4LnNoYWRvd0NvbG9yIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAn
Y3VycmVudENvbG9yJzsgY3R4LnNoYWRvd0NvbG9yIGlzICcjMTIzNDU2JworUEFTUyBjdHguZmls
bFN0eWxlID0gJyNmMDAnOyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBjdHguZmls
bFN0eWxlID0gJ2N1cnJlbnRDb2xvcic7IGN0eC5maWxsU3R5bGUgaXMgJyMxMjM0NTYnCitQQVNT
IGN0eC5zdHJva2VTdHlsZSA9ICcjZjAwJzsgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJwor
UEFTUyBjdHguc3Ryb2tlU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIGlz
ICcjMTIzNDU2JworUEFTUyBjdHguc2V0U2hhZG93KDAsIDAsIDAsICcjZjAwJyk7IGN0eC5zaGFk
b3dDb2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3VycmVu
dENvbG9yJyk7IGN0eC5zaGFkb3dDb2xvciBpcyAnIzEyMzQ1NicKK1BBU1MgY3R4LnNldFNoYWRv
dygwLCAwLCAwLCAnI2YwMCcsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgyNTUsIDAs
IDAsIDAuMCknCitQQVNTIGN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicsIDAu
MCk7IGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgxOCwgNTIsIDg2LCAwLjApJworUEFTUyBjdHgu
c2V0U3Ryb2tlQ29sb3IoJyNmMDAnKTsgY3R4LnN0cm9rZVN0eWxlIGlzICcjZmYwMDAwJworUEFT
UyBjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRDb2xvcicpOyBjdHguc3Ryb2tlU3R5bGUgaXMg
JyMxMjM0NTYnCitQQVNTIGN0eC5zZXRTdHJva2VDb2xvcignI2YwMCcsIDAuMCk7IGN0eC5zdHJv
a2VTdHlsZSBpcyAncmdiYSgyNTUsIDAsIDAsIDAuMCknCitQQVNTIGN0eC5zZXRTdHJva2VDb2xv
cignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIGlzICdyZ2JhKDE4LCA1Miwg
ODYsIDAuMCknCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSBp
cyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNldEZpbGxDb2xvcignY3VycmVudENvbG9yJyk7IGN0eC5m
aWxsU3R5bGUgaXMgJyMxMjM0NTYnCitQQVNTIGN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnLCAwLjAp
OyBjdHguZmlsbFN0eWxlIGlzICdyZ2JhKDI1NSwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNldEZp
bGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LmZpbGxTdHlsZSBpcyAncmdiYSgxOCwg
NTIsIDg2LCAwLjApJworUEFTUyB0cnlMaW5lYXJHcmFkaWVudENvbG9yKCcjZjAwJykgaXMgJzI1
NSwwLDAsMjU1JworUEFTUyB0cnlMaW5lYXJHcmFkaWVudENvbG9yKCdjdXJyZW50Q29sb3InKSBp
cyAnMCwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFkaWVudENvbG9yKCcjZjAwJykgaXMgJzI1
NSwwLDAsMjU1JworUEFTUyB0cnlSYWRpYWxHcmFkaWVudENvbG9yKCdjdXJyZW50Q29sb3InKSBp
cyAnMCwwLDAsMjU1JworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dD
b2xvciBpcyAnI2ZmMDAwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ0NVUlJFTlRDT0xPUic7
IGN0eC5zaGFkb3dDb2xvciBpcyAnIzEyMzQ1NicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY3VycmVudENvbG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY3VycmVudENvbG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjliNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jdXJyZW50Q29sb3IuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29sb3Iu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29sb3IuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWN1cnJlbnRDb2xvci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDA3YmU5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jdXJyZW50Q29s
b3IuanMKQEAgLTAsMCArMSw4OSBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgc3VwcG9ydHMgdGhlICdjdXJyZW50Q29sb3InIHZhbHVlLiIpOworCitj
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKK2NhbnZhcy53aWR0aCA9
IDEwMDsKK2NhbnZhcy5oZWlnaHQgPSAxMDA7CitjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQn
KTsKKworZnVuY3Rpb24gYXR0YWNoQ2FudmFzVG9Eb2N1bWVudCgpIHsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CisgICAgcmV0dXJuIGRvY3VtZW50LmJvZHkucGFyZW50
Tm9kZSAhPSBudWxsOworfQorCitmdW5jdGlvbiB0cnlMaW5lYXJHcmFkaWVudENvbG9yKGNvbG9y
KSB7CisgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDEw
MCwgMTAwKTsKKyAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgY29sb3IpOworICAgIGdyYWRp
ZW50LmFkZENvbG9yU3RvcCgxLCBjb2xvcik7CisgICAgY3R4LmZpbGxTdHlsZSA9IGdyYWRpZW50
OworICAgIGN0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDEwMCk7CisgICAgdmFyIGRhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpLmRhdGE7CisgICAgcmV0dXJuICcnICsgZGF0YVswXSAr
ICcsJyArIGRhdGFbMV0gKyAnLCcgKyBkYXRhWzJdICsgJywnICsgZGF0YVszXTsKK30KKworZnVu
Y3Rpb24gdHJ5UmFkaWFsR3JhZGllbnRDb2xvcihjb2xvcikgeworICAgIHZhciBncmFkaWVudCA9
IGN0eC5jcmVhdGVSYWRpYWxHcmFkaWVudCgwLCAwLCAxMDAsIDEwMCwgMTAwLCAxMDApOworICAg
IGdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCBjb2xvcik7CisgICAgZ3JhZGllbnQuYWRkQ29sb3JT
dG9wKDEsIGNvbG9yKTsKKyAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGllbnQ7CisgICAgY3R4LmZp
bGxSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICB2YXIgZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSkuZGF0YTsKKyAgICByZXR1cm4gJycgKyBkYXRhWzBdICsgJywnICsgZGF0YVsx
XSArICcsJyArIGRhdGFbMl0gKyAnLCcgKyBkYXRhWzNdOworfQorCisvLyBGaXJzdCB3ZSB0ZXN0
IHdpdGggdGhlIGNhbnZhcyBvdXQtb2YtZG9jdW1lbnQsICdjdXJyZW50Q29sb3InIHNob3VsZCBt
ZWFuIGJsYWNrCitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAnOyBjdHguc2hhZG93
Q29sb3IiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJ2N1cnJl
bnRDb2xvcic7IGN0eC5zaGFkb3dDb2xvciIsICInIzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjdHgu
ZmlsbFN0eWxlID0gJyNmMDAnOyBjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworc2hvdWxk
QmUoImN0eC5maWxsU3R5bGUgPSAnY3VycmVudENvbG9yJzsgY3R4LmZpbGxTdHlsZSIsICInIzAw
MDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUgPSAnI2YwMCc7IGN0eC5zdHJva2VT
dHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc3Ryb2tlU3R5bGUgPSAnY3VycmVu
dENvbG9yJzsgY3R4LnN0cm9rZVN0eWxlIiwgIicjMDAwMDAwJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRTaGFkb3coMCwgMCwgMCwgJyNmMDAnKTsgY3R4LnNoYWRvd0NvbG9yIiwgIicjZmYwMDAwJyIp
Oworc2hvdWxkQmUoImN0eC5zZXRTaGFkb3coMCwgMCwgMCwgJ2N1cnJlbnRDb2xvcicpOyBjdHgu
c2hhZG93Q29sb3IiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAw
LCAwLCAnI2YwMCcsIDAuMCk7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgyNTUsIDAsIDAsIDAu
MCknIik7CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3VycmVudENvbG9yJywg
MC4wKTsgY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDAsIDAsIDAsIDAuMCknIik7CitzaG91bGRC
ZSgiY3R4LnNldFN0cm9rZUNvbG9yKCcjZjAwJyk7IGN0eC5zdHJva2VTdHlsZSIsICInI2ZmMDAw
MCciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRDb2xvcicpOyBjdHgu
c3Ryb2tlU3R5bGUiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNldFN0cm9rZUNvbG9y
KCcjZjAwJywgMC4wKTsgY3R4LnN0cm9rZVN0eWxlIiwgIidyZ2JhKDI1NSwgMCwgMCwgMC4wKSci
KTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJ2N1cnJlbnRDb2xvcicsIDAuMCk7IGN0
eC5zdHJva2VTdHlsZSIsICIncmdiYSgwLCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoImN0eC5z
ZXRGaWxsQ29sb3IoJyNmMDAnKTsgY3R4LmZpbGxTdHlsZSIsICInI2ZmMDAwMCciKTsKK3Nob3Vs
ZEJlKCJjdHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InKTsgY3R4LmZpbGxTdHlsZSIsICIn
IzAwMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2V0RmlsbENvbG9yKCcjZjAwJywgMC4wKTsgY3R4
LmZpbGxTdHlsZSIsICIncmdiYSgyNTUsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNl
dEZpbGxDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsgY3R4LmZpbGxTdHlsZSIsICIncmdiYSgw
LCAwLCAwLCAwLjApJyIpOworc2hvdWxkQmUoInRyeUxpbmVhckdyYWRpZW50Q29sb3IoJyNmMDAn
KSIsICInMjU1LDAsMCwyNTUnIik7CitzaG91bGRCZSgidHJ5TGluZWFyR3JhZGllbnRDb2xvcign
Y3VycmVudENvbG9yJykiLCAiJzAsMCwwLDI1NSciKTsKK3Nob3VsZEJlKCJ0cnlSYWRpYWxHcmFk
aWVudENvbG9yKCcjZjAwJykiLCAiJzI1NSwwLDAsMjU1JyIpOworc2hvdWxkQmUoInRyeVJhZGlh
bEdyYWRpZW50Q29sb3IoJ2N1cnJlbnRDb2xvcicpIiwgIicwLDAsMCwyNTUnIik7CisKKy8vIEF0
dGFjaCB0byB0aGUgZG9jdW1lbnQgYW5kIHNldCB0aGUgY2FudmFzJ3MgY29sb3IgdG8gIzEyMzQ1
Ngorc2hvdWxkQmUoImF0dGFjaENhbnZhc1RvRG9jdW1lbnQoKSIsICJ0cnVlIik7CitzaG91bGRC
ZSgiY2FudmFzLnN0eWxlLmNvbG9yID0gJyMxMjM0NTYnOyBjYW52YXMuc3R5bGUuY29sb3IiLCAi
J3JnYigxOCwgNTIsIDg2KSciKTsKKworLy8gJ2N1cnJlbnRDb2xvcicgc2hvdWxkIG5vdyBtZWFu
ICMxMjM0NTYKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IgPSAnI2YwMCc7IGN0eC5zaGFkb3dD
b2xvciIsICInI2ZmMDAwMCciKTsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IgPSAnY3VycmVu
dENvbG9yJzsgY3R4LnNoYWRvd0NvbG9yIiwgIicjMTIzNDU2JyIpOworc2hvdWxkQmUoImN0eC5m
aWxsU3R5bGUgPSAnI2YwMCc7IGN0eC5maWxsU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRC
ZSgiY3R4LmZpbGxTdHlsZSA9ICdjdXJyZW50Q29sb3InOyBjdHguZmlsbFN0eWxlIiwgIicjMTIz
NDU2JyIpOworc2hvdWxkQmUoImN0eC5zdHJva2VTdHlsZSA9ICcjZjAwJzsgY3R4LnN0cm9rZVN0
eWxlIiwgIicjZmYwMDAwJyIpOworc2hvdWxkQmUoImN0eC5zdHJva2VTdHlsZSA9ICdjdXJyZW50
Q29sb3InOyBjdHguc3Ryb2tlU3R5bGUiLCAiJyMxMjM0NTYnIik7CitzaG91bGRCZSgiY3R4LnNl
dFNoYWRvdygwLCAwLCAwLCAnI2YwMCcpOyBjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7
CitzaG91bGRCZSgiY3R4LnNldFNoYWRvdygwLCAwLCAwLCAnY3VycmVudENvbG9yJyk7IGN0eC5z
aGFkb3dDb2xvciIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAs
IDAsICcjZjAwJywgMC4wKTsgY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDI1NSwgMCwgMCwgMC4w
KSciKTsKK3Nob3VsZEJlKCJjdHguc2V0U2hhZG93KDAsIDAsIDAsICdjdXJyZW50Q29sb3InLCAw
LjApOyBjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEoMTgsIDUyLCA4NiwgMC4wKSciKTsKK3Nob3Vs
ZEJlKCJjdHguc2V0U3Ryb2tlQ29sb3IoJyNmMDAnKTsgY3R4LnN0cm9rZVN0eWxlIiwgIicjZmYw
MDAwJyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJyk7IGN0
eC5zdHJva2VTdHlsZSIsICInIzEyMzQ1NiciKTsKK3Nob3VsZEJlKCJjdHguc2V0U3Ryb2tlQ29s
b3IoJyNmMDAnLCAwLjApOyBjdHguc3Ryb2tlU3R5bGUiLCAiJ3JnYmEoMjU1LCAwLCAwLCAwLjAp
JyIpOworc2hvdWxkQmUoImN0eC5zZXRTdHJva2VDb2xvcignY3VycmVudENvbG9yJywgMC4wKTsg
Y3R4LnN0cm9rZVN0eWxlIiwgIidyZ2JhKDE4LCA1MiwgODYsIDAuMCknIik7CitzaG91bGRCZSgi
Y3R4LnNldEZpbGxDb2xvcignI2YwMCcpOyBjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOwor
c2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJ2N1cnJlbnRDb2xvcicpOyBjdHguZmlsbFN0eWxl
IiwgIicjMTIzNDU2JyIpOworc2hvdWxkQmUoImN0eC5zZXRGaWxsQ29sb3IoJyNmMDAnLCAwLjAp
OyBjdHguZmlsbFN0eWxlIiwgIidyZ2JhKDI1NSwgMCwgMCwgMC4wKSciKTsKK3Nob3VsZEJlKCJj
dHguc2V0RmlsbENvbG9yKCdjdXJyZW50Q29sb3InLCAwLjApOyBjdHguZmlsbFN0eWxlIiwgIidy
Z2JhKDE4LCA1MiwgODYsIDAuMCknIik7CitzaG91bGRCZSgidHJ5TGluZWFyR3JhZGllbnRDb2xv
cignI2YwMCcpIiwgIicyNTUsMCwwLDI1NSciKTsKK3Nob3VsZEJlKCJ0cnlMaW5lYXJHcmFkaWVu
dENvbG9yKCdjdXJyZW50Q29sb3InKSIsICInMCwwLDAsMjU1JyIpOworc2hvdWxkQmUoInRyeVJh
ZGlhbEdyYWRpZW50Q29sb3IoJyNmMDAnKSIsICInMjU1LDAsMCwyNTUnIik7CitzaG91bGRCZSgi
dHJ5UmFkaWFsR3JhZGllbnRDb2xvcignY3VycmVudENvbG9yJykiLCAiJzAsMCwwLDI1NSciKTsK
KworLy8gTGFzdCBidXQgbm90IGxlYXN0LCB2ZXJpZnkgdGhhdCB3ZSdyZSBjYXNlIGluc2Vuc2l0
aXZlCitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJyNmMDAnOyBjdHguc2hhZG93Q29sb3Ii
LCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJ0NVUlJFTlRDT0xP
Uic7IGN0eC5zaGFkb3dDb2xvciIsICInIzEyMzQ1NiciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDM5ODc0ZDMuLjg5MTBl
MGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01NTc5LDkgKzU1NzksNiBAQCBjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5zb3VyY2Utb3V0
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLmJyb2tlbi5odG1sCiBjYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5pbmNvbXBsZXRlLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5m
aWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0bWwKIGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnN5c3RlbS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQuZ3JhZGllbnQucmFkaWFsLmNvbmUudG9wLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
aW5kZXggMGYyMDFkMC4uM2I4NWRlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTE4
NSw5ICsxODUsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQu
cGF0dGVybi5zb3VyY2Utb3V0Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdl
LmJyb2tlbi5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5pbmNvbXBsZXRl
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLm51bGwuaHRtbAotY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1sCi1jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQuaHRtbAot
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1vdmVkLmh0
bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnN5c3RlbS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLmZyb250Lmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUudG9wLmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGMxMGI0NzEuLmNjYjNhNzUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZApAQCAtNTE5NCw5ICs1MTk0LDYgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21w
b3NpdGUudW5jb3ZlcmVkLnBhdHRlcm4uc291cmNlLW91dC5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmRyYXdJbWFnZS5icm9rZW4uaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3
SW1hZ2UuaW5jb21wbGV0ZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmRyYXdJbWFnZS5u
dWxsLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQu
YmFzaWMuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVu
dC5jaGFuZ2VkLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1
cnJlbnQucmVtb3ZlZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJz
ZS5zeXN0ZW0uaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29u
ZS5iZWhpbmQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29u
ZS5iZXNpZGUuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNTk1Zjc5Li43ZGRjNjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEwLTA2
ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzOiAiY3VycmVudENvbG9y
IiBzaG91bGQgaW5oZXJpdCB0aGUgY2FudmFzIGVsZW1lbnQncyBjb2xvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNzMKKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgImN1cnJlbnRDb2xvciIgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIEFQ
SXMuCisgICAgICAgIElmIHRoZSBjYW52YXMgaXMgaW4tZG9jdW1lbnQsICJjdXJyZW50Q29sb3Ii
IGlzIHJlcGxhY2VkIGJ5IGNhbnZhcy5zdHlsZS5jb2xvciwKKyAgICAgICAgb3RoZXJ3aXNlIHdl
IHVzZSBmdWxseSBvcGFxdWUgYmxhY2suCisKKyAgICAgICAgRm9yIGdyYWRpZW50IGFkZENvbG9y
U3RvcCgpLCAiY3VycmVudENvbG9yIiBhbHdheXMgbWVhbnMgZnVsbHkgb3BhcXVlIGJsYWNrLgor
CisgICAgICAgIFNwZWMgbGluazoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jMmRjb250ZXh0CisKKyAgICAgICAgVGVzdDogZmFzdC9j
YW52YXMvY2FudmFzLWN1cnJlbnRDb2xvci5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFkaWVudDo6YWRk
Q29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
dHJva2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldEZpbGxTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmN1
cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0N1cnJlbnRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aGFzT3ZlcnJpZGVBbHBoYSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6b3ZlcnJpZGVBbHBoYSk6CisKIDIwMTAt
MTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbiwgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuY3BwCmluZGV4IGZkNDgxOTQuLjdjOThhODIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKIAorI2luY2x1ZGUgIkNhbnZhc1Bh
dHRlcm4uaCIKKyNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIApAQCAtNTIsNyArNTQsNyBAQCB2b2lkIENh
bnZhc0dyYWRpZW50OjphZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0IFN0cmluZyYgY29s
b3IsIEV4Y2VwdGlvbkNvZAogICAgIH0KIAogICAgIFJHQkEzMiByZ2JhID0gMDsKLSAgICBpZiAo
IUNTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcikpIHsKKyAgICBpZiAoIXBhcnNlQ29s
b3JPckN1cnJlbnRDb2xvcihyZ2JhLCBjb2xvciwgMCAvKmNhbnZhcyovKSkgewogICAgICAgICBp
ZiAoIW1fZGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSkKICAgICAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGViZWY1MDcuLjRmYmQxYzMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTI0OSw3
ICsyNDksMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxl
KFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjaGVja09yaWdpbihzdHlsZS0+Y2FudmFzUGF0dGVy
bigpKTsKKyAgICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0
eWxlLT5oYXNPdmVycmlkZUFscGhhKCkpCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxl
OjpjcmVhdGVGcm9tUkdCQShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52
YXMoKSksIHN0eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZh
cygpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNoZWNrT3JpZ2luKHN0eWxlLT5jYW52YXNQYXR0
ZXJuKCkpOwogCiAgICAgc3RhdGUoKS5tX3N0cm9rZVN0eWxlID0gc3R5bGU7CiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTI3Miw3ICsyNzgsMTMgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBzdHlsZSkKICAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1f
ZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjaGVja09yaWdpbihzdHlsZS0+Y2FudmFzUGF0dGVybigpKTsKKyAgICBpZiAoc3R5bGUt
PmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0eWxlLT5oYXNPdmVycmlkZUFscGhh
KCkpCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUkdCQShjb2xv
cldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLT5vdmVycmlk
ZUFscGhhKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHls
ZTo6Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIGNoZWNrT3JpZ2luKHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwogCiAgICAgc3RhdGUo
KS5tX2ZpbGxTdHlsZSA9IHN0eWxlOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdD
b250ZXh0KCk7CkBAIC0zOTQsNyArNDA2LDcgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2hhZG93Q29sb3IoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIHsKLSAgICBpZiAoIUNTU1Bh
cnNlcjo6cGFyc2VDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yKSkKKyAgICBpZiAo
IXBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIGNvbG9yLCBj
YW52YXMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5U2hhZG93KCk7CkBAIC05ODIs
NyArOTk0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQogCiB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJs
dXIsIGNvbnN0IFN0cmluZyYgY29sb3IpCiB7Ci0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29s
b3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBjb2xvcikpCisgICAgaWYgKCFwYXJzZUNvbG9yT3JD
dXJyZW50Q29sb3Ioc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBjb2xvciwgY2FudmFzKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdp
ZHRoLCBoZWlnaHQpOwpAQCAtMTAwNyw3ICsxMDE5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVy
LAogewogICAgIFJHQkEzMiByZ2JhOwogCi0gICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
cmdiYSwgY29sb3IpKQorICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKHJnYmEsIGNv
bG9yLCBjYW52YXMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcAppbmRleCBmZDNjNmU1Li5mN2YxMDYxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcApAQCAtMzAsOSArMzAsMTEgQEAKICNpbmNsdWRlICJDYW52YXNTdHls
ZS5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVy
bi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNF
bGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCkBAIC00OSw2ICs1MSw0MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2VudW0gQ29sb3JQYXJzZVJlc3VsdCB7IFBhcnNlZFJHQkEsIFBhcnNlZEN1cnJlbnRDb2xvciwg
UGFyc2VGYWlsZWQgfTsKKworc3RhdGljIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VDb2xvcihSR0JB
MzImIHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQoreworICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShjb2xvclN0cmluZywgImN1cnJlbnRjb2xvciIpKQorICAgICAgICBy
ZXR1cm4gUGFyc2VkQ3VycmVudENvbG9yOworICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
cGFyc2VkQ29sb3IsIGNvbG9yU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIFBhcnNlZFJHQkE7Cisg
ICAgcmV0dXJuIFBhcnNlRmFpbGVkOworfQorCitSR0JBMzIgY3VycmVudENvbG9yKEhUTUxDYW52
YXNFbGVtZW50KiBjYW52YXMpCit7CisgICAgaWYgKCFjYW52YXMgfHwgIWNhbnZhcy0+aW5Eb2N1
bWVudCgpKQorICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOworICAgIFJHQkEzMiByZ2JhID0g
Q29sb3I6OmJsYWNrOworICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjYW52YXMtPnN0
eWxlKCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlDb2xvcikpOworICAgIHJldHVybiBy
Z2JhOworfQorCitib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihSR0JBMzImIHBhcnNlZENv
bG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
KQoreworICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VSZXN1bHQgPSBwYXJzZUNvbG9yKHBhcnNl
ZENvbG9yLCBjb2xvclN0cmluZyk7CisgICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlRmFpbGVk
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlZEN1
cnJlbnRDb2xvcikKKyAgICAgICAgcGFyc2VkQ29sb3IgPSBjdXJyZW50Q29sb3IoY2FudmFzKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFR5cGUgdHlw
ZSwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9vdmVy
cmlkZUFscGhhKG92ZXJyaWRlQWxwaGEpCit7Cit9CisKIENhbnZhc1N0eWxlOjpDYW52YXNTdHls
ZShSR0JBMzIgcmdiYSkKICAgICA6IG1fdHlwZShSR0JBKQogICAgICwgbV9yZ2JhKHJnYmEpCkBA
IC04OSwxNiArMTI3LDIyIEBAIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShQYXNzUmVmUHRyPENh
bnZhc1BhdHRlcm4+IHBhdHRlcm4pCiBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBDYW52YXNTdHls
ZTo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yKQogewogICAgIFJHQkEzMiBy
Z2JhOwotICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICBD
b2xvclBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7Cisg
ICAgaWYgKHBhcnNlUmVzdWx0ID09IFBhcnNlRmFpbGVkKQogICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAocGFyc2VSZXN1bHQgPT0gUGFyc2VkQ3VycmVudENvbG9yKQorICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRDb2xvcikpOwogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2FudmFzU3R5bGUocmdiYSkpOwogfQogCiBQYXNzUmVmUHRyPENhbnZhc1N0eWxl
PiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0
cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogewogICAgIFJHQkEzMiByZ2JhOwotICAgIGlmICgh
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKSkKKyAgICBDb2xvclBhcnNlUmVzdWx0
IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7CisgICAgaWYgKHBhcnNlUmVz
dWx0ID09IFBhcnNlRmFpbGVkKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocGFyc2VSZXN1
bHQgPT0gUGFyc2VkQ3VycmVudENvbG9yKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhLCBhbHBoYSkpOwogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2Jh
LCBhbHBoYSkpKTsKIH0KIApAQCAtMTIxLDE2ICsxNjUsMTggQEAgYm9vbCBDYW52YXNTdHlsZTo6
aXNFcXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgQ2FudmFz
U3R5bGU6OlJHQkE6CisgICAgY2FzZSBSR0JBOgogICAgICAgICByZXR1cm4gbV9yZ2JhID09IG90
aGVyLm1fcmdiYTsKLSAgICBjYXNlIENhbnZhc1N0eWxlOjpDTVlLQToKKyAgICBjYXNlIENNWUtB
OgogICAgICAgICByZXR1cm4gbV9jbXlrYS5jID09IG90aGVyLm1fY215a2EuYwogICAgICAgICAg
ICAgJiYgbV9jbXlrYS5tID09IG90aGVyLm1fY215a2EubQogICAgICAgICAgICAgJiYgbV9jbXlr
YS55ID09IG90aGVyLm1fY215a2EueQogICAgICAgICAgICAgJiYgbV9jbXlrYS5rID09IG90aGVy
Lm1fY215a2EuawogICAgICAgICAgICAgJiYgbV9jbXlrYS5hID09IG90aGVyLm1fY215a2EuYTsK
LSAgICBjYXNlIENhbnZhc1N0eWxlOjpHcmFkaWVudDoKLSAgICBjYXNlIENhbnZhc1N0eWxlOjpJ
bWFnZVBhdHRlcm46CisgICAgY2FzZSBHcmFkaWVudDoKKyAgICBjYXNlIEltYWdlUGF0dGVybjoK
KyAgICBjYXNlIEN1cnJlbnRDb2xvcjoKKyAgICBjYXNlIEN1cnJlbnRDb2xvcldpdGhPdmVycmlk
ZUFscGhhOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xODgsNiArMjM0LDEw
IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQogICAgIGNhc2UgSW1hZ2VQYXR0ZXJuOgogICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigpKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDdXJyZW50Q29sb3I6CisgICAgY2FzZSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVB
bHBoYToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIApAQCAtMjIxLDYgKzI3MSwxMCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxD
b2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgY2FzZSBJbWFnZVBhdHRlcm46CiAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKGNhbnZhc1BhdHRlcm4oKS0+cGF0dGVybigp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDdXJyZW50Q29sb3I6CisgICAgY2FzZSBDdXJy
ZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmlu
ZGV4IDNjYTc2MGEuLmExMTU4NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhbnZhc0dyYWRpZW50
OwogICAgIGNsYXNzIENhbnZhc1BhdHRlcm47CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
ICAgIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCiAgICAgY2xhc3MgQ2FudmFzU3R5bGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewogICAgIHB1YmxpYzoKQEAgLTQ3LDYgKzQ4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IGNyZWF0ZUZyb21HcmFkaWVudChQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50Pik7
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tUGF0dGVy
bihQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKIAorICAgICAgICBib29sIGlzQ3VycmVudENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvciB8fCBtX3R5cGUgPT0g
Q3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE7IH0KKyAgICAgICAgYm9vbCBoYXNPdmVycmlk
ZUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvcldpdGhPdmVycmlk
ZUFscGhhOyB9CisgICAgICAgIGZsb2F0IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBt
X292ZXJyaWRlQWxwaGE7IH0KKwogICAgICAgICBTdHJpbmcgY29sb3IoKSBjb25zdCB7IHJldHVy
biBDb2xvcihtX3JnYmEpLnNlcmlhbGl6ZWQoKTsgfQogICAgICAgICBDYW52YXNHcmFkaWVudCog
Y2FudmFzR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50LmdldCgpOyB9CiAgICAg
ICAgIENhbnZhc1BhdHRlcm4qIGNhbnZhc1BhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRl
cm4uZ2V0KCk7IH0KQEAgLTU5LDYgKzY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0
IGssIGZsb2F0IGEpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZW51bSBUeXBlIHsg
UkdCQSwgQ01ZS0EsIEdyYWRpZW50LCBJbWFnZVBhdHRlcm4sIEN1cnJlbnRDb2xvciwgQ3VycmVu
dENvbG9yV2l0aE92ZXJyaWRlQWxwaGEgfTsKKworICAgICAgICBDYW52YXNTdHlsZShUeXBlLCBm
bG9hdCBvdmVycmlkZUFscGhhID0gMCk7CiAgICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMiByZ2Jh
KTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7CiAg
ICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwpA
QCAtNjYsMTEgKzc0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FudmFzU3R5
bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwogICAgICAgICBDYW52YXNTdHlsZShQYXNz
UmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKIAotICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlL
QSwgR3JhZGllbnQsIEltYWdlUGF0dGVybiB9OwotCiAgICAgICAgIFR5cGUgbV90eXBlOwogCi0g
ICAgICAgIFJHQkEzMiBtX3JnYmE7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIFJHQkEz
MiBtX3JnYmE7CisgICAgICAgICAgICBmbG9hdCBtX292ZXJyaWRlQWxwaGE7CisgICAgICAgIH07
CiAKICAgICAgICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiBtX2dyYWRpZW50OwogICAgICAgICBS
ZWZQdHI8Q2FudmFzUGF0dGVybj4gbV9wYXR0ZXJuOwpAQCAtODYsNiArOTUsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIH0gbV9jbXlrYTsKICAgICB9OwogCisgICAgUkdCQTMyIGN1
cnJlbnRDb2xvcihIVE1MQ2FudmFzRWxlbWVudCopOworICAgIGJvb2wgcGFyc2VDb2xvck9yQ3Vy
cmVudENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcs
IEhUTUxDYW52YXNFbGVtZW50Kik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
Cg==
</data>
<flag name="review"
          id="59819"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70728</attachid>
            <date>2010-10-14 05:22:20 -0700</date>
            <delta_ts>2010-10-14 05:43:33 -0700</delta_ts>
            <desc>proposed warning fix for r69755 </desc>
            <filename>1.patch</filename>
            <type>text/plain</type>
            <size>1582</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTc1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTAtMTQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDYW52YXM6ICJjdXJyZW50Q29sb3IiIHNob3VsZCBpbmhlcml0IHRoZSBjYW52YXMgZWxlbWVu
dCdzIGNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MDI3MworCisgICAgICAgIFdhcm5pbmcgZml4IGFmdGVyIHI2OTc1NS4gTWlzc2luZyBkZWZh
dWx0IGNhc2VzIGFkZGVkLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvck9yQ3VycmVudENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEpOgorCiAy
MDEwLTEwLTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIE5vdCByZXZpZXdlZC4gUm9sbGluZyBvdXQgcjY5NzU3LgpJbmRleDogV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAJKHJldmlzaW9uIDY5NzU4KQorKysgV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDkgQEAKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQYXJzZUZhaWxlZDoKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0xMzksNiArMTQyLDkgQEAKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShDdXJyZW50Q29sb3IpKTsKICAgICBjYXNl
IFBhcnNlRmFpbGVkOgogICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCkBAIC0x
NTMsNiArMTU5LDkgQEAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShD
dXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYSwgYWxwaGEpKTsKICAgICBjYXNlIFBhcnNlRmFp
bGVkOgogICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>