<?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>38354</bug_id>
          
          <creation_ts>2010-04-29 15:03:38 -0700</creation_ts>
          <short_desc>Support for Percentage Values in border-radius</short_desc>
          <delta_ts>2013-09-17 14:13:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Divya Manian">divya</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>Justin</cc>
    
    <cc>lea</cc>
    
    <cc>paulirish</cc>
    
    <cc>pkasting</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219201</commentid>
    <comment_count>0</comment_count>
      <attachid>54740</attachid>
    <who name="Divya Manian">divya</who>
    <bug_when>2010-04-29 15:03:38 -0700</bug_when>
    <thetext>Created attachment 54740
A demonstration of border-radius with % units. 

The CSS3 Specification has support for percentage values in border-radius property [1] but webkit has not supported it yet. 

I am attaching a demonstration page which will render in Firefox 3.5, and Opera 10.5 but not in Webkit nightlies. 


[1] http://www.w3.org/TR/css3-background/#the-border-radius</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265204</commentid>
    <comment_count>1</comment_count>
      <attachid>64510</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-16 12:49:04 -0700</bug_when>
    <thetext>Created attachment 64510
Work in progress patch

So this is a work in progress patch for this bug. It actually fixes the testcase! But it needs tests at least, I just
implemented from what I could figure out from the spec and how FF supports the percentages. The only part
of the patch that I know is wrong is the RenderObject.cpp change, I am not sure what values to use there in
the percentage case. Still I thought I&apos;d put it up for early feedback to see whether I am on the right track.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266930</commentid>
    <comment_count>2</comment_count>
      <attachid>64895</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-19 13:41:17 -0700</bug_when>
    <thetext>Created attachment 64895
Improved patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266931</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-19 13:42:59 -0700</bug_when>
    <thetext>Attachment 64895 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:4797:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/css/CSSStyleSelector.cpp:4799:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/css/CSSComputedStyleDeclaration.cpp:391:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266939</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-19 13:56:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=64895) [details]
&gt; Improved patch

Even though the patch currently has style issues, I think the bigger question is whether the approach
is right, so I decided to upload it anyway :)
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267154</commentid>
    <comment_count>5</comment_count>
      <attachid>64930</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-20 00:10:07 -0700</bug_when>
    <thetext>Created attachment 64930
Fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267712</commentid>
    <comment_count>6</comment_count>
      <attachid>65066</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-22 13:13:06 -0700</bug_when>
    <thetext>Created attachment 65066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267713</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-08-22 13:15:39 -0700</bug_when>
    <thetext>With my latest patch up, I basically changed two things. I realized calcValue(100) was cryptic and not needed, rawValue can be used as well and is quicker. The second thing is that I noticed the pixel test for border-radius-huge-assert.html was failing. It turns out that the used valu is too big for the 28-bit limit of Length, so I needed to clamp there to the 28-bit limits like in CSSPrimitiveValue, now there are no regressions anymore.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271202</commentid>
    <comment_count>8</comment_count>
      <attachid>65066</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-29 13:10:45 -0700</bug_when>
    <thetext>Comment on attachment 65066
Patch

&gt; +        const int intMaxForLength = 0x7ffffff; // max value for a 28-bit int
&gt; +        const int intMinForLength = (-0x7ffffff - 1); // min value for a 28-bit int

OK, but where does &quot;28-bit&quot; come from? I presume from Length. These constants should be in Length.h, not here inline in the code.

&gt; +    BorderData() : m_topLeft(Length(0, Fixed), Length(0, Fixed)), m_topRight(Length(0, Fixed), Length(0, Fixed))
&gt; +                 , m_bottomLeft(Length(0, Fixed), Length(0, Fixed)), m_bottomRight(Length(0, Fixed), Length(0, Fixed)) {}

This is not the correct formatting. Our style guide has a specific format for this:

    BorderData()
        : m_topLeft(Length(0, Fixed), Length(0, Fixed))
        , m_topRight(Length(0, Fixed), Length(0, Fixed))
        , m_bottomLeft(Length(0, Fixed), Length(0, Fixed))
        , m_bottomRight(Length(0, Fixed), Length(0, Fixed))
    {
    }

r=me, but please consider fixing the two issues above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273439</commentid>
    <comment_count>9</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-09-02 10:16:59 -0700</bug_when>
    <thetext>This was landed in 66615 after incorporating Darin&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273708</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-02 18:02:17 -0700</bug_when>
    <thetext>Rob, any reason you manually clamped against intMin/MaxForLength instead of using cumputeLengthIntForLength()?  If the problem is that that function returns 0 for values outside the bounds, perhaps there are other problems that causes, and we should simply fix the function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273838</commentid>
    <comment_count>11</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-09-03 02:11:41 -0700</bug_when>
    <thetext>Hello Peter,

(In reply to comment #10)
&gt; Rob, any reason you manually clamped against intMin/MaxForLength instead of using cumputeLengthIntForLength()?  If the problem is that that function returns 0 for values outside the bounds, perhaps there are other problems that causes, and we should simply fix the function?

You are right, cumputeLengthIntForLength returning 0 was the problem in my use case, since I need real clamping there. I&apos;ll add that I was not feeling that great about the solution in my patch.

Do you mean problems before or after my patch?

One solution may be to add an extra boolean param to cumputeLengthIntForLength that toggles the clamping behaviour. Or do we need a new function for the behaviour I want for the border-radius case? Let me know what you think.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274025</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-09-03 10:44:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Do you mean problems before or after my patch?

Before -- I&apos;m wondering if returning 0 in this case is just always wrong.

&gt; One solution may be to add an extra boolean param to cumputeLengthIntForLength that toggles the clamping behaviour. Or do we need a new function for the behaviour I want for the border-radius case? Let me know what you think.

If at all possible, I&apos;d like to use the same behavior everywhere.  Clamping makes far more sense to me than returning 0 for out-of-bounds, so I&apos;m hoping we can just do that.  Only if we truly need both behaviors would I want to make things toggleable.

I&apos;ll file a new bug about this stuff and CC you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930384</commentid>
    <comment_count>13</comment_count>
      <attachid>65066</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-17 14:13:01 -0700</bug_when>
    <thetext>Comment on attachment 65066
Patch

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

&gt; WebCore/css/CSSParser.cpp:1227
&gt;      case CSSPropertyOutlineOffset:
&gt; -        validPrimitive = validUnit(value, FLength, m_strict);
&gt; +        validPrimitive = validUnit(value, FLength | FPercent, m_strict);

It is a so ugly typo and was a hidden bug for 3 years ...
but Reni&apos;s ultimate fuzzer caught it. :)

See https://bugs.webkit.org/show_bug.cgi?id=120469 for details and fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>54740</attachid>
            <date>2010-04-29 15:03:38 -0700</date>
            <delta_ts>2010-04-29 15:03:38 -0700</delta_ts>
            <desc>A demonstration of border-radius with % units. </desc>
            <filename>border-radius.html</filename>
            <type>text/html</type>
            <size>525</size>
            <attacher name="Divya Manian">divya</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxodG1sPg0KPGhlYWQ+DQog
IDx0aXRsZT5DU1MgTmFtZXNwYWNlczwvdGl0bGU+DQogIDwhLS0gQ1NTIC0tPg0KICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiBocmVmPSJjc3Mv
c2NyZWVuLmNzcyIgPiANCgk8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPg0K
CQlwIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCUgNTAlOyANCgkJCQktbW96LWJvcmRlci1y
YWRpdXM6IDUwJSA1MCU7DQoJCQkJYm9yZGVyLXJhZGl1czogNTAlIDUwJTsNCgkJCQliYWNrZ3Jv
dW5kOiAjMDAwOyBjb2xvcjogI2ZmZjsgcGFkZGluZzogMTBweDsgd2lkdGg6IDIwMHB4OyBoZWln
aHQ6IDIwMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyMDBweDt9DQoJPC9z
dHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KCTxwPkRpbm9zYXVycyBhcmUgcmVhbCE8L3A+DQo8L2Jv
ZHk+DQo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64510</attachid>
            <date>2010-08-16 12:49:04 -0700</date>
            <delta_ts>2010-08-19 13:41:09 -0700</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>border-radius.diff</filename>
            <type>text/plain</type>
            <size>17012</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDkwZTQ5
MGEuLjMyNmJkYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMzg0LDE0ICszODQsMTkgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjdXJyZW50Q29sb3JPclZhbGlkQ28KICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKGNvbG9yLnJnYigpKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKElu
dFNpemUgcmFkaXVzKQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldEJvcmRlclJhZGl1
c0Nvcm5lclZhbHVlKExlbmd0aFNpemUgcmFkaXVzKQogewogICAgIGlmIChyYWRpdXMud2lkdGgo
KSA9PSByYWRpdXMuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHJhZGl1cy53aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLndpZHRoKCkudmFsdWUo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocmFkaXVzLmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Cisg
ICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50KSB7CisgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnBlcmNlbnQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy5oZWlnaHQoKS5wZXJjZW50KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgp
LnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLmhlaWdodCgpLnZhbHVlKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICB9CiAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkNDViM2VjLi44OWUwNzM0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTEyMDEsNyArMTIwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdo
dFJhZGl1czogewogICAgICAgICBpZiAobnVtICE9IDEgJiYgbnVtICE9IDIpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVl
LCBGTGVuZ3RoLCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0
KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgaWYgKCF2YWxp
ZFByaW1pdGl2ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0
KTsKQEAgLTQzOTEsNyArNDM5MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1
cyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGkgLSBpbmRleEFmdGVy
U2xhc2ggPj0gNCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIXZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpKQorICAgICAgICBpZiAoIXZhbGlkVW5p
dCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbHVlLT51bml0KSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCmluZGV4IDc1NzU5NTcuLmYzN2Q2YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CkBAIC00NzgyLDE3ICs0NzgyLDI3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgaWYgKCFwYWlyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGludCB3aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1
dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAg
ICAgICAgaW50IGhlaWdodCA9IHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgIHpvb21GYWN0b3IpOwotICAgICAgICBpZiAod2lkdGgg
PCAwIHx8IGhlaWdodCA8IDApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHdp
ZHRoID09IDApCi0gICAgICAgICAgICBoZWlnaHQgPSAwOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIg
dmFsdWUuCi0gICAgICAgIGVsc2UgaWYgKGhlaWdodCA9PSAwKQotICAgICAgICAgICAgd2lkdGgg
PSAwOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCisgICAgICAgIExlbmd0aCB3aWR0aDsK
KyAgICAgICAgTGVuZ3RoIGhlaWdodDsKKyAgICAgICAgaWYgKHBhaXItPmZpcnN0KCktPnByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsKKyAgICAg
ICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB3aWR0aCA9IExlbmd0aChwYWlyLT5maXJzdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KTsKKyAgICAgICAgICAgIGhlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo
cGFpci0+c2Vjb25kKCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2lkdGgg
PSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7CisgICAgICAgICAgICBoZWlnaHQgPSBM
ZW5ndGgocGFpci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOworICAgICAgICAgICAgaWYgKHdpZHRoLnZh
bHVlKCkgPCAwIHx8IGhlaWdodC52YWx1ZSgpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBpZiAod2lkdGgudmFsdWUoKSA9PSAwKQorICAgICAgICAgICAgICAgIGhl
aWdodCA9IHdpZHRoOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCisgICAgICAgICAgICBl
bHNlIGlmIChoZWlnaHQudmFsdWUoKSA9PSAwKQorICAgICAgICAgICAgICAgIHdpZHRoID0gaGVp
Z2h0OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuKi8KKyAgICAgICAgfQogCi0gICAgICAg
IEludFNpemUgc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgTGVuZ3RoU2l6ZSBzaXplKHdp
ZHRoLCBoZWlnaHQpOwogICAgICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKHNpemUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKaW5kZXggNGYzMDRlMi4uMWRmMmU5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC02NDQsMTAgKzY0NCwxMCBAQCB2b2lkIEFuaW1hdGlv
bkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKCkKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFw
cGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblgsICZSZW5kZXJTdHlsZTo6
c2V0VHJhbnNmb3JtT3JpZ2luWCkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5k
KG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblksICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5ZKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
LCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNm
b3JtT3JpZ2luWikpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8Y29uc3QgSW50U2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1
cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJv
cmRlclRvcExlZnRSYWRpdXMpKTsKLSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChu
ZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IEludFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlclRvcFJp
Z2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKSk7Ci0gICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJz
LT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJbnRTaXplJj4oQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpOwotICAgICAgICBn
UHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgSW50U2l6
ZSY+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlX
cmFwcGVyPGNvbnN0IExlbmd0aFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMs
ICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxjb25zdCBMZW5ndGhTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BSaWdodFJhZGl1cywgJlJlbmRlclN0
eWxlOjpzZXRCb3JkZXJUb3BSaWdodFJhZGl1cykpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgTGVuZ3RoU2l6ZSY+KENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21MZWZ0
UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKTsKKyAgICAg
ICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IExl
bmd0aFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5
bGU6OmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFBy
b3BlcnR5V3JhcHBlcjxFVmlzaWJpbGl0eT4oQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCAmUmVuZGVy
U3R5bGU6OnZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0VmlzaWJpbGl0eSkpOwogICAgICAg
ICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENT
U1Byb3BlcnR5Wm9vbSwgJlJlbmRlclN0eWxlOjp6b29tLCAmUmVuZGVyU3R5bGU6OnNldFpvb20p
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjdlYWJjZC4uYTExYzkxZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNDIyLDcgKzE0MjIsNyBAQCBib29s
IFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YQogICAgICAgICBzdHlsZSgpLT5nZXRCb3hTaGFkb3dIb3Jpem9u
dGFsRXh0ZW50KHNoYWRvd0xlZnQsIHNoYWRvd1JpZ2h0KTsKIAogICAgICAgICBpbnQgYm9yZGVy
UmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiAwOwot
ICAgICAgICBpbnQgYm9yZGVyV2lkdGggPSBtYXgoLW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNl
dCgpLCBtYXgoYm9yZGVyUmlnaHQsIG1heChzdHlsZSgpLT5ib3JkZXJUb3BSaWdodFJhZGl1cygp
LndpZHRoKCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSkpKSAr
IG1heChvdywgc2hhZG93UmlnaHQpOworICAgICAgICBpbnQgYm9yZGVyV2lkdGggPSBtYXgoLW91
dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyUmlnaHQsIG1heChzdHlsZSgp
LT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKDApLCBzdHlsZSgpLT5i
b3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKDApKSkpICsgbWF4KG93
LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIEludFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gu
eCgpICsgbWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAt
IGJvcmRlcldpZHRoLAogICAgICAgICAgICAgbmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAg
ICB3aWR0aCArIGJvcmRlcldpZHRoLApAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgYm9vbCBSZW5kZXJP
YmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGEKICAgICAgICAgc3R5bGUoKS0+Z2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogCiAgICAgICAgIGludCBib3JkZXJCb3R0b20gPSBp
c0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogMDsKLSAgICAgICAg
aW50IGJvcmRlckhlaWdodCA9IG1heCgtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1h
eChib3JkZXJCb3R0b20sIG1heChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVp
Z2h0KCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkpKSkgKyBt
YXgob3csIHNoYWRvd0JvdHRvbSk7CisgICAgICAgIGludCBib3JkZXJIZWlnaHQgPSBtYXgoLW91
dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyQm90dG9tLCBtYXgoc3R5bGUo
KS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZSgwKSwgc3R5bGUo
KS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoMCkpKSkgKyBt
YXgob3csIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIEludFJlY3QgYm90dG9tUmVjdChuZXdPdXRs
aW5lQm94LngoKSwKICAgICAgICAgICAgIG1pbihuZXdPdXRsaW5lQm94LmJvdHRvbSgpLCBvbGRP
dXRsaW5lQm94LmJvdHRvbSgpKSAtIGJvcmRlckhlaWdodCwKICAgICAgICAgICAgIG1heChuZXdP
dXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSksCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggOTZjYWY5Ny4uMzVhMzI5OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0JvcmRlckRhdGEuaApAQCAtMjYsNyArMjYsNyBAQAogI2RlZmluZSBCb3JkZXJEYXRh
X2gKIAogI2luY2x1ZGUgIkJvcmRlclZhbHVlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgorI2lu
Y2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxMyArNDIsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNCb3JkZXJSYWRpdXMoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1fdG9wTGVmdC53aWR0
aCgpID4gMCkKKyAgICAgICAgaWYgKG1fdG9wTGVmdC53aWR0aCgpLnR5cGUoKSAhPSBBdXRvKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChtX3RvcFJpZ2h0LndpZHRoKCkg
PiAwKQorICAgICAgICBpZiAobV90b3BSaWdodC53aWR0aCgpLnR5cGUoKSAhPSBBdXRvKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChtX2JvdHRvbUxlZnQud2lkdGgoKSA+
IDApCisgICAgICAgIGlmIChtX2JvdHRvbUxlZnQud2lkdGgoKS50eXBlKCkgIT0gQXV0bykKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAobV9ib3R0b21SaWdodC53aWR0aCgp
ID4gMCkKKyAgICAgICAgaWYgKG1fYm90dG9tUmlnaHQud2lkdGgoKS50eXBlKCkgIT0gQXV0bykK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtOTksMTAgKzk5LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBOaW5lUGllY2VJbWFn
ZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgCi0gICAgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQotICAgIGNvbnN0IElu
dFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQotICAgIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KLSAg
ICBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmln
aHQ7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90
b3BMZWZ0OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3RvcFJpZ2h0OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbVJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQogICAgIAogcHJpdmF0ZToKICAg
ICBCb3JkZXJWYWx1ZSBtX2xlZnQ7CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBwcml2YXRlOgogCiAg
ICAgTmluZVBpZWNlSW1hZ2UgbV9pbWFnZTsKIAotICAgIEludFNpemUgbV90b3BMZWZ0OwotICAg
IEludFNpemUgbV90b3BSaWdodDsKLSAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKLSAgICBJbnRT
aXplIG1fYm90dG9tUmlnaHQ7CisgICAgTGVuZ3RoU2l6ZSBtX3RvcExlZnQ7CisgICAgTGVuZ3Ro
U2l6ZSBtX3RvcFJpZ2h0OworICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0OworICAgIExlbmd0
aFNpemUgbV9ib3R0b21SaWdodDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1YTY2YzY3Li4yZWY5Mjk1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03ODgsMjEgKzc4OCwy
MSBAQCBzdGF0aWMgdm9pZCBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVj
dCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50UwogCiB2b2lkIFJlbmRlclN0eWxlOjpnZXRCb3Jk
ZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6
ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBj
b25zdAogewotICAgIHRvcExlZnQgPSBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsKLSAgICB0
b3BSaWdodCA9IHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsKKyAgICB0b3BMZWZ0ID0gSW50
U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRo
KCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWln
aHQoKSkpOworICAgIHRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0
KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdo
dCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7CiAgICAgCi0gICAgYm90dG9tTGVm
dCA9IHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpOwotICAgIGJvdHRvbVJpZ2h0ID0gc3Vy
cm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOworICAgIGJvdHRvbUxlZnQgPSBJbnRTaXplKHN1
cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSks
IHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdo
dCgpKSk7CisgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9t
UmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJv
dHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKIAogICAgIGNvbnN0
cmFpbkNvcm5lclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlp
Rm9yUmVjdFdpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYgaW5uZXJSZWN0LCB1bnNpZ25l
ZCBzaG9ydCB0b3BXaWR0aCwgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNo
b3J0IGxlZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgSW50U2l6ZSYgaW5uZXJU
b3BMZWZ0LCBJbnRTaXplJiBpbm5lclRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQs
IEludFNpemUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0CiB7Ci0gICAgaW5uZXJUb3BMZWZ0ID0g
c3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCk7Ci0gICAgaW5uZXJUb3BSaWdodCA9IHN1cnJvdW5k
LT5ib3JkZXIudG9wUmlnaHQoKTsKLSAgICBpbm5lckJvdHRvbUxlZnQgPSBzdXJyb3VuZC0+Ym9y
ZGVyLmJvdHRvbUxlZnQoKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0ID0gc3Vycm91bmQtPmJvcmRl
ci5ib3R0b21SaWdodCgpOworICAgIGlubmVyVG9wTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJv
cmRlci50b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJy
b3VuZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdo
dCgpKSk7CisgICAgaW5uZXJUb3BSaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BS
aWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJv
cmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsK
KyAgICBpbm5lckJvdHRvbUxlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVm
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRl
ci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwor
ICAgIGlubmVyQm90dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVm
dCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRl
ci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwog
CiAgICAgaW5uZXJUb3BMZWZ0LnNldFdpZHRoKG1heCgwLCBpbm5lclRvcExlZnQud2lkdGgoKSAt
IGxlZnRXaWR0aCkpOwogICAgIGlubmVyVG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIGlubmVyVG9w
TGVmdC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAppbmRleCBkZjFiMzQxLi43ZjVhMGRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTM5NCwxMCArMzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIu
aW1hZ2UoKTsgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyVG9wTGVmdFJhZGl1cygpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpOyB9Ci0gICAgY29uc3QgSW50
U2l6ZSYgYm9yZGVyVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9y
ZGVyLnRvcFJpZ2h0KCk7IH0KLSAgICBjb25zdCBJbnRTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCk7IH0KLSAg
ICBjb25zdCBJbnRTaXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUm
IGJvcmRlclRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRv
cExlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpOyB9CisgICAgY29uc3Qg
TGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRv
bVJpZ2h0KCk7IH0KICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KIAogICAgIHVuc2lnbmVkIHNob3J0
IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm9yZGVy
TGVmdFdpZHRoKCk7IH0KQEAgLTc3OCwxOCArNzc4LDIzIEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX2ltYWdlLCBiKSB9CiAKLSAgICB2b2lkIHNldEJvcmRlclRvcExlZnRS
YWRpdXMoY29uc3QgSW50U2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BM
ZWZ0LCBzKSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhjb25zdCBJbnRTaXpl
JiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBzKSB9Ci0gICAgdm9p
ZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgcykgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3Jk
ZXIubV9ib3R0b21SaWdodCwgcykgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhj
b25zdCBMZW5ndGhTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcExlZnQs
IHMpIH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKGNvbnN0IExlbmd0aFNpemUm
IHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIHMpIH0KKyAgICB2b2lk
IHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoY29uc3QgTGVuZ3RoU2l6ZSYgcykgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBzKSB9CisgICAgdm9pZCBzZXRCb3JkZXJC
b3R0b21SaWdodFJhZGl1cyhjb25zdCBMZW5ndGhTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBzKSB9CiAKLSAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhj
b25zdCBJbnRTaXplJiBzKQorICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKGNvbnN0IExlbmd0aFNp
emUmIHMpCiAgICAgewogICAgICAgICBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKHMpOwogICAgICAg
ICBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzKTsKICAgICAgICAgc2V0Qm9yZGVyQm90dG9tTGVm
dFJhZGl1cyhzKTsKICAgICAgICAgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMocyk7CiAgICAg
fQorICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKGNvbnN0IEludFNpemUmIHMpCisgICAgeworICAg
ICAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShMZW5ndGgocy53aWR0aCgpLCBGaXhlZCks
IExlbmd0aChzLmhlaWdodCgpLCBGaXhlZCkpKTsKKyAgICB9CisKICAgICAKICAgICB2b2lkIGdl
dEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiwgSW50U2l6ZSYgdG9wTGVmdCwgSW50
U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0
KSBjb25zdDsKICAgICB2b2lkIGdldElubmVyQm9yZGVyUmFkaWlGb3JSZWN0V2l0aEJvcmRlcldp
ZHRocyhjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgc2hvcnQgdG9wV2lkdGgsIApAQCAtMTEzMCw3
ICsxMTM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGluaXRpYWxCb3JkZXJDb2xsYXBz
ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIEVCb3JkZXJTdHlsZSBpbml0aWFsQm9y
ZGVyU3R5bGUoKSB7IHJldHVybiBCTk9ORTsgfQogICAgIHN0YXRpYyBOaW5lUGllY2VJbWFnZSBp
bml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGllY2VJbWFnZSgpOyB9Ci0gICAg
c3RhdGljIEludFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0dXJuIEludFNpemUoMCwg
MCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1
cm4gTGVuZ3RoU2l6ZSgpOyB9CiAgICAgc3RhdGljIEVDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlv
blNpZGUoKSB7IHJldHVybiBDQVBUT1A7IH0KICAgICBzdGF0aWMgRUNsZWFyIGluaXRpYWxDbGVh
cigpIHsgcmV0dXJuIENOT05FOyB9CiAgICAgc3RhdGljIFRleHREaXJlY3Rpb24gaW5pdGlhbERp
cmVjdGlvbigpIHsgcmV0dXJuIExUUjsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64895</attachid>
            <date>2010-08-19 13:41:17 -0700</date>
            <delta_ts>2010-08-20 00:09:59 -0700</delta_ts>
            <desc>Improved patch</desc>
            <filename>bug-38354-20100819224450.patch</filename>
            <type>text/plain</type>
            <size>26006</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTNhMGE1MDk1MDY0ZDljM2U2OTlkZDQxYTgyZWFlMThlODk0YjZlLi40YTY1M2Qy
YzMxZjJmM2Y3N2M2ZTljNzU0ZTM0OTI3N2Q1Y2QyM2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMTkgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgUGVyY2VudGFn
ZSBWYWx1ZXMgaW4gYm9yZGVyLXJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzgzNTQKKworICAgICAgICBBZGp1c3QgZXhpc3RpbmcgdGVzdCB0
byB0ZXN0IHBlcmNlbnRhZ2VzIGFzIHdlbGwgYXMKKyAgICAgICAgbWl4aW5nIGZpeGVkIHZhbHVl
cyB3aXRoIHBlcmNlbnRhZ2VzLgorCisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRp
dXMtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtcGFyc2luZy5odG1sOgorCiAyMDEwLTA4LTE0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTb21lIHRlc3QgcmVzdWx0cyBhcmUg
b25lIHBpeGVsIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSB4ODZfNjQgYW5kIGkzODYgYm90cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtcGFyc2luZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJz
aW5nLWV4cGVjdGVkLnR4dAppbmRleCA2ZGJlZjJjMmM0MGE2NDUyMzBlOTQwZjYzYTRjYmI5MjZl
NTM4ZjFhLi5lNDYxOGIwNjkxMTU3NjI5NTI5NzhmMDAyZGM0NzMzZjRkZjJhYWMzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5nLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJz
aW5nLWV4cGVjdGVkLnR4dApAQCAtMjgsNCArMjgsMzYgQEAgVGVzdGluZyBib3JkZXItcmFkaXVz
OiAvIDEwcHggMjBweCAzMHB4IDQwcHg7CiBTVUNDRVNTCiBUZXN0aW5nIGJvcmRlci1yYWRpdXM6
IDEwcHggLyAyMHB4IDMwcHggNDBweDsKIFNVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czog
MTAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgMjAlOworU1VDQ0VTUwor
VGVzdGluZyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwJSAyMCU7CitTVUNDRVNTCitUZXN0aW5n
IGJvcmRlci1yYWRpdXM6IDEwJSAyMCUgMzAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFk
aXVzOiAxMCUgMjAlIDMwJSA0MCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEw
JSAyMCUgMzAlIDQwJSA1MCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAy
MCUgMzAlIDQwJSAvIDE1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIw
JSAzMCUgNDAlIC8gMTUlIDI1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAl
IDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRp
dXM6IDEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIDQ1JTsKK1NVQ0NFU1MKK1Rlc3Rpbmcg
Ym9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUgNDUlIDU1JTsKK1NV
Q0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAz
NSUgNDUlIC87CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAyMCUgMzAlIDQw
JSAvIC8gMjUlIDM1JSA0NSU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IC8gMTAl
IDIwJSAzMCUgNDAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgLyAyMCUg
MzAlIDQwJTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIwcHg7CitTVUND
RVNTCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBh
cnNpbmcuaHRtbAppbmRleCA5ODc0NTkwNDU0NjI4ZTk2YTQ4MzQwN2Y5MDI1NjU3NzNiN2U5M2Zi
Li43NzJhMDIxOTZlYjA5MDAyZjJhZTg0NWJmNWNkZDhlZmQ1M2MwZTI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5nLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtcGFyc2luZy5odG1sCkBAIC00
Nyw0ICs0NywyMCBAQAogICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIs
ICIxMHB4IDIwcHggMzBweCA0MHB4IC8gLyAyNXB4IDM1cHggNDVweCIsIFsiMHB4IiwgIjBweCIs
ICIwcHgiLCAiMHB4Il0pOwogICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1
cyIsICIvIDEwcHggMjBweCAzMHB4IDQwcHgiLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJd
KTsKICAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTBweCAvIDIw
cHggMzBweCA0MHB4IiwgWyIxMHB4IDIwcHgiLCAiMTBweCAzMHB4IiwgIjEwcHggNDBweCIsICIx
MHB4IDMwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwg
IjEwJSIsIFsiMTAlIiwgIjEwJSIsICIxMCUiLCAiMTAlIl0pOworICAgIHRlc3RCb3JkZXJSYWRp
dXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAlIiwgWyIxMCUiLCAiMjAlIiwgIjEwJSIs
ICIyMCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCItd2Via2l0LWJvcmRlci1yYWRp
dXMiLCAiMTAlIDIwJSIsIFsiMTAlIDIwJSIsICIxMCUgMjAlIiwgIjEwJSAyMCUiLCAiMTAlIDIw
JSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIw
JSAzMCUiLCBbIjEwJSIsICIyMCUiLCAiMzAlIiwgIjIwJSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFk
aXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIiwgWyIxMCUiLCAiMjAl
IiwgIjMwJSIsICI0MCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFk
aXVzIiwgIjEwJSAyMCUgMzAlIDQwJSA1MCUiLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJd
KTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAz
MCUgNDAlIC8gMTUlIiwgWyIxMCUgMTUlIiwgIjIwJSAxNSUiLCAiMzAlIDE1JSIsICI0MCUgMTUl
Il0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAl
IDMwJSA0MCUgLyAxNSUgMjUlIiwgWyIxMCUgMTUlIiwgIjIwJSAyNSUiLCAiMzAlIDE1JSIsICI0
MCUgMjUlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIx
MCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSIsIFsiMTAlIDE1JSIsICIyMCUgMjUlIiwgIjMw
JSAzNSUiLCAiNDAlIDI1JSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1y
YWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUgNDUlIiwgWyIxMCUgMTUlIiwg
IjIwJSAyNSUiLCAiMzAlIDM1JSIsICI0MCUgNDUlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNW
YWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSA0NSUg
NTUlIiwgWyIwcHgiLCAiMHB4IiwgIjBweCIsICIwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1
c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIDQ1
JSAvIiwgWyIwcHgiLCAiMHB4IiwgIjBweCIsICIwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1
c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUgMzAlIDQwJSAvIC8gMjUlIDM1JSA0NSUi
LCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFs
dWUoImJvcmRlci1yYWRpdXMiLCAiLyAxMCUgMjAlIDMwJSA0MCUiLCBbIjBweCIsICIwcHgiLCAi
MHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMi
LCAiMTAlIC8gMjAlIDMwJSA0MCUiLCBbIjEwJSAyMCUiLCAiMTAlIDMwJSIsICIxMCUgNDAlIiwg
IjEwJSAzMCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwg
IjEwJSAyMHB4IiwgWyIxMCUiLCAiMjBweCIsICIxMCUiLCAiMjBweCJdKTsKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDc0MzU3OGY4NTU4YzBiOTVlMzQ3NzQ3ZGU1NTA3NWM4ZmNhNGZlLi42ZmQxZTVmZmI4YTNiZjI1
NjIwZjQ3ZmIwZTFlMmFlNjA4MGUyYjg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEwLTA4LTE5ICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIFBlcmNlbnRhZ2UgVmFsdWVzIGluIGJvcmRl
ci1yYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4MzU0CisKKyAgICAgICAgU3VwcG9ydCBwZXJjZW50YWdlIHZhbHVlcyBvbiB0aGUgYm9yZGVy
LXJhZGl1cyBmYW1pbHkKKyAgICAgICAgb2YgQ1NTIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpC
b3JkZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6Omhhc0JvcmRlclJhZGl1
cyk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjp0b3BMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckRhdGE6OnRvcFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRh
dGE6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym90dG9tUmln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3Jk
ZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJvcmRlclRvcExlZnRSYWRpdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJvcmRlclRvcFJpZ2h0UmFkaXVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpib3JkZXJCb3R0b21MZWZ0UmFkaXVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpib3JkZXJCb3R0b21SaWdodFJhZGl1
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Qm9yZGVyVG9wUmln
aHRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpzZXRCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6Omlu
aXRpYWxCb3JkZXJSYWRpdXMpOgorCiAyMDEwLTA4LTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
NjUzNzQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA5MGU0OTBhODgyNjgzMDFlOTQyYzljYjc2MmFmNzhjMjBjZmNmNTY3Li43MGQ5NDU1NTlkNTA0
MTVmZDI0YmJmMjA3MWVhYmIyNWM5NGUxZjc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTM4NCwxNCArMzg0LDIzIEBAIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3VycmVudENvbG9y
T3JWYWxpZENvCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xv
ci5yZ2IoKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShJbnRTaXplIHJhZGl1cykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cykKIHsKLSAgICBp
ZiAocmFkaXVzLndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKQotICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCk7Ci0KICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7
Ci0gICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLmhlaWdo
dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgaWYgKHJhZGl1cy53aWR0aCgp
ID09IHJhZGl1cy5oZWlnaHQoKSkgeworICAgICAgICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgp
ID09IFBlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgIH0KKyAgICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQpCisg
ICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0
aCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CisgICAg
ZWxzZQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRp
dXMud2lkdGgoKS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgaWYg
KHJhZGl1cy5oZWlnaHQoKS50eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLmhlaWdodCgpLnBlcmNlbnQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CisgICAgZWxzZQorICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMuaGVpZ2h0KCkudmFsdWUo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZDQ1YjNlY2JjNzc3ZjQyZGU3ZjhlNjAwZWU4Y2Q1NDY0
YzZhMGE5NC4uYmNjMjljNjhjOWYzMmViYjc0NjlhNzIzMTQ4MmNlNjNmYzIzNTlkMSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCkBAIC0xMjAxLDE0ICsxMjAxLDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21SaWdodFJhZGl1czogewogICAgICAgICBpZiAobnVtICE9IDEgJiYgbnVtICE9IDIpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAg
aWYgKCF2YWxpZFByaW1pdGl2ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZh
bHVlLT51bml0KTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1
ZTI7CiAgICAgICAgIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAgdmFsdWUgPSBtX3ZhbHVl
TGlzdC0+bmV4dCgpOwotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFs
dWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgICAg
IGlmICghdmFsaWRQcmltaXRpdmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgcGFyc2VkVmFsdWUyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+
ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CkBAIC0x
MjI0LDcgKzEyMjQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgog
ICAgICAgICByZXR1cm4gcGFyc2VCb3JkZXJSYWRpdXMocHJvcElkLCBpbXBvcnRhbnQpOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOworICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHBy
b3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1Mz
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKQEAgLTQzOTEsNyArNDM5MSw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAgICAgaWYgKGkgLSBpbmRleEFmdGVyU2xhc2ggPj0gNCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0
aCwgbV9zdHJpY3QpKQorICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQ
ZXJjZW50LCBtX3N0cmljdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHZhbHVlLT5mVmFsdWUsIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM+KHZhbHVlLT51bml0KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDc1NzU5NTcy
MmVhZWMzMGQ1Nzk0YWU3MDBlZTY5MmM0ZjczMWJmZWYuLjM2ZmRjOWRiZDZiOWRhMGY0MzllNGQ0
YTg1MTRmM2I0YzBkNjJkNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC00NzgyLDE3
ICs0NzgyLDI0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQs
IENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgaWYgKCFwYWlyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGludCB3aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJbnQo
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgaW50IGhl
aWdodCA9IHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgIHpvb21GYWN0b3IpOwotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdo
dCA8IDApCisgICAgICAgIExlbmd0aCB3aWR0aDsKKyAgICAgICAgTGVuZ3RoIGhlaWdodDsKKyAg
ICAgICAgaWYgKHBhaXItPmZpcnN0KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICB3aWR0aCA9IExlbmd0aChwYWlyLT5m
aXJzdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgd2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7CisgICAgICAgIGlm
IChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGhlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQo
KS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGhlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7CisgICAgICAgIGlmICh3
aWR0aC5jYWxjVmFsdWUoMTAwKSA8IDAgfHwgaGVpZ2h0LmNhbGNWYWx1ZSgxMDApIDwgMCkKICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHdpZHRoLmNhbGNWYWx1ZSgxMDApID09IDAp
CisgICAgICAgICAgICBoZWlnaHQgPSB3aWR0aDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVl
LgorICAgICAgICBlbHNlIGlmIChoZWlnaHQuY2FsY1ZhbHVlKDEwMCkgPT0gMCkKKyAgICAgICAg
ICAgIHdpZHRoID0gaGVpZ2h0OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCiAKLSAgICAg
ICAgaWYgKHdpZHRoID09IDApCi0gICAgICAgICAgICBoZWlnaHQgPSAwOyAvLyBOdWxsIG91dCB0
aGUgb3RoZXIgdmFsdWUuCi0gICAgICAgIGVsc2UgaWYgKGhlaWdodCA9PSAwKQotICAgICAgICAg
ICAgd2lkdGggPSAwOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCi0KLSAgICAgICAgSW50
U2l6ZSBzaXplKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBMZW5ndGhTaXplIHNpemUod2lkdGgs
IGhlaWdodCk7CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzOgogICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
cmRlclRvcExlZnRSYWRpdXMoc2l6ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAppbmRleCA0ZjMwNGUyZTRkODgxMTdhMmRmOTRlYmFkZDcwMzU5ZDU3M2UxMWMzLi4x
ZGYyZTk5MTY0OGZhMzRkODVmMDBiZTc5Y2RmYmVmMzYxNjU5NGRiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTY0NCwxMCArNjQ0LDEwIEBAIHZvaWQgQW5p
bWF0aW9uQmFzZTo6ZW5zdXJlUHJvcGVydHlNYXAoKQogICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblgsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWCwgJlJlbmRlclN0
eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5YKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6
OnNldFRyYW5zZm9ybU9yaWdpblkpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblosICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5aKSk7Ci0gICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJbnRTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcExlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cykpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBw
ZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgSW50U2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKTsKLSAgICAgICAgZ1Byb3BlcnR5V3Jh
cHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IEludFNpemUmPihDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSk7Ci0gICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJ
bnRTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxl
Ojpib3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21S
aWdodFJhZGl1cykpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9w
ZXJ0eVdyYXBwZXI8Y29uc3QgTGVuZ3RoU2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJh
ZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNl
dEJvcmRlclRvcExlZnRSYWRpdXMpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IExlbmd0aFNpemUmPihDU1NQcm9wZXJ0eUJvcmRl
clRvcFJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFJpZ2h0UmFkaXVzLCAmUmVu
ZGVyU3R5bGU6OnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKSk7CisgICAgICAgIGdQcm9wZXJ0eVdy
YXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBMZW5ndGhTaXplJj4oQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpOwor
ICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29u
c3QgTGVuZ3RoU2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5k
ZXJTdHlsZTo6Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChu
ZXcgUHJvcGVydHlXcmFwcGVyPEVWaXNpYmlsaXR5PihDU1NQcm9wZXJ0eVZpc2liaWxpdHksICZS
ZW5kZXJTdHlsZTo6dmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5KSk7CiAg
ICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxmbG9h
dD4oQ1NTUHJvcGVydHlab29tLCAmUmVuZGVyU3R5bGU6Onpvb20sICZSZW5kZXJTdHlsZTo6c2V0
Wm9vbSkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyN2VhYmNkZjBkNTVm
ZGE4NTgzMjMyMTJiNzVlZTRkMWEyNjQ0OWFjLi5jNThjZmNjMWFmZTQ4MjI0MmNhMWVjYTllNWZm
NDlmYzAyMjkxNGM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE0MjIsNyAr
MTQyMiw4IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAgICAgIHN0eWxlKCktPmdldEJv
eFNoYWRvd0hvcml6b250YWxFeHRlbnQoc2hhZG93TGVmdCwgc2hhZG93UmlnaHQpOwogCiAgICAg
ICAgIGludCBib3JkZXJSaWdodCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVy
UmlnaHQoKSA6IDA7Ci0gICAgICAgIGludCBib3JkZXJXaWR0aCA9IG1heCgtb3V0bGluZVN0eWxl
LT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJSaWdodCwgbWF4KHN0eWxlKCktPmJvcmRlclRv
cFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KS53aWR0aCgpKSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CisgICAgICAgIGludCBib3hXaWR0
aCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+d2lkdGgoKSA6IDA7CisgICAgICAgIGlu
dCBib3JkZXJXaWR0aCA9IG1heCgtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChi
b3JkZXJSaWdodCwgbWF4KHN0eWxlKCktPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKS5j
YWxjVmFsdWUoYm94V2lkdGgpLCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndp
ZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSkpKSArIG1heChvdywgc2hhZG93UmlnaHQpOwogICAg
ICAgICBJbnRSZWN0IHJpZ2h0UmVjdChuZXdPdXRsaW5lQm94LngoKSArIG1pbihuZXdPdXRsaW5l
Qm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBib3JkZXJXaWR0aCwKICAgICAg
ICAgICAgIG5ld091dGxpbmVCb3gueSgpLAogICAgICAgICAgICAgd2lkdGggKyBib3JkZXJXaWR0
aCwKQEAgLTE0NDAsNyArMTQ0MSw4IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJM
YXlvdXRJZk5lZWRlZChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAgICAg
IHN0eWxlKCktPmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90
dG9tKTsKIAogICAgICAgICBpbnQgYm9yZGVyQm90dG9tID0gaXNCb3goKSA/IHRvUmVuZGVyQm94
KHRoaXMpLT5ib3JkZXJCb3R0b20oKSA6IDA7Ci0gICAgICAgIGludCBib3JkZXJIZWlnaHQgPSBt
YXgoLW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyQm90dG9tLCBtYXgo
c3R5bGUoKS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLCBzdHlsZSgpLT5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpKSkpICsgbWF4KG93LCBzaGFkb3dCb3R0b20p
OworICAgICAgICBpbnQgYm94SGVpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5o
ZWlnaHQoKSA6IDA7CisgICAgICAgIGludCBib3JkZXJIZWlnaHQgPSBtYXgoLW91dGxpbmVTdHls
ZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyQm90dG9tLCBtYXgoc3R5bGUoKS0+Ym9yZGVy
Qm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShib3hIZWlnaHQpLCBzdHlsZSgp
LT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShib3hIZWlnaHQp
KSkpICsgbWF4KG93LCBzaGFkb3dCb3R0b20pOwogICAgICAgICBJbnRSZWN0IGJvdHRvbVJlY3Qo
bmV3T3V0bGluZUJveC54KCksCiAgICAgICAgICAgICBtaW4obmV3T3V0bGluZUJveC5ib3R0b20o
KSwgb2xkT3V0bGluZUJveC5ib3R0b20oKSkgLSBib3JkZXJIZWlnaHQsCiAgICAgICAgICAgICBt
YXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94LndpZHRoKCkpLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCmluZGV4IDk2Y2FmOTdjNGY0Njg2YTgxNjNmNTMzMGJm
N2NiOGQ1Y2M4NDdhNzAuLmQxNTFjNDBiZGVjMDFlYmNlOWMzODExMDU3ZDRiZGE1N2I5ZTgwODIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNk
ZWZpbmUgQm9yZGVyRGF0YV9oCiAKICNpbmNsdWRlICJCb3JkZXJWYWx1ZS5oIgotI2luY2x1ZGUg
IkludFNpemUuaCIKKyNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNl
SW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCb3JkZXJEYXRhIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHls
ZTsKIHB1YmxpYzoKKyAgICBCb3JkZXJEYXRhKCkgOiBtX3RvcExlZnQoTGVuZ3RoKDAsIEZpeGVk
KSwgTGVuZ3RoKDAsIEZpeGVkKSksIG1fdG9wUmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3Ro
KDAsIEZpeGVkKSkKKyAgICAgICAgICAgICAgICAgLCBtX2JvdHRvbUxlZnQoTGVuZ3RoKDAsIEZp
eGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSksIG1fYm90dG9tUmlnaHQoTGVuZ3RoKDAsIEZpeGVkKSwg
TGVuZ3RoKDAsIEZpeGVkKSkge30KICAgICBib29sIGhhc0JvcmRlcigpIGNvbnN0CiAgICAgewog
ICAgICAgICBib29sIGhhdmVJbWFnZSA9IG1faW1hZ2UuaGFzSW1hZ2UoKTsKQEAgLTQyLDEzICs0
NCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAobV90b3BMZWZ0LndpZHRoKCkgPiAwKQorICAgICAgICBpZiAobV90b3BM
ZWZ0LndpZHRoKCkuY2FsY1ZhbHVlKDEwMCkgPiAwKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGlmIChtX3RvcFJpZ2h0LndpZHRoKCkgPiAwKQorICAgICAgICBpZiAobV90b3BS
aWdodC53aWR0aCgpLmNhbGNWYWx1ZSgxMDApID4gMCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBpZiAobV9ib3R0b21MZWZ0LndpZHRoKCkgPiAwKQorICAgICAgICBpZiAobV9i
b3R0b21MZWZ0LndpZHRoKCkuY2FsY1ZhbHVlKDEwMCkgPiAwKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIGlmIChtX2JvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKQorICAgICAgICBp
ZiAobV9ib3R0b21SaWdodC53aWR0aCgpLmNhbGNWYWx1ZSgxMDApID4gMCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtOTksMTAgKzEw
MSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIAotICAgIGNvbnN0IEludFNpemUmIHRvcExl
ZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KLSAgICBjb25zdCBJbnRTaXplJiB0b3BS
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUmlnaHQ7IH0KLSAgICBjb25zdCBJbnRTaXplJiBi
b3R0b21MZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MZWZ0OyB9Ci0gICAgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CisgICAg
Y29uc3QgTGVuZ3RoU2l6ZSYgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQor
ICAgIGNvbnN0IExlbmd0aFNpemUmIHRvcFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdo
dDsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbUxlZnQoKSBjb25zdCB7IHJldHVybiBt
X2JvdHRvbUxlZnQ7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3R0b21SaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KICAgICAKIHByaXZhdGU6CiAgICAgQm9yZGVyVmFs
dWUgbV9sZWZ0OwpAQCAtMTEyLDEwICsxMTQsMTAgQEAgcHJpdmF0ZToKIAogICAgIE5pbmVQaWVj
ZUltYWdlIG1faW1hZ2U7CiAKLSAgICBJbnRTaXplIG1fdG9wTGVmdDsKLSAgICBJbnRTaXplIG1f
dG9wUmlnaHQ7Ci0gICAgSW50U2l6ZSBtX2JvdHRvbUxlZnQ7Ci0gICAgSW50U2l6ZSBtX2JvdHRv
bVJpZ2h0OworICAgIExlbmd0aFNpemUgbV90b3BMZWZ0OworICAgIExlbmd0aFNpemUgbV90b3BS
aWdodDsKKyAgICBMZW5ndGhTaXplIG1fYm90dG9tTGVmdDsKKyAgICBMZW5ndGhTaXplIG1fYm90
dG9tUmlnaHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNWE2NmM2NzE3ZjM3YzRiMDZiMWNhNDBkOGJkMTYx
MDBkMDk2ZjhjMC4uYjZmNmU3YWMyMzAzZTQwMmNmMGI3NzVmZjU1NzNmYWFhZTY5ZjJiZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNzg4LDIxICs3ODgsMjIg
QEAgc3RhdGljIHZvaWQgY29uc3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3Qm
IHIsIEludFNpemUmIHRvcExlZnQsIEludFMKIAogdm9pZCBSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVy
UmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmIHIsIEludFNpemUmIHRvcExlZnQsIEludFNpemUm
IHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0b21SaWdodCkgY29u
c3QKIHsKLSAgICB0b3BMZWZ0ID0gc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCk7Ci0gICAgdG9w
UmlnaHQgPSBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCk7CisgICAgdG9wTGVmdCA9IEludFNp
emUoc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgp
KSwgc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0
KCkpKTsKKyAgICB0b3BSaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgp
LndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQo
KS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwogICAgIAotICAgIGJvdHRvbUxlZnQg
PSBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsKLSAgICBib3R0b21SaWdodCA9IHN1cnJv
dW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKTsKKyAgICBib3R0b21MZWZ0ID0gSW50U2l6ZShzdXJy
b3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBz
dXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQo
KSkpOworICAgIGJvdHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJp
Z2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0
b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7CiAKICAgICBjb25zdHJh
aW5Db3JuZXJSYWRpaUZvclJlY3QociwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJv
dHRvbVJpZ2h0KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Z2V0SW5uZXJCb3JkZXJSYWRpaUZv
clJlY3RXaXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmIGlubmVyUmVjdCwgdW5zaWduZWQg
c2hvcnQgdG9wV2lkdGgsIHVuc2lnbmVkIHNob3J0IGJvdHRvbVdpZHRoLCB1bnNpZ25lZCBzaG9y
dCBsZWZ0V2lkdGgsIHVuc2lnbmVkIHNob3J0IHJpZ2h0V2lkdGgsIEludFNpemUmIGlubmVyVG9w
TGVmdCwgSW50U2l6ZSYgaW5uZXJUb3BSaWdodCwgSW50U2l6ZSYgaW5uZXJCb3R0b21MZWZ0LCBJ
bnRTaXplJiBpbm5lckJvdHRvbVJpZ2h0KSBjb25zdAogewotICAgIGlubmVyVG9wTGVmdCA9IHN1
cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpOwotICAgIGlubmVyVG9wUmlnaHQgPSBzdXJyb3VuZC0+
Ym9yZGVyLnRvcFJpZ2h0KCk7Ci0gICAgaW5uZXJCb3R0b21MZWZ0ID0gc3Vycm91bmQtPmJvcmRl
ci5ib3R0b21MZWZ0KCk7Ci0gICAgaW5uZXJCb3R0b21SaWdodCA9IHN1cnJvdW5kLT5ib3JkZXIu
Ym90dG9tUmlnaHQoKTsKKyAgICBpbm5lclRvcExlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3Jk
ZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91
bmQtPmJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQo
KSkpOworICAgIGlubmVyVG9wUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmln
aHQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3Jk
ZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7Cisg
ICAgaW5uZXJCb3R0b21MZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQo
KS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIu
Ym90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKKyAg
ICBpbm5lckJvdHRvbVJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0
KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVy
LmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOwor
CiAKICAgICBpbm5lclRvcExlZnQuc2V0V2lkdGgobWF4KDAsIGlubmVyVG9wTGVmdC53aWR0aCgp
IC0gbGVmdFdpZHRoKSk7CiAgICAgaW5uZXJUb3BMZWZ0LnNldEhlaWdodChtYXgoMCwgaW5uZXJU
b3BMZWZ0LmhlaWdodCgpIC0gdG9wV2lkdGgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCmluZGV4IGRmMWIzNDEwMjE5YWYzOTNhNDIzMDZiOTY0OWExOWY5MGZhM2Q5MGIuLmFl
OGY0Y2RiYzVjYTMyMTdlNzUyMTczZGNjMDA3N2QyNDllYjliZTUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzk0LDEwICszOTQsMTAgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgTmluZVBpZWNlSW1hZ2UmIGJvcmRlckltYWdlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci5pbWFnZSgpOyB9CiAKLSAgICBjb25zdCBJbnRTaXplJiBib3JkZXJUb3BMZWZ0
UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0KCk7IH0KLSAg
ICBjb25zdCBJbnRTaXplJiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsgfQotICAgIGNvbnN0IEludFNpemUmIGJvcmRlckJv
dHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxl
ZnQoKTsgfQotICAgIGNvbnN0IEludFNpemUmIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdodCgpOyB9CisgICAgY29uc3Qg
TGVuZ3RoU2l6ZSYgYm9yZGVyVG9wTGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIudG9wTGVmdCgpOyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyVG9wUmln
aHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhT
aXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tUmlnaHQoKTsgfQogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5oYXNCb3JkZXJSYWRpdXMoKTsgfQogCiAgICAgdW5z
aWduZWQgc2hvcnQgYm9yZGVyTGVmdFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci5ib3JkZXJMZWZ0V2lkdGgoKTsgfQpAQCAtNzc4LDE4ICs3NzgsMjMgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1faW1hZ2UsIGIpIH0KIAotICAgIHZvaWQgc2V0Qm9y
ZGVyVG9wTGVmdFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX3RvcExlZnQsIHMpIH0KLSAgICB2b2lkIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKGNv
bnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIHMp
IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBzKSB9Ci0gICAgdm9pZCBz
ZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIoc3Vy
cm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBzKSB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BM
ZWZ0UmFkaXVzKGNvbnN0IExlbmd0aFNpemUmIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wTGVmdCwgcykgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoY29uc3Qg
TGVuZ3RoU2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BSaWdodCwgcykg
fQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhjb25zdCBMZW5ndGhTaXplJiBz
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIHMpIH0KKyAgICB2b2lk
IHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKGNvbnN0IExlbmd0aFNpemUmIHMpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIHMpIH0KIAotICAgIHZvaWQgc2V0Qm9y
ZGVyUmFkaXVzKGNvbnN0IEludFNpemUmIHMpCisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoY29u
c3QgTGVuZ3RoU2l6ZSYgcykKICAgICB7CiAgICAgICAgIHNldEJvcmRlclRvcExlZnRSYWRpdXMo
cyk7CiAgICAgICAgIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKHMpOwogICAgICAgICBzZXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKHMpOwogICAgICAgICBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1
cyhzKTsKICAgICB9CisgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykK
KyAgICB7CisgICAgICAgIHNldEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRo
KCksIEZpeGVkKSwgTGVuZ3RoKHMuaGVpZ2h0KCksIEZpeGVkKSkpOworICAgIH0KKwogICAgIAog
ICAgIHZvaWQgZ2V0Qm9yZGVyUmFkaWlGb3JSZWN0KGNvbnN0IEludFJlY3QmLCBJbnRTaXplJiB0
b3BMZWZ0LCBJbnRTaXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYg
Ym90dG9tUmlnaHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0SW5uZXJCb3JkZXJSYWRpaUZvclJlY3RX
aXRoQm9yZGVyV2lkdGhzKGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwg
CkBAIC0xMTMwLDcgKzExMzUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbEJv
cmRlckNvbGxhcHNlKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgRUJvcmRlclN0eWxl
IGluaXRpYWxCb3JkZXJTdHlsZSgpIHsgcmV0dXJuIEJOT05FOyB9CiAgICAgc3RhdGljIE5pbmVQ
aWVjZUltYWdlIGluaXRpYWxOaW5lUGllY2VJbWFnZSgpIHsgcmV0dXJuIE5pbmVQaWVjZUltYWdl
KCk7IH0KLSAgICBzdGF0aWMgSW50U2l6ZSBpbml0aWFsQm9yZGVyUmFkaXVzKCkgeyByZXR1cm4g
SW50U2l6ZSgwLCAwKTsgfQorICAgIHN0YXRpYyBMZW5ndGhTaXplIGluaXRpYWxCb3JkZXJSYWRp
dXMoKSB7IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhl
ZCkpOyB9CiAgICAgc3RhdGljIEVDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7IHJl
dHVybiBDQVBUT1A7IH0KICAgICBzdGF0aWMgRUNsZWFyIGluaXRpYWxDbGVhcigpIHsgcmV0dXJu
IENOT05FOyB9CiAgICAgc3RhdGljIFRleHREaXJlY3Rpb24gaW5pdGlhbERpcmVjdGlvbigpIHsg
cmV0dXJuIExUUjsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64930</attachid>
            <date>2010-08-20 00:10:07 -0700</date>
            <delta_ts>2010-08-22 13:12:58 -0700</delta_ts>
            <desc>Fixed style issues</desc>
            <filename>bug-38354-20100820091341.patch</filename>
            <type>text/plain</type>
            <size>26002</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMTNhMGE1MDk1MDY0ZDljM2U2OTlkZDQxYTgyZWFlMThlODk0YjZlLi40YTY1M2Qy
YzMxZjJmM2Y3N2M2ZTljNzU0ZTM0OTI3N2Q1Y2QyM2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMTkgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgUGVyY2VudGFn
ZSBWYWx1ZXMgaW4gYm9yZGVyLXJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzgzNTQKKworICAgICAgICBBZGp1c3QgZXhpc3RpbmcgdGVzdCB0
byB0ZXN0IHBlcmNlbnRhZ2VzIGFzIHdlbGwgYXMKKyAgICAgICAgbWl4aW5nIGZpeGVkIHZhbHVl
cyB3aXRoIHBlcmNlbnRhZ2VzLgorCisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRp
dXMtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtcGFyc2luZy5odG1sOgorCiAyMDEwLTA4LTE0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTb21lIHRlc3QgcmVzdWx0cyBhcmUg
b25lIHBpeGVsIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSB4ODZfNjQgYW5kIGkzODYgYm90cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtcGFyc2luZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJz
aW5nLWV4cGVjdGVkLnR4dAppbmRleCA2ZGJlZjJjMmM0MGE2NDUyMzBlOTQwZjYzYTRjYmI5MjZl
NTM4ZjFhLi5lNDYxOGIwNjkxMTU3NjI5NTI5NzhmMDAyZGM0NzMzZjRkZjJhYWMzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5nLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJz
aW5nLWV4cGVjdGVkLnR4dApAQCAtMjgsNCArMjgsMzYgQEAgVGVzdGluZyBib3JkZXItcmFkaXVz
OiAvIDEwcHggMjBweCAzMHB4IDQwcHg7CiBTVUNDRVNTCiBUZXN0aW5nIGJvcmRlci1yYWRpdXM6
IDEwcHggLyAyMHB4IDMwcHggNDBweDsKIFNVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czog
MTAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgMjAlOworU1VDQ0VTUwor
VGVzdGluZyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwJSAyMCU7CitTVUNDRVNTCitUZXN0aW5n
IGJvcmRlci1yYWRpdXM6IDEwJSAyMCUgMzAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFk
aXVzOiAxMCUgMjAlIDMwJSA0MCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEw
JSAyMCUgMzAlIDQwJSA1MCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAy
MCUgMzAlIDQwJSAvIDE1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIw
JSAzMCUgNDAlIC8gMTUlIDI1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAl
IDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRp
dXM6IDEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIDQ1JTsKK1NVQ0NFU1MKK1Rlc3Rpbmcg
Ym9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUgNDUlIDU1JTsKK1NV
Q0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAz
NSUgNDUlIC87CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAyMCUgMzAlIDQw
JSAvIC8gMjUlIDM1JSA0NSU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IC8gMTAl
IDIwJSAzMCUgNDAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgLyAyMCUg
MzAlIDQwJTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIwcHg7CitTVUND
RVNTCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVz
LXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBh
cnNpbmcuaHRtbAppbmRleCA5ODc0NTkwNDU0NjI4ZTk2YTQ4MzQwN2Y5MDI1NjU3NzNiN2U5M2Zi
Li43NzJhMDIxOTZlYjA5MDAyZjJhZTg0NWJmNWNkZDhlZmQ1M2MwZTI0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5nLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMtcGFyc2luZy5odG1sCkBAIC00
Nyw0ICs0NywyMCBAQAogICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIs
ICIxMHB4IDIwcHggMzBweCA0MHB4IC8gLyAyNXB4IDM1cHggNDVweCIsIFsiMHB4IiwgIjBweCIs
ICIwcHgiLCAiMHB4Il0pOwogICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1
cyIsICIvIDEwcHggMjBweCAzMHB4IDQwcHgiLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJd
KTsKICAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTBweCAvIDIw
cHggMzBweCA0MHB4IiwgWyIxMHB4IDIwcHgiLCAiMTBweCAzMHB4IiwgIjEwcHggNDBweCIsICIx
MHB4IDMwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwg
IjEwJSIsIFsiMTAlIiwgIjEwJSIsICIxMCUiLCAiMTAlIl0pOworICAgIHRlc3RCb3JkZXJSYWRp
dXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAlIiwgWyIxMCUiLCAiMjAlIiwgIjEwJSIs
ICIyMCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCItd2Via2l0LWJvcmRlci1yYWRp
dXMiLCAiMTAlIDIwJSIsIFsiMTAlIDIwJSIsICIxMCUgMjAlIiwgIjEwJSAyMCUiLCAiMTAlIDIw
JSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIw
JSAzMCUiLCBbIjEwJSIsICIyMCUiLCAiMzAlIiwgIjIwJSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFk
aXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIiwgWyIxMCUiLCAiMjAl
IiwgIjMwJSIsICI0MCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFk
aXVzIiwgIjEwJSAyMCUgMzAlIDQwJSA1MCUiLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJd
KTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAz
MCUgNDAlIC8gMTUlIiwgWyIxMCUgMTUlIiwgIjIwJSAxNSUiLCAiMzAlIDE1JSIsICI0MCUgMTUl
Il0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAl
IDMwJSA0MCUgLyAxNSUgMjUlIiwgWyIxMCUgMTUlIiwgIjIwJSAyNSUiLCAiMzAlIDE1JSIsICI0
MCUgMjUlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIx
MCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSIsIFsiMTAlIDE1JSIsICIyMCUgMjUlIiwgIjMw
JSAzNSUiLCAiNDAlIDI1JSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1y
YWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUgNDUlIiwgWyIxMCUgMTUlIiwg
IjIwJSAyNSUiLCAiMzAlIDM1JSIsICI0MCUgNDUlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNW
YWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSA0NSUg
NTUlIiwgWyIwcHgiLCAiMHB4IiwgIjBweCIsICIwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1
c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIDQ1
JSAvIiwgWyIwcHgiLCAiMHB4IiwgIjBweCIsICIwcHgiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1
c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUgMzAlIDQwJSAvIC8gMjUlIDM1JSA0NSUi
LCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFs
dWUoImJvcmRlci1yYWRpdXMiLCAiLyAxMCUgMjAlIDMwJSA0MCUiLCBbIjBweCIsICIwcHgiLCAi
MHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMi
LCAiMTAlIC8gMjAlIDMwJSA0MCUiLCBbIjEwJSAyMCUiLCAiMTAlIDMwJSIsICIxMCUgNDAlIiwg
IjEwJSAzMCUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwg
IjEwJSAyMHB4IiwgWyIxMCUiLCAiMjBweCIsICIxMCUiLCAiMjBweCJdKTsKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDc0MzU3OGY4NTU4YzBiOTVlMzQ3NzQ3ZGU1NTA3NWM4ZmNhNGZlLi42ZmQxZTVmZmI4YTNiZjI1
NjIwZjQ3ZmIwZTFlMmFlNjA4MGUyYjg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEwLTA4LTE5ICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIFBlcmNlbnRhZ2UgVmFsdWVzIGluIGJvcmRl
ci1yYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM4MzU0CisKKyAgICAgICAgU3VwcG9ydCBwZXJjZW50YWdlIHZhbHVlcyBvbiB0aGUgYm9yZGVy
LXJhZGl1cyBmYW1pbHkKKyAgICAgICAgb2YgQ1NTIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmVuc3VyZVByb3BlcnR5TWFwKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9Cb3JkZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjpC
b3JkZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6Omhhc0JvcmRlclJhZGl1
cyk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJEYXRhOjp0b3BMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckRhdGE6OnRvcFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRh
dGE6OmJvdHRvbUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym90dG9tUmln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z2V0Qm9yZGVyUmFkaWlGb3JSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhCb3Jk
ZXJXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJvcmRlclRvcExlZnRSYWRpdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJvcmRlclRvcFJpZ2h0UmFkaXVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpib3JkZXJCb3R0b21MZWZ0UmFkaXVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpib3JkZXJCb3R0b21SaWdodFJhZGl1
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0Qm9yZGVyVG9wUmln
aHRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpzZXRCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6Omlu
aXRpYWxCb3JkZXJSYWRpdXMpOgorCiAyMDEwLTA4LTE0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
NjUzNzQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA5MGU0OTBhODgyNjgzMDFlOTQyYzljYjc2MmFmNzhjMjBjZmNmNTY3Li42OTg4ZDc0MGUxNWEz
MDgxZTc3NTlkZTEyMDBlMTcxYzgyNTdhZjM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTM4NCwxNCArMzg0LDIyIEBAIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3VycmVudENvbG9y
T3JWYWxpZENvCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihjb2xv
ci5yZ2IoKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZShJbnRTaXplIHJhZGl1cykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShMZW5ndGhTaXplIHJhZGl1cykKIHsKLSAgICBp
ZiAocmFkaXVzLndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKQotICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCk7Ci0KICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7
Ci0gICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLmhlaWdo
dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgaWYgKHJhZGl1cy53aWR0aCgp
ID09IHJhZGl1cy5oZWlnaHQoKSkgeworICAgICAgICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgp
ID09IFBlcmNlbnQpCisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSk7CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53
aWR0aCgpLnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIH0KKyAgICBp
ZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQpCisgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnBlcmNlbnQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CisgICAgZWxzZQorICAgICAgICBsaXN0
LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMud2lkdGgoKS52YWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgaWYgKHJhZGl1cy5oZWlnaHQoKS50
eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocmFkaXVzLmhlaWdodCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKSk7CisgICAgZWxzZQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMuaGVpZ2h0KCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCkpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
aW5kZXggZDQ1YjNlY2JjNzc3ZjQyZGU3ZjhlNjAwZWU4Y2Q1NDY0YzZhMGE5NC4uYmNjMjljNjhj
OWYzMmViYjc0NjlhNzIzMTQ4MmNlNjNmYzIzNTlkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMjAxLDE0
ICsxMjAxLDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czog
ewogICAgICAgICBpZiAobnVtICE9IDEgJiYgbnVtICE9IDIpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
LCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgaWYgKCF2YWxpZFByaW1pdGl2
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5m
VmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKICAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTI7CiAgICAgICAgIGlmIChu
dW0gPT0gMikgewogICAgICAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOwotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3Ry
aWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgICAgIGlmICghdmFsaWRQcmltaXRp
dmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcGFyc2VkVmFs
dWUyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgogICAgICAgICByZXR1cm4gcGFy
c2VCb3JkZXJSYWRpdXMocHJvcElkLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlP
dXRsaW5lT2Zmc2V0OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCwgbV9zdHJpY3QpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5LCBkcm9wcGVkIGlu
IENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFNoYWRvdzoKQEAgLTQzOTEsNyArNDM5MSw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAg
aWYgKGkgLSBpbmRleEFmdGVyU2xhc2ggPj0gNCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpKQorICAg
ICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByYWRpdXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUs
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbHVlLT51bml0KSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDc1NzU5NTcyMmVhZWMzMGQ1Nzk0YWU3MDBl
ZTY5MmM0ZjczMWJmZWYuLjFlOGI3OWUxY2U2NjA4NmQ5Nzg5ZTg0ZjY5ZDEwMTkxY2U5OWE5MzQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC00NzgyLDE3ICs0NzgyLDI2IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkK
ICAgICAgICAgaWYgKCFwYWlyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGludCB3
aWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgaW50IGhlaWdodCA9IHBhaXItPnNlY29u
ZCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgIHpvb21G
YWN0b3IpOworICAgICAgICBMZW5ndGggcmFkaXVzV2lkdGg7CisgICAgICAgIExlbmd0aCByYWRp
dXNIZWlnaHQ7CisgICAgICAgIGlmIChwYWlyLT5maXJzdCgpLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgcmFkaXVzV2lk
dGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKHBhaXItPmZpcnN0
KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKSwgRml4ZWQpOworICAgICAgICBpZiAocGFpci0+c2Vjb25kKCktPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICByYWRp
dXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFp
ci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKSwgRml4ZWQpOworICAgICAgICBpbnQgd2lkdGggPSByYWRpdXNXaWR0aC5j
YWxjVmFsdWUoMCk7CisgICAgICAgIGludCBoZWlnaHQgPSByYWRpdXNIZWlnaHQuY2FsY1ZhbHVl
KDApOwogICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCiAgICAgICAgICAgICBy
ZXR1cm47Ci0KICAgICAgICAgaWYgKHdpZHRoID09IDApCi0gICAgICAgICAgICBoZWlnaHQgPSAw
OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCisgICAgICAgICAgICByYWRpdXNIZWlnaHQg
PSByYWRpdXNXaWR0aDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgogICAgICAgICBlbHNl
IGlmIChoZWlnaHQgPT0gMCkKLSAgICAgICAgICAgIHdpZHRoID0gMDsgLy8gTnVsbCBvdXQgdGhl
IG90aGVyIHZhbHVlLgorICAgICAgICAgICAgcmFkaXVzV2lkdGggPSByYWRpdXNIZWlnaHQ7IC8v
IE51bGwgb3V0IHRoZSBvdGhlciB2YWx1ZS4KIAotICAgICAgICBJbnRTaXplIHNpemUod2lkdGgs
IGhlaWdodCk7CisgICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVp
Z2h0KTsKICAgICAgICAgc3dpdGNoIChpZCkgewogICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcExlZnRSYWRpdXM6CiAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVy
VG9wTGVmdFJhZGl1cyhzaXplKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCmluZGV4IDRmMzA0ZTJlNGQ4ODExN2EyZGY5NGViYWRkNzAzNTlkNTczZTExYzMuLjFkZjJl
OTkxNjQ4ZmEzNGQ4NWYwMGJlNzljZGZiZWYzNjE2NTk0ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNjQ0LDEwICs2NDQsMTAgQEAgdm9pZCBBbmltYXRp
b25CYXNlOjplbnN1cmVQcm9wZXJ0eU1hcCgpCiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWCwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6
OnNldFRyYW5zZm9ybU9yaWdpblgpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblksICZSZW5kZXJTdHlsZTo6c2V0
VHJhbnNmb3JtT3JpZ2luWSkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WiwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5z
Zm9ybU9yaWdpblopKTsKLSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJv
cGVydHlXcmFwcGVyPGNvbnN0IEludFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJUb3BMZWZ0UmFkaXVzKSk7Ci0gICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQo
bmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJbnRTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BSaWdodFJhZGl1cywgJlJlbmRlclN0
eWxlOjpzZXRCb3JkZXJUb3BSaWdodFJhZGl1cykpOwotICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgSW50U2l6ZSY+KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21MZWZ0UmFk
aXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKTsKLSAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IEludFNp
emUmPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5
V3JhcHBlcjxjb25zdCBMZW5ndGhTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVz
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcExlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyVG9wTGVmdFJhZGl1cykpOworICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5l
dyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgTGVuZ3RoU2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVyVG9w
UmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJT
dHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBl
cnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IExlbmd0aFNpemUmPihDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSk7CisgICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBM
ZW5ndGhTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0
b21SaWdodFJhZGl1cykpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQ
cm9wZXJ0eVdyYXBwZXI8RVZpc2liaWxpdHk+KENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgJlJlbmRl
clN0eWxlOjp2aXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnNldFZpc2liaWxpdHkpKTsKICAgICAg
ICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihD
U1NQcm9wZXJ0eVpvb20sICZSZW5kZXJTdHlsZTo6em9vbSwgJlJlbmRlclN0eWxlOjpzZXRab29t
KSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDI3ZWFiY2RmMGQ1NWZkYTg1
ODMyMzIxMmI3NWVlNGQxYTI2NDQ5YWMuLmM1OGNmY2MxYWZlNDgyMjQyY2ExZWNhOWU1ZmY0OWZj
MDIyOTE0YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTQyMiw3ICsxNDIy
LDggQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAgICAgc3R5bGUoKS0+Z2V0Qm94U2hh
ZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAKICAgICAgICAg
aW50IGJvcmRlclJpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJSaWdo
dCgpIDogMDsKLSAgICAgICAgaW50IGJvcmRlcldpZHRoID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91
dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJpZ2h0LCBtYXgoc3R5bGUoKS0+Ym9yZGVyVG9wUmln
aHRSYWRpdXMoKS53aWR0aCgpLCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndp
ZHRoKCkpKSkgKyBtYXgob3csIHNoYWRvd1JpZ2h0KTsKKyAgICAgICAgaW50IGJveFdpZHRoID0g
aXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIDogMDsKKyAgICAgICAgaW50IGJv
cmRlcldpZHRoID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRl
clJpZ2h0LCBtYXgoc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLmNhbGNW
YWx1ZShib3hXaWR0aCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgo
KS5jYWxjVmFsdWUoYm94V2lkdGgpKSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CiAgICAgICAg
IEludFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5ld091dGxpbmVCb3gu
d2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGJvcmRlcldpZHRoLAogICAgICAgICAg
ICAgbmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGJvcmRlcldpZHRoLApA
QCAtMTQ0MCw3ICsxNDQxLDggQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91
dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAgICAgc3R5
bGUoKS0+Z2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93VG9wLCBzaGFkb3dCb3R0b20p
OwogCiAgICAgICAgIGludCBib3JkZXJCb3R0b20gPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhp
cyktPmJvcmRlckJvdHRvbSgpIDogMDsKLSAgICAgICAgaW50IGJvcmRlckhlaWdodCA9IG1heCgt
b3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heChzdHls
ZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHN0eWxlKCktPmJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7Cisg
ICAgICAgIGludCBib3hIZWlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmhlaWdo
dCgpIDogMDsKKyAgICAgICAgaW50IGJvcmRlckhlaWdodCA9IG1heCgtb3V0bGluZVN0eWxlLT5v
dXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heChzdHlsZSgpLT5ib3JkZXJCb3R0
b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdodCksIHN0eWxlKCktPmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdodCkpKSkg
KyBtYXgob3csIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIEludFJlY3QgYm90dG9tUmVjdChuZXdP
dXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIG1pbihuZXdPdXRsaW5lQm94LmJvdHRvbSgpLCBv
bGRPdXRsaW5lQm94LmJvdHRvbSgpKSAtIGJvcmRlckhlaWdodCwKICAgICAgICAgICAgIG1heChu
ZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSksCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggOTZjYWY5N2M0ZjQ2ODZhODE2M2Y1MzMwYmY3Y2I4
ZDVjYzg0N2E3MC4uZDE1MWM0MGJkZWMwMWViY2U5YzM4MTEwNTdkNGJkYTU3YjllODA4MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApAQCAtMjYsNyArMjYsNyBAQAogI2RlZmlu
ZSBCb3JkZXJEYXRhX2gKIAogI2luY2x1ZGUgIkJvcmRlclZhbHVlLmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFn
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw2ICszNCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEJvcmRlckRhdGEgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwog
cHVibGljOgorICAgIEJvcmRlckRhdGEoKSA6IG1fdG9wTGVmdChMZW5ndGgoMCwgRml4ZWQpLCBM
ZW5ndGgoMCwgRml4ZWQpKSwgbV90b3BSaWdodChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwg
Rml4ZWQpKQorICAgICAgICAgICAgICAgICAsIG1fYm90dG9tTGVmdChMZW5ndGgoMCwgRml4ZWQp
LCBMZW5ndGgoMCwgRml4ZWQpKSwgbV9ib3R0b21SaWdodChMZW5ndGgoMCwgRml4ZWQpLCBMZW5n
dGgoMCwgRml4ZWQpKSB7fQogICAgIGJvb2wgaGFzQm9yZGVyKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGJvb2wgaGF2ZUltYWdlID0gbV9pbWFnZS5oYXNJbWFnZSgpOwpAQCAtNDIsMTMgKzQ0LDEz
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmIChtX3RvcExlZnQud2lkdGgoKSA+IDApCisgICAgICAgIGlmIChtX3RvcExlZnQu
d2lkdGgoKS5jYWxjVmFsdWUoMTAwKSA+IDApCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgaWYgKG1fdG9wUmlnaHQud2lkdGgoKSA+IDApCisgICAgICAgIGlmIChtX3RvcFJpZ2h0
LndpZHRoKCkuY2FsY1ZhbHVlKDEwMCkgPiAwKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGlmIChtX2JvdHRvbUxlZnQud2lkdGgoKSA+IDApCisgICAgICAgIGlmIChtX2JvdHRv
bUxlZnQud2lkdGgoKS5jYWxjVmFsdWUoMTAwKSA+IDApCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgaWYgKG1fYm90dG9tUmlnaHQud2lkdGgoKSA+IDApCisgICAgICAgIGlmICht
X2JvdHRvbVJpZ2h0LndpZHRoKCkuY2FsY1ZhbHVlKDEwMCkgPiAwKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05OSwxMCArMTAxLDEw
IEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgCi0gICAgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQotICAgIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV90b3BSaWdodDsgfQotICAgIGNvbnN0IEludFNpemUmIGJvdHRv
bUxlZnQoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnQ7IH0KLSAgICBjb25zdCBJbnRTaXpl
JiBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tUmlnaHQ7IH0KKyAgICBjb25z
dCBMZW5ndGhTaXplJiB0b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9CisgICAg
Y29uc3QgTGVuZ3RoU2l6ZSYgdG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9
CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90
dG9tTGVmdDsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b21SaWdodDsgfQogICAgIAogcHJpdmF0ZToKICAgICBCb3JkZXJWYWx1ZSBt
X2xlZnQ7CkBAIC0xMTIsMTAgKzExNCwxMCBAQCBwcml2YXRlOgogCiAgICAgTmluZVBpZWNlSW1h
Z2UgbV9pbWFnZTsKIAotICAgIEludFNpemUgbV90b3BMZWZ0OwotICAgIEludFNpemUgbV90b3BS
aWdodDsKLSAgICBJbnRTaXplIG1fYm90dG9tTGVmdDsKLSAgICBJbnRTaXplIG1fYm90dG9tUmln
aHQ7CisgICAgTGVuZ3RoU2l6ZSBtX3RvcExlZnQ7CisgICAgTGVuZ3RoU2l6ZSBtX3RvcFJpZ2h0
OworICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0OworICAgIExlbmd0aFNpemUgbV9ib3R0b21S
aWdodDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAppbmRleCA1YTY2YzY3MTdmMzdjNGIwNmIxY2E0MGQ4YmQxNjEwMGQw
OTZmOGMwLi5iNmY2ZTdhYzIzMDNlNDAyY2YwYjc3NWZmNTU3M2ZhYWFlNjlmMmJmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03ODgsMjEgKzc4OCwyMiBAQCBz
dGF0aWMgdm9pZCBjb25zdHJhaW5Db3JuZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwg
SW50U2l6ZSYgdG9wTGVmdCwgSW50UwogCiB2b2lkIFJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRp
aUZvclJlY3QoY29uc3QgSW50UmVjdCYgciwgSW50U2l6ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9w
UmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNpemUmIGJvdHRvbVJpZ2h0KSBjb25zdAog
ewotICAgIHRvcExlZnQgPSBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsKLSAgICB0b3BSaWdo
dCA9IHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsKKyAgICB0b3BMZWZ0ID0gSW50U2l6ZShz
dXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBz
dXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkp
OworICAgIHRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCkud2lk
dGgoKS5jYWxjVmFsdWUoci53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpLmhl
aWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7CiAgICAgCi0gICAgYm90dG9tTGVmdCA9IHN1
cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpOwotICAgIGJvdHRvbVJpZ2h0ID0gc3Vycm91bmQt
PmJvcmRlci5ib3R0b21SaWdodCgpOworICAgIGJvdHRvbUxlZnQgPSBJbnRTaXplKHN1cnJvdW5k
LT5ib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJv
dW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhlaWdodCgpKSk7
CisgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQo
KS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJp
Z2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKIAogICAgIGNvbnN0cmFpbkNv
cm5lclJhZGlpRm9yUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9t
UmlnaHQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVj
dFdpdGhCb3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYgaW5uZXJSZWN0LCB1bnNpZ25lZCBzaG9y
dCB0b3BXaWR0aCwgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxl
ZnRXaWR0aCwgdW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCwgSW50U2l6ZSYgaW5uZXJUb3BMZWZ0
LCBJbnRTaXplJiBpbm5lclRvcFJpZ2h0LCBJbnRTaXplJiBpbm5lckJvdHRvbUxlZnQsIEludFNp
emUmIGlubmVyQm90dG9tUmlnaHQpIGNvbnN0CiB7Ci0gICAgaW5uZXJUb3BMZWZ0ID0gc3Vycm91
bmQtPmJvcmRlci50b3BMZWZ0KCk7Ci0gICAgaW5uZXJUb3BSaWdodCA9IHN1cnJvdW5kLT5ib3Jk
ZXIudG9wUmlnaHQoKTsKLSAgICBpbm5lckJvdHRvbUxlZnQgPSBzdXJyb3VuZC0+Ym9yZGVyLmJv
dHRvbUxlZnQoKTsKLSAgICBpbm5lckJvdHRvbVJpZ2h0ID0gc3Vycm91bmQtPmJvcmRlci5ib3R0
b21SaWdodCgpOworICAgIGlubmVyVG9wTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50
b3BMZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+
Ym9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7
CisgICAgaW5uZXJUb3BSaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgp
LndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci50
b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkpKTsKKyAgICBp
bm5lckJvdHRvbUxlZnQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpLndp
ZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJvcmRlci5ib3R0
b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkpOworICAgIGlu
bmVyQm90dG9tUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKS53
aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIuYm90
dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7CisKIAog
ICAgIGlubmVyVG9wTGVmdC5zZXRXaWR0aChtYXgoMCwgaW5uZXJUb3BMZWZ0LndpZHRoKCkgLSBs
ZWZ0V2lkdGgpKTsKICAgICBpbm5lclRvcExlZnQuc2V0SGVpZ2h0KG1heCgwLCBpbm5lclRvcExl
ZnQuaGVpZ2h0KCkgLSB0b3BXaWR0aCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggZGYxYjM0MTAyMTlhZjM5M2E0MjMwNmI5NjQ5YTE5ZjkwZmEzZDkwYi4uYWU4ZjRj
ZGJjNWNhMzIxN2U3NTIxNzNkY2MwMDc3ZDI0OWViOWJlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC0zOTQsMTAgKzM5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBOaW5lUGllY2VJbWFnZSYgYm9yZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmltYWdlKCk7IH0KIAotICAgIGNvbnN0IEludFNpemUmIGJvcmRlclRvcExlZnRSYWRp
dXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsgfQotICAgIGNv
bnN0IEludFNpemUmIGJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPmJvcmRlci50b3BSaWdodCgpOyB9Ci0gICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm90dG9t
TGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgp
OyB9Ci0gICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5n
dGhTaXplJiBib3JkZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci50b3BMZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BSaWdodFJh
ZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsgfQorICAg
IGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUm
IGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5ib3R0b21SaWdodCgpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CiAKICAgICB1bnNpZ25l
ZCBzaG9ydCBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVy
LmJvcmRlckxlZnRXaWR0aCgpOyB9CkBAIC03NzgsMTggKzc3OCwyMyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBzZXRCb3JkZXJJbWFnZShjb25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9pbWFnZSwgYikgfQogCi0gICAgdm9pZCBzZXRCb3JkZXJU
b3BMZWZ0UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wTGVmdCwgcykgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoY29uc3Qg
SW50U2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BSaWdodCwgcykgfQot
ICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhjb25zdCBJbnRTaXplJiBzKSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIHMpIH0KLSAgICB2b2lkIHNldEJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKGNvbnN0IEludFNpemUmIHMpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIHMpIH0KKyAgICB2b2lkIHNldEJvcmRlclRvcExlZnRS
YWRpdXMoY29uc3QgTGVuZ3RoU2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90
b3BMZWZ0LCBzKSB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhjb25zdCBMZW5n
dGhTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBzKSB9Cisg
ICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKGNvbnN0IExlbmd0aFNpemUmIHMpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgcykgfQorICAgIHZvaWQgc2V0
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoY29uc3QgTGVuZ3RoU2l6ZSYgcykgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgcykgfQogCi0gICAgdm9pZCBzZXRCb3JkZXJS
YWRpdXMoY29uc3QgSW50U2l6ZSYgcykKKyAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhjb25zdCBM
ZW5ndGhTaXplJiBzKQogICAgIHsKICAgICAgICAgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhzKTsK
ICAgICAgICAgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMocyk7CiAgICAgICAgIHNldEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMocyk7CiAgICAgICAgIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKHMp
OwogICAgIH0KKyAgICB2b2lkIHNldEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJiBzKQorICAg
IHsKKyAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUoTGVuZ3RoKHMud2lkdGgoKSwg
Rml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQpKSk7CisgICAgfQorCiAgICAgCiAgICAg
dm9pZCBnZXRCb3JkZXJSYWRpaUZvclJlY3QoY29uc3QgSW50UmVjdCYsIEludFNpemUmIHRvcExl
ZnQsIEludFNpemUmIHRvcFJpZ2h0LCBJbnRTaXplJiBib3R0b21MZWZ0LCBJbnRTaXplJiBib3R0
b21SaWdodCkgY29uc3Q7CiAgICAgdm9pZCBnZXRJbm5lckJvcmRlclJhZGlpRm9yUmVjdFdpdGhC
b3JkZXJXaWR0aHMoY29uc3QgSW50UmVjdCYsIHVuc2lnbmVkIHNob3J0IHRvcFdpZHRoLCAKQEAg
LTExMzAsNyArMTEzNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsQm9yZGVy
Q29sbGFwc2UoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBFQm9yZGVyU3R5bGUgaW5p
dGlhbEJvcmRlclN0eWxlKCkgeyByZXR1cm4gQk5PTkU7IH0KICAgICBzdGF0aWMgTmluZVBpZWNl
SW1hZ2UgaW5pdGlhbE5pbmVQaWVjZUltYWdlKCkgeyByZXR1cm4gTmluZVBpZWNlSW1hZ2UoKTsg
fQotICAgIHN0YXRpYyBJbnRTaXplIGluaXRpYWxCb3JkZXJSYWRpdXMoKSB7IHJldHVybiBJbnRT
aXplKDAsIDApOyB9CisgICAgc3RhdGljIExlbmd0aFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygp
IHsgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7
IH0KICAgICBzdGF0aWMgRUNhcHRpb25TaWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0dXJu
IENBUFRPUDsgfQogICAgIHN0YXRpYyBFQ2xlYXIgaW5pdGlhbENsZWFyKCkgeyByZXR1cm4gQ05P
TkU7IH0KICAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1
cm4gTFRSOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65066</attachid>
            <date>2010-08-22 13:13:06 -0700</date>
            <delta_ts>2013-09-17 14:13:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38354-20100822221643.patch</filename>
            <type>text/plain</type>
            <size>26124</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZjBlMTQ2NDNjMjY1N2U2OWNlYmRkYTk1MzRlMzFlYzEwODZlYTIyLi41MmZmOTk2
YjhjNDc3NzRmMTNlODg5MDUxOTM0YjEwNDA1OTRmY2YyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMjIgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgUGVyY2VudGFn
ZSBWYWx1ZXMgaW4gYm9yZGVyLXJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzgzNTQKKworICAgICAgICBBZGp1c3QgZXhpc3RpbmcgdGVzdCB0
byB0ZXN0IHBlcmNlbnRhZ2VzIGFzIHdlbGwgYXMKKyAgICAgICAgbWl4aW5nIGZpeGVkIHZhbHVl
cyB3aXRoIHBlcmNlbnRhZ2VzLgorCisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRp
dXMtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ib3JkZXJzL2JvcmRlci1y
YWRpdXMtcGFyc2luZy5odG1sOgorCiAyMDEwLTA4LTIxICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBh
cnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IDZkYmVmMmMyYzQwYTY0NTIzMGU5NDBmNjNhNGNiYjky
NmU1MzhmMWEuLmU0NjE4YjA2OTExNTc2Mjk1Mjk3OGYwMDJkYzQ3MzNmNGRmMmFhYzMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBhcnNpbmctZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBh
cnNpbmctZXhwZWN0ZWQudHh0CkBAIC0yOCw0ICsyOCwzNiBAQCBUZXN0aW5nIGJvcmRlci1yYWRp
dXM6IC8gMTBweCAyMHB4IDMwcHggNDBweDsKIFNVQ0NFU1MKIFRlc3RpbmcgYm9yZGVyLXJhZGl1
czogMTBweCAvIDIwcHggMzBweCA0MHB4OwogU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVz
OiAxMCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAyMCU7CitTVUNDRVNT
CitUZXN0aW5nIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAlIDIwJTsKK1NVQ0NFU1MKK1Rlc3Rp
bmcgYm9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1y
YWRpdXM6IDEwJSAyMCUgMzAlIDQwJTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czog
MTAlIDIwJSAzMCUgNDAlIDUwJTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAl
IDIwJSAzMCUgNDAlIC8gMTUlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUg
MjAlIDMwJSA0MCUgLyAxNSUgMjUlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAx
MCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJh
ZGl1czogMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUgNDUlOworU1VDQ0VTUworVGVzdGlu
ZyBib3JkZXItcmFkaXVzOiAxMCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSA0NSUgNTUlOwor
U1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUl
IDM1JSA0NSUgLzsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogMTAlIDIwJSAzMCUg
NDAlIC8gLyAyNSUgMzUlIDQ1JTsKK1NVQ0NFU1MKK1Rlc3RpbmcgYm9yZGVyLXJhZGl1czogLyAx
MCUgMjAlIDMwJSA0MCU7CitTVUNDRVNTCitUZXN0aW5nIGJvcmRlci1yYWRpdXM6IDEwJSAvIDIw
JSAzMCUgNDAlOworU1VDQ0VTUworVGVzdGluZyBib3JkZXItcmFkaXVzOiAxMCUgMjBweDsKK1NV
Q0NFU1MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRp
dXMtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ib3JkZXJzL2JvcmRlci1yYWRpdXMt
cGFyc2luZy5odG1sCmluZGV4IDk4NzQ1OTA0NTQ2MjhlOTZhNDgzNDA3ZjkwMjU2NTc3M2I3ZTkz
ZmIuLjc3MmEwMjE5NmViMDkwMDJmMmFlODQ1YmY1Y2RkOGVmZDUzYzBlMjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvYm9yZGVycy9ib3JkZXItcmFkaXVzLXBhcnNpbmcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2JvcmRlcnMvYm9yZGVyLXJhZGl1cy1wYXJzaW5nLmh0bWwKQEAg
LTQ3LDQgKzQ3LDIwIEBACiAgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVz
IiwgIjEwcHggMjBweCAzMHB4IDQwcHggLyAvIDI1cHggMzVweCA0NXB4IiwgWyIwcHgiLCAiMHB4
IiwgIjBweCIsICIwcHgiXSk7CiAgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFk
aXVzIiwgIi8gMTBweCAyMHB4IDMwcHggNDBweCIsIFsiMHB4IiwgIjBweCIsICIwcHgiLCAiMHB4
Il0pOwogICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMHB4IC8g
MjBweCAzMHB4IDQwcHgiLCBbIjEwcHggMjBweCIsICIxMHB4IDMwcHgiLCAiMTBweCA0MHB4Iiwg
IjEwcHggMzBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMi
LCAiMTAlIiwgWyIxMCUiLCAiMTAlIiwgIjEwJSIsICIxMCUiXSk7CisgICAgdGVzdEJvcmRlclJh
ZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUiLCBbIjEwJSIsICIyMCUiLCAiMTAl
IiwgIjIwJSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoIi13ZWJraXQtYm9yZGVyLXJh
ZGl1cyIsICIxMCUgMjAlIiwgWyIxMCUgMjAlIiwgIjEwJSAyMCUiLCAiMTAlIDIwJSIsICIxMCUg
MjAlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUg
MjAlIDMwJSIsIFsiMTAlIiwgIjIwJSIsICIzMCUiLCAiMjAlIl0pOworICAgIHRlc3RCb3JkZXJS
YWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAlIDMwJSA0MCUiLCBbIjEwJSIsICIy
MCUiLCAiMzAlIiwgIjQwJSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1y
YWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIDUwJSIsIFsiMHB4IiwgIjBweCIsICIwcHgiLCAiMHB4
Il0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIxMCUgMjAl
IDMwJSA0MCUgLyAxNSUiLCBbIjEwJSAxNSUiLCAiMjAlIDE1JSIsICIzMCUgMTUlIiwgIjQwJSAx
NSUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAy
MCUgMzAlIDQwJSAvIDE1JSAyNSUiLCBbIjEwJSAxNSUiLCAiMjAlIDI1JSIsICIzMCUgMTUlIiwg
IjQwJSAyNSUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwg
IjEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIiwgWyIxMCUgMTUlIiwgIjIwJSAyNSUiLCAi
MzAlIDM1JSIsICI0MCUgMjUlIl0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVy
LXJhZGl1cyIsICIxMCUgMjAlIDMwJSA0MCUgLyAxNSUgMjUlIDM1JSA0NSUiLCBbIjEwJSAxNSUi
LCAiMjAlIDI1JSIsICIzMCUgMzUlIiwgIjQwJSA0NSUiXSk7CisgICAgdGVzdEJvcmRlclJhZGl1
c1ZhbHVlKCJib3JkZXItcmFkaXVzIiwgIjEwJSAyMCUgMzAlIDQwJSAvIDE1JSAyNSUgMzUlIDQ1
JSA1NSUiLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFk
aXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIC8gMTUlIDI1JSAzNSUg
NDUlIC8iLCBbIjBweCIsICIwcHgiLCAiMHB4IiwgIjBweCJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFk
aXVzVmFsdWUoImJvcmRlci1yYWRpdXMiLCAiMTAlIDIwJSAzMCUgNDAlIC8gLyAyNSUgMzUlIDQ1
JSIsIFsiMHB4IiwgIjBweCIsICIwcHgiLCAiMHB4Il0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNW
YWx1ZSgiYm9yZGVyLXJhZGl1cyIsICIvIDEwJSAyMCUgMzAlIDQwJSIsIFsiMHB4IiwgIjBweCIs
ICIwcHgiLCAiMHB4Il0pOworICAgIHRlc3RCb3JkZXJSYWRpdXNWYWx1ZSgiYm9yZGVyLXJhZGl1
cyIsICIxMCUgLyAyMCUgMzAlIDQwJSIsIFsiMTAlIDIwJSIsICIxMCUgMzAlIiwgIjEwJSA0MCUi
LCAiMTAlIDMwJSJdKTsKKyAgICB0ZXN0Qm9yZGVyUmFkaXVzVmFsdWUoImJvcmRlci1yYWRpdXMi
LCAiMTAlIDIwcHgiLCBbIjEwJSIsICIyMHB4IiwgIjEwJSIsICIyMHB4Il0pOwogPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGQ5NGJmOWE1NTQ0NzkyMTJhM2Y2NzUyY2M0NDBkNzBjM2U1MDliNGQuLjg3YWQ2MWVhYWEzNmNj
MWJmNDFhMzYzN2Q2MzI3MjhkZWZiN2UyZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTAtMDgtMjIgIFJv
YiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgU3VwcG9ydCBmb3IgUGVyY2Vu
dGFnZSBWYWx1ZXMgaW4gYm9yZGVyLXJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgzNTQKKworICAgICAgICBTdXBwb3J0IHBlcmNlbnRhZ2Ug
dmFsdWVzIG9uIHRoZSBib3JkZXItcmFkaXVzIGZhbWlseQorICAgICAgICBvZiBDU1MgcHJvcGVy
dGllcy4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMpOgor
ICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZW5z
dXJlUHJvcGVydHlNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckRhdGE6OkJvcmRlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVy
RGF0YTo6aGFzQm9yZGVyUmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlckRhdGE6OnRv
cExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6dG9wUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Qm9yZGVyRGF0YTo6Ym90dG9tTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpC
b3JkZXJEYXRhOjpib3R0b21SaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRCb3JkZXJSYWRp
aUZvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldElubmVyQm9yZGVy
UmFkaWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Ym9yZGVy
VG9wTGVmdFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6Ym9yZGVy
VG9wUmlnaHRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdz
OjpzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjpzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmhlcml0ZWRGbGFnczo6c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEJvcmRlclJhZGl1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6aW5pdGlhbEJvcmRlclJhZGl1cyk6CisKIDIwMTAtMDgtMjIgIEFy
aXlhIEhpZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERp
cmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDkwZTQ5MGE4ODI2ODMwMWU5NDJjOWNiNzYyYWY3OGMyMGNmY2Y1NjcuLjY5ODhkNzQw
ZTE1YTMwODFlNzc1OWRlMTIwMGUxNzFjODI1N2FmMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzg0LDE0ICszODQsMjIgQEAgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjdXJyZW50
Q29sb3JPclZhbGlkQ28KICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9y
KGNvbG9yLnJnYigpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldEJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlKEludFNpemUgcmFkaXVzKQorc3RhdGljIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKExlbmd0aFNpemUgcmFkaXVzKQogewot
ICAgIGlmIChyYWRpdXMud2lkdGgoKSA9PSByYWRpdXMuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKLQogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLndpZHRoKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKLSAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyYWRpdXMu
aGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICBpZiAocmFkaXVzLndp
ZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7CisgICAgICAgIGlmIChyYWRpdXMud2lkdGgoKS50
eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKTsKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFk
aXVzLndpZHRoKCkudmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgfQor
ICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgbGlzdC0+
YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmFkaXVzLndpZHRoKCkucGVyY2VudCgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpKTsKKyAgICBlbHNlCisgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy53aWR0aCgpLnZh
bHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICBpZiAocmFkaXVzLmhlaWdo
dCgpLnR5cGUoKSA9PSBQZXJjZW50KQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShyYWRpdXMuaGVpZ2h0KCkucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpKTsKKyAgICBlbHNlCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJhZGl1cy5oZWlnaHQoKS52YWx1ZSgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKSk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAppbmRleCBhMDU5ZmZjNDRjYzA5OGExNzViZGRmZmM5MTgzMzg3NWM5M2EwMmVmLi5jNGY5
ZjYzOGZhOWNmODJkMmNmMGYwZGE4YzQ1Y2QyN2VjNWUwZTMzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTEy
MDEsMTQgKzEyMDEsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzOiB7CiAgICAgICAgIGlmIChudW0gIT0gMSAmJiBudW0gIT0gMikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGgsIG1fc3RyaWN0KTsKKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFs
dWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICBpZiAoIXZhbGlkUHJp
bWl0aXZlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFs
dWUtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwog
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMjsKICAgICAgICAg
aWYgKG51bSA9PSAyKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwg
bV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwogICAgICAgICAgICAgaWYgKCF2YWxpZFBy
aW1pdGl2ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBwYXJz
ZWRWYWx1ZTIgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKQEAgLTEyMjQsNyArMTIyNCw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6CiAgICAgICAgIHJldHVy
biBwYXJzZUJvcmRlclJhZGl1cyhwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoLCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6IC8vIENTUzIgcHJvcGVydHksIGRyb3Bw
ZWQgaW4gQ1NTMi4xLCBiYWNrIGluIENTUzMsIHNvIHRyZWF0IGFzIENTUzMKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OgpAQCAtNDQ5Miw3ICs0NDkyLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICBpZiAoaSAtIGluZGV4QWZ0ZXJTbGFzaCA+PSA0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmljdCkp
CisgICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3Ry
aWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJhZGl1cyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZW
YWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUtPnVu
aXQpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNGVlNDlkMDYxMmNjMjE0NzczOWU3
NGUzOGVkM2ZkZWU1YjEzMTViNy4uMDgzYzMyYTU0OTYxZGEyNjA0OGE5MWY5NWQxYzM2YTEwNTMw
ZTE3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQ3ODIsMTcgKzQ3ODIsMjggQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZh
bHVlKQogICAgICAgICBpZiAoIXBhaXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aW50IHdpZHRoID0gcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICBpbnQgaGVpZ2h0ID0gcGFpci0+
c2Vjb25kKCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAg
em9vbUZhY3Rvcik7CisgICAgICAgIExlbmd0aCByYWRpdXNXaWR0aDsKKyAgICAgICAgTGVuZ3Ro
IHJhZGl1c0hlaWdodDsKKyAgICAgICAgY29uc3QgaW50IGludE1heEZvckxlbmd0aCA9IDB4N2Zm
ZmZmZjsgLy8gbWF4IHZhbHVlIGZvciBhIDI4LWJpdCBpbnQKKyAgICAgICAgY29uc3QgaW50IGlu
dE1pbkZvckxlbmd0aCA9ICgtMHg3ZmZmZmZmIC0gMSk7IC8vIG1pbiB2YWx1ZSBmb3IgYSAyOC1i
aXQgaW50CisgICAgICAgIGlmIChwYWlyLT5maXJzdCgpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgcmFkaXVzV2lkdGgg
PSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JM
ZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJ
bnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSkpLCBGaXhlZCk7Cisg
ICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0
aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3Ro
LCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSksIEZpeGVkKTsKKyAgICAg
ICAgaW50IHdpZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUoKTsKKyAgICAgICAgaW50IGhlaWdo
dCA9IHJhZGl1c0hlaWdodC5yYXdWYWx1ZSgpOwogICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhl
aWdodCA8IDApCiAgICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgaWYgKHdpZHRoID09IDAp
Ci0gICAgICAgICAgICBoZWlnaHQgPSAwOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCisg
ICAgICAgICAgICByYWRpdXNIZWlnaHQgPSByYWRpdXNXaWR0aDsgLy8gTnVsbCBvdXQgdGhlIG90
aGVyIHZhbHVlLgogICAgICAgICBlbHNlIGlmIChoZWlnaHQgPT0gMCkKLSAgICAgICAgICAgIHdp
ZHRoID0gMDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgorICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSByYWRpdXNIZWlnaHQ7IC8vIE51bGwgb3V0IHRoZSBvdGhlciB2YWx1ZS4KIAotICAg
ICAgICBJbnRTaXplIHNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAgIExlbmd0aFNpemUgc2l6
ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKICAgICAgICAgc3dpdGNoIChpZCkgewogICAg
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6CiAgICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhzaXplKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDRmMzA0ZTJlNGQ4ODExN2EyZGY5NGVi
YWRkNzAzNTlkNTczZTExYzMuLjFkZjJlOTkxNjQ4ZmEzNGQ4NWYwMGJlNzljZGZiZWYzNjE2NTk0
ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNjQ0LDEw
ICs2NDQsMTAgQEAgdm9pZCBBbmltYXRpb25CYXNlOjplbnN1cmVQcm9wZXJ0eU1hcCgpCiAgICAg
ICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgJlJlbmRlclN0eWxlOjp0cmFuc2Zv
cm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdpblgpKTsKICAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9y
aWdpblksICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWSkpOwogICAgICAgICBnUHJv
cGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5a
LCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdpblopKTsKLSAgICAgICAgZ1Byb3BlcnR5
V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IEludFNpemUmPihDU1NQ
cm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wTGVmdFJh
ZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKSk7Ci0gICAgICAgIGdQ
cm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJbnRTaXpl
Jj4oQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJU
b3BSaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BSaWdodFJhZGl1cykpOwot
ICAgICAgICBnUHJvcGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29u
c3QgSW50U2l6ZSY+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMpKTsKLSAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJv
cGVydHlXcmFwcGVyPGNvbnN0IEludFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBw
ZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxjb25zdCBMZW5ndGhTaXplJj4oQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcExlZnRSYWRp
dXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cykpOworICAgICAgICBnUHJv
cGVydHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgTGVuZ3RoU2l6
ZSY+KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVy
VG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKTsK
KyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNv
bnN0IExlbmd0aFNpemUmPihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsICZSZW5k
ZXJTdHlsZTo6Ym9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxjb25zdCBMZW5ndGhTaXplJj4oQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21SaWdodFJhZGl1cywgJlJl
bmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykpOwogICAgICAgICBnUHJvcGVy
dHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8RVZpc2liaWxpdHk+KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6
OnNldFZpc2liaWxpdHkpKTsKICAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcg
UHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVpvb20sICZSZW5kZXJTdHlsZTo6em9v
bSwgJlJlbmRlclN0eWxlOjpzZXRab29tKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDI3ZWFiY2RmMGQ1NWZkYTg1ODMyMzIxMmI3NWVlNGQxYTI2NDQ5YWMuLmM1OGNmY2Mx
YWZlNDgyMjQyY2ExZWNhOWU1ZmY0OWZjMDIyOTE0YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTQyMiw3ICsxNDIyLDggQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRB
ZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAg
ICAgICAgc3R5bGUoKS0+Z2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3dMZWZ0LCBz
aGFkb3dSaWdodCk7CiAKICAgICAgICAgaW50IGJvcmRlclJpZ2h0ID0gaXNCb3goKSA/IHRvUmVu
ZGVyQm94KHRoaXMpLT5ib3JkZXJSaWdodCgpIDogMDsKLSAgICAgICAgaW50IGJvcmRlcldpZHRo
ID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJpZ2h0LCBt
YXgoc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBzdHlsZSgpLT5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkpKSkgKyBtYXgob3csIHNoYWRvd1JpZ2h0KTsK
KyAgICAgICAgaW50IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53aWR0
aCgpIDogMDsKKyAgICAgICAgaW50IGJvcmRlcldpZHRoID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91
dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJpZ2h0LCBtYXgoc3R5bGUoKS0+Ym9yZGVyVG9wUmln
aHRSYWRpdXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hXaWR0aCksIHN0eWxlKCktPmJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpKSkpICsgbWF4KG93
LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIEludFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gu
eCgpICsgbWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAt
IGJvcmRlcldpZHRoLAogICAgICAgICAgICAgbmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAg
ICB3aWR0aCArIGJvcmRlcldpZHRoLApAQCAtMTQ0MCw3ICsxNDQxLDggQEAgYm9vbCBSZW5kZXJP
YmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGEKICAgICAgICAgc3R5bGUoKS0+Z2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQo
c2hhZG93VG9wLCBzaGFkb3dCb3R0b20pOwogCiAgICAgICAgIGludCBib3JkZXJCb3R0b20gPSBp
c0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogMDsKLSAgICAgICAg
aW50IGJvcmRlckhlaWdodCA9IG1heCgtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1h
eChib3JkZXJCb3R0b20sIG1heChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVp
Z2h0KCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkpKSkgKyBt
YXgob3csIHNoYWRvd0JvdHRvbSk7CisgICAgICAgIGludCBib3hIZWlnaHQgPSBpc0JveCgpID8g
dG9SZW5kZXJCb3godGhpcyktPmhlaWdodCgpIDogMDsKKyAgICAgICAgaW50IGJvcmRlckhlaWdo
dCA9IG1heCgtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20s
IG1heChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVl
KGJveEhlaWdodCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCku
Y2FsY1ZhbHVlKGJveEhlaWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7CiAgICAgICAg
IEludFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIG1pbihu
ZXdPdXRsaW5lQm94LmJvdHRvbSgpLCBvbGRPdXRsaW5lQm94LmJvdHRvbSgpKSAtIGJvcmRlckhl
aWdodCwKICAgICAgICAgICAgIG1heChuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVC
b3gud2lkdGgoKSksCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJE
YXRhLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKaW5kZXggOTZjYWY5
N2M0ZjQ2ODZhODE2M2Y1MzMwYmY3Y2I4ZDVjYzg0N2E3MC4uMDBmOGU2NDAwMzc0MDFlODQ5ZDQx
ODI0NGRjZDBhMmIxYTlhYTAyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Qm9yZGVyRGF0YS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApA
QCAtMjYsNyArMjYsNyBAQAogI2RlZmluZSBCb3JkZXJEYXRhX2gKIAogI2luY2x1ZGUgIkJvcmRl
clZhbHVlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIK
ICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NCw2ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJvcmRlckRhdGEgewogZnJp
ZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgorICAgIEJvcmRlckRhdGEoKSA6IG1fdG9w
TGVmdChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKSwgbV90b3BSaWdodChMZW5n
dGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKQorICAgICAgICAgICAgICAgICAsIG1fYm90
dG9tTGVmdChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKSwgbV9ib3R0b21SaWdo
dChMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKSB7fQogICAgIGJvb2wgaGFzQm9y
ZGVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIGJvb2wgaGF2ZUltYWdlID0gbV9pbWFnZS5oYXNJ
bWFnZSgpOwpAQCAtNDIsMTMgKzQ0LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQm9yZGVy
UmFkaXVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3RvcExlZnQud2lkdGgoKSA+IDAp
CisgICAgICAgIGlmIChtX3RvcExlZnQud2lkdGgoKS5yYXdWYWx1ZSgpID4gMCkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAobV90b3BSaWdodC53aWR0aCgpID4gMCkKKyAg
ICAgICAgaWYgKG1fdG9wUmlnaHQud2lkdGgoKS5yYXdWYWx1ZSgpID4gMCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBpZiAobV9ib3R0b21MZWZ0LndpZHRoKCkgPiAwKQorICAg
ICAgICBpZiAobV9ib3R0b21MZWZ0LndpZHRoKCkucmF3VmFsdWUoKSA+IDApCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG1fYm90dG9tUmlnaHQud2lkdGgoKSA+IDApCisg
ICAgICAgIGlmIChtX2JvdHRvbVJpZ2h0LndpZHRoKCkucmF3VmFsdWUoKSA+IDApCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk5LDEw
ICsxMDEsMTAgQEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KICAgICAKLSAgICBjb25zdCBJbnRTaXplJiB0
b3BMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0OyB9Ci0gICAgY29uc3QgSW50U2l6ZSYg
dG9wUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3RvcFJpZ2h0OyB9Ci0gICAgY29uc3QgSW50U2l6
ZSYgYm90dG9tTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tTGVmdDsgfQotICAgIGNvbnN0
IEludFNpemUmIGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQor
ICAgIGNvbnN0IExlbmd0aFNpemUmIHRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7
IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiB0b3BSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9w
UmlnaHQ7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3R0b21MZWZ0KCkgY29uc3QgeyByZXR1
cm4gbV9ib3R0b21MZWZ0OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm90dG9tUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CiAgICAgCiBwcml2YXRlOgogICAgIEJvcmRl
clZhbHVlIG1fbGVmdDsKQEAgLTExMiwxMCArMTE0LDEwIEBAIHByaXZhdGU6CiAKICAgICBOaW5l
UGllY2VJbWFnZSBtX2ltYWdlOwogCi0gICAgSW50U2l6ZSBtX3RvcExlZnQ7Ci0gICAgSW50U2l6
ZSBtX3RvcFJpZ2h0OwotICAgIEludFNpemUgbV9ib3R0b21MZWZ0OwotICAgIEludFNpemUgbV9i
b3R0b21SaWdodDsKKyAgICBMZW5ndGhTaXplIG1fdG9wTGVmdDsKKyAgICBMZW5ndGhTaXplIG1f
dG9wUmlnaHQ7CisgICAgTGVuZ3RoU2l6ZSBtX2JvdHRvbUxlZnQ7CisgICAgTGVuZ3RoU2l6ZSBt
X2JvdHRvbVJpZ2h0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDVhNjZjNjcxN2YzN2M0YjA2YjFjYTQwZDhi
ZDE2MTAwZDA5NmY4YzAuLmI2ZjZlN2FjMjMwM2U0MDJjZjBiNzc1ZmY1NTczZmFhYWU2OWYyYmYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTc4OCwyMSArNzg4
LDIyIEBAIHN0YXRpYyB2b2lkIGNvbnN0cmFpbkNvcm5lclJhZGlpRm9yUmVjdChjb25zdCBJbnRS
ZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRTCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmdldEJv
cmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiByLCBJbnRTaXplJiB0b3BMZWZ0LCBJbnRT
aXplJiB0b3BSaWdodCwgSW50U2l6ZSYgYm90dG9tTGVmdCwgSW50U2l6ZSYgYm90dG9tUmlnaHQp
IGNvbnN0CiB7Ci0gICAgdG9wTGVmdCA9IHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpOwotICAg
IHRvcFJpZ2h0ID0gc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgpOworICAgIHRvcExlZnQgPSBJ
bnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lk
dGgoKSksIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShyLmhl
aWdodCgpKSk7CisgICAgdG9wUmlnaHQgPSBJbnRTaXplKHN1cnJvdW5kLT5ib3JkZXIudG9wUmln
aHQoKS53aWR0aCgpLmNhbGNWYWx1ZShyLndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJp
Z2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVpZ2h0KCkpKTsKICAgICAKLSAgICBib3R0b21M
ZWZ0ID0gc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCk7Ci0gICAgYm90dG9tUmlnaHQgPSBz
dXJyb3VuZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7CisgICAgYm90dG9tTGVmdCA9IEludFNpemUo
c3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoci53aWR0aCgp
KSwgc3Vycm91bmQtPmJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHIuaGVp
Z2h0KCkpKTsKKyAgICBib3R0b21SaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0
b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHIud2lkdGgoKSksIHN1cnJvdW5kLT5ib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoci5oZWlnaHQoKSkpOwogCiAgICAgY29u
c3RyYWluQ29ybmVyUmFkaWlGb3JSZWN0KHIsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmdldElubmVyQm9yZGVyUmFk
aWlGb3JSZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiBpbm5lclJlY3QsIHVuc2ln
bmVkIHNob3J0IHRvcFdpZHRoLCB1bnNpZ25lZCBzaG9ydCBib3R0b21XaWR0aCwgdW5zaWduZWQg
c2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoLCBJbnRTaXplJiBpbm5l
clRvcExlZnQsIEludFNpemUmIGlubmVyVG9wUmlnaHQsIEludFNpemUmIGlubmVyQm90dG9tTGVm
dCwgSW50U2l6ZSYgaW5uZXJCb3R0b21SaWdodCkgY29uc3QKIHsKLSAgICBpbm5lclRvcExlZnQg
PSBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsKLSAgICBpbm5lclRvcFJpZ2h0ID0gc3Vycm91
bmQtPmJvcmRlci50b3BSaWdodCgpOwotICAgIGlubmVyQm90dG9tTGVmdCA9IHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tTGVmdCgpOwotICAgIGlubmVyQm90dG9tUmlnaHQgPSBzdXJyb3VuZC0+Ym9y
ZGVyLmJvdHRvbVJpZ2h0KCk7CisgICAgaW5uZXJUb3BMZWZ0ID0gSW50U2l6ZShzdXJyb3VuZC0+
Ym9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShpbm5lclJlY3Qud2lkdGgoKSksIHN1
cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVp
Z2h0KCkpKTsKKyAgICBpbm5lclRvcFJpZ2h0ID0gSW50U2l6ZShzdXJyb3VuZC0+Ym9yZGVyLnRv
cFJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+
Ym9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGlubmVyUmVjdC5oZWlnaHQoKSkp
OworICAgIGlubmVyQm90dG9tTGVmdCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0b21M
ZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LndpZHRoKCkpLCBzdXJyb3VuZC0+Ym9y
ZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoaW5uZXJSZWN0LmhlaWdodCgpKSk7
CisgICAgaW5uZXJCb3R0b21SaWdodCA9IEludFNpemUoc3Vycm91bmQtPmJvcmRlci5ib3R0b21S
aWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKGlubmVyUmVjdC53aWR0aCgpKSwgc3Vycm91bmQtPmJv
cmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShpbm5lclJlY3QuaGVpZ2h0KCkp
KTsKKwogCiAgICAgaW5uZXJUb3BMZWZ0LnNldFdpZHRoKG1heCgwLCBpbm5lclRvcExlZnQud2lk
dGgoKSAtIGxlZnRXaWR0aCkpOwogICAgIGlubmVyVG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIGlu
bmVyVG9wTGVmdC5oZWlnaHQoKSAtIHRvcFdpZHRoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCBkZjFiMzQxMDIxOWFmMzkzYTQyMzA2Yjk2NDlhMTlmOTBmYTNkOTBi
Li5hZThmNGNkYmM1Y2EzMjE3ZTc1MjE3M2RjYzAwNzdkMjQ5ZWI5YmU1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTM5NCwxMCArMzk0LDEwIEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKTsgfQogCi0gICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyVG9w
TGVmdFJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wTGVmdCgpOyB9
Ci0gICAgY29uc3QgSW50U2l6ZSYgYm9yZGVyVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLnRvcFJpZ2h0KCk7IH0KLSAgICBjb25zdCBJbnRTaXplJiBib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0
b21MZWZ0KCk7IH0KLSAgICBjb25zdCBJbnRTaXplJiBib3JkZXJCb3R0b21SaWdodFJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tUmlnaHQoKTsgfQorICAgIGNv
bnN0IExlbmd0aFNpemUmIGJvcmRlclRvcExlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlclRv
cFJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BSaWdodCgp
OyB9CisgICAgY29uc3QgTGVuZ3RoU2l6ZSYgYm9yZGVyQm90dG9tTGVmdFJhZGl1cygpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tTGVmdCgpOyB9CisgICAgY29uc3QgTGVu
Z3RoU2l6ZSYgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmJvdHRvbVJpZ2h0KCk7IH0KICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNv
bnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KIAogICAg
IHVuc2lnbmVkIHNob3J0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm9yZGVyTGVmdFdpZHRoKCk7IH0KQEAgLTc3OCwxOCArNzc4LDIzIEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBi
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2ltYWdlLCBiKSB9CiAKLSAgICB2b2lkIHNl
dEJvcmRlclRvcExlZnRSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV90b3BMZWZ0LCBzKSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1
cyhjb25zdCBJbnRTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0
LCBzKSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKGNvbnN0IEludFNpemUm
IHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgcykgfQotICAgIHZv
aWQgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoY29uc3QgSW50U2l6ZSYgcykgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgcykgfQorICAgIHZvaWQgc2V0Qm9yZGVy
VG9wTGVmdFJhZGl1cyhjb25zdCBMZW5ndGhTaXplJiBzKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX3RvcExlZnQsIHMpIH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKGNv
bnN0IExlbmd0aFNpemUmIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQs
IHMpIH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoY29uc3QgTGVuZ3RoU2l6
ZSYgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBzKSB9CisgICAg
dm9pZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhjb25zdCBMZW5ndGhTaXplJiBzKSB7IFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBzKSB9CiAKLSAgICB2b2lkIHNl
dEJvcmRlclJhZGl1cyhjb25zdCBJbnRTaXplJiBzKQorICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVz
KGNvbnN0IExlbmd0aFNpemUmIHMpCiAgICAgewogICAgICAgICBzZXRCb3JkZXJUb3BMZWZ0UmFk
aXVzKHMpOwogICAgICAgICBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzKTsKICAgICAgICAgc2V0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhzKTsKICAgICAgICAgc2V0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMocyk7CiAgICAgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmFkaXVzKGNvbnN0IEludFNpemUm
IHMpCisgICAgeworICAgICAgICBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZShMZW5ndGgocy53
aWR0aCgpLCBGaXhlZCksIExlbmd0aChzLmhlaWdodCgpLCBGaXhlZCkpKTsKKyAgICB9CisKICAg
ICAKICAgICB2b2lkIGdldEJvcmRlclJhZGlpRm9yUmVjdChjb25zdCBJbnRSZWN0JiwgSW50U2l6
ZSYgdG9wTGVmdCwgSW50U2l6ZSYgdG9wUmlnaHQsIEludFNpemUmIGJvdHRvbUxlZnQsIEludFNp
emUmIGJvdHRvbVJpZ2h0KSBjb25zdDsKICAgICB2b2lkIGdldElubmVyQm9yZGVyUmFkaWlGb3JS
ZWN0V2l0aEJvcmRlcldpZHRocyhjb25zdCBJbnRSZWN0JiwgdW5zaWduZWQgc2hvcnQgdG9wV2lk
dGgsIApAQCAtMTEzMCw3ICsxMTM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGluaXRp
YWxCb3JkZXJDb2xsYXBzZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIEVCb3JkZXJT
dHlsZSBpbml0aWFsQm9yZGVyU3R5bGUoKSB7IHJldHVybiBCTk9ORTsgfQogICAgIHN0YXRpYyBO
aW5lUGllY2VJbWFnZSBpbml0aWFsTmluZVBpZWNlSW1hZ2UoKSB7IHJldHVybiBOaW5lUGllY2VJ
bWFnZSgpOyB9Ci0gICAgc3RhdGljIEludFNpemUgaW5pdGlhbEJvcmRlclJhZGl1cygpIHsgcmV0
dXJuIEludFNpemUoMCwgMCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBpbml0aWFsQm9yZGVy
UmFkaXVzKCkgeyByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgoMCwg
Rml4ZWQpKTsgfQogICAgIHN0YXRpYyBFQ2FwdGlvblNpZGUgaW5pdGlhbENhcHRpb25TaWRlKCkg
eyByZXR1cm4gQ0FQVE9QOyB9CiAgICAgc3RhdGljIEVDbGVhciBpbml0aWFsQ2xlYXIoKSB7IHJl
dHVybiBDTk9ORTsgfQogICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24o
KSB7IHJldHVybiBMVFI7IH0K
</data>
<flag name="review"
          id="53746"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>