<?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>18294</bug_id>
          
          <creation_ts>2008-04-02 23:15:28 -0700</creation_ts>
          <short_desc>Strange Result for getComputedStyle on borderWidth set in em</short_desc>
          <delta_ts>2012-01-19 05:00:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dhtmlkitchen.com/ape/test/tests/dom/style-f-test.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Garrett Smith">xk1t</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>76211</commentid>
    <comment_count>0</comment_count>
    <who name="Garrett Smith">xk1t</who>
    <bug_when>2008-04-02 23:15:28 -0700</bug_when>
    <thetext>I had a problem getting the computed style of a borderWidth in webkit.
It looks like a bug.

testGetComputedShorthandValues100px : function() {
  var c1 = document.getElementById(&quot;c1&quot;),
      inp = &quot;120em 110em 100em 90.1em&quot;;
  c1.style.borderWidth = inp;
  c1.style.borderStyle = &quot;solid&quot;;
  c1.style.fontSize = &quot;100px&quot;;

  var cs = getComputedStyle(c1, &quot;&quot;);
//alert([cs.borderTopWidth, cs.borderRightWidth, cs.borderBottomWidth,
cs.borderLeftWidth]);
  var out = dom.getStyle(c1, &quot;borderWidth&quot;);
  Assert.areEqual(&quot;12000px 11000px 10000px 9010px&quot;, out);
}

Safari 3.1 fails with &quot;3808px 2808px 1808px 818px, (string)&quot;

The html can be simplified to:
&lt;body style=&quot;position: relative;margin:0;padding:0;&quot;&gt;&lt;div id=&quot;c1&quot;&gt;&lt;/
div&gt;l&lt;/body&gt;

In Firefox, I get the expexted result. I don&apos;t understand webkit&apos;s
result. What&apos;s going on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84352</commentid>
    <comment_count>1</comment_count>
      <attachid>21925</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-06-25 00:01:13 -0700</bug_when>
    <thetext>Created attachment 21925
First attempt

This simple patch allows bigger computed border widths that use em.
(for some reason the WebCore/ChangeLog) did not pick up the tests).
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84578</commentid>
    <comment_count>2</comment_count>
      <attachid>21925</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-27 09:12:33 -0700</bug_when>
    <thetext>Comment on attachment 21925
First attempt

Why is 28 bits enough? Doesn&apos;t this just move the problem to a higher number?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85565</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-07-09 12:52:44 -0700</bug_when>
    <thetext>Hi Darin,

(In reply to comment #2)
&gt; (From update of attachment 21925 [edit])
&gt; Why is 28 bits enough? Doesn&apos;t this just move the problem to a higher number?

Sure, just moving the problem, but we have to have some boundary I think. There is something
wrong with the patch I noticed, when setting we use a short so the extra room gets lost. When
I correct that the value can go up to 2684354em at 100px font size, which is more than FF.
However it seems the zoom factor is also multiplied into the border widths, which means 
the border width values differ on zoom level, unlike FF. I am not sure what is correct.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86931</commentid>
    <comment_count>4</comment_count>
      <attachid>21925</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-07-24 23:03:41 -0700</bug_when>
    <thetext>Comment on attachment 21925
First attempt

It would be even better if this was a .js style test and it tested both sides of the expected failure point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87637</commentid>
    <comment_count>5</comment_count>
      <attachid>21925</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-01 15:37:01 -0700</bug_when>
    <thetext>Comment on attachment 21925
First attempt

r- for needing a better test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535742</commentid>
    <comment_count>6</comment_count>
      <attachid>122444</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-13 09:46:57 -0800</bug_when>
    <thetext>Created attachment 122444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535919</commentid>
    <comment_count>7</comment_count>
      <attachid>122486</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-13 12:57:05 -0800</bug_when>
    <thetext>Created attachment 122486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537196</commentid>
    <comment_count>8</comment_count>
      <attachid>122486</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-17 10:48:55 -0800</bug_when>
    <thetext>Comment on attachment 122486
Patch

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

I think you&apos;re right that it&apos;s safe to use more bits because the size isn&apos;t changing (we&apos;re probably 4 byte aligning), but we should add a compile assert to verify.

Color also packs poorly because of the bool it contains, but there&apos;s probably no way to get that back.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1710
&gt; +    setPropertyHandler(CSSPropertyOutlineWidth, ApplyPropertyComputeLength&lt;unsigned short, &amp;RenderStyle::outlineWidth, &amp;RenderStyle::setOutlineWidth, &amp;RenderStyle::initialOutlineWidth, NormalDisabled, ThicknessEnabled&gt;::createHandler());
&gt; +    setPropertyHandler(CSSPropertyWebkitColumnRuleWidth, ApplyPropertyComputeLength&lt;unsigned short, &amp;RenderStyle::columnRuleWidth, &amp;RenderStyle::setColumnRuleWidth, &amp;RenderStyle::initialOutlineWidth, NormalDisabled, ThicknessEnabled&gt;::createHandler());

Should this be initialColumnWidth or initialColumnRuleWidth?  This fix seems unrelated to this patch.

&gt; Source/WebCore/page/animation/AnimationBase.cpp:87
&gt; +static inline unsigned blendFunc(const AnimationBase*, unsigned from, unsigned to, double progress)

Is there a version of this function using &quot;unsigned short&quot; that we can remove?

&gt; Source/WebCore/rendering/RenderTheme.cpp:114
&gt; +            if (static_cast&lt;unsigned&gt;(borderBox.top().value()) != style-&gt;borderTopWidth()) {

I would cast border*Width to an int because it&apos;s going to fit (since it&apos;s only 27 bits) and Length::value() could be negative.  That said, this still makes me a bit nervous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537207</commentid>
    <comment_count>9</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-17 11:03:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 122486 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122486&amp;action=review
&gt; 
&gt; I think you&apos;re right that it&apos;s safe to use more bits because the size isn&apos;t changing (we&apos;re probably 4 byte aligning), but we should add a compile assert to verify.

I can add it.

&gt; 
&gt; Color also packs poorly because of the bool it contains, but there&apos;s probably no way to get that back.
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1710
&gt; &gt; +    setPropertyHandler(CSSPropertyOutlineWidth, ApplyPropertyComputeLength&lt;unsigned short, &amp;RenderStyle::outlineWidth, &amp;RenderStyle::setOutlineWidth, &amp;RenderStyle::initialOutlineWidth, NormalDisabled, ThicknessEnabled&gt;::createHandler());
&gt; &gt; +    setPropertyHandler(CSSPropertyWebkitColumnRuleWidth, ApplyPropertyComputeLength&lt;unsigned short, &amp;RenderStyle::columnRuleWidth, &amp;RenderStyle::setColumnRuleWidth, &amp;RenderStyle::initialOutlineWidth, NormalDisabled, ThicknessEnabled&gt;::createHandler());
&gt; 
&gt; Should this be initialColumnWidth or initialColumnRuleWidth?  This fix seems unrelated to this patch.

It&apos;s because the template requires a unsigned short defined function. I changed initialBorderWidth to return a unsigned therefore it doesn&apos;t compile. I created initialOutlineWidth which is unsigned short (and return the same as initialBorderWidth) for it.

&gt; 
&gt; &gt; Source/WebCore/page/animation/AnimationBase.cpp:87
&gt; &gt; +static inline unsigned blendFunc(const AnimationBase*, unsigned from, unsigned to, double progress)
&gt; 
&gt; Is there a version of this function using &quot;unsigned short&quot; that we can remove?

I guess no as we still have properties using short.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTheme.cpp:114
&gt; &gt; +            if (static_cast&lt;unsigned&gt;(borderBox.top().value()) != style-&gt;borderTopWidth()) {
&gt; 
&gt; I would cast border*Width to an int because it&apos;s going to fit (since it&apos;s only 27 bits) and Length::value() could be negative.  That said, this still makes me a bit nervous.

why exactly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537731</commentid>
    <comment_count>10</comment_count>
      <attachid>122893</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-18 02:31:31 -0800</bug_when>
    <thetext>Created attachment 122893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538077</commentid>
    <comment_count>11</comment_count>
      <attachid>122893</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-18 12:34:42 -0800</bug_when>
    <thetext>Comment on attachment 122893
Patch

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

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1706
&gt; +    setPropertyHandler(CSSPropertyWebkitColumnRuleWidth, ApplyPropertyComputeLength&lt;unsigned short, &amp;RenderStyle::columnRuleWidth, &amp;RenderStyle::setColumnRuleWidth, &amp;RenderStyle::initialOutlineWidth, NormalDisabled, ThicknessEnabled&gt;::createHandler());

Can we also add a method to render style for initialColumnRuleWidth?  It&apos;s confusing to use initialOutlineWidth here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538106</commentid>
    <comment_count>12</comment_count>
      <attachid>122980</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-18 13:27:59 -0800</bug_when>
    <thetext>Created attachment 122980
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538182</commentid>
    <comment_count>13</comment_count>
      <attachid>122980</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-01-18 14:38:47 -0800</bug_when>
    <thetext>Comment on attachment 122980
Patch for landing

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

&gt; Source/WebCore/platform/animation/AnimationUtilities.h:40
&gt; +    return static_cast&lt;int&gt;(lround(static_cast&lt;double&gt;(from) + static_cast&lt;double&gt;(to - from) * progress));

Shouldn&apos;t this use static_cast&lt;unsigned&gt; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538195</commentid>
    <comment_count>14</comment_count>
      <attachid>122980</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-18 14:47:57 -0800</bug_when>
    <thetext>Comment on attachment 122980
Patch for landing

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

&gt;&gt; Source/WebCore/platform/animation/AnimationUtilities.h:40
&gt;&gt; +    return static_cast&lt;int&gt;(lround(static_cast&lt;double&gt;(from) + static_cast&lt;double&gt;(to - from) * progress));
&gt; 
&gt; Shouldn&apos;t this use static_cast&lt;unsigned&gt; instead?

Yes, you&apos;re right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538595</commentid>
    <comment_count>15</comment_count>
      <attachid>123097</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-19 03:40:54 -0800</bug_when>
    <thetext>Created attachment 123097
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538635</commentid>
    <comment_count>16</comment_count>
      <attachid>123097</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 05:00:08 -0800</bug_when>
    <thetext>Comment on attachment 123097
Patch for landing

Clearing flags on attachment: 123097

Committed r105403: &lt;http://trac.webkit.org/changeset/105403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538636</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 05:00:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21925</attachid>
            <date>2008-06-25 00:01:13 -0700</date>
            <delta_ts>2012-01-13 09:46:40 -0800</delta_ts>
            <desc>First attempt</desc>
            <filename>18294.diff</filename>
            <type>text/plain</type>
            <size>3591</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDc5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMDYtMjUgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NAorICAgICAgICBTdHJhbmdlIFJlc3Vs
dCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQgaW4gZW0KKworICAgICAg
ICBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCBmb3IgdGhlIGJvcmRlciB2YWx1ZSBz
bworICAgICAgICBpdCBjYW4gc3RvcmUgY29tcHV0ZWQgYm9yZGVyIHdpZHRoIHZhbHVlcyB1c2lu
ZyBlbSBsYXJnZXIKKyAgICAgICAgdGhhbiA0MDk2cHguCisKKyAgICAgICAgV0FSTklORzogTk8g
VEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDoKKwogMjAwOC0wNi0yNCAgQW5vbnltb3VzCiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuICBDb21taXR0ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMzQ3ODkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIENvbG9yIGNvbG9yOwotICAgIHVuc2lnbmVk
IHdpZHRoIDogMTI7CisgICAgdW5zaWduZWQgd2lkdGggOiAyODsKICAgICB1bnNpZ25lZCBtX3N0
eWxlIDogNDsgLy8gRUJvcmRlclN0eWxlIAogCiAgICAgRUJvcmRlclN0eWxlIHN0eWxlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0eWxlPihtX3N0eWxlKTsgfQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzQ3OTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wNi0yNSAgUm9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGNh
c2UgZm9yOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgyOTQKKyAgICAgICAgU3RyYW5nZSBSZXN1bHQgZm9yIGdldENvbXB1dGVkU3R5bGUgb24gYm9y
ZGVyV2lkdGggc2V0IGluIGVtCisKKyAgICAgICAgKiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxl
LWJvcmRlci13aWR0aC1sYXJnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2dldENvbXB1dGVkU3R5bGUtYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWw6IEFkZGVkLgorCiAy
MDA4LTA2LTI0ICBBbm9ueW1vdXMKIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4g
IENvbW1pdHRlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS1ib3JkZXItd2lkdGgtbGFyZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUtYm9yZGVyLXdpZHRoLWxh
cmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2dl
dENvbXB1dGVkU3R5bGUtYm9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyIEBACitQQVNTRUQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Z2V0Q29tcHV0ZWRTdHlsZS1ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlLWJvcmRlci13aWR0aC1sYXJnZS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHls
ZS1ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9k
eSB7IHBvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3BhZGRpbmc6MDsgfQorICAgICAgICAjYzEg
eyBib3JkZXItd2lkdGg6MTIwZW0gMTEwZW0gMTAwZW0gOTAuMWVtO2JvcmRlci1zdHlsZTpzb2xp
ZDtmb250LXNpemU6MTAwcHg7ICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnICsgJ1xuJykpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICB2YXIgYzEgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYzEiKSwKKworICAgICAgICAgICAgdmFyIGNzID0gZ2V0Q29tcHV0ZWRTdHlsZShj
MSwgIiIpOworICAgICAgICAgICAgaWYgKGNzLmJvcmRlclRvcFdpZHRoID09ICIxMjAwMHB4IiAm
JgorICAgICAgICAgICAgICAgIGNzLmJvcmRlclJpZ2h0V2lkdGggPT0gIjExMDAwcHgiICYmCisg
ICAgICAgICAgICAgICAgY3MuYm9yZGVyQm90dG9tV2lkdGggPT0gIjEwMDAwcHgiICYmCisgICAg
ICAgICAgICAgICAgY3MuYm9yZGVyTGVmdFdpZHRoID09ICI5MDEwcHgiKSB7CisgICAgICAgICAg
ICAgICAgbG9nKCJQQVNTRUQiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMRUQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgICA8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKworICAgIDxkaXYgaWQ9ImMxIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122444</attachid>
            <date>2012-01-13 09:46:57 -0800</date>
            <delta_ts>2012-01-13 12:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-18294-20120113144649.patch</filename>
            <type>text/plain</type>
            <size>20970</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3NzY2ZmI5OWIxZTNk
ZjAzZGUzMGFjOTVkZWVhOTBjMzIxNTFjYi4uOGVjMjA4ODRhZTMyNmZkYTIyODFkNDY2NWQ1Yjhi
NjA2MjcwZWFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTEzICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFu
Z2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCb3JkZXJWYWx1
ZSBzdG9yZXMgaXRzIHdpZHRoIG9uIGEgMTIgYml0cyB1bnNpZ25lZC4gVGhpcyBwYXRjaCAKKyAg
ICAgICAgaW5jcmVhc2UgaXQgdG8gMjcuIFRoZSBwYXRjaCBhbHNvIG1vZGlmeSB0aGUgd2F5IHRv
IHNldCB0aGUgCisgICAgICAgIHdpZHRoIG9yIHRvIGdldCBpdCwgd2Ugbm93IHVzZSBhIHVuc2ln
bmVkIHJhdGhlciB0aGFuIGEgc2hvcnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYm9yZGVy
LXdpZHRoLWxhcmdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
Qm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyTGVmdFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyVG9wV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6
OndpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJMZWZ0V2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclRvcFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJCb3R0b21XaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6c2V0Qm9yZGVyTGVm
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpzZXRCb3Jk
ZXJSaWdodFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpz
ZXRCb3JkZXJUb3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxk
czo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVC
aXRmaWVsZHM6OmluaXRpYWxCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZUJpdGZpZWxkczo6aW5pdGlhbE91dGxpbmVXaWR0aCk6CisKIDIwMTItMDEtMTMgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbQ2hyb21pdW1dIEphdmFTY3JpcHRPdXRsaW5lRGlhbG9nIGZhaWxzIHRvIG9wZW4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGE0MzljYmY1MmFmOTQ3
ODMyNGUyYTI3OTlmOGE3ZjI5YzQ0NzBmZTYuLmI3NmYwMjNkZjFkNmE2YmQyZmU0Yjk3ZmVlNjhi
N2I3ZjEyMTMyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApA
QCAtMzQzLDYgKzM0MywxMSBAQCB0ZW1wbGF0ZTw+IGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKgogICAgIHJldHVybiBy
b3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50LCBJTlRfTUFYLCBJTlRfTUlOPihjb21wdXRl
TGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRT
aXplKSk7CiB9CiAKK3RlbXBsYXRlPD4gdW5zaWduZWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKK3sKKyAgICByZXR1cm4gcm91
bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPHVuc2lnbmVkLCBVSU5UX01BWCwgMD4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6
ZSkpOworfQorCiB0ZW1wbGF0ZTw+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewogICAgIC8vIEZJWE1FOiBMZW5n
dGguaCBubyBsb25nZXIgZXhwZWN0cyAyOCBiaXQgaW50ZWdlcnMsIHNvIHRoZXNlIGJvdW5kcyBz
aG91bGQgYmUgSU5UX01BWCBhbmQgSU5UX01JTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVBcHBseVByb3BlcnR5LmNwcAppbmRleCBlNGQ4ZWVjOTcyYjRkNmMzM2RhNmNiNzc3MmU4M2Iw
ODlkYmJkMjFkLi42YWQ4Y2RmOGQ5NzNkY2YwZWNjMWI3NjQ5OWJlMDIwNTg5ZjA1Nzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMTcwMiwx
MiArMTcwMiwxMiBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0
eSgpCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpib3JkZXJC
b3R0b21TdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVN0
eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0U3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxl
Ojpib3JkZXJMZWZ0U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJM
ZWZ0U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+
OjpjcmVhdGVIYW5kbGVyKCkpOwogCi0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyVG9wV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRv
cFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQs
IFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVu
Z3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVy
V2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwg
QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6
Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNz
RW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25l
ZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFs
RGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1
dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRoLCAmUmVu
ZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lk
dGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgs
IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6
OmNvbHVtblJ1bGVXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5SdWxlV2lkdGgsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5h
YmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAm
UmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdp
ZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRo
aWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3Ro
PHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5v
cm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQXBwbHlQcm9w
ZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lk
dGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRlclN0eWxl
Ojpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0Vu
YWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eU91dGxpbmVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hv
cnQsICZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVX
aWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwg
VGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0
ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZS
ZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRs
aW5lV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxl
cigpKTsKIAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcCwgQXBw
bHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlC
b3JkZXJSaWdodCwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMzYzOWFmOGI1MmNl
ZjAwMWYwY2JiYjNiNTZlY2FmZGI3M2Q0OTllYS4uMmNhZGUzNGQwODU3NzkwMDU4Yzc1NTkxZDgx
NWM1M2NkY2Y2MTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dy
CiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgdW5zaWduZWQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIHJldHVybiBibGVuZChmcm9t
LCB0bywgcHJvZ3Jlc3MpOworfQorCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSosIGRvdWJsZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJsZSBwcm9ncmVz
cykKIHsgIAogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwpAQCAtOTUwLDEw
ICs5NTUsMTAgQEAgdm9pZCBBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1hcCgpCiAgICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+
KENTU1Byb3BlcnR5TWluSGVpZ2h0LCAmUmVuZGVyU3R5bGU6Om1pbkhlaWdodCwgJlJlbmRlclN0
eWxlOjpzZXRNaW5IZWlnaHQpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChu
ZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXhIZWlnaHQsICZSZW5kZXJT
dHlsZTo6bWF4SGVpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldE1heEhlaWdodCkpOwogCi0gICAgICAg
IGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBz
aG9ydD4oQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVm
dFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRXaWR0aCkpOwotICAgICAgICBnUHJv
cGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hvcnQ+
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdp
ZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclJpZ2h0V2lkdGgpKTsKLSAgICAgICAgZ1Byb3Bl
cnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkIHNob3J0PihD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdpZHRoKSk7Ci0gICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBzaG9ydD4oQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFw
cGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxl
OjpzZXRCb3JkZXJMZWZ0V2lkdGgpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJSaWdodFdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFBy
b3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4oQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgJlJlbmRl
clN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCkp
OworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8
dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpKTsKICAg
ICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0
aD4oQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAmUmVuZGVyU3R5bGU6Om1hcmdpbkxlZnQsICZSZW5k
ZXJTdHlsZTo6c2V0TWFyZ2luTGVmdCkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBw
ZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAm
UmVuZGVyU3R5bGU6Om1hcmdpblJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldE1hcmdpblJpZ2h0KSk7
CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxM
ZW5ndGg+KENTU1Byb3BlcnR5TWFyZ2luVG9wLCAmUmVuZGVyU3R5bGU6Om1hcmdpblRvcCwgJlJl
bmRlclN0eWxlOjpzZXRNYXJnaW5Ub3ApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaAppbmRleCAxMjhmMmVkMGVmMGVl
YmFlNzYyZjRjMzY3M2MyNGViMGNlMGU0NjI1Li5iM2YyODNjYTIwMThiMTY4MTg2YWU4NjA1Y2M1
MzdiYWYxOWYxMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL0FuaW1hdGlvblV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSwxMSBAQCBpbmxpbmUgaW50
IGJsZW5kKGludCBmcm9tLCBpbnQgdG8sIGRvdWJsZSBwcm9ncmVzcykKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihmcm9tKSArIHN0YXRpY19j
YXN0PGRvdWJsZT4odG8gLSBmcm9tKSAqIHByb2dyZXNzKSk7CiB9CiAKK2lubGluZSB1bnNpZ25l
ZCBibGVuZCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZG91YmxlIHByb2dyZXNzKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChzdGF0aWNfY2FzdDxkb3VibGU+KGZy
b20pICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0byAtIGZyb20pICogcHJvZ3Jlc3MpKTsKK30KKwog
aW5saW5lIGRvdWJsZSBibGVuZChkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCiB7ICAKICAgICByZXR1cm4gZnJvbSArICh0byAtIGZyb20pICogcHJvZ3Jlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRleCAyNmYwODlmMGI3
NzBiOWZjMTc0OWIwYmI1YWRlODVkMmU1NDI4YmI1Li5lNjU2MjhhOTkyN2M4YmVjYjIyMzY4MGZh
YTZmMmE4NWQ0NjU1MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJEYXRhLmgKQEAgLTYwLDI4ICs2MCwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyTGVmdFdpZHRoKCkgY29u
c3QKKyAgICB1bnNpZ25lZCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFtX2ltYWdlLmhhc0ltYWdlKCkgJiYgKG1fbGVmdC5zdHlsZSgpID09IEJOT05FIHx8IG1f
bGVmdC5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0dXJuIDA7IAogICAgICAg
ICByZXR1cm4gbV9sZWZ0LndpZHRoKCk7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIHNob3J0
IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlclJpZ2h0V2lkdGgo
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0ltYWdlKCkgJiYgKG1fcmln
aHQuc3R5bGUoKSA9PSBCTk9ORSB8fCBtX3JpZ2h0LnN0eWxlKCkgPT0gQkhJRERFTikpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fcmlnaHQud2lkdGgoKTsKICAgICB9
CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdAorICAgIHVu
c2lnbmVkIGJvcmRlclRvcFdpZHRoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFn
ZS5oYXNJbWFnZSgpICYmIChtX3RvcC5zdHlsZSgpID09IEJOT05FIHx8IG1fdG9wLnN0eWxlKCkg
PT0gQkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fdG9w
LndpZHRoKCk7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlckJvdHRvbVdp
ZHRoKCkgY29uc3QKKyAgICB1bnNpZ25lZCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIW1faW1hZ2UuaGFzSW1hZ2UoKSAmJiAobV9ib3R0b20uc3R5bGUoKSA9
PSBCTk9ORSB8fCBtX2JvdHRvbS5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVy
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmlu
ZGV4IGQ5ZjE4YTAyY2MwMjdmMzk0YjFiZDk5NjczM2I0NTkyMTFhMDI3MmYuLmQ5ZDQwNGI4NTMw
OTg2ZDg2Y2I0ODgwZTg2MmQzZTQ5NGM0ODU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCkBAIC02NiwxMiArNjYsMTIgQEAgcHVibGljOgogICAg
IH0KICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
OyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgRUJv
cmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0eWxl
PihtX3N0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ29sb3IgbV9jb2xvcjsKLSAgICB1bnNp
Z25lZCBtX3dpZHRoIDogMTI7CisgICAgdW5zaWduZWQgbV93aWR0aCA6IDI3OwogICAgIHVuc2ln
bmVkIG1fc3R5bGUgOiA0OyAvLyBFQm9yZGVyU3R5bGUKIAogICAgIC8vIFRoaXMgaXMgb25seSB1
c2VkIGJ5IE91dGxpbmVWYWx1ZSBidXQgbW92ZWQgaGVyZSB0byBrZWVwIHRoZSBiaXRzIHBhY2tl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
ODhmOTUwYjY1OTA3MDkxMmYzMzkwNWRlMjFiN2ZjMmIzYmY4NDcyMS4uM2ZlNmZkNzYzMTU2YmU0
YTYzMjQ1MmMyM2E1OWY5YTQ0NjM1ZGVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU0NSwxNiArNTQ1LDE2IEBAIHB1YmxpYzoKICAgICBM
ZW5ndGhTaXplIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CiAKLSAg
ICB1bnNpZ25lZCBzaG9ydCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CisgICAgdW5zaWduZWQgYm9yZGVyTGVmdFdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsg
fQogICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBib3JkZXJMZWZ0SXNUcmFu
c3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLmlzVHJhbnNw
YXJlbnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQorICAgIHVuc2ln
bmVkIGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJv
cmRlclJpZ2h0V2lkdGgoKTsgfQogICAgIEVCb3JkZXJTdHlsZSBib3JkZXJSaWdodFN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpLnN0eWxlKCk7IH0KICAgICBi
b29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIucmlnaHQoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBib3Jk
ZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyVG9wV2lk
dGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9CiAgICAgRUJvcmRlclN0eWxlIGJvcmRl
clRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5zdHlsZSgp
OyB9CiAgICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICB1bnNpZ25lZCBzaG9y
dCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9y
ZGVyQm90dG9tV2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlckJvdHRvbVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJCb3R0b21XaWR0aCgpOyB9CiAgICAg
RUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5ib3R0b20oKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5z
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5pc1RyYW5z
cGFyZW50KCk7IH0KICAgICAKQEAgLTEwNDIsMTYgKzEwNDIsMTYgQEAgcHVibGljOgogICAgIFJv
dW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3Jk
ZXJSZWN0LAogICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRoLCBMYXlvdXRVbml0IGJvdHRvbVdp
ZHRoLCBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5pdCByaWdodFdpZHRoLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJv
cmRlckxlZnRXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xl
ZnQubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHls
ZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdikgfQogICAg
IHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2xlZnQubV9jb2xvciwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRX
aWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0
Lm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgodW5zaWduZWQgdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KSB9CiAgICAgdm9p
ZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpIH0KICAgICB2b2lkIHNldEJvcmRlclJpZ2h0Q29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV9j
b2xvciwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgc2hvcnQgdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdikgfQorICAgIHZvaWQg
c2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV90b3AubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyVG9wU3R5bGUoRUJvcmRlclN0
eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fc3R5bGUsIHYpIH0KICAg
ICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3RvcC5tX2NvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21X
aWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRv
bS5tX3dpZHRoLCB2KSB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aCh1bnNpZ25lZCB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KSB9CiAgICAg
dm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJv
dW5kLCBib3JkZXIubV9ib3R0b20ubV9zdHlsZSwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyQm90
dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90
dG9tLm1fY29sb3IsIHYpIH0KIApAQCAtMTUxMSw3ICsxNTExLDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDVVJTT1JfQVVUTzsgfQogICAg
IHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAg
ICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHlsZUltYWdlKCkgeyByZXR1cm4gMDsg
fQotICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQm9yZGVyV2lkdGgoKSB7IHJldHVy
biAzOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3JkZXJXaWR0aCgpIHsgcmV0dXJu
IDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbE91dGxpbmVXaWR0aCgpIHsg
cmV0dXJuIDM7IH0KICAgICBzdGF0aWMgaW50IGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZygpIHsg
cmV0dXJuIDA7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaXplKCkgeyByZXR1cm4gTGVu
Z3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNaW5TaXplKCkgeyByZXR1cm4gTGVu
Z3RoKDAsIEZpeGVkKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMxOWUzOTUyMjY0NTc0ZGM4YmU1OTBlOTQxYmY5NDhk
MjU0ZTllZWYuLjliZmMwZWFiM2U2YWQxMDg0MmVhNDA2ZDY3MzZkYmZlZWExZmMyNDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0xMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5h
cmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0
ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQgaW4gZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IGNvdmVycyB0aGF0IHNldHRpbmcgYmln
IHZhbHVlcyB0byBib3JkZXItd2lkdGggd2lsbAorICAgICAgICByZXR1cm4gY29ycmVjdCB2YWx1
ZXMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFyZ2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDEtMTMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQ7IGNocm9taXVtIHRlc3RzIHJlYmFzZWxpbmVkIGFmdGVyIHIx
MDQ5MDcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFy
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkNTc5YWQ3YjczMmFjYWNhMDBiN2UzNjdmMzFi
MTllNjVjY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVy
LXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0IGZvciBXZWJL
aXQgYnVnIDE4Mjk0IDogU3RyYW5nZSBSZXN1bHQgZm9yIGdldENvbXB1dGVkU3R5bGUgb24gYm9y
ZGVyV2lkdGggc2V0IGluIGVtCisKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItd2lkdGgnKSBpcyAnMTIwMDBweCAxMTAwMHB4IDEwMDAwcHggOTAxMHB4JworUEFT
UyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKS5j
c3NUZXh0IGlzICcxMjAwMHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLmNzc1RleHQgaXMgJzExMDAwcHgnCitQQVNTIGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLmNzc1Rl
eHQgaXMgJzEwMDAwcHgnCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgn
Ym9yZGVyLWxlZnQtd2lkdGgnKS5jc3NUZXh0IGlzICc5MDEwcHgnCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjJiZjMxYTBmZTU3NDVlZGQz
NjdiMzAxZGVkNmExNDVkZjc4NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIFdlYktpdCBidWcgMTgyOTQg
OiBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQg
aW4gZW08L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBm
b3IgV2ViS2l0IGJ1ZyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTQiPjE4Mjk0PC9hPiA6IFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0
eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbTwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8ZGl2IGlkPSJ0ZXN0c19jb250YWluZXIiPgorCis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0i
Ym9yZGVyLXN0eWxlOnNvbGlkO2ZvbnQtc2l6ZToxMDBweDsiPjwvZGl2PgorCis8L2Rpdj4KKwor
PHNjcmlwdD4KKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7
CisKKyAgICB0ZXN0LnN0eWxlLmJvcmRlcldpZHRoID0gIjEyMGVtIDExMGVtIDEwMGVtIDkwLjFl
bSI7CisgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0
LCBudWxsKTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItd2lkdGgnKSIsICInMTIwMDBweCAxMTAwMHB4IDEwMDAwcHggOTAxMHB4JyIpOworICAg
IHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci10b3At
d2lkdGgnKS5jc3NUZXh0IiwiJzEyMDAwcHgnIik7CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLXJpZ2h0LXdpZHRoJykuY3NzVGV4dCIsIicx
MTAwMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKS5jc3NUZXh0IiwiJzEwMDAwcHgnIik7CisgICAgc2hv
dWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLWxlZnQtd2lk
dGgnKS5jc3NUZXh0IiwiJzkwMTBweCciKTsKKyAgICAvLyBjbGVhbiB1cCBhZnRlciBvdXJzZWx2
ZXMKKyAgICB2YXIgdGVzdHNfY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RzX2NvbnRhaW5lciIpOworICAgIHRlc3RzX2NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHRlc3RzX2NvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122486</attachid>
            <date>2012-01-13 12:57:05 -0800</date>
            <delta_ts>2012-01-18 02:31:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-18294-20120113175656.patch</filename>
            <type>text/plain</type>
            <size>23193</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMyYmEwNjAzODFmOWZh
YzUxMTMwNmI5ZDQ4Mjk4YWMwYjI4NmRhZS4uNmYwM2QxMmFmMmY1MWRkNTZiNmQ4NjM4MWFlZWUw
MzhlNTg4OTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTEzICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFu
Z2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCb3JkZXJWYWx1
ZSBzdG9yZXMgaXRzIHdpZHRoIG9uIGEgMTIgYml0cyB1bnNpZ25lZC4gVGhpcyBwYXRjaCAKKyAg
ICAgICAgaW5jcmVhc2UgaXQgdG8gMjcuIFRoZSBwYXRjaCBhbHNvIG1vZGlmeSB0aGUgd2F5IHRv
IHNldCB0aGUgCisgICAgICAgIHdpZHRoIG9yIHRvIGdldCBpdCwgd2Ugbm93IHVzZSBhIHVuc2ln
bmVkIHJhdGhlciB0aGFuIGEgc2hvcnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYm9yZGVy
LXdpZHRoLWxhcmdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
Qm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyTGVmdFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyVG9wV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6
OndpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJMZWZ0V2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclRvcFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJCb3R0b21XaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6c2V0Qm9yZGVyTGVm
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpzZXRCb3Jk
ZXJSaWdodFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpz
ZXRCb3JkZXJUb3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxk
czo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVC
aXRmaWVsZHM6OmluaXRpYWxCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZUJpdGZpZWxkczo6aW5pdGlhbE91dGxpbmVXaWR0aCk6CisKIDIwMTItMDEtMTMgIFJhcGhh
ZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW3NvdXBd
IEluaXRpYWxpemUgbV9zb3VwRmxhZ3MgaW4gYWxsIFJlc291cmNlUmVzcG9uc2UgY29uc3RydWN0
b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggYTQzOWNi
ZjUyYWY5NDc4MzI0ZTJhMjc5OWY4YTdmMjljNDQ3MGZlNi4uYjc2ZjAyM2RmMWQ2YTZiZDJmZTRi
OTdmZWU2OGI3YjdmMTIxMzJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCkBAIC0zNDMsNiArMzQzLDExIEBAIHRlbXBsYXRlPD4gaW50IENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqCiAgICAg
cmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9NSU4+
KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0
aW5nRm9udFNpemUpKTsKIH0KIAordGVtcGxhdGU8PiB1bnNpZ25lZCBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQoreworICAgIHJl
dHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248dW5zaWduZWQsIFVJTlRfTUFYLCAwPihj
b21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGlu
Z0ZvbnRTaXplKSk7Cit9CisKIHRlbXBsYXRlPD4gTGVuZ3RoIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
ZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCiB7CiAgICAgLy8gRklY
TUU6IExlbmd0aC5oIG5vIGxvbmdlciBleHBlY3RzIDI4IGJpdCBpbnRlZ2Vycywgc28gdGhlc2Ug
Ym91bmRzIHNob3VsZCBiZSBJTlRfTUFYIGFuZCBJTlRfTUlOCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IGU0ZDhlZWM5NzJiNGQ2YzMzZGE2Y2I3
NzcyZTgzYjA4OWRiYmQyMWQuLjZhZDhjZGY4ZDk3M2RjZjBlY2MxYjc2NDk5YmUwMjA1ODlmMDU3
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBA
IC0xNzAyLDEyICsxNzAyLDEyIEBAIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBs
eVByb3BlcnR5KCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6
OmJvcmRlckJvdHRvbVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
Qm90dG9tU3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5
bGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVu
ZGVyU3R5bGU6OmJvcmRlckxlZnRTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNl
dEJvcmRlckxlZnRTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3Jk
ZXJTdHlsZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWdu
ZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQXBwbHlQcm9wZXJ0eUNv
bXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0
aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRl
clN0eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21X
aWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBU
aGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3Ro
PHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0
eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRo
LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBBcHBseVByb3Bl
cnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpvdXRsaW5lV2lk
dGgsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5k
ZXJTdHlsZTo6Y29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblJ1bGVXaWR0
aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5z
aWduZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNh
YmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1
dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBB
cHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJC
b3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVu
ZGVyU3R5bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lk
dGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhp
Y2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNp
Z25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lV2lkdGgsIE5vcm1hbERp
c2FibGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIEFwcGx5UHJvcGVy
dHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVX
aWR0aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbE91dGxpbmVXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVh
dGVIYW5kbGVyKCkpOwogCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
VG9wLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAzNjM5
YWY4YjUyY2VmMDAxZjBjYmJiM2I1NmVjYWZkYjczZDQ5OWVhLi4yY2FkZTM0ZDA4NTc3OTAwNThj
NzU1OTFkODE1YzUzY2RjZjYxMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtODQsNiArODQsMTEgQEAgc3RhdGljIGlubGluZSBp
bnQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBpbnQgZnJvbSwgaW50IHRvLCBkb3Vi
bGUgcHJvZ3IKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKIH0KIAorc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgcmV0dXJuIGJs
ZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7Cit9CisKIHN0YXRpYyBpbmxpbmUgZG91YmxlIGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgZG91YmxlIGZyb20sIGRvdWJsZSB0bywgZG91Ymxl
IHByb2dyZXNzKQogeyAgCiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CkBA
IC05NTAsMTAgKzk1NSwxMCBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFw
KCkKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVy
PExlbmd0aD4oQ1NTUHJvcGVydHlNaW5IZWlnaHQsICZSZW5kZXJTdHlsZTo6bWluSGVpZ2h0LCAm
UmVuZGVyU3R5bGU6OnNldE1pbkhlaWdodCkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+
YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1heEhlaWdodCwg
JlJlbmRlclN0eWxlOjptYXhIZWlnaHQsICZSZW5kZXJTdHlsZTo6c2V0TWF4SGVpZ2h0KSk7CiAK
LSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVu
c2lnbmVkIHNob3J0PihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpi
b3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoKSk7Ci0gICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25l
ZCBzaG9ydD4oQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRl
clJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCkpOwotICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQg
c2hvcnQ+KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9w
V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgpKTsKLSAgICAgICAgZ1Byb3Bl
cnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkIHNob3J0PihD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdp
ZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoKSk7CisgICAgICAgIGdQcm9w
ZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4oQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFdpZHRoLCAmUmVu
ZGVyU3R5bGU6OnNldEJvcmRlckxlZnRXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6
OnNldEJvcmRlclJpZ2h0V2lkdGgpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRv
cFdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5
V3JhcHBlcjx1bnNpZ25lZD4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0
aCkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBw
ZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsICZSZW5kZXJTdHlsZTo6bWFyZ2luTGVm
dCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5MZWZ0KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsICZSZW5kZXJTdHlsZTo6bWFyZ2luUmlnaHQsICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2lu
UmlnaHQpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlX
cmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5Ub3AsICZSZW5kZXJTdHlsZTo6bWFyZ2lu
VG9wLCAmUmVuZGVyU3R5bGU6OnNldE1hcmdpblRvcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGllcy5oCmluZGV4IDEyOGYy
ZWQwZWYwZWViYWU3NjJmNGMzNjczYzI0ZWIwY2UwZTQ2MjUuLmIzZjI4M2NhMjAxOGIxNjgxODZh
ZTg2MDVjYzUzN2JhZjE5ZjEwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDExIEBAIGlu
bGluZSBpbnQgYmxlbmQoaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyZXNzKQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChzdGF0aWNfY2FzdDxkb3VibGU+KGZyb20pICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPih0byAtIGZyb20pICogcHJvZ3Jlc3MpKTsKIH0KIAoraW5saW5l
IHVuc2lnbmVkIGJsZW5kKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGRv
dWJsZT4oZnJvbSkgKyBzdGF0aWNfY2FzdDxkb3VibGU+KHRvIC0gZnJvbSkgKiBwcm9ncmVzcykp
OworfQorCiBpbmxpbmUgZG91YmxlIGJsZW5kKGRvdWJsZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJs
ZSBwcm9ncmVzcykKIHsgIAogICAgIHJldHVybiBmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVz
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDI4YzU2MDRm
NmZmZjQ4M2MwN2E0MWYxNGUzNGQ5OTNhOTBhZGQ2ZWQuLjMzMDk1NWY1N2JmYTA5NGJmODAxZTE5
ZTIzMWRmODM4MTQ5MjIwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcApAQCAtMTExLDI2ICsxMTEsMjYgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWwKICAgICAg
ICAgICAgIC8vIEJvcmRlcgogICAgICAgICAgICAgTGVuZ3RoQm94IGJvcmRlckJveChzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSwgc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAgICAgICAgICBi
b3JkZXJCb3ggPSBtX3RoZW1lLT5jb250cm9sQm9yZGVyKHBhcnQsIHN0eWxlLT5mb250KCksIGJv
cmRlckJveCwgc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7Ci0gICAgICAgICAgICBpZiAoYm9yZGVy
Qm94LnRvcCgpLnZhbHVlKCkgIT0gc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpICE9
IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJvcmRlckJv
eC50b3AoKS52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyVG9w
V2lkdGgoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyVG9wKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSAhPSBzdHlsZS0+Ym9y
ZGVyUmlnaHRXaWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJvcmRlckJveC5yaWdodCgpLnZhbHVlKCkpICE9IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgoYm9yZGVyQm94LnJpZ2h0
KCkudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBz
dHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KSB7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJvcmRlckJveC5ib3R0
b20oKS52YWx1ZSgpKSAhPSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkgewogICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aChib3JkZXJCb3guYm90dG9tKCkudmFs
dWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpKQog
ICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgoYm9yZGVyQm94
LmJvdHRvbSgpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoYm9yZGVyQm94LmxlZnQoKS52YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJMZWZ0V2lk
dGgoKSkgeworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihib3JkZXJCb3gu
bGVmdCgpLnZhbHVlKCkpICE9IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSkgewogICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgoYm9yZGVyQm94LmxlZnQoKS52YWx1ZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoYm9yZGVyQm94LmxlZnQoKS52YWx1ZSgpKQogICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyTGVmdFdpZHRoKGJvcmRlckJveC5sZWZ0KCku
dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9y
ZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApp
bmRleCAyNmYwODlmMGI3NzBiOWZjMTc0OWIwYmI1YWRlODVkMmU1NDI4YmI1Li5lNjU2MjhhOTky
N2M4YmVjYjIyMzY4MGZhYTZmMmE4NWQ0NjU1MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTYwLDI4ICs2MCwyOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVy
TGVmdFdpZHRoKCkgY29uc3QKKyAgICB1bnNpZ25lZCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0ltYWdlKCkgJiYgKG1fbGVmdC5zdHlsZSgp
ID09IEJOT05FIHx8IG1fbGVmdC5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0
dXJuIDA7IAogICAgICAgICByZXR1cm4gbV9sZWZ0LndpZHRoKCk7CiAgICAgfQogICAgIAotICAg
IHVuc2lnbmVkIHNob3J0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJv
cmRlclJpZ2h0V2lkdGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0lt
YWdlKCkgJiYgKG1fcmlnaHQuc3R5bGUoKSA9PSBCTk9ORSB8fCBtX3JpZ2h0LnN0eWxlKCkgPT0g
QkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fcmlnaHQu
d2lkdGgoKTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyVG9wV2lkdGgo
KSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlclRvcFdpZHRoKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghbV9pbWFnZS5oYXNJbWFnZSgpICYmIChtX3RvcC5zdHlsZSgpID09IEJOT05FIHx8
IG1fdG9wLnN0eWxlKCkgPT0gQkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIG1fdG9wLndpZHRoKCk7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIHNob3J0
IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QKKyAgICB1bnNpZ25lZCBib3JkZXJCb3R0b21XaWR0
aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1hZ2UuaGFzSW1hZ2UoKSAmJiAobV9i
b3R0b20uc3R5bGUoKSA9PSBCTk9ORSB8fCBtX2JvdHRvbS5zdHlsZSgpID09IEJISURERU4pKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
b3JkZXJWYWx1ZS5oCmluZGV4IGQ5ZjE4YTAyY2MwMjdmMzk0YjFiZDk5NjczM2I0NTkyMTFhMDI3
MmYuLmQ5ZDQwNGI4NTMwOTg2ZDg2Y2I0ODgwZTg2MmQzZTQ5NGM0ODU1ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCkBAIC02NiwxMiArNjYsMTIg
QEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9yOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dpZHRoOyB9CisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9CiAgICAgRUJvcmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RUJvcmRlclN0eWxlPihtX3N0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ29sb3IgbV9j
b2xvcjsKLSAgICB1bnNpZ25lZCBtX3dpZHRoIDogMTI7CisgICAgdW5zaWduZWQgbV93aWR0aCA6
IDI3OwogICAgIHVuc2lnbmVkIG1fc3R5bGUgOiA0OyAvLyBFQm9yZGVyU3R5bGUKIAogICAgIC8v
IFRoaXMgaXMgb25seSB1c2VkIGJ5IE91dGxpbmVWYWx1ZSBidXQgbW92ZWQgaGVyZSB0byBrZWVw
IHRoZSBiaXRzIHBhY2tlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKaW5kZXggODhmOTUwYjY1OTA3MDkxMmYzMzkwNWRlMjFiN2ZjMmIzYmY4NDcyMS4u
M2ZlNmZkNzYzMTU2YmU0YTYzMjQ1MmMyM2E1OWY5YTQ0NjM1ZGVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU0NSwxNiArNTQ1LDE2IEBA
IHB1YmxpYzoKICAgICBMZW5ndGhTaXplIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9CiAgICAgYm9vbCBoYXNC
b3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJh
ZGl1cygpOyB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CisgICAgdW5zaWdu
ZWQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3Jk
ZXJMZWZ0V2lkdGgoKTsgfQogICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBi
b3JkZXJMZWZ0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
bGVmdCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlclJpZ2h0
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgo
KTsgfQorICAgIHVuc2lnbmVkIGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQogICAgIEVCb3JkZXJTdHlsZSBib3Jk
ZXJSaWdodFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpLnN0
eWxlKCk7IH0KICAgICBib29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAgICB1bnNp
Z25lZCBzaG9ydCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3Jk
ZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlclRvcFdpZHRoKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9CiAgICAgRUJv
cmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci50b3AoKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAg
ICB1bnNpZ25lZCBzaG9ydCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuYm9yZGVyQm90dG9tV2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlckJv
dHRvbVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJCb3R0b21X
aWR0aCgpOyB9CiAgICAgRUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBib3Jk
ZXJCb3R0b21Jc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5i
b3R0b20oKS5pc1RyYW5zcGFyZW50KCk7IH0KICAgICAKQEAgLTEwNDIsMTYgKzEwNDIsMTYgQEAg
cHVibGljOgogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJSZWN0LAogICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRoLCBMYXlv
dXRVbml0IGJvdHRvbVdpZHRoLCBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5pdCByaWdo
dFdpZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQg
c2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0K
KyAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0
eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9z
dHlsZSwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9jb2xvciwgdikgfQotICAgIHZvaWQg
c2V0Qm9yZGVyUmlnaHRXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lk
dGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRo
LCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpIH0KICAgICB2b2lkIHNl
dEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9y
ZGVyLm1fcmlnaHQubV9jb2xvciwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5z
aWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwg
dikgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyVG9w
U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1f
c3R5bGUsIHYpIH0KICAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX2NvbG9yLCB2KSB9Ci0gICAgdm9pZCBz
ZXRCb3JkZXJCb3R0b21XaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KSB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21X
aWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dp
ZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShFQm9yZGVyU3R5bGUgdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV9zdHlsZSwgdikgfQogICAgIHZv
aWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fYm90dG9tLm1fY29sb3IsIHYpIH0KIApAQCAtMTUxMSw3ICsxNTExLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVybiBDVVJT
T1JfQVVUTzsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBDb2xv
cjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHlsZUltYWdl
KCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQm9yZGVy
V2lkdGgoKSB7IHJldHVybiAzOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxCb3JkZXJX
aWR0aCgpIHsgcmV0dXJuIDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbE91
dGxpbmVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgaW50IGluaXRpYWxMZXR0ZXJX
b3JkU3BhY2luZygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaXpl
KCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNaW5TaXpl
KCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDljYWFlYzU3NzRmYTAzMmRm
Y2QzNWY2YjZiYTFjZTVhOTRjMmEyZTQuLmI2NjY2ZWYxODEyNTliNjZhZWU1ZjEzNTUyMzkyYzdi
MzQyY2ExNzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0xMyAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBTdHJhbmdlIFJlc3Vs
dCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQgaW4gZW0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB0ZXN0IGNvdmVycyB0
aGF0IHNldHRpbmcgYmlnIHZhbHVlcyB0byBib3JkZXItd2lkdGggd2lsbAorICAgICAgICByZXR1
cm4gY29ycmVjdCB2YWx1ZXMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFy
Z2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9ib3JkZXItd2lkdGgt
bGFyZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTMgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1hcmsgYSBmbGFreSB0ZXN0IGFz
IGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFy
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkNTc5YWQ3YjczMmFjYWNhMDBiN2UzNjdmMzFi
MTllNjVjY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVy
LXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0IGZvciBXZWJL
aXQgYnVnIDE4Mjk0IDogU3RyYW5nZSBSZXN1bHQgZm9yIGdldENvbXB1dGVkU3R5bGUgb24gYm9y
ZGVyV2lkdGggc2V0IGluIGVtCisKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCdib3JkZXItd2lkdGgnKSBpcyAnMTIwMDBweCAxMTAwMHB4IDEwMDAwcHggOTAxMHB4JworUEFT
UyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKS5j
c3NUZXh0IGlzICcxMjAwMHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLmNzc1RleHQgaXMgJzExMDAwcHgnCitQQVNTIGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLmNzc1Rl
eHQgaXMgJzEwMDAwcHgnCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgn
Ym9yZGVyLWxlZnQtd2lkdGgnKS5jc3NUZXh0IGlzICc5MDEwcHgnCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjJiZjMxYTBmZTU3NDVlZGQz
NjdiMzAxZGVkNmExNDVkZjc4NTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIFdlYktpdCBidWcgMTgyOTQg
OiBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQg
aW4gZW08L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBm
b3IgV2ViS2l0IGJ1ZyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTQiPjE4Mjk0PC9hPiA6IFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0
eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbTwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8ZGl2IGlkPSJ0ZXN0c19jb250YWluZXIiPgorCis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0i
Ym9yZGVyLXN0eWxlOnNvbGlkO2ZvbnQtc2l6ZToxMDBweDsiPjwvZGl2PgorCis8L2Rpdj4KKwor
PHNjcmlwdD4KKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7
CisKKyAgICB0ZXN0LnN0eWxlLmJvcmRlcldpZHRoID0gIjEyMGVtIDExMGVtIDEwMGVtIDkwLjFl
bSI7CisgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0
LCBudWxsKTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdi
b3JkZXItd2lkdGgnKSIsICInMTIwMDBweCAxMTAwMHB4IDEwMDAwcHggOTAxMHB4JyIpOworICAg
IHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci10b3At
d2lkdGgnKS5jc3NUZXh0IiwiJzEyMDAwcHgnIik7CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLXJpZ2h0LXdpZHRoJykuY3NzVGV4dCIsIicx
MTAwMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFs
dWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKS5jc3NUZXh0IiwiJzEwMDAwcHgnIik7CisgICAgc2hv
dWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLWxlZnQtd2lk
dGgnKS5jc3NUZXh0IiwiJzkwMTBweCciKTsKKyAgICAvLyBjbGVhbiB1cCBhZnRlciBvdXJzZWx2
ZXMKKyAgICB2YXIgdGVzdHNfY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RzX2NvbnRhaW5lciIpOworICAgIHRlc3RzX2NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHRlc3RzX2NvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122893</attachid>
            <date>2012-01-18 02:31:31 -0800</date>
            <delta_ts>2012-01-18 13:27:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-18294-20120118073122.patch</filename>
            <type>text/plain</type>
            <size>23923</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNiYmQ5NTIzZTYxMTI0
YjVkYTI1ZWI4MTRkNzQ0ODgzMmM2MGRhMS4uNmRjOTQ1YjBjYTMwMzc1NmI4OWZiM2NmMTM5YTNk
NmFmM2U1MTRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAxLTE3ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFu
Z2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCb3JkZXJWYWx1
ZSBzdG9yZXMgaXRzIHdpZHRoIG9uIGEgMTIgYml0cyB1bnNpZ25lZC4gVGhpcyBwYXRjaCAKKyAg
ICAgICAgaW5jcmVhc2UgaXQgdG8gMjcuIFRoZSBwYXRjaCBhbHNvIG1vZGlmeSB0aGUgd2F5IHRv
IHNldCB0aGUgCisgICAgICAgIHdpZHRoIG9yIHRvIGdldCBpdCwgd2Ugbm93IHVzZSBhIHVuc2ln
bmVkIHJhdGhlciB0aGFuIGEgc2hvcnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYm9yZGVy
LXdpZHRoLWxhcmdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eSk6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
Qm9yZGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyTGVmdFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyVG9wV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6
OndpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJMZWZ0V2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclJpZ2h0V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmJvcmRlclRvcFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJCb3R0b21XaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6c2V0Qm9yZGVyTGVm
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpzZXRCb3Jk
ZXJSaWdodFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpz
ZXRCb3JkZXJUb3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxk
czo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVC
aXRmaWVsZHM6OmluaXRpYWxCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZUJpdGZpZWxkczo6aW5pdGlhbE91dGxpbmVXaWR0aCk6CisKIDIwMTItMDEtMTggIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNb3ZlIFNoYWRvd0Nv
bnRlbnRFbGVtZW50IGZyb20gZG9tLyB0byBodG1sLyBhbmQgbWFrZSBTaGFkb3dDb250ZW50RWxl
bWVudCBzdWJjbGFzcyBvZiBIVE1MRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCmluZGV4IGQxZWM4ZjE5MDQzZTdlNGJlNTIwNzViNGJiY2NjMDYyNzU1NjQ3
YmMuLmE5NzFiOWExY2Y3Yjc2ZDAyMzg2NTE5YjY1NjViMjc2YWY1NzM5ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMzYwLDYgKzM2MCwxMSBAQCB0ZW1w
bGF0ZTw+IGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSog
c3R5bGUsIFJlbmRlclN0eWxlKgogICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNp
b248aW50LCBJTlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290
U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKK3RlbXBsYXRlPD4g
dW5zaWduZWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21w
dXRpbmdGb250U2l6ZSkKK3sKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9u
PHVuc2lnbmVkLCBVSU5UX01BWCwgMD4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0
eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkpOworfQorCiB0ZW1wbGF0ZTw+IExl
bmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUs
IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGlu
Z0ZvbnRTaXplKQogewogICAgIC8vIEZJWE1FOiBMZW5ndGguaCBubyBsb25nZXIgZXhwZWN0cyAy
OCBiaXQgaW50ZWdlcnMsIHNvIHRoZXNlIGJvdW5kcyBzaG91bGQgYmUgSU5UX01BWCBhbmQgSU5U
X01JTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAppbmRl
eCAyODIwZjU1YThiMDYyZWYzZmIzNzI4MjZkMzQwNDBiYmM3MDc4MWE3Li40MDQyYTJlNjllNjMy
OTJkNTAxNmQ4MTE2NmQ3ZWExMzAyNjRkZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMTY5OCwxMiArMTY5OCwxMiBAQCBDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVC
b3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21TdHlsZSwgRUJvcmRlclN0eWxl
LCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0U3R5bGUsIEVCb3Jk
ZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0U3R5bGUsIEVCb3JkZXJTdHlsZSwg
JlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogCi0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIEFwcGx5UHJv
cGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmJvcmRlclRv
cFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVu
ZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRX
aWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBU
aGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5n
dGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRl
cldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBB
cHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpi
b3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJs
ZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eU91dGxpbmVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQs
ICZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0
aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVu
Z3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVXaWR0aCwgJlJlbmRl
clN0eWxlOjpzZXRDb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldp
ZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIEFwcGx5
UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdp
ZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6
OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NF
bmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWdu
ZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBBcHBseVByb3BlcnR5Q29t
cHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0
aWFsT3V0bGluZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZVdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwg
JlJlbmRlclN0eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVs
ZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lV2lkdGgsIE5vcm1hbERpc2FibGVk
LCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKIAogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcCwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBw
cmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQXBwbHlQcm9wZXJ0
eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoPjo6
Y3JlYXRlSGFuZGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKaW5kZXggMzYzOWFmOGI1MmNlZjAwMWYwY2JiYjNiNTZlY2FmZGI3M2Q0
OTllYS4uMmNhZGUzNGQwODU3NzkwMDU4Yzc1NTkxZDgxNWM1M2NkY2Y2MTFkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTg0LDYg
Kzg0LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyCiAgICAgcmV0dXJuIGJsZW5kKGZyb20s
IHRvLCBwcm9ncmVzcyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZG91YmxlIHBy
b2dyZXNzKQoreworICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOworfQorCiBz
dGF0aWMgaW5saW5lIGRvdWJsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGRvdWJs
ZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsgIAogICAgIHJldHVybiBibGVu
ZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwpAQCAtOTUwLDEwICs5NTUsMTAgQEAgdm9pZCBBbmltYXRp
b25CYXNlOjplbnN1cmVQcm9wZXJ0eU1hcCgpCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWluSGVpZ2h0LCAm
UmVuZGVyU3R5bGU6Om1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNaW5IZWlnaHQpKTsKICAg
ICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0
aD4oQ1NTUHJvcGVydHlNYXhIZWlnaHQsICZSZW5kZXJTdHlsZTo6bWF4SGVpZ2h0LCAmUmVuZGVy
U3R5bGU6OnNldE1heEhlaWdodCkpOwogCi0gICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBl
bmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBzaG9ydD4oQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNl
dEJvcmRlckxlZnRXaWR0aCkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hvcnQ+KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJv
cmRlclJpZ2h0V2lkdGgpKTsKLSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcg
UHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkIHNob3J0PihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRv
cFdpZHRoKSk7Ci0gICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5
V3JhcHBlcjx1bnNpZ25lZCBzaG9ydD4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgJlJl
bmRlclN0eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0
b21XaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0
eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5
bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgpKTsK
KyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVu
c2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVy
UmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoKSk7CisgICAgICAg
IGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4o
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwg
JlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFw
cGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJT
dHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMt
PmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
LCAmUmVuZGVyU3R5bGU6Om1hcmdpbkxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2luTGVmdCkp
OwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8
TGVuZ3RoPihDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAmUmVuZGVyU3R5bGU6Om1hcmdpblJpZ2h0
LCAmUmVuZGVyU3R5bGU6OnNldE1hcmdpblJpZ2h0KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCAmUmVuZGVyU3R5bGU6Om1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5Ub3Ap
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b25VdGlsaXRpZXMuaAppbmRleCAxMjhmMmVkMGVmMGVlYmFlNzYyZjRjMzY3M2MyNGViMGNlMGU0
NjI1Li5iM2YyODNjYTIwMThiMTY4MTg2YWU4NjA1Y2M1MzdiYWYxOWYxMDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGll
cy5oCkBAIC0zNSw2ICszNSwxMSBAQCBpbmxpbmUgaW50IGJsZW5kKGludCBmcm9tLCBpbnQgdG8s
IGRvdWJsZSBwcm9ncmVzcykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihscm91bmQoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihmcm9tKSArIHN0YXRpY19jYXN0PGRvdWJsZT4odG8gLSBmcm9tKSAq
IHByb2dyZXNzKSk7CiB9CiAKK2lubGluZSB1bnNpZ25lZCBibGVuZCh1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KGxyb3VuZChzdGF0aWNfY2FzdDxkb3VibGU+KGZyb20pICsgc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih0byAtIGZyb20pICogcHJvZ3Jlc3MpKTsKK30KKwogaW5saW5lIGRvdWJsZSBibGVuZChkb3Vi
bGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7ICAKICAgICByZXR1cm4gZnJv
bSArICh0byAtIGZyb20pICogcHJvZ3Jlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAppbmRleCAyOGM1NjA0ZjZmZmY0ODNjMDdhNDFmMTRlMzRkOTkzYTkwYWRkNmVk
Li42ZWEwMjVjNWRlNzk4MWRlMDZjYWU1N2IzMDk1Yjc2YjUyYTQ3OWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTExMSwyNiArMTExLDI2IEBAIHZvaWQg
UmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgICAgICAgICAvLyBCb3JkZXIKICAgICAgICAgICAgIExl
bmd0aEJveCBib3JkZXJCb3goc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkpOwogICAgICAgICAgICAgYm9yZGVyQm94ID0gbV90aGVtZS0+Y29udHJvbEJvcmRl
cihwYXJ0LCBzdHlsZS0+Zm9udCgpLCBib3JkZXJCb3gsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkp
OwotICAgICAgICAgICAgaWYgKGJvcmRlckJveC50b3AoKS52YWx1ZSgpICE9IHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkg
IT0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChib3JkZXJCb3gudG9wKCkudmFsdWUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+cmVzZXRCb3JkZXJU
b3AoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChib3JkZXJCb3gucmlnaHQoKS52
YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmIChi
b3JkZXJCb3gucmlnaHQoKS52YWx1ZSgpICE9IHN0YXRpY19jYXN0PGludD4oc3R5bGUtPmJvcmRl
clJpZ2h0V2lkdGgoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnJpZ2h0KCku
dmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgo
Ym9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBzdHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpICE9IHN0eWxlLT5ib3Jk
ZXJCb3R0b21XaWR0aCgpKSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyQm94LmJvdHRvbSgpLnZh
bHVlKCkgIT0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkpIHsK
ICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgoYm9yZGVyQm94LmJv
dHRvbSgpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChib3JkZXJCb3guYm90dG9tKCku
dmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRo
KGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5yZXNldEJvcmRlckJvdHRvbSgpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGJvcmRlckJveC5sZWZ0KCkudmFsdWUoKSAhPSBzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmIChib3JkZXJCb3gubGVmdCgpLnZhbHVl
KCkgIT0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpKSB7CiAgICAg
ICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aChib3JkZXJCb3gubGVmdCgpLnZh
bHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChib3JkZXJCb3gubGVmdCgpLnZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgoYm9yZGVyQm94Lmxl
ZnQoKS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Cb3JkZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0
YS5oCmluZGV4IDI2ZjA4OWYwYjc3MGI5ZmMxNzQ5YjBiYjVhZGU4NWQyZTU0MjhiYjUuLmU2NTYy
OGE5OTI3YzhiZWNiMjIzNjgwZmFhNmYyYTg1ZDQ2NTUwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApAQCAtNjAsMjggKzYwLDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBzaG9ydCBi
b3JkZXJMZWZ0V2lkdGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlckxlZnRXaWR0aCgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1hZ2UuaGFzSW1hZ2UoKSAmJiAobV9sZWZ0LnN0
eWxlKCkgPT0gQk5PTkUgfHwgbV9sZWZ0LnN0eWxlKCkgPT0gQkhJRERFTikpCiAgICAgICAgICAg
ICByZXR1cm4gMDsgCiAgICAgICAgIHJldHVybiBtX2xlZnQud2lkdGgoKTsKICAgICB9CiAgICAg
Ci0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0CisgICAgdW5zaWdu
ZWQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1hZ2Uu
aGFzSW1hZ2UoKSAmJiAobV9yaWdodC5zdHlsZSgpID09IEJOT05FIHx8IG1fcmlnaHQuc3R5bGUo
KSA9PSBCSElEREVOKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9y
aWdodC53aWR0aCgpOwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJUb3BX
aWR0aCgpIGNvbnN0CisgICAgdW5zaWduZWQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0ltYWdlKCkgJiYgKG1fdG9wLnN0eWxlKCkgPT0gQk5P
TkUgfHwgbV90b3Auc3R5bGUoKSA9PSBCSElEREVOKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICByZXR1cm4gbV90b3Aud2lkdGgoKTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQg
c2hvcnQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlckJvdHRv
bVdpZHRoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZS5oYXNJbWFnZSgpICYm
IChtX2JvdHRvbS5zdHlsZSgpID09IEJOT05FIHx8IG1fYm90dG9tLnN0eWxlKCkgPT0gQkhJRERF
TikpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0JvcmRlclZhbHVlLmgKaW5kZXggZDlmMThhMDJjYzAyN2YzOTRiMWJkOTk2NzMzYjQ1OTIx
MWEwMjcyZi4uZDlkNDA0Yjg1MzA5ODZkODZjYjQ4ODBlODYyZDNlNDk0YzQ4NTVlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKQEAgLTY2LDEyICs2
NiwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KLSAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2lkdGg7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUpOyB9CiAKIHByb3RlY3RlZDoKICAgICBDb2xv
ciBtX2NvbG9yOwotICAgIHVuc2lnbmVkIG1fd2lkdGggOiAxMjsKKyAgICB1bnNpZ25lZCBtX3dp
ZHRoIDogMjc7CiAgICAgdW5zaWduZWQgbV9zdHlsZSA6IDQ7IC8vIEVCb3JkZXJTdHlsZQogCiAg
ICAgLy8gVGhpcyBpcyBvbmx5IHVzZWQgYnkgT3V0bGluZVZhbHVlIGJ1dCBtb3ZlZCBoZXJlIHRv
IGtlZXAgdGhlIGJpdHMgcGFja2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMDAwMzI3NDBjZjE3ODkzNzVmOTE5ODg2MTY1Zjk1MDAz
NGE2ZjFhOC4uMDhiZmJmOTBmZTVhNTJlMGUwZjZjZGNhN2E4NDgxOThiYjRkZTRmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC00NCw2
ICs0NCwxMyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0cnVjdCBTYW1lU2l6ZUFzQm9yZGVyVmFsdWUgeworICAgIENvbG9yIG1fY29sb3I7CisgICAg
dW5zaWduZWQgbV93aWR0aDsKK307CisKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihCb3JkZXJWYWx1
ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCb3JkZXJWYWx1ZSksIEJvcmRlclZhbHVlX3Nob3VsZF9u
b3RfZ3Jvdyk7CisKIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxTYW1lU2l6ZUFzUmVuZGVyU3R5bGU+IHsKICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkczsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA1
MmQyODg3ODA5MjBjNWNiNWViNTVkZGQyNGQ3ZGI1NjU2NDJiODNlLi5hYjgzNmU4MjU1Y2NiZTNi
MzE0MDkwMDNjM2RmY2M1MDU1ZDI5YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTQ1LDE2ICs1NDUsMTYgQEAgcHVibGljOgogICAgIExl
bmd0aFNpemUgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KIAotICAg
IHVuc2lnbmVkIHNob3J0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0KKyAgICB1bnNpZ25lZCBib3JkZXJMZWZ0V2lk
dGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9
CiAgICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7IH0KICAgICBib29sIGJvcmRlckxlZnRJc1RyYW5z
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuaXNUcmFuc3Bh
cmVudCgpOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9CisgICAgdW5zaWdu
ZWQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9y
ZGVyUmlnaHRXaWR0aCgpOyB9CiAgICAgRUJvcmRlclN0eWxlIGJvcmRlclJpZ2h0U3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCkuc3R5bGUoKTsgfQogICAgIGJv
b2wgYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5yaWdodCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRl
clRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0
aCgpOyB9CisgICAgdW5zaWduZWQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLmJvcmRlclRvcFdpZHRoKCk7IH0KICAgICBFQm9yZGVyU3R5bGUgYm9yZGVy
VG9wU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLnN0eWxlKCk7
IH0KICAgICBib29sIGJvcmRlclRvcElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLnRvcCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0
IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3Jk
ZXJCb3R0b21XaWR0aCgpOyB9CisgICAgdW5zaWduZWQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KICAgICBF
Qm9yZGVyU3R5bGUgYm9yZGVyQm90dG9tU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmJvdHRvbSgpLnN0eWxlKCk7IH0KICAgICBib29sIGJvcmRlckJvdHRvbUlzVHJhbnNw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpLmlzVHJhbnNw
YXJlbnQoKTsgfQogICAgIApAQCAtMTA0MywxNiArMTA0MywxNiBAQCBwdWJsaWM6CiAgICAgUm91
bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRl
clJlY3QsCiAgICAgICAgIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lk
dGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9y
ZGVyTGVmdFdpZHRoKHVuc2lnbmVkIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVm
dC5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUoRUJvcmRlclN0eWxl
IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3N0eWxlLCB2KSB9CiAgICAg
dm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fbGVmdC5tX2NvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodFdp
ZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQu
bV93aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRXaWR0aCh1bnNpZ25lZCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpIH0KICAgICB2b2lk
IHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
Ym9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX2Nv
bG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX3dpZHRoLCB2KSB9CisgICAgdm9pZCBz
ZXRCb3JkZXJUb3BXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5t
X3RvcC5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5
bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV9zdHlsZSwgdikgfQogICAg
IHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fdG9wLm1fY29sb3IsIHYpIH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVdp
ZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9t
Lm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVdpZHRoKHVuc2lnbmVkIHYp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLm1fd2lkdGgsIHYpIH0KICAgICB2
b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJCb3R0
b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0
b20ubV9jb2xvciwgdikgfQogCkBAIC0xNTEzLDcgKzE1MTMsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEVDdXJzb3IgaW5pdGlhbEN1cnNvcigpIHsgcmV0dXJuIENVUlNPUl9BVVRPOyB9CiAgICAg
c3RhdGljIENvbG9yIGluaXRpYWxDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQogICAg
IHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSB7IHJldHVybiAwOyB9
Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxCb3JkZXJXaWR0aCgpIHsgcmV0dXJu
IDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaW5pdGlhbEJvcmRlcldpZHRoKCkgeyByZXR1cm4g
MzsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsT3V0bGluZVdpZHRoKCkgeyBy
ZXR1cm4gMzsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbExldHRlcldvcmRTcGFjaW5nKCkgeyBy
ZXR1cm4gMDsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNpemUoKSB7IHJldHVybiBMZW5n
dGgoKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE1pblNpemUoKSB7IHJldHVybiBMZW5n
dGgoMCwgRml4ZWQpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODY3NmQ2N2QxMzIzNWU4NDIwOTYxNjU0OTBjNDYxN2Zh
YzA0OTk1ZS4uN2Q0MzNjOGViZmY1MDVkZjE4MzVjZjVjMGRlZjg4MTZjMzY3ZDQ0MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTE3ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21wdXRl
ZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHRlc3QgY292ZXJzIHRoYXQgc2V0dGluZyBiaWcg
dmFsdWVzIHRvIGJvcmRlci13aWR0aCB3aWxsCisgICAgICAgIHJldHVybiBjb3JyZWN0IHZhbHVl
cy4KKworICAgICAgICAqIGZhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wMS0xOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgog
CiAgICAgICAgIE1vdmUgU2hhZG93Q29udGVudEVsZW1lbnQgZnJvbSBkb20vIHRvIGh0bWwvIGFu
ZCBtYWtlIFNoYWRvd0NvbnRlbnRFbGVtZW50IHN1YmNsYXNzIG9mIEhUTUxFbGVtZW50LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGU0ZDU3OWFkN2I3MzJhY2FjYTAwYjdlMzY3ZjMxYjE5ZTY1Y2NiNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJn
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCBmb3IgV2ViS2l0IGJ1ZyAxODI5
NCA6IFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNl
dCBpbiBlbQorCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXdp
ZHRoJykgaXMgJzEyMDAwcHggMTEwMDBweCAxMDAwMHB4IDkwMTBweCcKK1BBU1MgY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXItdG9wLXdpZHRoJykuY3NzVGV4dCBpcyAn
MTIwMDBweCcKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXIt
cmlnaHQtd2lkdGgnKS5jc3NUZXh0IGlzICcxMTAwMHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKS5jc3NUZXh0IGlzICcxMDAw
MHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1sZWZ0
LXdpZHRoJykuY3NzVGV4dCBpcyAnOTAxMHB4JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2JvcmRlci13aWR0aC1sYXJnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdp
ZHRoLWxhcmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIyYmYzMWEwZmU1NzQ1ZWRkMzY3YjMwMWRlZDZh
MTQ1ZGY3ODU5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRl
ci13aWR0aC1sYXJnZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBXZWJLaXQgYnVnIDE4Mjk0IDogU3RyYW5nZSBS
ZXN1bHQgZm9yIGdldENvbXB1dGVkU3R5bGUgb24gYm9yZGVyV2lkdGggc2V0IGluIGVtPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPlRlc3QgZm9yIFdlYktpdCBi
dWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
Ij4xODI5NDwvYT4gOiBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3Jk
ZXJXaWR0aCBzZXQgaW4gZW08L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBp
ZD0idGVzdHNfY29udGFpbmVyIj4KKworPGRpdiBpZD0idGVzdCIgc3R5bGU9ImJvcmRlci1zdHls
ZTpzb2xpZDtmb250LXNpemU6MTAwcHg7Ij48L2Rpdj4KKworPC9kaXY+CisKKzxzY3JpcHQ+Cisg
ICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCisgICAgdGVz
dC5zdHlsZS5ib3JkZXJXaWR0aCA9ICIxMjBlbSAxMTBlbSAxMDBlbSA5MC4xZW0iOworICAgIHZh
ciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdCwgbnVsbCk7Cisg
ICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXdpZHRo
JykiLCAiJzEyMDAwcHggMTEwMDBweCAxMDAwMHB4IDkwMTBweCciKTsKKyAgICBzaG91bGRCZSgi
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXItdG9wLXdpZHRoJykuY3Nz
VGV4dCIsIicxMjAwMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLmNzc1RleHQiLCInMTEwMDBweCciKTsK
KyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXIt
Ym90dG9tLXdpZHRoJykuY3NzVGV4dCIsIicxMDAwMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJykuY3NzVGV4
dCIsIic5MDEwcHgnIik7CisgICAgLy8gY2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgdmFy
IHRlc3RzX2NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0c19jb250YWlu
ZXIiKTsKKyAgICB0ZXN0c19jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXN0c19j
b250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122980</attachid>
            <date>2012-01-18 13:27:59 -0800</date>
            <delta_ts>2012-01-19 03:40:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-18294-20120118182749.patch</filename>
            <type>text/plain</type>
            <size>24178</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNiYmQ5NTIzZTYxMTI0
YjVkYTI1ZWI4MTRkNzQ0ODgzMmM2MGRhMS4uYmI1ZjVhNGNkMjU0MDUxZmM0OWRkNDY2ZTA4NzRj
ODJhMDlmZmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTE4ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFu
Z2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEJvcmRlclZhbHVlIHN0
b3JlcyBpdHMgd2lkdGggb24gYSAxMiBiaXRzIHVuc2lnbmVkLiBUaGlzIHBhdGNoIAorICAgICAg
ICBpbmNyZWFzZSBpdCB0byAyNy4gVGhlIHBhdGNoIGFsc28gbW9kaWZ5IHRoZSB3YXkgdG8gc2V0
IHRoZSAKKyAgICAgICAgd2lkdGggb3IgdG8gZ2V0IGl0LCB3ZSBub3cgdXNlIGEgdW5zaWduZWQg
cmF0aGVyIHRoYW4gYSBzaG9ydC4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9ib3JkZXItd2lk
dGgtbGFyZ2UuaHRtbAorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5k
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1h
cCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpC
b3JkZXJEYXRhOjpib3JkZXJMZWZ0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0
YTo6Ym9yZGVyUmlnaHRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpib3Jk
ZXJUb3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpib3JkZXJCb3R0b21X
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6d2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6Ym9yZGVyTGVmdFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJSaWdo
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJU
b3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6Ym9yZGVy
Qm90dG9tV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNl
dEJvcmRlckxlZnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxk
czo6c2V0Qm9yZGVyUmlnaHRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJp
dGZpZWxkczo6c2V0Qm9yZGVyVG9wV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGVCaXRmaWVsZHM6OnNldEJvcmRlckJvdHRvbVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlQml0ZmllbGRzOjppbml0aWFsQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmluaXRpYWxDb2x1bW5SdWxlV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmluaXRpYWxPdXRsaW5lV2lkdGgpOgor
CiAyMDEyLTAxLTE4ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgTW92ZSBTaGFkb3dDb250ZW50RWxlbWVudCBmcm9tIGRvbS8gdG8gaHRtbC8gYW5kIG1h
a2UgU2hhZG93Q29udGVudEVsZW1lbnQgc3ViY2xhc3Mgb2YgSFRNTEVsZW1lbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBkMWVjOGYxOTA0M2U3ZTRiZTUy
MDc1YjRiYmNjYzA2Mjc1NTY0N2JjLi5hOTcxYjlhMWNmN2I3NmQwMjM4NjUxOWI2NTY1YjI3NmFm
NTczOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM2
MCw2ICszNjAsMTEgQEAgdGVtcGxhdGU8PiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSoKICAgICByZXR1cm4gcm91bmRG
b3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwgSU5UX01JTj4oY29tcHV0ZUxlbmd0
aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkp
OwogfQogCit0ZW1wbGF0ZTw+IHVuc2lnbmVkIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCit7CisgICAgcmV0dXJuIHJvdW5kRm9y
SW1wcmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZCwgVUlOVF9NQVgsIDA+KGNvbXB1dGVMZW5ndGhE
b3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsK
K30KKwogdGVtcGxhdGU8PiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgo
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlw
bGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKICAgICAvLyBGSVhNRTogTGVuZ3RoLmgg
bm8gbG9uZ2VyIGV4cGVjdHMgMjggYml0IGludGVnZXJzLCBzbyB0aGVzZSBib3VuZHMgc2hvdWxk
IGJlIElOVF9NQVggYW5kIElOVF9NSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHAKaW5kZXggMjgyMGY1NWE4YjA2MmVmM2ZiMzcyODI2ZDM0MDQwYmJjNzA3
ODFhNy4uODQ5MmFhYjljNzRlYzgwMzQyODRhZDZlYTJkZmU4Y2RjMmNiNWE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTE2OTgsMTIgKzE2
OTgsMTIgQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKQog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9t
U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21TdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyTGVmdFN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFN0
eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKIAotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJl
bmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0
aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1
bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRo
LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEFwcGx5
UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJs
ZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hv
cnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2Fi
bGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVu
Z3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0
eWxlOjpzZXRPdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBO
b3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBBcHBs
eVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpjb2x1
bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRl
clN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCwg
JlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25l
c3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNp
Z25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJv
cmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEFwcGx5UHJvcGVydHlD
b21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdpZHRoLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlP
dXRsaW5lV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAm
UmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lV2lkdGgs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNr
bmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5n
dGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZVdpZHRoLCAmUmVuZGVy
U3R5bGU6OnNldENvbHVtblJ1bGVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUnVs
ZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIEFwcGx5
UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aD46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHQsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDM2MzlhZjhiNTJjZWYw
MDFmMGNiYmIzYjU2ZWNhZmRiNzNkNDk5ZWEuLjJjYWRlMzRkMDg1Nzc5MDA1OGM3NTU5MWQ4MTVj
NTNjZGNmNjExZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGludCBmcm9tLCBpbnQgdG8sIGRvdWJsZSBwcm9ncgog
ICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwogfQogCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gYmxlbmQoZnJvbSwg
dG8sIHByb2dyZXNzKTsKK30KKwogc3RhdGljIGlubGluZSBkb3VibGUgYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqLCBkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
CiB7ICAKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKQEAgLTk1MCwxMCAr
OTU1LDEwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAoKQogICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihD
U1NQcm9wZXJ0eU1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjptaW5IZWlnaHQsICZSZW5kZXJTdHls
ZTo6c2V0TWluSGVpZ2h0KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCAmUmVuZGVyU3R5
bGU6Om1heEhlaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXhIZWlnaHQpKTsKIAotICAgICAgICBn
UHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hv
cnQ+KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRX
aWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgpKTsKLSAgICAgICAgZ1Byb3Bl
cnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkIHNob3J0PihD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0
aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoKSk7Ci0gICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBzaG9ydD4oQ1NT
UHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hvcnQ+KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBl
cnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyTGVmdFdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQo
bmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4oQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
UmlnaHRXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJT
dHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgpKTsK
KyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVu
c2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoKSk7CiAgICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgJlJlbmRlclN0eWxlOjptYXJnaW5MZWZ0LCAmUmVuZGVy
U3R5bGU6OnNldE1hcmdpbkxlZnQpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgJlJl
bmRlclN0eWxlOjptYXJnaW5SaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5SaWdodCkpOwog
ICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVu
Z3RoPihDU1NQcm9wZXJ0eU1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjptYXJnaW5Ub3AsICZSZW5k
ZXJTdHlsZTo6c2V0TWFyZ2luVG9wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKaW5kZXggMTI4ZjJlZDBlZjBlZWJh
ZTc2MmY0YzM2NzNjMjRlYjBjZTBlNDYyNS4uYjNmMjgzY2EyMDE4YjE2ODE4NmFlODYwNWNjNTM3
YmFmMTlmMTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsMTEgQEAgaW5saW5lIGludCBi
bGVuZChpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4oZnJvbSkgKyBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRvIC0gZnJvbSkgKiBwcm9ncmVzcykpOwogfQogCitpbmxpbmUgdW5zaWduZWQg
YmxlbmQodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihscm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihmcm9t
KSArIHN0YXRpY19jYXN0PGRvdWJsZT4odG8gLSBmcm9tKSAqIHByb2dyZXNzKSk7Cit9CisKIGlu
bGluZSBkb3VibGUgYmxlbmQoZG91YmxlIGZyb20sIGRvdWJsZSB0bywgZG91YmxlIHByb2dyZXNz
KQogeyAgCiAgICAgcmV0dXJuIGZyb20gKyAodG8gLSBmcm9tKSAqIHByb2dyZXNzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMjhjNTYwNGY2ZmZmNDgzYzA3
YTQxZjE0ZTM0ZDk5M2E5MGFkZDZlZC4uNmVhMDI1YzVkZTc5ODFkZTA2Y2FlNTdiMzA5NWI3NmI1
MmE0NzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0x
MTEsMjYgKzExMSwyNiBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbAogICAgICAgICAgICAgLy8g
Qm9yZGVyCiAgICAgICAgICAgICBMZW5ndGhCb3ggYm9yZGVyQm94KHN0eWxlLT5ib3JkZXJUb3BX
aWR0aCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKICAgICAgICAgICAgIGJvcmRlckJveCA9
IG1fdGhlbWUtPmNvbnRyb2xCb3JkZXIocGFydCwgc3R5bGUtPmZvbnQoKSwgYm9yZGVyQm94LCBz
dHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAgICAgICAgIGlmIChib3JkZXJCb3gudG9wKCku
dmFsdWUoKSAhPSBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKGJv
cmRlckJveC50b3AoKS52YWx1ZSgpICE9IHN0YXRpY19jYXN0PGludD4oc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJvcmRlckJveC50b3AoKS52YWx1ZSgp
KQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyQm94
LnRvcCgpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgc3R5bGUtPnJlc2V0Qm9yZGVyVG9wKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSAhPSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgp
KSB7CisgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSAhPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGJvcmRlckJveC5yaWdodCgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRCb3JkZXJSaWdodFdpZHRoKGJvcmRlckJveC5yaWdodCgpLnZhbHVlKCkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyUmln
aHQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChib3JkZXJCb3guYm90dG9tKCku
dmFsdWUoKSAhPSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkgeworICAgICAgICAgICAgaWYg
KGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpICE9IHN0YXRpY19jYXN0PGludD4oc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlckJv
dHRvbVdpZHRoKGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoYm9yZGVyQm94LmJvdHRvbSgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRCb3JkZXJCb3R0b21XaWR0aChib3JkZXJCb3guYm90dG9tKCkudmFsdWUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+cmVzZXRCb3JkZXJC
b3R0b20oKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChib3JkZXJCb3gubGVmdCgp
LnZhbHVlKCkgIT0gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKSB7CisgICAgICAgICAgICBpZiAo
Ym9yZGVyQm94LmxlZnQoKS52YWx1ZSgpICE9IHN0YXRpY19jYXN0PGludD4oc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpKSkgewogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJMZWZ0V2lk
dGgoYm9yZGVyQm94LmxlZnQoKS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoYm9yZGVy
Qm94LmxlZnQoKS52YWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVy
TGVmdFdpZHRoKGJvcmRlckJveC5sZWZ0KCkudmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAppbmRleCAyNmYwODlmMGI3NzBiOWZjMTc0OWIwYmI1
YWRlODVkMmU1NDI4YmI1Li5lNjU2MjhhOTkyN2M4YmVjYjIyMzY4MGZhYTZmMmE4NWQ0NjU1MDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTYw
LDI4ICs2MCwyOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ci0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QKKyAgICB1bnNpZ25l
ZCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlLmhh
c0ltYWdlKCkgJiYgKG1fbGVmdC5zdHlsZSgpID09IEJOT05FIHx8IG1fbGVmdC5zdHlsZSgpID09
IEJISURERU4pKQogICAgICAgICAgICAgcmV0dXJuIDA7IAogICAgICAgICByZXR1cm4gbV9sZWZ0
LndpZHRoKCk7CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlclJpZ2h0V2lk
dGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0ltYWdlKCkgJiYgKG1fcmlnaHQuc3R5bGUoKSA9PSBC
Tk9ORSB8fCBtX3JpZ2h0LnN0eWxlKCkgPT0gQkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgcmV0dXJuIG1fcmlnaHQud2lkdGgoKTsKICAgICB9CiAgICAgCi0gICAgdW5z
aWduZWQgc2hvcnQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdAorICAgIHVuc2lnbmVkIGJvcmRlclRv
cFdpZHRoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9pbWFnZS5oYXNJbWFnZSgpICYm
IChtX3RvcC5zdHlsZSgpID09IEJOT05FIHx8IG1fdG9wLnN0eWxlKCkgPT0gQkhJRERFTikpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fdG9wLndpZHRoKCk7CiAgICAg
fQogICAgIAotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QKKyAg
ICB1bnNpZ25lZCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
IW1faW1hZ2UuaGFzSW1hZ2UoKSAmJiAobV9ib3R0b20uc3R5bGUoKSA9PSBCTk9ORSB8fCBtX2Jv
dHRvbS5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmluZGV4IGQ5ZjE4YTAyY2Mw
MjdmMzk0YjFiZDk5NjczM2I0NTkyMTFhMDI3MmYuLmQ5ZDQwNGI4NTMwOTg2ZDg2Y2I0ODgwZTg2
MmQzZTQ5NGM0ODU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Cb3JkZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJWYWx1ZS5oCkBAIC02NiwxMiArNjYsMTIgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBj
b25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Ci0gICAgdW5zaWdu
ZWQgc2hvcnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgdW5zaWduZWQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgRUJvcmRlclN0eWxlIHN0eWxl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0eWxlPihtX3N0eWxlKTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgQ29sb3IgbV9jb2xvcjsKLSAgICB1bnNpZ25lZCBtX3dpZHRoIDog
MTI7CisgICAgdW5zaWduZWQgbV93aWR0aCA6IDI3OwogICAgIHVuc2lnbmVkIG1fc3R5bGUgOiA0
OyAvLyBFQm9yZGVyU3R5bGUKIAogICAgIC8vIFRoaXMgaXMgb25seSB1c2VkIGJ5IE91dGxpbmVW
YWx1ZSBidXQgbW92ZWQgaGVyZSB0byBrZWVwIHRoZSBiaXRzIHBhY2tlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDAwMDMyNzQwY2Yx
Nzg5Mzc1ZjkxOTg4NjE2NWY5NTAwMzRhNmYxYTguLjA4YmZiZjkwZmU1YTUyZTBlMGY2Y2RjYTdh
ODQ4MTk4YmI0ZGU0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtNDQsNiArNDQsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgU2FtZVNpemVBc0JvcmRlclZhbHVlIHsKKyAg
ICBDb2xvciBtX2NvbG9yOworICAgIHVuc2lnbmVkIG1fd2lkdGg7Cit9OworCitDT01QSUxFX0FT
U0VSVChzaXplb2YoQm9yZGVyVmFsdWUpID09IHNpemVvZihTYW1lU2l6ZUFzQm9yZGVyVmFsdWUp
LCBCb3JkZXJWYWx1ZV9zaG91bGRfbm90X2dyb3cpOworCiBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRl
clN0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNpemVBc1JlbmRlclN0eWxlPiB7CiAgICAg
dW5zaWduZWQgbV9iaXRmaWVsZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggNTJkMjg4NzgwOTIwYzVjYjVlYjU1ZGRkMjRkN2RiNTY1NjQy
YjgzZS4uODEyYmY0ZTYxM2U0YThmMTg3MjYzOTVlN2IyOWUxNjk2Y2ViNDBiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU0NSwxNiArNTQ1
LDE2IEBAIHB1YmxpYzoKICAgICBMZW5ndGhTaXplIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9CiAgICAgYm9v
bCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0Jv
cmRlclJhZGl1cygpOyB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJMZWZ0V2lkdGgoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CisgICAg
dW5zaWduZWQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQogICAgIEVCb3JkZXJTdHlsZSBib3JkZXJMZWZ0U3R5bGUo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5zdHlsZSgpOyB9CiAgICAg
Ym9vbCBib3JkZXJMZWZ0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIubGVmdCgpLmlzVHJhbnNwYXJlbnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRl
clJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0
V2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclJpZ2h0V2lkdGgoKTsgfQogICAgIEVCb3JkZXJTdHls
ZSBib3JkZXJSaWdodFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdo
dCgpLnN0eWxlKCk7IH0KICAgICBib29sIGJvcmRlclJpZ2h0SXNUcmFuc3BhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5pc1RyYW5zcGFyZW50KCk7IH0KLSAg
ICB1bnNpZ25lZCBzaG9ydCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm9yZGVyVG9wV2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJvcmRlclRvcFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9CiAg
ICAgRUJvcmRlclN0eWxlIGJvcmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci50b3AoKS5zdHlsZSgpOyB9CiAgICAgYm9vbCBib3JkZXJUb3BJc1RyYW5zcGFyZW50
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AoKS5pc1RyYW5zcGFyZW50KCk7
IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJCb3R0b21XaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyQm90dG9tV2lkdGgoKTsgfQorICAgIHVuc2lnbmVkIGJv
cmRlckJvdHRvbVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJC
b3R0b21XaWR0aCgpOyB9CiAgICAgRUJvcmRlclN0eWxlIGJvcmRlckJvdHRvbVN0eWxlKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20oKS5zdHlsZSgpOyB9CiAgICAgYm9v
bCBib3JkZXJCb3R0b21Jc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5ib3R0b20oKS5pc1RyYW5zcGFyZW50KCk7IH0KICAgICAKQEAgLTEwNDMsMTYgKzEwNDMs
MTYgQEAgcHVibGljOgogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihj
b25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LAogICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRo
LCBMYXlvdXRVbml0IGJvdHRvbVdpZHRoLCBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5p
dCByaWdodFdpZHRoLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5z
aWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgs
IHYpIH0KKyAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVy
TGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xl
ZnQubV9zdHlsZSwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9jb2xvciwgdikgfQotICAg
IHZvaWQgc2V0Qm9yZGVyUmlnaHRXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRlclJp
Z2h0V2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5t
X3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpIH0KICAgICB2
b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fcmlnaHQubV9jb2xvciwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lk
dGgodW5zaWduZWQgc2hvcnQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93
aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdikgfQogICAgIHZvaWQgc2V0Qm9y
ZGVyVG9wU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1f
dG9wLm1fc3R5bGUsIHYpIH0KICAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX2NvbG9yLCB2KSB9Ci0gICAg
dm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KSB9CisgICAgdm9pZCBzZXRCb3JkZXJC
b3R0b21XaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRv
bS5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21TdHlsZShFQm9yZGVyU3R5
bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV9zdHlsZSwgdikgfQog
ICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLm1fY29sb3IsIHYpIH0KIApAQCAtMTUxMyw3ICsxNTEz
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBFQ3Vyc29yIGluaXRpYWxDdXJzb3IoKSB7IHJldHVy
biBDVVJTT1JfQVVUTzsgfQogICAgIHN0YXRpYyBDb2xvciBpbml0aWFsQ29sb3IoKSB7IHJldHVy
biBDb2xvcjo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3R5bGVJbWFnZSogaW5pdGlhbExpc3RTdHls
ZUltYWdlKCkgeyByZXR1cm4gMDsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFs
Qm9yZGVyV2lkdGgoKSB7IHJldHVybiAzOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxC
b3JkZXJXaWR0aCgpIHsgcmV0dXJuIDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5p
dGlhbENvbHVtblJ1bGVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQg
c2hvcnQgaW5pdGlhbE91dGxpbmVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgaW50
IGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxTaXplKCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxNaW5TaXplKCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2
NzZkNjdkMTMyMzVlODQyMDk2MTY1NDkwYzQ2MTdmYWMwNDk5NWUuLmZlNWI1NzczNjA1ZTYxYTUy
NzQ5ZDY4ODE5N2I2MGY1YzNmOGQ3NzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0x
OCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQg
aW4gZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBUaGlzIHRl
c3QgY292ZXJzIHRoYXQgc2V0dGluZyBiaWcgdmFsdWVzIHRvIGJvcmRlci13aWR0aCB3aWxsCisg
ICAgICAgIHJldHVybiBjb3JyZWN0IHZhbHVlcy4KKworICAgICAgICAqIGZhc3QvY3NzL2JvcmRl
ci13aWR0aC1sYXJnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2Jv
cmRlci13aWR0aC1sYXJnZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xOCAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1vdmUgU2hhZG93Q29udGVudEVs
ZW1lbnQgZnJvbSBkb20vIHRvIGh0bWwvIGFuZCBtYWtlIFNoYWRvd0NvbnRlbnRFbGVtZW50IHN1
YmNsYXNzIG9mIEhUTUxFbGVtZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Ym9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Jv
cmRlci13aWR0aC1sYXJnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU0ZDU3OWFkN2I3MzJh
Y2FjYTAwYjdlMzY3ZjMxYjE5ZTY1Y2NiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGVzdCBmb3IgV2ViS2l0IGJ1ZyAxODI5NCA6IFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21w
dXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQorCitQQVNTIGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXdpZHRoJykgaXMgJzEyMDAwcHggMTEwMDBweCAxMDAw
MHB4IDkwMTBweCcKK1BBU1MgY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3Jk
ZXItdG9wLXdpZHRoJykuY3NzVGV4dCBpcyAnMTIwMDBweCcKK1BBU1MgY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXItcmlnaHQtd2lkdGgnKS5jc3NUZXh0IGlzICcxMTAw
MHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1ib3R0
b20td2lkdGgnKS5jc3NUZXh0IGlzICcxMDAwMHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJykuY3NzVGV4dCBpcyAnOTAxMHB4Jwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIy
YmYzMWEwZmU1NzQ1ZWRkMzY3YjMwMWRlZDZhMTQ1ZGY3ODU5YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2JvcmRlci13aWR0aC1sYXJnZS5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBX
ZWJLaXQgYnVnIDE4Mjk0IDogU3RyYW5nZSBSZXN1bHQgZm9yIGdldENvbXB1dGVkU3R5bGUgb24g
Ym9yZGVyV2lkdGggc2V0IGluIGVtPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPlRlc3QgZm9yIFdlYktpdCBidWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0Ij4xODI5NDwvYT4gOiBTdHJhbmdlIFJlc3VsdCBm
b3IgZ2V0Q29tcHV0ZWRTdHlsZSBvbiBib3JkZXJXaWR0aCBzZXQgaW4gZW08L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0idGVzdHNfY29udGFpbmVyIj4KKworPGRpdiBp
ZD0idGVzdCIgc3R5bGU9ImJvcmRlci1zdHlsZTpzb2xpZDtmb250LXNpemU6MTAwcHg7Ij48L2Rp
dj4KKworPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdCIpOworCisgICAgdGVzdC5zdHlsZS5ib3JkZXJXaWR0aCA9ICIxMjBlbSAx
MTBlbSAxMDBlbSA5MC4xZW0iOworICAgIHZhciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUodGVzdCwgbnVsbCk7CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXdpZHRoJykiLCAiJzEyMDAwcHggMTEwMDBweCAxMDAwMHB4
IDkwMTBweCciKTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKCdib3JkZXItdG9wLXdpZHRoJykuY3NzVGV4dCIsIicxMjAwMHB4JyIpOworICAgIHNob3Vs
ZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0
aCcpLmNzc1RleHQiLCInMTEwMDBweCciKTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXItYm90dG9tLXdpZHRoJykuY3NzVGV4dCIsIicxMDAw
MHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
J2JvcmRlci1sZWZ0LXdpZHRoJykuY3NzVGV4dCIsIic5MDEwcHgnIik7CisgICAgLy8gY2xlYW4g
dXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgdmFyIHRlc3RzX2NvbnRhaW5lciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0c19jb250YWluZXIiKTsKKyAgICB0ZXN0c19jb250YWluZXIucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXN0c19jb250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123097</attachid>
            <date>2012-01-19 03:40:54 -0800</date>
            <delta_ts>2012-01-19 05:00:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-18294-20120119084045.patch</filename>
            <type>text/plain</type>
            <size>24183</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNiYmQ5NTIzZTYxMTI0
YjVkYTI1ZWI4MTRkNzQ0ODgzMmM2MGRhMS4uYmI1ZjVhNGNkMjU0MDUxZmM0OWRkNDY2ZTA4NzRj
ODJhMDlmZmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTE4ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFN0cmFu
Z2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEJvcmRlclZhbHVlIHN0
b3JlcyBpdHMgd2lkdGggb24gYSAxMiBiaXRzIHVuc2lnbmVkLiBUaGlzIHBhdGNoIAorICAgICAg
ICBpbmNyZWFzZSBpdCB0byAyNy4gVGhlIHBhdGNoIGFsc28gbW9kaWZ5IHRoZSB3YXkgdG8gc2V0
IHRoZSAKKyAgICAgICAgd2lkdGggb3IgdG8gZ2V0IGl0LCB3ZSBub3cgdXNlIGEgdW5zaWduZWQg
cmF0aGVyIHRoYW4gYSBzaG9ydC4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9ib3JkZXItd2lk
dGgtbGFyZ2UuaHRtbAorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5k
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1h
cCk6CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblV0aWxpdGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6YmxlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpC
b3JkZXJEYXRhOjpib3JkZXJMZWZ0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0
YTo6Ym9yZGVyUmlnaHRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpib3Jk
ZXJUb3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpib3JkZXJCb3R0b21X
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6d2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6Ym9yZGVyTGVmdFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJSaWdo
dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpib3JkZXJU
b3BXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6Ym9yZGVy
Qm90dG9tV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNl
dEJvcmRlckxlZnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxk
czo6c2V0Qm9yZGVyUmlnaHRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJp
dGZpZWxkczo6c2V0Qm9yZGVyVG9wV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGVCaXRmaWVsZHM6OnNldEJvcmRlckJvdHRvbVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlQml0ZmllbGRzOjppbml0aWFsQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmluaXRpYWxDb2x1bW5SdWxlV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OmluaXRpYWxPdXRsaW5lV2lkdGgpOgor
CiAyMDEyLTAxLTE4ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgTW92ZSBTaGFkb3dDb250ZW50RWxlbWVudCBmcm9tIGRvbS8gdG8gaHRtbC8gYW5kIG1h
a2UgU2hhZG93Q29udGVudEVsZW1lbnQgc3ViY2xhc3Mgb2YgSFRNTEVsZW1lbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBkMWVjOGYxOTA0M2U3ZTRiZTUy
MDc1YjRiYmNjYzA2Mjc1NTY0N2JjLi5hOTcxYjlhMWNmN2I3NmQwMjM4NjUxOWI2NTY1YjI3NmFm
NTczOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM2
MCw2ICszNjAsMTEgQEAgdGVtcGxhdGU8PiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSoKICAgICByZXR1cm4gcm91bmRG
b3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgSU5UX01BWCwgSU5UX01JTj4oY29tcHV0ZUxlbmd0
aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkp
OwogfQogCit0ZW1wbGF0ZTw+IHVuc2lnbmVkIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCit7CisgICAgcmV0dXJuIHJvdW5kRm9y
SW1wcmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZCwgVUlOVF9NQVgsIDA+KGNvbXB1dGVMZW5ndGhE
b3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsK
K30KKwogdGVtcGxhdGU8PiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgo
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlw
bGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKICAgICAvLyBGSVhNRTogTGVuZ3RoLmgg
bm8gbG9uZ2VyIGV4cGVjdHMgMjggYml0IGludGVnZXJzLCBzbyB0aGVzZSBib3VuZHMgc2hvdWxk
IGJlIElOVF9NQVggYW5kIElOVF9NSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHAKaW5kZXggMjgyMGY1NWE4YjA2MmVmM2ZiMzcyODI2ZDM0MDQwYmJjNzA3
ODFhNy4uODQ5MmFhYjljNzRlYzgwMzQyODRhZDZlYTJkZmU4Y2RjMmNiNWE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKQEAgLTE2OTgsMTIgKzE2
OTgsMTIgQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKQog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9t
U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21TdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyTGVmdFN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFN0
eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKIAotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJl
bmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0
aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1
bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRo
LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEFwcGx5
UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJs
ZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hv
cnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2Fi
bGVkLCBUaGlja25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVu
Z3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0
eWxlOjpzZXRPdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBO
b3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBBcHBs
eVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgJlJlbmRlclN0eWxlOjpjb2x1
bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRl
clN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCwg
JlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25l
c3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNp
Z25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJv
cmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEFwcGx5UHJvcGVydHlD
b21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdpZHRoLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlP
dXRsaW5lV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAm
UmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lV2lkdGgs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNr
bmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5n
dGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZVdpZHRoLCAmUmVuZGVy
U3R5bGU6OnNldENvbHVtblJ1bGVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUnVs
ZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIEFwcGx5
UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aD46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHQsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDM2MzlhZjhiNTJjZWYw
MDFmMGNiYmIzYjU2ZWNhZmRiNzNkNDk5ZWEuLjJjYWRlMzRkMDg1Nzc5MDA1OGM3NTU5MWQ4MTVj
NTNjZGNmNjExZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGludCBmcm9tLCBpbnQgdG8sIGRvdWJsZSBwcm9ncgog
ICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwogfQogCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAgICByZXR1cm4gYmxlbmQoZnJvbSwg
dG8sIHByb2dyZXNzKTsKK30KKwogc3RhdGljIGlubGluZSBkb3VibGUgYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqLCBkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
CiB7ICAKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKQEAgLTk1MCwxMCAr
OTU1LDEwIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAoKQogICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihD
U1NQcm9wZXJ0eU1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjptaW5IZWlnaHQsICZSZW5kZXJTdHls
ZTo6c2V0TWluSGVpZ2h0KSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCAmUmVuZGVyU3R5
bGU6Om1heEhlaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXhIZWlnaHQpKTsKIAotICAgICAgICBn
UHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hv
cnQ+KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRX
aWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgpKTsKLSAgICAgICAgZ1Byb3Bl
cnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkIHNob3J0PihD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0
aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoKSk7Ci0gICAgICAgIGdQcm9wZXJ0
eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBzaG9ydD4oQ1NT
UHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCkpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8dW5zaWduZWQgc2hvcnQ+KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBl
cnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyTGVmdFdpZHRoKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQo
bmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4oQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
UmlnaHRXaWR0aCkpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJT
dHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgpKTsK
KyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPHVu
c2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoKSk7CiAgICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgJlJlbmRlclN0eWxlOjptYXJnaW5MZWZ0LCAmUmVuZGVy
U3R5bGU6OnNldE1hcmdpbkxlZnQpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgJlJl
bmRlclN0eWxlOjptYXJnaW5SaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5SaWdodCkpOwog
ICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVu
Z3RoPihDU1NQcm9wZXJ0eU1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjptYXJnaW5Ub3AsICZSZW5k
ZXJTdHlsZTo6c2V0TWFyZ2luVG9wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmgKaW5kZXggMTI4ZjJlZDBlZjBlZWJh
ZTc2MmY0YzM2NzNjMjRlYjBjZTBlNDYyNS4uYWViY2E0NmJiYWZjNWUwNzBkZDk1NGQyODFlNzhk
NTY0ZjA4N2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9u
L0FuaW1hdGlvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsMTEgQEAgaW5saW5lIGludCBi
bGVuZChpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4oZnJvbSkgKyBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRvIC0gZnJvbSkgKiBwcm9ncmVzcykpOwogfQogCitpbmxpbmUgdW5zaWduZWQg
YmxlbmQodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxyb3VuZChzdGF0aWNfY2FzdDxkb3VibGU+
KGZyb20pICsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0byAtIGZyb20pICogcHJvZ3Jlc3MpKTsKK30K
KwogaW5saW5lIGRvdWJsZSBibGVuZChkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCiB7ICAKICAgICByZXR1cm4gZnJvbSArICh0byAtIGZyb20pICogcHJvZ3Jlc3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAyOGM1NjA0ZjZmZmY0
ODNjMDdhNDFmMTRlMzRkOTkzYTkwYWRkNmVkLi42ZWEwMjVjNWRlNzk4MWRlMDZjYWU1N2IzMDk1
Yjc2YjUyYTQ3OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
QEAgLTExMSwyNiArMTExLDI2IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgICAgICAg
ICAvLyBCb3JkZXIKICAgICAgICAgICAgIExlbmd0aEJveCBib3JkZXJCb3goc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpLCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwogICAgICAgICAgICAgYm9yZGVy
Qm94ID0gbV90aGVtZS0+Y29udHJvbEJvcmRlcihwYXJ0LCBzdHlsZS0+Zm9udCgpLCBib3JkZXJC
b3gsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpOwotICAgICAgICAgICAgaWYgKGJvcmRlckJveC50
b3AoKS52YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKSB7CisgICAgICAgICAgICBp
ZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkgIT0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChib3Jk
ZXJCb3gudG9wKCkudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBzdHlsZS0+cmVzZXRCb3JkZXJUb3AoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChib3JkZXJCb3gucmlnaHQoKS52YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkpIHsKKyAgICAgICAgICAgIGlmIChib3JkZXJCb3gucmlnaHQoKS52YWx1ZSgpICE9IHN0
YXRpY19jYXN0PGludD4oc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAg
c3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgoYm9yZGVyQm94LnJpZ2h0KCkudmFsdWUoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+cmVzZXRCb3Jk
ZXJSaWdodCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJvcmRlckJveC5ib3R0
b20oKS52YWx1ZSgpICE9IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKSB7CisgICAgICAgICAg
ICBpZiAoYm9yZGVyQm94LmJvdHRvbSgpLnZhbHVlKCkgIT0gc3RhdGljX2Nhc3Q8aW50PihzdHls
ZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSkpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0Qm9y
ZGVyQm90dG9tV2lkdGgoYm9yZGVyQm94LmJvdHRvbSgpLnZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChib3JkZXJCb3guYm90dG9tKCkudmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAg
c3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKGJvcmRlckJveC5ib3R0b20oKS52YWx1ZSgpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5yZXNldEJv
cmRlckJvdHRvbSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJvcmRlckJveC5s
ZWZ0KCkudmFsdWUoKSAhPSBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpIHsKKyAgICAgICAgICAg
IGlmIChib3JkZXJCb3gubGVmdCgpLnZhbHVlKCkgIT0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCkpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEJvcmRlckxl
ZnRXaWR0aChib3JkZXJCb3gubGVmdCgpLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChi
b3JkZXJCb3gubGVmdCgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRC
b3JkZXJMZWZ0V2lkdGgoYm9yZGVyQm94LmxlZnQoKS52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDI2ZjA4OWYwYjc3MGI5ZmMxNzQ5
YjBiYjVhZGU4NWQyZTU0MjhiYjUuLmU2NTYyOGE5OTI3YzhiZWNiMjIzNjgwZmFhNmYyYTg1ZDQ2
NTUwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApA
QCAtNjAsMjggKzYwLDI4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKLSAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdAorICAgIHVu
c2lnbmVkIGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1h
Z2UuaGFzSW1hZ2UoKSAmJiAobV9sZWZ0LnN0eWxlKCkgPT0gQk5PTkUgfHwgbV9sZWZ0LnN0eWxl
KCkgPT0gQkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4gMDsgCiAgICAgICAgIHJldHVybiBt
X2xlZnQud2lkdGgoKTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyUmln
aHRXaWR0aCgpIGNvbnN0CisgICAgdW5zaWduZWQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoIW1faW1hZ2UuaGFzSW1hZ2UoKSAmJiAobV9yaWdodC5zdHlsZSgp
ID09IEJOT05FIHx8IG1fcmlnaHQuc3R5bGUoKSA9PSBCSElEREVOKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICByZXR1cm4gbV9yaWdodC53aWR0aCgpOwogICAgIH0KICAgICAKLSAg
ICB1bnNpZ25lZCBzaG9ydCBib3JkZXJUb3BXaWR0aCgpIGNvbnN0CisgICAgdW5zaWduZWQgYm9y
ZGVyVG9wV2lkdGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2ltYWdlLmhhc0ltYWdl
KCkgJiYgKG1fdG9wLnN0eWxlKCkgPT0gQk5PTkUgfHwgbV90b3Auc3R5bGUoKSA9PSBCSElEREVO
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV90b3Aud2lkdGgoKTsK
ICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgc2hvcnQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25z
dAorICAgIHVuc2lnbmVkIGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QKICAgICB7CiAgICAgICAg
IGlmICghbV9pbWFnZS5oYXNJbWFnZSgpICYmIChtX2JvdHRvbS5zdHlsZSgpID09IEJOT05FIHx8
IG1fYm90dG9tLnN0eWxlKCkgPT0gQkhJRERFTikpCiAgICAgICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKaW5kZXggZDlmMThh
MDJjYzAyN2YzOTRiMWJkOTk2NzMzYjQ1OTIxMWEwMjcyZi4uZDlkNDA0Yjg1MzA5ODZkODZjYjQ4
ODBlODYyZDNlNDk0YzQ4NTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0JvcmRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0JvcmRlclZhbHVlLmgKQEAgLTY2LDEyICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KLSAgICB1
bnNpZ25lZCBzaG9ydCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB1bnNp
Z25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBFQm9yZGVyU3R5bGUg
c3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUp
OyB9CiAKIHByb3RlY3RlZDoKICAgICBDb2xvciBtX2NvbG9yOwotICAgIHVuc2lnbmVkIG1fd2lk
dGggOiAxMjsKKyAgICB1bnNpZ25lZCBtX3dpZHRoIDogMjc7CiAgICAgdW5zaWduZWQgbV9zdHls
ZSA6IDQ7IC8vIEVCb3JkZXJTdHlsZQogCiAgICAgLy8gVGhpcyBpcyBvbmx5IHVzZWQgYnkgT3V0
bGluZVZhbHVlIGJ1dCBtb3ZlZCBoZXJlIHRvIGtlZXAgdGhlIGJpdHMgcGFja2VkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMDAwMzI3
NDBjZjE3ODkzNzVmOTE5ODg2MTY1Zjk1MDAzNGE2ZjFhOC4uMDhiZmJmOTBmZTVhNTJlMGUwZjZj
ZGNhN2E4NDgxOThiYjRkZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC00NCw2ICs0NCwxMyBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBTYW1lU2l6ZUFzQm9yZGVyVmFsdWUg
eworICAgIENvbG9yIG1fY29sb3I7CisgICAgdW5zaWduZWQgbV93aWR0aDsKK307CisKK0NPTVBJ
TEVfQVNTRVJUKHNpemVvZihCb3JkZXJWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCb3JkZXJW
YWx1ZSksIEJvcmRlclZhbHVlX3Nob3VsZF9ub3RfZ3Jvdyk7CisKIHN0cnVjdCBTYW1lU2l6ZUFz
UmVuZGVyU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzUmVuZGVyU3R5bGU+IHsK
ICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA1MmQyODg3ODA5MjBjNWNiNWViNTVkZGQyNGQ3ZGI1
NjU2NDJiODNlLi44MTJiZjRlNjEzZTRhOGYxODcyNjM5NWU3YjI5ZTE2OTZjZWI0MGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTQ1LDE2
ICs1NDUsMTYgQEAgcHVibGljOgogICAgIExlbmd0aFNpemUgYm9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KICAg
ICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
aGFzQm9yZGVyUmFkaXVzKCk7IH0KIAotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlckxlZnRXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0K
KyAgICB1bnNpZ25lZCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgpOyB9CiAgICAgRUJvcmRlclN0eWxlIGJvcmRlckxlZnRT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdCgpLnN0eWxlKCk7IH0K
ICAgICBib29sIGJvcmRlckxlZnRJc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5sZWZ0KCkuaXNUcmFuc3BhcmVudCgpOyB9Ci0gICAgdW5zaWduZWQgc2hvcnQg
Ym9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVy
UmlnaHRXaWR0aCgpOyB9CisgICAgdW5zaWduZWQgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9CiAgICAgRUJvcmRl
clN0eWxlIGJvcmRlclJpZ2h0U3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVy
LnJpZ2h0KCkuc3R5bGUoKTsgfQogICAgIGJvb2wgYm9yZGVyUmlnaHRJc1RyYW5zcGFyZW50KCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodCgpLmlzVHJhbnNwYXJlbnQoKTsg
fQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlclRvcFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9CisgICAgdW5zaWduZWQgYm9yZGVyVG9w
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlclRvcFdpZHRoKCk7
IH0KICAgICBFQm9yZGVyU3R5bGUgYm9yZGVyVG9wU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLnRvcCgpLnN0eWxlKCk7IH0KICAgICBib29sIGJvcmRlclRvcElzVHJhbnNw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmlzVHJhbnNwYXJl
bnQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0IGJvcmRlckJvdHRvbVdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJCb3R0b21XaWR0aCgpOyB9CisgICAgdW5zaWdu
ZWQgYm9yZGVyQm90dG9tV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJv
cmRlckJvdHRvbVdpZHRoKCk7IH0KICAgICBFQm9yZGVyU3R5bGUgYm9yZGVyQm90dG9tU3R5bGUo
KSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpLnN0eWxlKCk7IH0KICAg
ICBib29sIGJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbSgpLmlzVHJhbnNwYXJlbnQoKTsgfQogICAgIApAQCAtMTA0MywxNiAr
MTA0MywxNiBAQCBwdWJsaWM6CiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVy
Rm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsCiAgICAgICAgIExheW91dFVuaXQgdG9w
V2lkdGgsIExheW91dFVuaXQgYm90dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlv
dXRVbml0IHJpZ2h0V2lkdGgsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEJvcmRlckxlZnRXaWR0
aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV93
aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFdpZHRoKHVuc2lnbmVkIHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBzZXRC
b3JkZXJMZWZ0U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fbGVmdC5tX3N0eWxlLCB2KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0Q29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX2NvbG9yLCB2KSB9
Ci0gICAgdm9pZCBzZXRCb3JkZXJSaWdodFdpZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV93aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9y
ZGVyUmlnaHRXaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3Jp
Z2h0Lm1fd2lkdGgsIHYpIH0KICAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0
eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQubV9zdHlsZSwgdikgfQog
ICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX2NvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJU
b3BXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3Rv
cC5tX3dpZHRoLCB2KSB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BXaWR0aCh1bnNpZ25lZCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX3dpZHRoLCB2KSB9CiAgICAgdm9pZCBz
ZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3Jk
ZXIubV90b3AubV9zdHlsZSwgdikgfQogICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fY29sb3IsIHYpIH0K
LSAgICB2b2lkIHNldEJvcmRlckJvdHRvbVdpZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLm1fd2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJv
cmRlckJvdHRvbVdpZHRoKHVuc2lnbmVkIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1f
Ym90dG9tLm1fd2lkdGgsIHYpIH0KICAgICB2b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3Jk
ZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3N0eWxlLCB2
KSB9CiAgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV9jb2xvciwgdikgfQogCkBAIC0xNTEzLDcg
KzE1MTMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVDdXJzb3IgaW5pdGlhbEN1cnNvcigpIHsg
cmV0dXJuIENVUlNPUl9BVVRPOyB9CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxDb2xvcigpIHsg
cmV0dXJuIENvbG9yOjpibGFjazsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTGlz
dFN0eWxlSW1hZ2UoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGlu
aXRpYWxCb3JkZXJXaWR0aCgpIHsgcmV0dXJuIDM7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaW5p
dGlhbEJvcmRlcldpZHRoKCkgeyByZXR1cm4gMzsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9y
dCBpbml0aWFsQ29sdW1uUnVsZVdpZHRoKCkgeyByZXR1cm4gMzsgfQorICAgIHN0YXRpYyB1bnNp
Z25lZCBzaG9ydCBpbml0aWFsT3V0bGluZVdpZHRoKCkgeyByZXR1cm4gMzsgfQogICAgIHN0YXRp
YyBpbnQgaW5pdGlhbExldHRlcldvcmRTcGFjaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRp
YyBMZW5ndGggaW5pdGlhbFNpemUoKSB7IHJldHVybiBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBM
ZW5ndGggaW5pdGlhbE1pblNpemUoKSB7IHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOyB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggODY3NmQ2N2QxMzIzNWU4NDIwOTYxNjU0OTBjNDYxN2ZhYzA0OTk1ZS4uZmU1YjU3NzM2MDVl
NjFhNTI3NDlkNjg4MTk3YjYwZjVjM2Y4ZDc3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAxLTE4ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFN0cmFuZ2UgUmVzdWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRo
IHNldCBpbiBlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFRo
aXMgdGVzdCBjb3ZlcnMgdGhhdCBzZXR0aW5nIGJpZyB2YWx1ZXMgdG8gYm9yZGVyLXdpZHRoIHdp
bGwKKyAgICAgICAgcmV0dXJuIGNvcnJlY3QgdmFsdWVzLgorCisgICAgICAgICogZmFzdC9jc3Mv
Ym9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE4ICBTaGlueWEg
S2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAgICAgTW92ZSBTaGFkb3dDb250
ZW50RWxlbWVudCBmcm9tIGRvbS8gdG8gaHRtbC8gYW5kIG1ha2UgU2hhZG93Q29udGVudEVsZW1l
bnQgc3ViY2xhc3Mgb2YgSFRNTEVsZW1lbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9ib3JkZXItd2lkdGgtbGFyZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvYm9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTRkNTc5YWQ3
YjczMmFjYWNhMDBiN2UzNjdmMzFiMTllNjVjY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitUZXN0IGZvciBXZWJLaXQgYnVnIDE4Mjk0IDogU3RyYW5nZSBSZXN1bHQgZm9yIGdl
dENvbXB1dGVkU3R5bGUgb24gYm9yZGVyV2lkdGggc2V0IGluIGVtCisKK1BBU1MgY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItd2lkdGgnKSBpcyAnMTIwMDBweCAxMTAwMHB4
IDEwMDAwcHggOTAxMHB4JworUEFTUyBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUo
J2JvcmRlci10b3Atd2lkdGgnKS5jc3NUZXh0IGlzICcxMjAwMHB4JworUEFTUyBjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1yaWdodC13aWR0aCcpLmNzc1RleHQgaXMg
JzExMDAwcHgnCitQQVNTIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVy
LWJvdHRvbS13aWR0aCcpLmNzc1RleHQgaXMgJzEwMDAwcHgnCitQQVNTIGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLWxlZnQtd2lkdGgnKS5jc3NUZXh0IGlzICc5MDEw
cHgnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9ib3JkZXItd2lkdGgtbGFyZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MjJiZjMxYTBmZTU3NDVlZGQzNjdiMzAxZGVkNmExNDVkZjc4NTliCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYm9yZGVyLXdpZHRoLWxhcmdlLmh0bWwKQEAgLTAs
MCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3Qg
Zm9yIFdlYktpdCBidWcgMTgyOTQgOiBTdHJhbmdlIFJlc3VsdCBmb3IgZ2V0Q29tcHV0ZWRTdHls
ZSBvbiBib3JkZXJXaWR0aCBzZXQgaW4gZW08L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+VGVzdCBmb3IgV2ViS2l0IGJ1ZyA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQiPjE4Mjk0PC9hPiA6IFN0cmFuZ2UgUmVz
dWx0IGZvciBnZXRDb21wdXRlZFN0eWxlIG9uIGJvcmRlcldpZHRoIHNldCBpbiBlbTwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8ZGl2IGlkPSJ0ZXN0c19jb250YWluZXIiPgorCis8
ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0iYm9yZGVyLXN0eWxlOnNvbGlkO2ZvbnQtc2l6ZToxMDBweDsi
PjwvZGl2PgorCis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisKKyAgICB0ZXN0LnN0eWxlLmJvcmRlcldpZHRoID0gIjEy
MGVtIDExMGVtIDEwMGVtIDkwLjFlbSI7CisgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZSh0ZXN0LCBudWxsKTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItd2lkdGgnKSIsICInMTIwMDBweCAxMTAwMHB4IDEw
MDAwcHggOTAxMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
Q1NTVmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKS5jc3NUZXh0IiwiJzEyMDAwcHgnIik7CisgICAg
c2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLXJpZ2h0
LXdpZHRoJykuY3NzVGV4dCIsIicxMTAwMHB4JyIpOworICAgIHNob3VsZEJlKCJjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKS5jc3NUZXh0Iiwi
JzEwMDAwcHgnIik7CisgICAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlDU1NW
YWx1ZSgnYm9yZGVyLWxlZnQtd2lkdGgnKS5jc3NUZXh0IiwiJzkwMTBweCciKTsKKyAgICAvLyBj
bGVhbiB1cCBhZnRlciBvdXJzZWx2ZXMKKyAgICB2YXIgdGVzdHNfY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RzX2NvbnRhaW5lciIpOworICAgIHRlc3RzX2NvbnRhaW5l
ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRlc3RzX2NvbnRhaW5lcik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>