<?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>88437</bug_id>
          
          <creation_ts>2012-06-06 11:41:17 -0700</creation_ts>
          <short_desc>Add support for min-height:auto and min-width:auto</short_desc>
          <delta_ts>2012-07-10 22:46:43 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>87546</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>hyatt</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>leviw</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>rakuco</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642649</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-06 11:41:17 -0700</bug_when>
    <thetext>Add support for min-height:auto and min-width:auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642658</commentid>
    <comment_count>1</comment_count>
      <attachid>146078</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-06 11:48:52 -0700</bug_when>
    <thetext>Created attachment 146078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642661</commentid>
    <comment_count>2</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-06 11:52:26 -0700</bug_when>
    <thetext>Adding some more people who might have thoughts/objections to this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642784</commentid>
    <comment_count>3</comment_count>
      <attachid>146078</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-06 14:03:34 -0700</bug_when>
    <thetext>Comment on attachment 146078
Patch

Attachment 146078 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12896982</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642798</commentid>
    <comment_count>4</comment_count>
      <attachid>146108</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-06 14:15:07 -0700</bug_when>
    <thetext>Created attachment 146108
Fix EFL compile failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645062</commentid>
    <comment_count>5</comment_count>
      <attachid>146108</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-08 15:04:59 -0700</bug_when>
    <thetext>Comment on attachment 146108
Fix EFL compile failure

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

The logic seems fine.  Would be nice to get Hyatt to sign off on the design.

&gt; Source/WebCore/rendering/RenderBox.cpp:1741
&gt; +    if ((widthType == MinSize &amp;&amp; logicalWidth.isAuto()))

Nit: Extra parentheses.

&gt; Source/WebCore/rendering/RenderBox.cpp:2616
&gt; +        // FIXME: This Length isn&apos;t technically a MainSize, but this is the only case where we pass Length that&apos;s not directly
&gt; +        // grabbed off the RenderStyle, so it&apos;s probably not worth adding an extra case to the enum.

What&apos;s to be fixed here?  Maybe the enum value could be MainSizeOrXXX.

&gt; Source/WebCore/rendering/RenderBox.cpp:3005
&gt; +    // FIXME: For non-flexboxes + min-width, this needs to treat non-flexboxes as 0.

I don&apos;t understand this comment.  Do you mean min-height?

&gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1062
&gt; +        else if (child-&gt;style()-&gt;minWidth().type() == Auto)
&gt; +            minWidth = 0;

Should we have old flexbox test cases with auto?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:158
&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for width;

Nit: End in a period, not ;.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:208
&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for min-width;

Nit: End in a period.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:214
&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for maxWidth;

Nit: End in a period and max-width.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1557
&gt; -    static Length initialMinSize() { return Length(0, Fixed); }
&gt; +    static Length initialMinSize() { return Length(); }

Nit: Length(Auto) just to be clear?

&gt; LayoutTests/fast/css/auto-min-size.html:6
&gt; +shouldBe(&apos;div.style.minWidth&apos;, &apos;&quot;&quot;&apos;);

Should there be tests for min-height?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665843</commentid>
    <comment_count>6</comment_count>
      <attachid>151478</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 10:06:44 -0700</bug_when>
    <thetext>Created attachment 151478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665846</commentid>
    <comment_count>7</comment_count>
      <attachid>146108</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 10:07:28 -0700</bug_when>
    <thetext>Comment on attachment 146108
Fix EFL compile failure

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

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1741
&gt;&gt; +    if ((widthType == MinSize &amp;&amp; logicalWidth.isAuto()))
&gt; 
&gt; Nit: Extra parentheses.

Fixed.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:2616
&gt;&gt; +        // grabbed off the RenderStyle, so it&apos;s probably not worth adding an extra case to the enum.
&gt; 
&gt; What&apos;s to be fixed here?  Maybe the enum value could be MainSizeOrXXX.

I did MainOrPreferredSize.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:3005
&gt;&gt; +    // FIXME: For non-flexboxes + min-width, this needs to treat non-flexboxes as 0.
&gt; 
&gt; I don&apos;t understand this comment.  Do you mean min-height?

Yup.

&gt;&gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1062
&gt;&gt; +            minWidth = 0;
&gt; 
&gt; Should we have old flexbox test cases with auto?

Done

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:158
&gt;&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for width;
&gt; 
&gt; Nit: End in a period, not ;.

Done

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:208
&gt;&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for min-width;
&gt; 
&gt; Nit: End in a period.

done

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:214
&gt;&gt; +    // FIXME: This should probably be checking for isSpecified since you should be able to use percentage, calc or viewport relative values for maxWidth;
&gt; 
&gt; Nit: End in a period and max-width.

done

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:1557
&gt;&gt; +    static Length initialMinSize() { return Length(); }
&gt; 
&gt; Nit: Length(Auto) just to be clear?

I was just mimicing initialSize. I could change both?

&gt;&gt; LayoutTests/fast/css/auto-min-size.html:6
&gt;&gt; +shouldBe(&apos;div.style.minWidth&apos;, &apos;&quot;&quot;&apos;);
&gt; 
&gt; Should there be tests for min-height?

Yes. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665896</commentid>
    <comment_count>8</comment_count>
      <attachid>151478</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-10 11:16:58 -0700</bug_when>
    <thetext>Comment on attachment 151478
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Tests: fast/css/auto-min-size.html

Please include a link to the spec and a description about what &apos;auto&apos; means for min-{height,width}.

&gt; Source/WebCore/css/CSSParser.cpp:1993
&gt; +        if (id == CSSValueAuto || id == CSSValueIntrinsic || id == CSSValueMinIntrinsic || id == CSSValueWebkitMinContent || id == CSSValueWebkitMaxContent || id == CSSValueWebkitFillAvailable || id == CSSValueWebkitFitContent)

Because of the above case doesn&apos;t have a break, this will allow max-width to be auto.  Please add some test cases for this.

&gt; Source/WebCore/css/CSSParser.cpp:2008
&gt; +        if (id == CSSValueAuto || id == CSSValueIntrinsic || id == CSSValueMinIntrinsic)

Same problem with allowing max-height to be auto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665950</commentid>
    <comment_count>9</comment_count>
      <attachid>151500</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 12:25:13 -0700</bug_when>
    <thetext>Created attachment 151500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665951</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 12:26:06 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1993
&gt; &gt; +        if (id == CSSValueAuto || id == CSSValueIntrinsic || id == CSSValueMinIntrinsic || id == CSSValueWebkitMinContent || id == CSSValueWebkitMaxContent || id == CSSValueWebkitFillAvailable || id == CSSValueWebkitFitContent)
&gt; 
&gt; Because of the above case doesn&apos;t have a break, this will allow max-width to be auto.  Please add some test cases for this.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:2008
&gt; &gt; +        if (id == CSSValueAuto || id == CSSValueIntrinsic || id == CSSValueMinIntrinsic)
&gt; 
&gt; Same problem with allowing max-height to be auto.

Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666075</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 14:45:36 -0700</bug_when>
    <thetext>Committed r122264: &lt;http://trac.webkit.org/changeset/122264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666345</commentid>
    <comment_count>12</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-07-10 22:16:40 -0700</bug_when>
    <thetext>FYI.
I&apos;ve moved the expected.txt from chromium-linux to chromium in http://trac.webkit.org/changeset/122296.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666353</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 22:27:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; FYI.
&gt; I&apos;ve moved the expected.txt from chromium-linux to chromium in http://trac.webkit.org/changeset/122296.

Whoops. It should just be next to the html file. The results are not platform specific. I accidentally ran this test as a pixel test first, which put it in the chromium-linux directory without me noticing. I&apos;ll move it tomorrow if noone else gets around to it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666357</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-07-10 22:33:32 -0700</bug_when>
    <thetext>Thank you for letting me know it. Don&apos;t worry. Let me do it.

(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; FYI.
&gt; &gt; I&apos;ve moved the expected.txt from chromium-linux to chromium in http://trac.webkit.org/changeset/122296.
&gt; 
&gt; Whoops. It should just be next to the html file. The results are not platform specific. I accidentally ran this test as a pixel test first, which put it in the chromium-linux directory without me noticing. I&apos;ll move it tomorrow if noone else gets around to it first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666362</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-07-10 22:41:36 -0700</bug_when>
    <thetext>Done in http://trac.webkit.org/changeset/122297.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666370</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-07-10 22:46:43 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Done in http://trac.webkit.org/changeset/122297.

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146078</attachid>
            <date>2012-06-06 11:48:52 -0700</date>
            <delta_ts>2012-06-06 14:14:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88437-20120606114851.patch</filename>
            <type>text/plain</type>
            <size>47908</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBiZTZmYmUwNzMwNTll
ZmFhOTJhOTI4NzIwM2MwYjYyYzQyYmQ4Ny4uNWFjOGM1ODlmNjNhOTVlY2U0ZTRmNmY3MWY4YmE4
MjU4NTFhZGEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA2LTA2ICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1p
bi1oZWlnaHQ6YXV0byBhbmQgbWluLXdpZHRoOmF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBmbGV4Ym94IHNwZWMgY2hhbmdlcyB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiBtaW4td2lkdGgvbWluLWhlaWdodCB0byAnYXV0bycuCisgICAgICAg
IE91dHNpZGUgb2YgYSBmbGV4aW5nIGNvbnRleHQsIHRoaXMgY29tcHV0ZXMgdG8gMHB4LiBJbiBh
IGZsZXhpbmcgY29udGV4dCwgaXQKKyAgICAgICAgY29tcHV0ZXMgdG8gJ21pbi1jb250ZW50Jy4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGF1dG8gdmFsdWUgYW5k
IG1ha2VzIGl0IGJlaGF2ZSBsaWtlIDBweCBldmVyeXdoZXJlLgorICAgICAgICBUaGUgb25seSB3
ZWIgdmlzaWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IgaXMgdGhhdCBzZXR0aW5nIG1pbi13aWR0aC9t
aW4taGVpZ2h0IHRvICdhdXRvJworICAgICAgICB3aWxsIHN1Y2NlZWQgKGUuZy4gZ2V0dGluZyB0
aGUgdmFsdWUgb2ZmIHN0eWxlIHdpbGwgcmV0dXJuICdhdXRvJykuCisKKyAgICAgICAgQSBmb2xs
b3d1cCBwYXRjaCB3aWxsIG1ha2UgZmxleC1pdGVtcyB0cmVhdCAnYXV0bycgYW5kICdtaW4tY29u
dGVudCcuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgUmV0dXJuIDBweCBmb3IgdGhlIGNv
bXB1dGVkIHZhbHVlIG9mIGF1dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIEFsbG93IGF1
dG8gYXMgYSBtaW4gc2l6ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2l6ZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgVGhpcyBjb2RlIHdhcyB1bm5lY2Vzc2FyaWx5IGNoZWNraW5nIGlu
dHJpbnNpY09yQXV0byBzaW5jZSBhdXRvIHdhcyBwcmV2aW91c2x5CisgICAgICAgIG5vdCBhbiBh
bGxvd2VkIHZhbHVlIGZvciBtaW5XaWR0aC9taW5IZWlnaHQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgTmVlZCB0byBwYXNzIGEgU2l6
ZVR5cGUgdG8gYWxsIHRoZXNlIG1ldGhvZHMgc28gdGhhdCB3ZSBrbm93IGlmIHRoZSBMZW5ndGgK
KyAgICAgICAgd2UncmUgd29ya2luZyB3aXRoIGlzIGEgbWluIGxlbmd0aCBzaW5jZSBhdXRvIGhh
cyBhIGRpZmZlcmVudCBtZWFuaW5nIG5vdworICAgICAgICBmb3IgbWluIGxlbmd0aHMuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlQXZhaWxhYmxl
RnJlZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsaW5lQnJl
YWtMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENo
aWxkU2l6ZUZvck1pbkFuZE1heCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFyV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0
ZVNjcm9sbGJhckhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIERlZmF1bHQgbWluSGVpZ2h0L21pbldpZHRoIHRvIGF1dG8gaW5zdGVhZCBv
ZiAwcHguCisKIDIwMTItMDYtMDUgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIEltcHJvdmUgdmFyaWFibGUgcmVzb2x1dGlvbiBvcmRlciBvbiB3aW5k
b3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDI4YjdiN2ExOGIwNjg2NjBiYjlkNzhmZmE0OTQxN2Ew
NmYxMDA2NDMuLjc4ZDU0ZDVhYzJmNGFhYjBkZDk2MzJkZWFhZTk1MGE5ZTBjODIyZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgpAQCAtMTY3NiwxMCArMTY3NiwxMCBAQCBfX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzEwbGF5b3V0Um9vdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxM2lzRmxleGli
bGVCb3hFdgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gyN3Nob3VsZENvbXB1dGVTaXplQXNSZXBs
YWNlZEV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTEybG9naWNhbFdpZHRoRXYKLV9fWk43
V2ViQ29yZTlSZW5kZXJCb3gyNGNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZ0VOU18xNkxvZ2ljYWxX
aWR0aFR5cGVFaQorX19aTjdXZWJDb3JlOVJlbmRlckJveDI0Y29tcHV0ZUxvZ2ljYWxXaWR0aFVz
aW5nRU5TXzE2U2l6ZVR5cGVFaQogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxMW1hcmdpblN0
YXJ0RXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlOW1hcmdpbkVuZEV2Ci1fX1pOSzdXZWJD
b3JlOVJlbmRlckJveDI4c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aEVOU18xNkxvZ2ljYWxX
aWR0aFR5cGVFCitfX1pOSzdXZWJDb3JlOVJlbmRlckJveDI4c2l6ZXNUb0ludHJpbnNpY0xvZ2lj
YWxXaWR0aEVOU18xNlNpemVUeXBlRQogX19aTks3V2ViQ29yZTExUmVuZGVyQmxvY2syNmlzSW5s
aW5lQmxvY2tPcklubGluZVRhYmxlRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTVsb2dp
Y2FsTWF4V2lkdGhFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxNWxvZ2ljYWxNaW5XaWR0
aEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IGJjMjRlODhjZDVmZDE0MzUzNmQwYjZjNzEyNjMyNWI4MjMyYjk5ZDUuLmE3
ZmFkNmM4OGJhNjFlZWVlNTc5ZDkxNjkwMDcyMTk4MmFmNTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODQ4LDgg
KzE4NDgsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKG1heFdpZHRoLCBzdHlsZS5nZXQoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBGb3IgZmxleC1pdGVtcywgbWluLWhlaWdodDphdXRvIHNob3VsZCBjb21wdXRl
IHRvIG1pbi1jb250ZW50LgorICAgICAgICAgICAgaWYgKHN0eWxlLT5taW5IZWlnaHQoKS5pc0F1
dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBz
dHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZv
ckxlbmd0aChzdHlsZS0+bWluSGVpZ2h0KCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eU1pbldpZHRoOgorICAgICAgICAgICAgLy8gRklYTUU6IEZvciBmbGV4LWl0ZW1z
LCBtaW4td2lkdGg6YXV0byBzaG91bGQgY29tcHV0ZSB0byBtaW4tY29udGVudC4KKyAgICAgICAg
ICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWluV2lkdGgoKSwg
c3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmlu
ZGV4IDY1ZTFhMmZhNTQ0ZjdjNmE5NzBiYjIyMDdjOTk3NWU5ZjdkMjNkMGYuLmU5MjBlZDA4NGRl
NjViMDBkMjM2MmNjMmI2MDNkMmZkNjg2NDgxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CkBAIC0xODMyLDcgKzE4MzIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldp
ZHRoOiAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUlu
dHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1
ZU1pbkludHJpbnNpYykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggODc2NmY2NTc4NmMxM2RjZDc4
MTQzYjhjMDk0ZTZmNjViZTdkMDQ0ZS4uNTQzMTBmMDE1NGEzYTg2OTg1OTliOThkNWVhNjI5N2Ex
MzUzZjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNpemVD
b25zdHJhaW50cyhSZW5kZXJTdHlsZSogc3R5bGUsIEZvcm1UeXBlIHR5cGUpIGNvCiB7CiAgICAg
Y29uc3Qgc3RydWN0IFRoZW1lUGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3Qp
dHlwZTsKIAotICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQor
ICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpYygpKQogICAgICAgICBzdHlsZS0+
c2V0TWluV2lkdGgoZGVzYy0+bWluLndpZHRoKCkpOwotICAgIGlmIChzdHlsZS0+bWluSGVpZ2h0
KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoc3R5bGUtPm1pbkhlaWdodCgpLmlzSW50
cmluc2ljKCkpCiAgICAgICAgIHN0eWxlLT5zZXRNaW5IZWlnaHQoZGVzYy0+bWluLmhlaWdodCgp
KTsKIAogICAgIGlmIChkZXNjLT5tYXgud2lkdGgoKS52YWx1ZSgpID4gMCAmJiBzdHlsZS0+bWF4
V2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCBiNWRhMGZhNTU5ZTg3OWNhM2JlZDg4MzU3MTg5YmM1N2MwZWNiMzIwLi45
NzMyM2E2YjY0MDc1Yzk3YzRjYzY3Mzk3MWI3NTc5MGRhNTA0MmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTY4NCwxNyArMTY4NCwxNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBM
YXlvdXRVbml0IG9mZgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoTGVuZ3Ro
LnZhbHVlKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpOwogICAgIGVsc2Ugewog
ICAgICAgICAvLyBDYWxjdWxhdGUgTG9naWNhbFdpZHRoCi0gICAgICAgIHNldExvZ2ljYWxXaWR0
aChjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGgsIGNvbnRhaW5l
cldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UpKTsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvblVzaW5nKE1haW5TaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9u
LCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CiAKICAgICAg
ICAgLy8gQ2FsY3VsYXRlIE1heExvZ2ljYWxXaWR0aAogICAgICAgICBpZiAoIXN0eWxlVG9Vc2Ut
PmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIExheW91dFVu
aXQgbWF4TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWF4
TG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBjYiwgcmVnaW9u
LCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAgICAgICAgIExheW91dFVu
aXQgbWF4TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWF4
U2l6ZSwgY29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgY2IsIHJlZ2lvbiwgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRo
KCkgPiBtYXhMb2dpY2FsV2lkdGgpCiAgICAgICAgICAgICAgICAgc2V0TG9naWNhbFdpZHRoKG1h
eExvZ2ljYWxXaWR0aCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDYWxjdWxhdGUgTWluTG9n
aWNhbFdpZHRoCi0gICAgICAgIExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gY29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aElu
SW5saW5lRGlyZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsV2lkdGggPSBjb21wdXRlTG9naWNh
bFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0
aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKICAgICAg
ICAgaWYgKGxvZ2ljYWxXaWR0aCgpIDwgbWluTG9naWNhbFdpZHRoKQogICAgICAgICAgICAgc2V0
TG9naWNhbFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCk7CiAgICAgfQpAQCAtMTcyMCw0MSArMTcyMCw0
NCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBjYi0+c2V0TWFyZ2luRW5kRm9y
Q2hpbGQodGhpcywgY29udGFpbmVyTG9naWNhbFdpZHRoIC0gbG9naWNhbFdpZHRoKCkgLSBjYi0+
bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpj
b21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGhUeXBlIHdpZHRoVHlw
ZSwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsCitMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBM
YXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKICAgICBjb25zdCBSZW5kZXJCbG9jayog
Y2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9w
T2ZGaXJzdFBhZ2UpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQgPSBsb2dp
Y2FsV2lkdGgoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAg
TGVuZ3RoIGxvZ2ljYWxXaWR0aDsKLSAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkK
KyAgICBpZiAod2lkdGhUeXBlID09IE1haW5TaXplKQogICAgICAgICBsb2dpY2FsV2lkdGggPSBz
dHlsZVRvVXNlLT5sb2dpY2FsV2lkdGgoKTsKLSAgICBlbHNlIGlmICh3aWR0aFR5cGUgPT0gTWlu
TG9naWNhbFdpZHRoKQorICAgIGVsc2UgaWYgKHdpZHRoVHlwZSA9PSBNaW5TaXplKQogICAgICAg
ICBsb2dpY2FsV2lkdGggPSBzdHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKTsKICAgICBlbHNl
CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpOwog
CiAgICAgQVNTRVJUKCFsb2dpY2FsV2lkdGguaXNVbmRlZmluZWQoKSk7CiAKLSAgICBpZiAobG9n
aWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsKLSAgICAgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IHZpZXcoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gYXZh
aWxhYmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7CisgICAgLy8gRklY
TUU6IG1pbldpZHRoOmF1dG8gb24gYSBmbGV4LWl0ZW0gbmVlZHMgdG8gZ28gZG93biB0aGUgaW50
cmluc2ljT3JBdXRvIHBhdGggYmVsb3cuCisgICAgaWYgKCh3aWR0aFR5cGUgPT0gTWluU2l6ZSAm
JiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUJvcmRlckJv
eExvZ2ljYWxXaWR0aCgwKTsKIAotICAgICAgICBpZiAoc2hyaW5rVG9Bdm9pZEZsb2F0cygpICYm
IGNiLT5jb250YWluc0Zsb2F0cygpKQotICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0g
c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhtYXJnaW5TdGFydCwgbWFyZ2luRW5kLCBj
YiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAvLyBGSVhN
RTogSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIG91ciBk
aXJlY3Rpb24gd2UgbmVlZCB0byB1c2UgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIGhlaWdodCBpbnN0
ZWFkLgorICAgIGlmICghbG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAg
IHJldHVybiBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2lj
YWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCB2aWV3KCkpKTsKIAotICAgICAgICBpZiAo
c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aCh3aWR0aFR5cGUpKSB7Ci0gICAgICAgICAgICBs
b2dpY2FsV2lkdGhSZXN1bHQgPSBtYXgobG9naWNhbFdpZHRoUmVzdWx0LCBtaW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtaW4obG9n
aWNhbFdpZHRoUmVzdWx0LCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgLy8gRklYTUU6IElmIHRoZSBjb250YWluaW5nIGJsb2NrIGZsb3cgaXMgcGVy
cGVuZGljdWxhciB0byBvdXIgZGlyZWN0aW9uIHdlIG5lZWQgdG8gdXNlIHRoZSBhdmFpbGFibGUg
bG9naWNhbCBoZWlnaHQgaW5zdGVhZC4KLSAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gY29t
cHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCwgdmlldygpKSk7IAorICAgIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSB2aWV3KCk7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgs
IHJlbmRlclZpZXcpOworICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJl
bmRlclZpZXcpOworICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0ID0gYXZhaWxhYmxl
TG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7CiAKKyAgICBpZiAoc2hyaW5r
VG9Bdm9pZEZsb2F0cygpICYmIGNiLT5jb250YWluc0Zsb2F0cygpKQorICAgICAgICBsb2dpY2Fs
V2lkdGhSZXN1bHQgPSBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKG1hcmdpblN0YXJ0
LCBtYXJnaW5FbmQsIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2Up
OworCisgICAgaWYgKHNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGgod2lkdGhUeXBlKSkgewor
ICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtYXgobG9naWNhbFdpZHRoUmVzdWx0LCBtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IG1p
bihsb2dpY2FsV2lkdGhSZXN1bHQsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICB9
CiAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aFJlc3VsdDsKIH0KIAotYm9vbCBSZW5kZXJCb3g6OnNp
emVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGgoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUpIGNv
bnN0Citib29sIFJlbmRlckJveDo6c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aChTaXplVHlw
ZSB3aWR0aFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gTWFycXVlZXMgaW4gV2luSUUgYXJlIGxpa2Ug
YSBtaXh0dXJlIG9mIGJsb2NrcyBhbmQgaW5saW5lLWJsb2Nrcy4gIFRoZXkgc2l6ZSBhcyB0aG91
Z2ggdGhleSdyZSBibG9ja3MsCiAgICAgLy8gYnV0IHRoZXkgYWxsb3cgdGV4dCB0byBzaXQgb24g
dGhlIHNhbWUgbGluZSBhcyB0aGUgbWFycXVlZS4KQEAgLTE3NjMsNyArMTc2Niw3IEBAIGJvb2wg
UmVuZGVyQm94OjpzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoKExvZ2ljYWxXaWR0aFR5cGUg
d2lkdGhUeXBlKSBjb25zdAogCiAgICAgLy8gVGhpcyBjb2RlIG1heSBsb29rIGEgYml0IHN0cmFu
Z2UuICBCYXNpY2FsbHkgd2lkdGg6aW50cmluc2ljIHNob3VsZCBjbGFtcCB0aGUgc2l6ZSB3aGVu
IHRlc3RpbmcgYm90aAogICAgIC8vIG1pbi13aWR0aCBhbmQgd2lkdGguICBtYXgtd2lkdGggaXMg
b25seSBjbGFtcGVkIGlmIGl0IGlzIGFsc28gaW50cmluc2ljLgotICAgIExlbmd0aCBsb2dpY2Fs
V2lkdGggPSAod2lkdGhUeXBlID09IE1heExvZ2ljYWxXaWR0aCkgPyBzdHlsZSgpLT5sb2dpY2Fs
TWF4V2lkdGgoKSA6IHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpOworICAgIExlbmd0aCBsb2dpY2Fs
V2lkdGggPSAod2lkdGhUeXBlID09IE1heFNpemUpID8gc3R5bGUoKS0+bG9naWNhbE1heFdpZHRo
KCkgOiBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKTsKICAgICBpZiAobG9naWNhbFdpZHRoLnR5cGUo
KSA9PSBJbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xOTk2LDExICsxOTk5
LDExIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgpCiAKICAgICAgICAg
TGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlmIChjaGVja01pbk1heEhlaWdodCkg
ewotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhz
dHlsZVRvVXNlLT5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0g
Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNhbEhl
aWdodCgpKTsKICAgICAgICAgICAgIGlmIChoZWlnaHRSZXN1bHQgPT0gLTEpCiAgICAgICAgICAg
ICAgICAgaGVpZ2h0UmVzdWx0ID0gbG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgTGF5b3V0
VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2Fs
TWluSGVpZ2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KLSAgICAgICAgICAgIExheW91
dFVuaXQgbWF4SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgp
ID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5s
b2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IID0gY29tcHV0
ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLT5sb2dpY2FsTWluSGVpZ2h0
KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAgICAgIExheW91dFVuaXQgbWF4
SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0
UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNlLT5s
b2dpY2FsTWF4SGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKG1heEggPT0gLTEpCiAgICAgICAg
ICAgICAgICAgbWF4SCA9IGhlaWdodFJlc3VsdDsKICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9
IG1pbihtYXhILCBoZWlnaHRSZXN1bHQpOwpAQCAtMjA0NywyNiArMjA1MCwyOCBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogICAgIH0KIH0KIAotTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoZWlnaHQp
CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlw
ZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCkKIHsKLSAgICBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHQpOwor
ICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdo
dFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCk7CiAgICAgaWYgKGxvZ2ljYWxIZWlnaHQgIT0gLTEp
CiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNhbEhlaWdodChs
b2dpY2FsSGVpZ2h0KTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0
aCYgaGVpZ2h0KQorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0KQogewor
ICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5IZWlnaHQ6YXV0byBzaG91bGQgYmUgbWlu
LWNvbnRlbnQuCisgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGhlaWdo
dFR5cGUgPT0gTWluU2l6ZSA/IDAgOiAtMTsKKyAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQgPSAtMTsKLSAgICBpZiAoIWhlaWdodC5pc0F1dG8oKSkgewotICAgICAgICBpZiAoaGVpZ2h0
LmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBoZWlnaHQudmFsdWUoKTsK
LSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0LmlzUGVyY2VudCgpKQotICAgICAgICAgICAgbG9naWNh
bEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwotICAgICAg
ICBlbHNlIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAgIGxv
Z2ljYWxIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChoZWlnaHQsIDAsIHZpZXcoKSk7Ci0gICAgfQot
ICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OworICAgIGlmIChoZWlnaHQuaXNGaXhlZCgpKQorICAg
ICAgICByZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CisgICAgaWYgKGhlaWdodC5pc1BlcmNlbnQoKSkK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwor
ICAgIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHZh
bHVlRm9yTGVuZ3RoKGhlaWdodCwgMCwgdmlldygpKTsKKyAgICByZXR1cm4gLTE7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3Qg
TGVuZ3RoJiBoZWlnaHQpCkBAIC0yMTU2LDE4ICsyMTYxLDIyIEBAIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQp
CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9v
bCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1ZGVNYXhXaWR0aCk7CisgICAg
cmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChj
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9naWNh
bFdpZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVu
aXQgbG9naWNhbFdpZHRoLCBib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKLSAgICBMYXlv
dXRVbml0IG1pbkxvZ2ljYWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5n
KHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKLSAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxX
aWR0aCA9ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCkuaXNV
bmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVz
aW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1pbkxvZ2lj
YWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUsIHN0eWxl
KCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxXaWR0aCA9
ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCkuaXNVbmRlZmlu
ZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1h
eFNpemUsIHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKICAgICByZXR1cm4gbWF4KG1pbkxv
Z2ljYWxXaWR0aCwgbWluKGxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5n
dGggbG9naWNhbFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdp
ZHRoKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5XaWR0aDphdXRv
IHNob3VsZCBiZSBtaW4tY29udGVudC4KKyAgICBpZiAoc2l6ZVR5cGUgPT0gTWluU2l6ZSAmJiBs
b2dpY2FsV2lkdGguaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxXaWR0aCgwKTsKKwogICAgIHN3aXRjaCAobG9naWNhbFdpZHRoLnR5cGUoKSkgewogICAg
ICAgICBjYXNlIEZpeGVkOgogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC52YWx1ZSgpKTsKQEAgLTIxOTIsMTggKzIyMDEsMjIgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExl
bmd0aCBsb2dpY2FsV2lkdGgpIGNvbnMKIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSk7CisgICAgcmV0dXJuIGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdo
dCgpKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
SGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNv
bnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7Ci0gICAgTGF5
b3V0VW5pdCBtYXhMb2dpY2FsSGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpLmlz
VW5kZWZpbmVkKCkgPyBsb2dpY2FsSGVpZ2h0IDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBtaW5M
b2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUs
IHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2Fs
SGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBsb2dp
Y2FsSGVpZ2h0IDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUsIHN0
eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7CiAgICAgcmV0dXJuIG1heChtaW5Mb2dpY2FsSGVp
Z2h0LCBtaW4obG9naWNhbEhlaWdodCwgbWF4TG9naWNhbEhlaWdodCkpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBs
b2dpY2FsSGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBzaXplVHlwZSwgTGVuZ3RoIGxvZ2ljYWxIZWln
aHQpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IEZvciBmbGV4Ym94ZXMsIG1pbldpZHRoOmF1dG8g
c2hvdWxkIGJlIG1pbi1jb250ZW50LgorICAgIGlmIChzaXplVHlwZSA9PSBNaW5TaXplICYmIGxv
Z2ljYWxIZWlnaHQuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxIZWlnaHQoMCk7CisKICAgICBzd2l0Y2ggKGxvZ2ljYWxIZWlnaHQudHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgRml4ZWQ6CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CkBAIC0yNTQ4LDcgKzI1NjEsNyBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVyUmVn
aW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgIC8vIENhbGN1bGF0ZSBjb25zdHJhaW50IGVx
dWF0aW9uIHZhbHVlcyBmb3IgJ3dpZHRoJyBjYXNlLgogICAgIExheW91dFVuaXQgbG9naWNhbFdp
ZHRoUmVzdWx0OwogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRSZXN1bHQ7Ci0gICAgY29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSwgY29u
dGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICBjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSwgY29udGFp
bmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5ndGgs
IGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxSaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJl
c3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMsIGxv
Z2ljYWxMZWZ0UmVzdWx0KTsKQEAgLTI1NjIsNyArMjU3NSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0
VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luTG9naWNhbFJpZ2h0OwogICAgICAg
ICBMYXlvdXRVbml0IG1heExvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNvbnRhaW5l
ckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNvbnRh
aW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRp
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExl
ZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxv
Z2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhMb2dpY2FsV2lkdGgsIG1heE1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXhNYXJnaW5Mb2dpY2FsUmln
aHQsIG1heExvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1ODIsNyArMjU5NSw3IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luTG9naWNhbFJpZ2h0Owog
ICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCksIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCks
IGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1
c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtaW5Mb2dpY2FsV2lkdGgsIG1pbk1hcmdpbkxvZ2ljYWxMZWZ0LCBtaW5NYXJnaW5Mb2dp
Y2FsUmlnaHQsIG1pbkxvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1OTYsNyArMjYwOSw5IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgfQogCiAgICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmlu
c2ljTG9naWNhbFdpZHRoKCkgJiYgbG9naWNhbFdpZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZykgewotICAgICAgICBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJv
cmRlcnNQbHVzUGFkZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0
aW9uLAorICAgICAgICAvLyBGSVhNRTogVGhpcyBMZW5ndGggaXNuJ3QgdGVjaG5pY2FsbHkgYSBN
YWluU2l6ZSwgYnV0IHRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBwYXNzIExlbmd0aCB0
aGF0J3Mgbm90IGRpcmVjdGx5CisgICAgICAgIC8vIGdyYWJiZWQgb2ZmIHRoZSBSZW5kZXJTdHls
ZSwgc28gaXQncyBwcm9iYWJseSBub3Qgd29ydGggYWRkaW5nIGFuIGV4dHJhIGNhc2UgdG8gdGhl
IGVudW0uCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWFpblNp
emUsIExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGlu
ZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwg
Ym9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxvZ2lj
YWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0LCBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFz
LCBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcywgbG9naWNhbExlZnRSZXN1bHQpOwpAQCAtMjYzMywx
MSArMjY0OCwxNSBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVkT2Zm
c2V0KExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zLCBjb25zdAogICAgICAgICBsb2dpY2FsTGVm
dFBvcyArPSAoY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb250YWluZXJCbG9j
ay0+Ym9yZGVyTGVmdCgpIDogY29udGFpbmVyQmxvY2stPmJvcmRlclRvcCgpKTsKIH0KIAotdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxv
Z2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLCBU
ZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExlbmd0
aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9j
aywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbExlZnQsIExl
bmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1hcmdp
bkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBtYXJn
aW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSwg
TGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCiB7CisgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxk
IGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6bWlu
LWNvbnRlbnQgaW5zdGVhZCBvZiBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6MC4KKyAgICBp
ZiAod2lkdGhTaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSkKKyAg
ICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKwogICAgIC8vICdsZWZ0JyBh
bmQgJ3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291bGQgb2YgYmVl
bgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVhZHkKICAgICBB
U1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBsb2dpY2FsUmlnaHQuaXNBdXRvKCkpKTsK
QEAgLTI4NzcsNyArMjg5Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHQoKQogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvczsKIAogICAgIC8vIENh
bGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZhbHVlcyBmb3IgJ2hlaWdodCcgY2FzZS4KLSAg
ICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2Fs
SGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJz
UGx1c1BhZGRpbmcsCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWFp
blNpemUsIHN0eWxlVG9Vc2UtPmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRh
aW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVuZ3RoLCBsb2dpY2FsQm90dG9tTGVu
Z3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRSZXN1bHQsIG1hcmdpbkJlZm9yZUFsaWFzLCBt
YXJnaW5BZnRlckFsaWFzLCBsb2dpY2FsVG9wUG9zKTsKICAgICBzZXRMb2dpY2FsVG9wKGxvZ2lj
YWxUb3BQb3MpOwpAQCAtMjg5Miw3ICsyOTExLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luQWZ0
ZXI7CiAgICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFRvcFBvczsKIAotICAgICAgICBjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVp
Z2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1
c1BhZGRpbmcsCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1h
eFNpemUsIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0aCwgbG9naWNhbEJv
dHRvbUxlbmd0aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbEhlaWdodCwgbWF4TWFyZ2luQmVm
b3JlLCBtYXhNYXJnaW5BZnRlciwgbWF4TG9naWNhbFRvcFBvcyk7CiAKQEAgLTI5MTEsNyArMjkz
MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKQog
ICAgICAgICBMYXlvdXRVbml0IG1pbk1hcmdpbkFmdGVyOwogICAgICAgICBMYXlvdXRVbml0IG1p
bkxvZ2ljYWxUb3BQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0
VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbkhlaWdodCgpLCBjb250YWluZXJCbG9jaywgY29u
dGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgICAgICBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLT5sb2dpY2Fs
TWluSGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3Jk
ZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwg
bWFyZ2luQWZ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1pbkxvZ2ljYWxIZWlnaHQsIG1pbk1hcmdpbkJlZm9yZSwgbWluTWFyZ2luQWZ0ZXIsIG1pbkxv
Z2ljYWxUb3BQb3MpOwogCkBAIC0yOTYzLDExICsyOTgyLDE1IEBAIHN0YXRpYyB2b2lkIGNvbXB1
dGVMb2dpY2FsVG9wUG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9zLCBj
b25zdCBSCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlwZSwgTGVuZ3Ro
IGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWlu
ZXJCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVy
c1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVuZ3Ro
IG1hcmdpbkJlZm9yZSwgTGVuZ3RoIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWlnaHRW
YWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luQmVmb3JlVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkFm
dGVyVmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpCiB7CisgICAgLy8gRklYTUU6IFdo
YXQgc2hvdWxkIGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4taGVpZ2h0OmF1dG8gPT0gbWlu
LWhlaWdodDptaW4tY29udGVudCBpbnN0ZWFkIG9mIG1pbi1oZWlnaHQ6YXV0byA9PSBtaW4taGVp
Z2h0OjAuCisgICAgaWYgKGhlaWdodFNpemVUeXBlID09IE1pblNpemUgJiYgbG9naWNhbEhlaWdo
dExlbmd0aC5pc0F1dG8oKSkKKyAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IExlbmd0aCgw
LCBGaXhlZCk7CisKICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fubm90IGJvdGggYmUgJ2F1
dG8nIGJlY2F1c2UgJ3RvcCB3b3VsZCBvZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBz
dGF0aWMgcG9zaXRpb24gaW4gY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICBB
U1NFUlQoIShsb2dpY2FsVG9wLmlzQXV0bygpICYmIGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpKTsK
QEAgLTI5NzYsNiArMjk5OSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKIAogICAgIExheW91
dFVuaXQgbG9naWNhbFRvcFZhbHVlID0gMDsKIAorICAgIC8vIEZJWE1FOiBGb3Igbm9uLWZsZXhi
b3hlcyArIG1pbi13aWR0aCwgdGhpcyBuZWVkcyB0byB0cmVhdCBub24tZmxleGJveGVzIGFzIDAu
CiAgICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhlaWdodExlbmd0aC5pc0F1
dG8oKTsKICAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2FsVG9wLmlzQXV0bygpOwog
ICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0b20uaXNBdXRvKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNGJlYmY3ZWFiODAxMDk1ODliNDg2
MTFkNDcxNmZkZGE4Yjc2NjI0MC4uM2FmNjQ0N2M2OTljZDJhODA2OGZlY2FjNjkzNTdkMjI3Nzky
ZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMzMsNyArMzMsNyBA
QCBjbGFzcyBSZW5kZXJCb3hSZWdpb25JbmZvOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogc3RydWN0
IFBhaW50SW5mbzsKIAotZW51bSBMb2dpY2FsV2lkdGhUeXBlIHsgTG9naWNhbFdpZHRoLCBNaW5M
b2dpY2FsV2lkdGgsIE1heExvZ2ljYWxXaWR0aCB9OworZW51bSBTaXplVHlwZSB7IE1haW5TaXpl
LCBNaW5TaXplLCBNYXhTaXplIH07CiAKIGVudW0gT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFu
Y3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92ZXJsYXlTY3JvbGxiYXJT
aXplIH07CiAKQEAgLTMzNSwxNyArMzM1LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdoZXRoZXIg
b3Igbm90IHRoZSBlbGVtZW50IHNocmlua3MgdG8gaXRzIGludHJpbnNpYyB3aWR0aCAocmF0aGVy
IHRoYW4gZmlsbGluZyB0aGUgd2lkdGgKICAgICAvLyBvZiBhIGNvbnRhaW5pbmcgYmxvY2spLiAg
SFRNTDQgYnV0dG9ucywgPHNlbGVjdD5zLCA8aW5wdXQ+cywgbGVnZW5kcywgYW5kIGZsb2F0aW5n
L2NvbXBhY3QgZWxlbWVudHMgZG8gdGhpcy4KLSAgICBib29sIHNpemVzVG9JbnRyaW5zaWNMb2dp
Y2FsV2lkdGgoTG9naWNhbFdpZHRoVHlwZSkgY29uc3Q7CisgICAgYm9vbCBzaXplc1RvSW50cmlu
c2ljTG9naWNhbFdpZHRoKFNpemVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3RyZXRj
aGVzVG9NaW5JbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgTGF5b3V0VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVu
aXQgY2hpbGRNYXJnaW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1hcmdpbkVuZCwgY29uc3QgUmVu
ZGVyQmxvY2sqIGNiLCBSZW5kZXJSZWdpb24qLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpOwogCi0gICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRoSW5S
ZWdpb25Vc2luZyhMb2dpY2FsV2lkdGhUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwg
TGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKLSAgICBMYXlvdXRV
bml0IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoZWlnaHQpOwotICAg
IExheW91dFVuaXQgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3Ro
JiBoZWlnaHQpOwotICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNp
bmcoTGVuZ3RoIHdpZHRoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvblVzaW5nKFNpemVUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwgTGF5
b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMYXlvdXRVbml0
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0
KTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSwgTGVuZ3RoIHdpZHRoKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0
aChMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgYm9vbCBpbmNsdWRlTWF4V2lkdGggPSB0cnVlKSBj
b25zdDsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhM
ZW5ndGggaGVpZ2h0KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxIZWlnaHRVc2luZyhTaXplVHlwZSwgTGVuZ3RoIGhlaWdodCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRydWUp
IGNvbnN0OwpAQCAtNTQwLDExICs1NDAsMTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluaW5nQmxvY2ssIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3Jp
dGluZ01vZGUgPSB0cnVlKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsSGVpZ2h0KCk7Ci0gICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5n
KExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWlu
ZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCisgICAgdm9pZCBjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdp
ZHRoLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJl
Y3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExlbmd0aCBsb2dpY2FsTGVmdCwgTGVuZ3RoIGxvZ2ljYWxSaWdodCwgTGVuZ3Ro
IG1hcmdpbkxvZ2ljYWxMZWZ0LCBMZW5ndGggbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2FsV2lk
dGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0VW5pdCYg
bWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zKTsKLSAg
ICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2Fs
SGVpZ2h0LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssCisgICAg
dm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgTGVuZ3Ro
IGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9j
aywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVu
aXQgY29udGFpbmVyTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9n
aWNhbFRvcCwgTGVuZ3RoIGxvZ2ljYWxCb3R0b20sIExlbmd0aCBtYXJnaW5Mb2dpY2FsVG9wLCBM
ZW5ndGggbWFyZ2luTG9naWNhbEJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5b3V0VW5p
dCYgbWFyZ2luTG9naWNhbFRvcFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsQm90dG9t
VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBh
NGM0Yjg5MTBjZjU3NmU1YWUyNmE0ZWRjOTYwMDNlMjNhZjg1OTM1Li4wNDJkZTA4Zjg5OThjZWRk
NmQwNzEyYTM3ZGNmMTFhYmIyNGE1ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTA1OCwxMSAr
MTA1OCwxNCBAQCBMYXlvdXRVbml0IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dl
ZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sCiAgICAgICAgICAgICBtaW5XaWR0aCA9
IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgZWxzZSBpZiAoY2hp
bGQtPnN0eWxlKCktPm1pbldpZHRoKCkudHlwZSgpID09IE1pbkludHJpbnNpYykKICAgICAgICAg
ICAgIG1pbldpZHRoID0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAgICAg
ICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKS50eXBlKCkgPT0gQXV0bykKKyAg
ICAgICAgICAgIG1pbldpZHRoID0gMDsKIAogICAgICAgICBMYXlvdXRVbml0IGFsbG93ZWRTaHJp
bmthZ2UgPSBtaW48TGF5b3V0VW5pdD4oMCwgbWluV2lkdGggLSB3aWR0aCk7CiAgICAgICAgIHJl
dHVybiBhbGxvd2VkU2hyaW5rYWdlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
c3R5bGUoKS0+bWluSGVpZ2h0KCkuaXNGaXhlZCgpKSB7CisgICAgICAgIExlbmd0aCBtaW5IZWln
aHQgPSBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCk7CisgICAgICAgIGlmIChtaW5IZWlnaHQu
aXNGaXhlZCgpIHx8IG1pbkhlaWdodC5pc0F1dG8oKSkgewogICAgICAgICAgICAgTGF5b3V0VW5p
dCBtaW5IZWlnaHQgPSBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCkudmFsdWUoKTsKICAgICAg
ICAgICAgIExheW91dFVuaXQgaGVpZ2h0ID0gY2hpbGQtPm92ZXJyaWRlTG9naWNhbENvbnRlbnRI
ZWlnaHQoKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYWxsb3dlZFNocmlua2FnZSA9IG1pbjxM
YXlvdXRVbml0PigwLCBtaW5IZWlnaHQgLSBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggYTA0ODlmODNiMGMxYjI0MjZiNGY5
NzZkZDc4ZDI2NTcxNWRmZTBiYy4uZmQ4YzU1NDAzM2M5MjBjNDM0MzM1ZWJjZGUzYTVmOGM2YzIz
YTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIEFTU0VSVChwcmVmZXJyZWRMb2dpY2FsV2lkdGhz
RGlydHkoKSk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGNoZWNraW5nIGZvciBpc1NwZWNpZmll
ZCBzaW5jZSB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHBlcmNlbnRhZ2UsIGNhbGMgb3Igdmll
d3BvcnQgcmVsYXRpdmUgdmFsdWVzIGZvciB3aWR0aDsKICAgICBpZiAoc3R5bGVUb1VzZS0+bG9n
aWNhbFdpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxXaWR0aCgpLnZhbHVl
KCkgPiAwKQogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVUb1Vz
ZS0+bG9naWNhbFdpZHRoKCkudmFsdWUoKSk7CiAgICAgZWxzZSB7CkBAIC0yMDQsMTEgKzIwNSwx
MyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAg
ICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAKKyAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2hlY2tpbmcgZm9yIGlzU3BlY2lmaWVk
IHNpbmNlIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgcGVyY2VudGFnZSwgY2FsYyBvciB2aWV3
cG9ydCByZWxhdGl2ZSB2YWx1ZXMgZm9yIG1pbi13aWR0aDsKICAgICBpZiAoc3R5bGVUb1VzZS0+
bG9naWNhbE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0
aCgpLnZhbHVlKCkgPiAwKSB7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0g
c3RkOjptYXgobV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKICAgICAg
ICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVUb1VzZS0+bG9n
aWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBwcm9iYWJseSBiZSBjaGVja2luZyBmb3IgaXNTcGVjaWZpZWQgc2luY2UgeW91IHNob3Vs
ZCBiZSBhYmxlIHRvIHVzZSBwZXJjZW50YWdlLCBjYWxjIG9yIHZpZXdwb3J0IHJlbGF0aXZlIHZh
bHVlcyBmb3IgbWF4V2lkdGg7CiAgICAgaWYgKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgp
LmlzRml4ZWQoKSkgewogICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6
bWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxX
aWR0aChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgsIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxN
YXhXaWR0aCgpLnZhbHVlKCkpKTsKQEAgLTU5NSwxMSArNTk4LDExIEBAIExheW91dFVuaXQgUmVu
ZGVyRmxleGlibGVCb3g6OmNvbXB1dGVBdmFpbGFibGVGcmVlU3BhY2UoTGF5b3V0VW5pdCBwcmVm
ZXJyZWRNYWluCiAgICAgZWxzZSBpZiAoaGFzT3ZlcnJpZGVIZWlnaHQoKSkKICAgICAgICAgY29u
dGVudEV4dGVudCA9IG92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBMYXlvdXRVbml0
IGhlaWdodFJlc3VsdCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKE1haW5TaXpl
LCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICBpZiAoaGVpZ2h0UmVzdWx0ID09
IC0xKQogICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQ7
Ci0gICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVp
Z2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpKTsgLy8gTGVhdmUgYXMgLTEgaWYg
dW5zZXQuCi0gICAgICAgIExheW91dFVuaXQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBjb21wdXRlQ29udGVudExv
Z2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICBM
YXlvdXRVbml0IG1pbkhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKE1p
blNpemUsIHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7IC8vIExlYXZlIGFzIC0xIGlmIHVu
c2V0LgorICAgICAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhI
ZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsKICAg
ICAgICAgaWYgKG1heEhlaWdodCA9PSAtMSkKICAgICAgICAgICAgIG1heEhlaWdodCA9IGhlaWdo
dFJlc3VsdDsKICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gc3RkOjptaW4obWF4SGVpZ2h0LCBoZWln
aHRSZXN1bHQpOwpAQCAtNzcxLDEwICs3NzQsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJs
ZUJveDo6bGluZUJyZWFrTGVuZ3RoKCkKICAgICBpZiAoIWlzQ29sdW1uRmxvdygpKQogICAgICAg
ICByZXR1cm4gbWFpbkF4aXNDb250ZW50RXh0ZW50KCk7CiAKLSAgICBMYXlvdXRVbml0IGhlaWdo
dCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxIZWln
aHQoKSk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKICAgICBpZiAoaGVp
Z2h0ID09IC0xKQogICAgICAgICBoZWlnaHQgPSBNQVhfTEFZT1VUX1VOSVQ7Ci0gICAgTGF5b3V0
VW5pdCBtYXhIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgp
LT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgbWF4SGVpZ2h0ID0gY29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhl
aWdodCgpKTsKICAgICBpZiAobWF4SGVpZ2h0ICE9IC0xKQogICAgICAgICBoZWlnaHQgPSBzdGQ6
Om1pbihoZWlnaHQsIG1heEhlaWdodCk7CiAgICAgcmV0dXJuIGhlaWdodDsKQEAgLTc4OSw2ICs3
OTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JN
aW5BbmRNYXgoUmVuZGVyQm94KiBjaGlsZCwgTGF5bwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTgwOQogICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSAm
JiBjaGlsZFNpemUgPiB2YWx1ZUZvckxlbmd0aChtYXgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50LCByZW5kZXJWaWV3KSkKICAgICAgICAgY2hpbGRTaXplID0gdmFsdWVGb3JMZW5ndGgo
bWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVyVmlldyk7CisgICAgLy8g
RklYTUU6IFRyZWF0IGF1dG8gbWluIHZhbHVlcyBhcyBtaW4tY29udGVudC4KICAgICBpZiAobWlu
LmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRTaXplIDwgdmFsdWVGb3JMZW5ndGgobWluLCBmbGV4Ym94
QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVyVmlldykpCiAgICAgICAgIGNoaWxkU2l6ZSA9
IHZhbHVlRm9yTGVuZ3RoKG1pbiwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQsIHJlbmRl
clZpZXcpOwogICAgIHJldHVybiBjaGlsZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBkMjkwOTU5ZTEwN2RjZWRhYjM2ZjY1ZDM3NjIzMzE3
Mzk3NzgzNjRhLi40ZWFhMDQ3MjBiNGIzNTEyYzUzNmZlNzIzMmVmZWY5ZWVmNzA3YWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTMxNiw3ICsz
MTYsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsCiBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2Vk
Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0
CiB7CiAgICAgaWYgKHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkpCi0gICAg
ICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lk
dGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbFdpZHRo
KCkpLCBpbmNsdWRlTWF4V2lkdGgpOworICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1ZGVNYXhXaWR0
aCk7CiAKICAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJv
eCgpOwogCkBAIC0zNDEsNyArMzQxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb24KICAgICAg
ICAgICAgIC8vIG9yIGlmICd3aWR0aCcgaGFzIGEgY29tcHV0ZWQgdmFsdWUgb2YgJ2F1dG8nLCAn
aGVpZ2h0JyBoYXMgc29tZSBvdGhlciBjb21wdXRlZCB2YWx1ZSwgYW5kIHRoZSBlbGVtZW50IGRv
ZXMgaGF2ZSBhbiBpbnRyaW5zaWMgcmF0aW87IHRoZW4gdGhlIHVzZWQgdmFsdWUKICAgICAgICAg
ICAgIC8vIG9mICd3aWR0aCcgaXM6ICh1c2VkIGhlaWdodCkgKiAoaW50cmluc2ljIHJhdGlvKQog
ICAgICAgICAgICAgaWYgKGludHJpbnNpY1JhdGlvICYmICgoaGVpZ2h0SXNBdXRvICYmICFoYXNJ
bnRyaW5zaWNXaWR0aCAmJiBoYXNJbnRyaW5zaWNIZWlnaHQpIHx8ICFoZWlnaHRJc0F1dG8pKSB7
Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWlu
TWF4V2lkdGgocm91bmRUb0ludChyb3VuZChsb2dpY2FsSGVpZ2h0ICogaW50cmluc2ljUmF0aW8p
KSk7CiAgICAgICAgICAgICB9CiAKQEAgLTM1Myw3ICszNTMsNyBAQCBMYXlvdXRVbml0IFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lk
dGgpIGNvbgogICAgICAgICAgICAgICAgIC8vICdtYXJnaW4tbGVmdCcgKyAnYm9yZGVyLWxlZnQt
d2lkdGgnICsgJ3BhZGRpbmctbGVmdCcgKyAnd2lkdGgnICsgJ3BhZGRpbmctcmlnaHQnICsgJ2Jv
cmRlci1yaWdodC13aWR0aCcgKyAnbWFyZ2luLXJpZ2h0JyA9IHdpZHRoIG9mIGNvbnRhaW5pbmcg
YmxvY2sKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKICAgICAgICAg
ICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrV2l0aFdpZHRoID0gZmlyc3RDb250YWluaW5n
QmxvY2tXaXRoTG9naWNhbFdpZHRoKHRoaXMpKQotICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
V2lkdGggPSBibG9ja1dpdGhXaWR0aC0+Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVj
dGluZ01pbk1heFdpZHRoKGJsb2NrV2l0aFdpZHRoLT5jb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGhVc2luZyhibG9ja1dpdGhXaWR0aC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGJsb2NrV2l0aFdpZHRoLT5jb21w
dXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoYmxvY2tXaXRoV2lk
dGgtPmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5TaXplLCBibG9ja1dpdGhX
aWR0aC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxvY2so
KS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKQEAgLTM4NSw3ICszODUsNyBAQCBMYXlvdXRV
bml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3QK
IHsKICAgICAvLyAxMC41IENvbnRlbnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJvcGVydHk6IGh0
dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhlaWdodAogICAg
IGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0
KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9n
aWNhbEhlaWdodCgpKSk7CiAKICAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVk
ZGVkQ29udGVudEJveCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWJmNzZlYmNhOGFhNGFiZTljNGVkODg4YjU0YWZkNWZm
NWY5ZWViYi4uNWJjZTBjMzI1ZTFlZDJhOGE1MTI1NDg2ZWFlZThhNGNhN2Q3ZDMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAt
NzksMTEgKzc5LDExIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6bGF5b3V0VmVydGljYWxQ
YXJ0KCkKICAgICB9IAogfQogCi1zdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
Zyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgaW50IGNvbnRhaW5pbmdMZW5ndGgsIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcpCitzdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhTaXpl
VHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGludCBjb250YWluaW5nTGVuZ3Ro
LCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewotICAgIGlmIChsZW5ndGguaXNJbnRyaW5zaWNP
ckF1dG8oKSkKLSAgICAgICAgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxi
YXJUaGlja25lc3MoKTsKLSAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwg
Y29udGFpbmluZ0xlbmd0aCwgcmVuZGVyVmlldyk7CisgICAgaWYgKCFsZW5ndGguaXNJbnRyaW5z
aWNPckF1dG8oKSB8fCAoc2l6ZVR5cGUgPT0gTWluU2l6ZSAmJiBsZW5ndGguaXNBdXRvKCkpKQor
ICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgY29udGFpbmluZ0xl
bmd0aCwgcmVuZGVyVmlldyk7CisgICAgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5z
Y3JvbGxiYXJUaGlja25lc3MoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21w
dXRlU2Nyb2xsYmFyV2lkdGgoKQpAQCAtOTIsOSArOTIsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJh
clBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCgpCiAgICAgICAgIHJldHVybjsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGludCB2aXNpYmxlU2l6ZSA9IG1fc2Ny
b2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT53aWR0aCgpIC0gbV9zY3JvbGxiYXItPm93bmluZ1Jl
bmRlcmVyKCktPmJvcmRlckxlZnQoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5i
b3JkZXJSaWdodCgpOwotICAgIGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKHN0
eWxlKCktPndpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWluV2lk
dGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+bWluV2lkdGgoKSwgdmlz
aWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtYXhXaWR0aCA9IHN0eWxlKCktPm1heFdp
ZHRoKCkuaXNVbmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5
bGUoKS0+bWF4V2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOworICAgIGludCB3ID0g
Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1haW5TaXplLCBzdHlsZSgpLT53aWR0aCgpLCB2
aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1pbldpZHRoID0gY2FsY1Njcm9sbGJh
clRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCktPm1pbldpZHRoKCksIHZpc2libGVTaXpl
LCByZW5kZXJWaWV3KTsKKyAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLT5tYXhXaWR0aCgpLmlz
VW5kZWZpbmVkKCkgPyB3IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0
eWxlKCktPm1heFdpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKICAgICBzZXRXaWR0
aChtYXgobWluV2lkdGgsIG1pbihtYXhXaWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0b25z
IGFuZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2Yg
dGhlIHNjcm9sbGJhci4gCkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQ
YXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IHZpc2libGVTaXplID0gbV9zY3Jv
bGxiYXItPm93bmluZ1JlbmRlcmVyKCktPmhlaWdodCgpIC0gIG1fc2Nyb2xsYmFyLT5vd25pbmdS
ZW5kZXJlcigpLT5ib3JkZXJUb3AoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5i
b3JkZXJCb3R0b20oKTsKLSAgICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhz
dHlsZSgpLT5oZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtaW5I
ZWlnaHQgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+bWluSGVpZ2h0KCks
IHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+
bWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGggOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNp
bmcoc3R5bGUoKS0+bWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBp
bnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+aGVp
Z2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgbWluSGVpZ2h0ID0gY2Fs
Y1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCktPm1pbkhlaWdodCgpLCB2
aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1heEhlaWdodCA9IHN0eWxlKCktPm1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5n
KE1heFNpemUsIHN0eWxlKCktPm1heEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7
CiAgICAgc2V0SGVpZ2h0KG1heChtaW5IZWlnaHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CiAKICAg
ICAvLyBCdXR0b25zIGFuZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcg
dGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGQ1N2ExMmYyYjIzMWVkNzM4N2FhNTNhODg0ZTBiMWJk
OTBhODI1ZjUuLjVkZDY3MDI0ZTcyN2RlM2MwY2MzNTI1MjhiYjJlMDJkMWZmZmFiZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xNTU0LDcg
KzE1NTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxPdXRs
aW5lV2lkdGgoKSB7IHJldHVybiAzOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTGV0dGVyV29y
ZFNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2l6ZSgp
IHsgcmV0dXJuIExlbmd0aCgpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWluU2l6ZSgp
IHsgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxN
aW5TaXplKCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxN
YXhTaXplKCkgeyByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7IH0KICAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxPZmZzZXQoKSB7IHJldHVybiBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBMZW5ndGgg
aW5pdGlhbE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNmE0NzFi
MGZkOTM0YWJhNWY3NzNjNjU4MzRhMjdhYjJkN2Q0MzIyLi5jMmJkZTVmZDRlMjZjMzIwYWY3OWE5
NmYxZTgwYTRkNzlkZTFjZWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMDYgIE9q
YW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
bWluLWhlaWdodDphdXRvIGFuZCBtaW4td2lkdGg6YXV0bworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2F1dG8tbWluLXNpemUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9hdXRvLW1pbi1zaXplLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA2LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFkZCBDaHJvbWl1bSB0ZXN0IGZhaWx1cmUgZXhwZWN0YXRpb25zIHBlciBTa2lhIHJv
bGw6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2F1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNlY2Y5YTQ1YmM3NTMwY2EyNDhiMjQ4ODUxZmU0ZTY3MGRmMTEzMzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiIgor
UEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRp
di5zdHlsZS5taW5XaWR0aCBpcyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1p
bi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiYXV0byIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1pbldpZHRoIGlzICIwcHgiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
YXV0by1taW4tc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmNDA2ZjZhOWNlOTkyMjE0NTc0YWM3OWY2
NGYxYTRjNTBiOTQyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9h
dXRvLW1pbi1zaXplLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0nLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxkaXYg
aWQ9Zm9vPjwvZGl2PgorPHNjcmlwdD4KK2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm
b28nKTsKK3Nob3VsZEJlKCdkaXYuc3R5bGUubWluV2lkdGgnLCAnIiInKTsKK3Nob3VsZEJlKCdn
ZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdJywgJyIwcHgiJyk7CisKK2Rpdi5zdHls
ZS5taW5XaWR0aCA9IDA7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyIwcHgiJyk7
CitzaG91bGRCZSgnZ2V0Q29tcHV0ZWRTdHlsZShkaXYpWyJtaW4td2lkdGgiXScsICciMHB4Iicp
OworCitkaXYuc3R5bGUubWluV2lkdGggPSAnYXV0byc7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1p
bldpZHRoJywgJyJhdXRvIicpOworc2hvdWxkQmUoJ2dldENvbXB1dGVkU3R5bGUoZGl2KS5taW5X
aWR0aCcsICciMHB4IicpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146108</attachid>
            <date>2012-06-06 14:15:07 -0700</date>
            <delta_ts>2012-07-10 10:07:28 -0700</delta_ts>
            <desc>Fix EFL compile failure</desc>
            <filename>bug-88437-20120606141506.patch</filename>
            <type>text/plain</type>
            <size>48961</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkzMWZkYmIyZjE0M2Mz
NmIwNmEzOTQ3YThmZjZkOGNmMDEzMDk3Ni4uMzQ4NjAxNDVmNTVjNTBjZWEwNzE1NWRkZGY0N2Vl
NDNjYWQwZGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTA2LTA2ICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1p
bi1oZWlnaHQ6YXV0byBhbmQgbWluLXdpZHRoOmF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBmbGV4Ym94IHNwZWMgY2hhbmdlcyB0aGUg
ZGVmYXVsdCB2YWx1ZSBvZiBtaW4td2lkdGgvbWluLWhlaWdodCB0byAnYXV0bycuCisgICAgICAg
IE91dHNpZGUgb2YgYSBmbGV4aW5nIGNvbnRleHQsIHRoaXMgY29tcHV0ZXMgdG8gMHB4LiBJbiBh
IGZsZXhpbmcgY29udGV4dCwgaXQKKyAgICAgICAgY29tcHV0ZXMgdG8gJ21pbi1jb250ZW50Jy4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGF1dG8gdmFsdWUgYW5k
IG1ha2VzIGl0IGJlaGF2ZSBsaWtlIDBweCBldmVyeXdoZXJlLgorICAgICAgICBUaGUgb25seSB3
ZWIgdmlzaWJsZSBjaGFuZ2UgaW4gYmVoYXZpb3IgaXMgdGhhdCBzZXR0aW5nIG1pbi13aWR0aC9t
aW4taGVpZ2h0IHRvICdhdXRvJworICAgICAgICB3aWxsIHN1Y2NlZWQgKGUuZy4gZ2V0dGluZyB0
aGUgdmFsdWUgb2ZmIHN0eWxlIHdpbGwgcmV0dXJuICdhdXRvJykuCisKKyAgICAgICAgQSBmb2xs
b3d1cCBwYXRjaCB3aWxsIG1ha2UgZmxleC1pdGVtcyB0cmVhdCAnYXV0bycgYW5kICdtaW4tY29u
dGVudCcuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgUmV0dXJuIDBweCBmb3IgdGhlIGNv
bXB1dGVkIHZhbHVlIG9mIGF1dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIEFsbG93IGF1
dG8gYXMgYSBtaW4gc2l6ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2l6ZUNvbnN0
cmFpbnRzKToKKyAgICAgICAgVGhpcyBjb2RlIHdhcyB1bm5lY2Vzc2FyaWx5IGNoZWNraW5nIGlu
dHJpbnNpY09yQXV0byBzaW5jZSBhdXRvIHdhcyBwcmV2aW91c2x5CisgICAgICAgIG5vdCBhbiBh
bGxvd2VkIHZhbHVlIGZvciBtaW5XaWR0aC9taW5IZWlnaHQuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjpzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgTmVlZCB0byBwYXNzIGEgU2l6
ZVR5cGUgdG8gYWxsIHRoZXNlIG1ldGhvZHMgc28gdGhhdCB3ZSBrbm93IGlmIHRoZSBMZW5ndGgK
KyAgICAgICAgd2UncmUgd29ya2luZyB3aXRoIGlzIGEgbWluIGxlbmd0aCBzaW5jZSBhdXRvIGhh
cyBhIGRpZmZlcmVudCBtZWFuaW5nIG5vdworICAgICAgICBmb3IgbWluIGxlbmd0aHMuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChSZW5kZXJCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlQXZhaWxhYmxl
RnJlZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsaW5lQnJl
YWtMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENo
aWxkU2l6ZUZvck1pbkFuZE1heCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFyV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0
ZVNjcm9sbGJhckhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIERlZmF1bHQgbWluSGVpZ2h0L21pbldpZHRoIHRvIGF1dG8gaW5zdGVhZCBv
ZiAwcHguCisKIDIwMTItMDYtMDYgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBJbmRleGVkREI6IFJlbmFtZSBJREJGYWN0b3J5LmdldERhdGFiYXNlTmFtZXMo
KSB0byB3ZWJraXRHZXREYXRhYmFzZU5hbWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IGNhMmI3
ODJkOGY2NDgxNzAzMmExNTRkODFiZTJkOWU4NjUwYTE2OWEuLjZhNDU4NTRjMGI0OGZhYmM3ZWQx
Y2M1YzY0MjVlN2IwY2JlODFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMTY3NiwxMCArMTY3
NiwxMCBAQCBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzEwbGF5b3V0Um9vdEViCiBfX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxM2lzRmxleGlibGVCb3hFdgogX19aTks3V2ViQ29yZTlSZW5kZXJC
b3gyN3Nob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZEV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJT
dHlsZTEybG9naWNhbFdpZHRoRXYKLV9fWk43V2ViQ29yZTlSZW5kZXJCb3gyNGNvbXB1dGVMb2dp
Y2FsV2lkdGhVc2luZ0VOU18xNkxvZ2ljYWxXaWR0aFR5cGVFaQorX19aTjdXZWJDb3JlOVJlbmRl
ckJveDI0Y29tcHV0ZUxvZ2ljYWxXaWR0aFVzaW5nRU5TXzE2U2l6ZVR5cGVFaQogX19aTks3V2Vi
Q29yZTExUmVuZGVyU3R5bGUxMW1hcmdpblN0YXJ0RXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0
eWxlOW1hcmdpbkVuZEV2Ci1fX1pOSzdXZWJDb3JlOVJlbmRlckJveDI4c2l6ZXNUb0ludHJpbnNp
Y0xvZ2ljYWxXaWR0aEVOU18xNkxvZ2ljYWxXaWR0aFR5cGVFCitfX1pOSzdXZWJDb3JlOVJlbmRl
ckJveDI4c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aEVOU18xNlNpemVUeXBlRQogX19aTks3
V2ViQ29yZTExUmVuZGVyQmxvY2syNmlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlRXYKIF9fWk5L
N1dlYkNvcmUxMVJlbmRlclN0eWxlMTVsb2dpY2FsTWF4V2lkdGhFdgogX19aTks3V2ViQ29yZTEx
UmVuZGVyU3R5bGUxNWxvZ2ljYWxNaW5XaWR0aEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGJjMjRlODhjZDVmZDE0MzUz
NmQwYjZjNzEyNjMyNWI4MjMyYjk5ZDUuLmE3ZmFkNmM4OGJhNjFlZWVlNTc5ZDkxNjkwMDcyMTk4
MmFmNTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC0xODQ4LDggKzE4NDgsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnQKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3Ro
KG1heFdpZHRoLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1pbkhlaWdodDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGb3IgZmxleC1pdGVtcywgbWlu
LWhlaWdodDphdXRvIHNob3VsZCBjb21wdXRlIHRvIG1pbi1jb250ZW50LgorICAgICAgICAgICAg
aWYgKHN0eWxlLT5taW5IZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWluSGVpZ2h0KCksIHN0
eWxlLmdldCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgorICAgICAgICAg
ICAgLy8gRklYTUU6IEZvciBmbGV4LWl0ZW1zLCBtaW4td2lkdGg6YXV0byBzaG91bGQgY29tcHV0
ZSB0byBtaW4tY29udGVudC4KKyAgICAgICAgICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0F1
dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSgwLCBz
dHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZv
ckxlbmd0aChzdHlsZS0+bWluV2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5T3BhY2l0eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVWYWx1ZShzdHlsZS0+b3BhY2l0eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDY1ZTFhMmZhNTQ0ZjdjNmE5NzBiYjIyMDdj
OTk3NWU5ZjdkMjNkMGYuLmU5MjBlZDA4NGRlNjViMDBkMjM2MmNjMmI2MDNkMmZkNjg2NDgxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xODMyLDcgKzE4MzIsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOiAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwg
PHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dp
Y2FsV2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1ZU1pbklu
dHJpbnNpYykKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1
ZUludHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5v
bk5lZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCBkMTk0NzFlNjg3NmRiODAxYTM0
ZWZlZjUzOGIxZmQ0NTM4NDA2MWQ3Li5lYTVmYjMxY2NmNDRjZWU1ZDFjZGVjOGZkYzI1MTY2MzVl
NjYyMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtMjEzLDcgKzIxMyw4IEBAIHB1
YmxpYzoKICAgICBib29sIGlzUmVsYXRpdmUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gUmVs
YXRpdmU7IH0KICAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBQ
ZXJjZW50IHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkOyB9CiAgICAgYm9vbCBpc0ZpeGVkKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IEZpeGVkOyB9Ci0gICAgYm9vbCBpc0ludHJpbnNpY09yQXV0
bygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRvIHx8IHR5cGUoKSA9PSBNaW5JbnRyaW5z
aWMgfHwgdHlwZSgpID09IEludHJpbnNpYzsgfQorICAgIGJvb2wgaXNJbnRyaW5zaWMoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gTWluSW50cmluc2ljIHx8IHR5cGUoKSA9PSBJbnRyaW5zaWM7
IH0KKyAgICBib29sIGlzSW50cmluc2ljT3JBdXRvKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IEF1dG8gfHwgaXNJbnRyaW5zaWMoKTsgfQogICAgIGJvb2wgaXNTcGVjaWZpZWQoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gRml4ZWQgfHwgdHlwZSgpID09IFBlcmNlbnQgfHwgdHlwZSgpID09
IENhbGN1bGF0ZWQgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKTsgfQogICAgIGJvb2wgaXNDYWxj
dWxhdGVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IENhbGN1bGF0ZWQ7IH0KICAgICBib29s
IGlzQ2FsY3VsYXRlZEVxdWFsKGNvbnN0IExlbmd0aCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggN2QyN2I5NmQwYTQwMzhm
YzRjYTM1YWZlNTZhNzJiMTMxYzEzNTg2Ny4uNDYyZWU5NDZlOTFjOTVmODZlNGUzMWEyNzhhZTll
YWIyM2RjOWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRl
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhl
bWVFZmwuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNp
emVDb25zdHJhaW50cyhSZW5kZXJTdHlsZSogc3R5bGUsIEZvcm1UeXBlIHR5cGUpIGNvCiB7CiAg
ICAgY29uc3Qgc3RydWN0IFRoZW1lUGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChzaXpl
X3QpdHlwZTsKIAotICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygp
KQorICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpYygpKQogICAgICAgICBzdHls
ZS0+c2V0TWluV2lkdGgoZGVzYy0+bWluLndpZHRoKCkpOwotICAgIGlmIChzdHlsZS0+bWluSGVp
Z2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoc3R5bGUtPm1pbkhlaWdodCgpLmlz
SW50cmluc2ljKCkpCiAgICAgICAgIHN0eWxlLT5zZXRNaW5IZWlnaHQoZGVzYy0+bWluLmhlaWdo
dCgpKTsKIAogICAgIGlmIChkZXNjLT5tYXgud2lkdGgoKS52YWx1ZSgpID4gMCAmJiBzdHlsZS0+
bWF4V2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBmY2M4ZGY3MDg2ZGQ5Y2UwZjEwYmE1MTEwMTkzMTk0NzEwOTFkOTlk
Li5mMGNlMTM2MGVlMDE0NDY3ZmRkMGFlZWRjMWNiNjg4YTVjMTVmMzY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTY4NywxNyArMTY4NywxNyBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9u
LCBMYXlvdXRVbml0IG9mZgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoTGVu
Z3RoLnZhbHVlKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBDYWxjdWxhdGUgTG9naWNhbFdpZHRoCi0gICAgICAgIHNldExvZ2ljYWxX
aWR0aChjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGgsIGNvbnRh
aW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpKTsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGNvbXB1dGVMb2dpY2Fs
V2lkdGhJblJlZ2lvblVzaW5nKE1haW5TaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0
aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CiAKICAg
ICAgICAgLy8gQ2FsY3VsYXRlIE1heExvZ2ljYWxXaWR0aAogICAgICAgICBpZiAoIXN0eWxlVG9V
c2UtPmxvZ2ljYWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIExheW91
dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmco
TWF4TG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBjYiwgcmVn
aW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmco
TWF4U2l6ZSwgY29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgY2IsIHJlZ2lvbiwgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAgICAgICAgICAgICBpZiAobG9naWNhbFdp
ZHRoKCkgPiBtYXhMb2dpY2FsV2lkdGgpCiAgICAgICAgICAgICAgICAgc2V0TG9naWNhbFdpZHRo
KG1heExvZ2ljYWxXaWR0aCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDYWxjdWxhdGUgTWlu
TG9naWNhbFdpZHRoCi0gICAgICAgIExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gY29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0
aEluSW5saW5lRGlyZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsV2lkdGggPSBjb21wdXRlTG9n
aWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGly
ZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKICAg
ICAgICAgaWYgKGxvZ2ljYWxXaWR0aCgpIDwgbWluTG9naWNhbFdpZHRoKQogICAgICAgICAgICAg
c2V0TG9naWNhbFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCk7CiAgICAgfQpAQCAtMTcyMyw0MSArMTcy
Myw0NCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBjYi0+c2V0TWFyZ2luRW5k
Rm9yQ2hpbGQodGhpcywgY29udGFpbmVyTG9naWNhbFdpZHRoIC0gbG9naWNhbFdpZHRoKCkgLSBj
Yi0+bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGhUeXBlIHdpZHRo
VHlwZSwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsCitMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBl
LCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKICAgICBjb25zdCBSZW5kZXJCbG9j
ayogY2IsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2Fs
VG9wT2ZGaXJzdFBhZ2UpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQgPSBs
b2dpY2FsV2lkdGgoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAg
ICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aDsKLSAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0
aCkKKyAgICBpZiAod2lkdGhUeXBlID09IE1haW5TaXplKQogICAgICAgICBsb2dpY2FsV2lkdGgg
PSBzdHlsZVRvVXNlLT5sb2dpY2FsV2lkdGgoKTsKLSAgICBlbHNlIGlmICh3aWR0aFR5cGUgPT0g
TWluTG9naWNhbFdpZHRoKQorICAgIGVsc2UgaWYgKHdpZHRoVHlwZSA9PSBNaW5TaXplKQogICAg
ICAgICBsb2dpY2FsV2lkdGggPSBzdHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKTsKICAgICBl
bHNlCiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgp
OwogCiAgICAgQVNTRVJUKCFsb2dpY2FsV2lkdGguaXNVbmRlZmluZWQoKSk7CiAKLSAgICBpZiAo
bG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsKLSAgICAgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IHZpZXcoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0g
YXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7CisgICAgLy8g
RklYTUU6IG1pbldpZHRoOmF1dG8gb24gYSBmbGV4LWl0ZW0gbmVlZHMgdG8gZ28gZG93biB0aGUg
aW50cmluc2ljT3JBdXRvIHBhdGggYmVsb3cuCisgICAgaWYgKCh3aWR0aFR5cGUgPT0gTWluU2l6
ZSAmJiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUJvcmRl
ckJveExvZ2ljYWxXaWR0aCgwKTsKIAotICAgICAgICBpZiAoc2hyaW5rVG9Bdm9pZEZsb2F0cygp
ICYmIGNiLT5jb250YWluc0Zsb2F0cygpKQotICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0
ID0gc2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhtYXJnaW5TdGFydCwgbWFyZ2luRW5k
LCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAvLyBG
SVhNRTogSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIG91
ciBkaXJlY3Rpb24gd2UgbmVlZCB0byB1c2UgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIGhlaWdodCBp
bnN0ZWFkLgorICAgIGlmICghbG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAg
ICAgIHJldHVybiBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCB2aWV3KCkpKTsKIAotICAgICAgICBp
ZiAoc2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aCh3aWR0aFR5cGUpKSB7Ci0gICAgICAgICAg
ICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtYXgobG9naWNhbFdpZHRoUmVzdWx0LCBtaW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtaW4o
bG9naWNhbFdpZHRoUmVzdWx0LCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgLy8gRklYTUU6IElmIHRoZSBjb250YWluaW5nIGJsb2NrIGZsb3cgaXMg
cGVycGVuZGljdWxhciB0byBvdXIgZGlyZWN0aW9uIHdlIG5lZWQgdG8gdXNlIHRoZSBhdmFpbGFi
bGUgbG9naWNhbCBoZWlnaHQgaW5zdGVhZC4KLSAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0g
Y29tcHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgdmlldygpKSk7IAorICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSB2aWV3KCk7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1
ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIHJlbmRlclZpZXcpOworICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgs
IHJlbmRlclZpZXcpOworICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0ID0gYXZhaWxh
YmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7CiAKKyAgICBpZiAoc2hy
aW5rVG9Bdm9pZEZsb2F0cygpICYmIGNiLT5jb250YWluc0Zsb2F0cygpKQorICAgICAgICBsb2dp
Y2FsV2lkdGhSZXN1bHQgPSBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKG1hcmdpblN0
YXJ0LCBtYXJnaW5FbmQsIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UpOworCisgICAgaWYgKHNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGgod2lkdGhUeXBlKSkg
eworICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtYXgobG9naWNhbFdpZHRoUmVzdWx0LCBt
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9
IG1pbihsb2dpY2FsV2lkdGhSZXN1bHQsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aFJlc3VsdDsKIH0KIAotYm9vbCBSZW5kZXJCb3g6
OnNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGgoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUp
IGNvbnN0Citib29sIFJlbmRlckJveDo6c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXaWR0aChTaXpl
VHlwZSB3aWR0aFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gTWFycXVlZXMgaW4gV2luSUUgYXJlIGxp
a2UgYSBtaXh0dXJlIG9mIGJsb2NrcyBhbmQgaW5saW5lLWJsb2Nrcy4gIFRoZXkgc2l6ZSBhcyB0
aG91Z2ggdGhleSdyZSBibG9ja3MsCiAgICAgLy8gYnV0IHRoZXkgYWxsb3cgdGV4dCB0byBzaXQg
b24gdGhlIHNhbWUgbGluZSBhcyB0aGUgbWFycXVlZS4KQEAgLTE3NjYsNyArMTc2OSw3IEBAIGJv
b2wgUmVuZGVyQm94OjpzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoKExvZ2ljYWxXaWR0aFR5
cGUgd2lkdGhUeXBlKSBjb25zdAogCiAgICAgLy8gVGhpcyBjb2RlIG1heSBsb29rIGEgYml0IHN0
cmFuZ2UuICBCYXNpY2FsbHkgd2lkdGg6aW50cmluc2ljIHNob3VsZCBjbGFtcCB0aGUgc2l6ZSB3
aGVuIHRlc3RpbmcgYm90aAogICAgIC8vIG1pbi13aWR0aCBhbmQgd2lkdGguICBtYXgtd2lkdGgg
aXMgb25seSBjbGFtcGVkIGlmIGl0IGlzIGFsc28gaW50cmluc2ljLgotICAgIExlbmd0aCBsb2dp
Y2FsV2lkdGggPSAod2lkdGhUeXBlID09IE1heExvZ2ljYWxXaWR0aCkgPyBzdHlsZSgpLT5sb2dp
Y2FsTWF4V2lkdGgoKSA6IHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpOworICAgIExlbmd0aCBsb2dp
Y2FsV2lkdGggPSAod2lkdGhUeXBlID09IE1heFNpemUpID8gc3R5bGUoKS0+bG9naWNhbE1heFdp
ZHRoKCkgOiBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKTsKICAgICBpZiAobG9naWNhbFdpZHRoLnR5
cGUoKSA9PSBJbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xOTk5LDExICsy
MDAyLDExIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgpCiAKICAgICAg
ICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlmIChjaGVja01pbk1heEhlaWdo
dCkgewotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2lu
ZyhzdHlsZVRvVXNlLT5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAgaGVpZ2h0UmVzdWx0
ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNh
bEhlaWdodCgpKTsKICAgICAgICAgICAgIGlmIChoZWlnaHRSZXN1bHQgPT0gLTEpCiAgICAgICAg
ICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gbG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgTGF5
b3V0VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dp
Y2FsTWluSGVpZ2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KLSAgICAgICAgICAgIExh
eW91dFVuaXQgbWF4SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5l
ZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNl
LT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IID0gY29t
cHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLT5sb2dpY2FsTWluSGVp
Z2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAgICAgIExheW91dFVuaXQg
bWF4SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVp
Z2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNl
LT5sb2dpY2FsTWF4SGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKG1heEggPT0gLTEpCiAgICAg
ICAgICAgICAgICAgbWF4SCA9IGhlaWdodFJlc3VsdDsKICAgICAgICAgICAgIGhlaWdodFJlc3Vs
dCA9IG1pbihtYXhILCBoZWlnaHRSZXN1bHQpOwpAQCAtMjA1MCwyNiArMjA1MywyOCBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogICAgIH0KIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoZWln
aHQpCitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXpl
VHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCkKIHsKLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHQp
OworICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCk7CiAgICAgaWYgKGxvZ2ljYWxIZWlnaHQgIT0g
LTEpCiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0KTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExl
bmd0aCYgaGVpZ2h0KQorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNh
bEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0KQog
eworICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5IZWlnaHQ6YXV0byBzaG91bGQgYmUg
bWluLWNvbnRlbnQuCisgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGhl
aWdodFR5cGUgPT0gTWluU2l6ZSA/IDAgOiAtMTsKKyAKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQgPSAtMTsKLSAgICBpZiAoIWhlaWdodC5pc0F1dG8oKSkgewotICAgICAgICBpZiAoaGVp
Z2h0LmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBoZWlnaHQudmFsdWUo
KTsKLSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0LmlzUGVyY2VudCgpKQotICAgICAgICAgICAgbG9n
aWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwotICAg
ICAgICBlbHNlIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAg
IGxvZ2ljYWxIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChoZWlnaHQsIDAsIHZpZXcoKSk7Ci0gICAg
fQotICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OworICAgIGlmIChoZWlnaHQuaXNGaXhlZCgpKQor
ICAgICAgICByZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CisgICAgaWYgKGhlaWdodC5pc1BlcmNlbnQo
KSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQp
OworICAgIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKGhlaWdodCwgMCwgdmlldygpKTsKKyAgICByZXR1cm4gLTE7CiB9CiAK
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29u
c3QgTGVuZ3RoJiBoZWlnaHQpCkBAIC0yMTU5LDE4ICsyMTY0LDIyIEBAIExheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWln
aHQpCiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgo
Ym9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1ZGVNYXhXaWR0aCk7Cisg
ICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0
aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9n
aWNhbFdpZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91
dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKLSAgICBM
YXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVz
aW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKLSAgICBMYXlvdXRVbml0IG1heExvZ2lj
YWxXaWR0aCA9ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCku
aXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1pbkxv
Z2ljYWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUsIHN0
eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxXaWR0
aCA9ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCkuaXNVbmRl
ZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5n
KE1heFNpemUsIHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKICAgICByZXR1cm4gbWF4KG1p
bkxvZ2ljYWxXaWR0aCwgbWluKGxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9CiAK
LUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhM
ZW5ndGggbG9naWNhbFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBMZW5ndGggbG9naWNh
bFdpZHRoKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5XaWR0aDph
dXRvIHNob3VsZCBiZSBtaW4tY29udGVudC4KKyAgICBpZiAoc2l6ZVR5cGUgPT0gTWluU2l6ZSAm
JiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJv
eExvZ2ljYWxXaWR0aCgwKTsKKwogICAgIHN3aXRjaCAobG9naWNhbFdpZHRoLnR5cGUoKSkgewog
ICAgICAgICBjYXNlIEZpeGVkOgogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC52YWx1ZSgpKTsKQEAgLTIxOTUsMTggKzIyMDQsMjIg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5n
KExlbmd0aCBsb2dpY2FsV2lkdGgpIGNvbnMKIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRlUmVwbGFjZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSk7CisgICAgcmV0dXJu
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhl
aWdodCgpKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
IGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7Ci0gICAg
TGF5b3V0VW5pdCBtYXhMb2dpY2FsSGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgp
LmlzVW5kZWZpbmVkKCkgPyBsb2dpY2FsSGVpZ2h0IDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBt
aW5Mb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKE1pblNp
emUsIHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBtYXhMb2dp
Y2FsSGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBs
b2dpY2FsSGVpZ2h0IDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUs
IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKSk7CiAgICAgcmV0dXJuIG1heChtaW5Mb2dpY2Fs
SGVpZ2h0LCBtaW4obG9naWNhbEhlaWdodCwgbWF4TG9naWNhbEhlaWdodCkpOwogfQogCi1MYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0
aCBsb2dpY2FsSGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBzaXplVHlwZSwgTGVuZ3RoIGxvZ2ljYWxI
ZWlnaHQpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IEZvciBmbGV4Ym94ZXMsIG1pbldpZHRoOmF1
dG8gc2hvdWxkIGJlIG1pbi1jb250ZW50LgorICAgIGlmIChzaXplVHlwZSA9PSBNaW5TaXplICYm
IGxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJv
eExvZ2ljYWxIZWlnaHQoMCk7CisKICAgICBzd2l0Y2ggKGxvZ2ljYWxIZWlnaHQudHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgRml4ZWQ6CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CkBAIC0yNTUxLDcgKzI1NjQs
NyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoUmVuZGVy
UmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgIC8vIENhbGN1bGF0ZSBjb25zdHJhaW50
IGVxdWF0aW9uIHZhbHVlcyBmb3IgJ3dpZHRoJyBjYXNlLgogICAgIExheW91dFVuaXQgbG9naWNh
bFdpZHRoUmVzdWx0OwogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRSZXN1bHQ7Ci0gICAgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSwg
Y29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSwgY29u
dGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5n
dGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxS
aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMs
IGxvZ2ljYWxMZWZ0UmVzdWx0KTsKQEAgLTI1NjUsNyArMjU3OCw3IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5
b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luTG9naWNhbFJpZ2h0OwogICAg
ICAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNvbnRh
aW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbFdpZHRoVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1Bh
ZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdp
bkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhMb2dpY2FsV2lkdGgsIG1heE1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXhNYXJnaW5Mb2dpY2Fs
UmlnaHQsIG1heExvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1ODUsNyArMjU5OCw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lv
biwgTGF5b3V0VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luTG9naWNhbFJpZ2h0
OwogICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCks
IGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3Np
dGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1pbldpZHRo
KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJz
UGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9naWNhbExlZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQs
IG1hcmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaW5Mb2dpY2FsV2lkdGgsIG1pbk1hcmdpbkxvZ2ljYWxMZWZ0LCBtaW5NYXJnaW5M
b2dpY2FsUmlnaHQsIG1pbkxvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1OTksNyArMjYxMiw5IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24q
IHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgfQogCiAgICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50
cmluc2ljTG9naWNhbFdpZHRoKCkgJiYgbG9naWNhbFdpZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZykgewotICAgICAgICBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAt
IGJvcmRlcnNQbHVzUGFkZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGly
ZWN0aW9uLAorICAgICAgICAvLyBGSVhNRTogVGhpcyBMZW5ndGggaXNuJ3QgdGVjaG5pY2FsbHkg
YSBNYWluU2l6ZSwgYnV0IHRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBwYXNzIExlbmd0
aCB0aGF0J3Mgbm90IGRpcmVjdGx5CisgICAgICAgIC8vIGdyYWJiZWQgb2ZmIHRoZSBSZW5kZXJT
dHlsZSwgc28gaXQncyBwcm9iYWJseSBub3Qgd29ydGggYWRkaW5nIGFuIGV4dHJhIGNhc2UgdG8g
dGhlIGVudW0uCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWFp
blNpemUsIExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFk
ZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxv
Z2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0LCBtYXJnaW5Mb2dpY2FsTGVmdEFs
aWFzLCBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcywgbG9naWNhbExlZnRSZXN1bHQpOwpAQCAtMjYz
NiwxMSArMjY1MSwxNSBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVk
T2Zmc2V0KExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zLCBjb25zdAogICAgICAgICBsb2dpY2Fs
TGVmdFBvcyArPSAoY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb250YWluZXJC
bG9jay0+Ym9yZGVyTGVmdCgpIDogY29udGFpbmVyQmxvY2stPmJvcmRlclRvcCgpKTsKIH0KIAot
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3Ro
IGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2Nr
LCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKK3ZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExl
bmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJC
bG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbExlZnQs
IExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBt
YXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCiB7CisgICAgLy8gRklYTUU6IFdoYXQgc2hv
dWxkIGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6
bWluLWNvbnRlbnQgaW5zdGVhZCBvZiBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6MC4KKyAg
ICBpZiAod2lkdGhTaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSkK
KyAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKwogICAgIC8vICdsZWZ0
JyBhbmQgJ3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291bGQgb2Yg
YmVlbgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVhZHkKICAg
ICBBU1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBsb2dpY2FsUmlnaHQuaXNBdXRvKCkp
KTsKQEAgLTI4ODAsNyArMjg5OSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHQoKQogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvczsKIAogICAgIC8v
IENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZhbHVlcyBmb3IgJ2hlaWdodCcgY2FzZS4K
LSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dp
Y2FsSGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3Jk
ZXJzUGx1c1BhZGRpbmcsCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpblNpemUsIHN0eWxlVG9Vc2UtPmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVuZ3RoLCBsb2dpY2FsQm90dG9t
TGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRSZXN1bHQsIG1hcmdpbkJlZm9yZUFsaWFz
LCBtYXJnaW5BZnRlckFsaWFzLCBsb2dpY2FsVG9wUG9zKTsKICAgICBzZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3BQb3MpOwpAQCAtMjg5NSw3ICsyOTE0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2lu
QWZ0ZXI7CiAgICAgICAgIExheW91dFVuaXQgbWF4TG9naWNhbFRvcFBvczsKIAotICAgICAgICBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4
SGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJz
UGx1c1BhZGRpbmcsCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5n
KE1heFNpemUsIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ss
IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0aCwgbG9naWNh
bEJvdHRvbUxlbmd0aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbEhlaWdodCwgbWF4TWFyZ2lu
QmVmb3JlLCBtYXhNYXJnaW5BZnRlciwgbWF4TG9naWNhbFRvcFBvcyk7CiAKQEAgLTI5MTQsNyAr
MjkzMyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQo
KQogICAgICAgICBMYXlvdXRVbml0IG1pbk1hcmdpbkFmdGVyOwogICAgICAgICBMYXlvdXRVbml0
IG1pbkxvZ2ljYWxUb3BQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVp
Z2h0VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbkhlaWdodCgpLCBjb250YWluZXJCbG9jaywg
Y29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgICAgICBjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLT5sb2dp
Y2FsTWluSGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBi
b3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9y
ZSwgbWFyZ2luQWZ0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pbkxvZ2ljYWxIZWlnaHQsIG1pbk1hcmdpbkJlZm9yZSwgbWluTWFyZ2luQWZ0ZXIsIG1p
bkxvZ2ljYWxUb3BQb3MpOwogCkBAIC0yOTY2LDExICsyOTg1LDE1IEBAIHN0YXRpYyB2b2lkIGNv
bXB1dGVMb2dpY2FsVG9wUG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9z
LCBjb25zdCBSCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlwZSwgTGVu
Z3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250
YWluZXJCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9y
ZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVu
Z3RoIG1hcmdpbkJlZm9yZSwgTGVuZ3RoIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWln
aHRWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luQmVmb3JlVmFsdWUsIExheW91dFVuaXQmIG1hcmdp
bkFmdGVyVmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpCiB7CisgICAgLy8gRklYTUU6
IFdoYXQgc2hvdWxkIGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4taGVpZ2h0OmF1dG8gPT0g
bWluLWhlaWdodDptaW4tY29udGVudCBpbnN0ZWFkIG9mIG1pbi1oZWlnaHQ6YXV0byA9PSBtaW4t
aGVpZ2h0OjAuCisgICAgaWYgKGhlaWdodFNpemVUeXBlID09IE1pblNpemUgJiYgbG9naWNhbEhl
aWdodExlbmd0aC5pc0F1dG8oKSkKKyAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IExlbmd0
aCgwLCBGaXhlZCk7CisKICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fubm90IGJvdGggYmUg
J2F1dG8nIGJlY2F1c2UgJ3RvcCB3b3VsZCBvZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRo
ZSBzdGF0aWMgcG9zaXRpb24gaW4gY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAg
ICBBU1NFUlQoIShsb2dpY2FsVG9wLmlzQXV0bygpICYmIGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkp
KTsKQEAgLTI5NzksNiArMzAwMiw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKIAogICAgIExh
eW91dFVuaXQgbG9naWNhbFRvcFZhbHVlID0gMDsKIAorICAgIC8vIEZJWE1FOiBGb3Igbm9uLWZs
ZXhib3hlcyArIG1pbi13aWR0aCwgdGhpcyBuZWVkcyB0byB0cmVhdCBub24tZmxleGJveGVzIGFz
IDAuCiAgICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhlaWdodExlbmd0aC5p
c0F1dG8oKTsKICAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2FsVG9wLmlzQXV0bygp
OwogICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0b20uaXNBdXRvKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNGJlYmY3ZWFiODAxMDk1ODli
NDg2MTFkNDcxNmZkZGE4Yjc2NjI0MC4uM2FmNjQ0N2M2OTljZDJhODA2OGZlY2FjNjkzNTdkMjI3
NzkyZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMzMsNyArMzMs
NyBAQCBjbGFzcyBSZW5kZXJCb3hSZWdpb25JbmZvOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogc3Ry
dWN0IFBhaW50SW5mbzsKIAotZW51bSBMb2dpY2FsV2lkdGhUeXBlIHsgTG9naWNhbFdpZHRoLCBN
aW5Mb2dpY2FsV2lkdGgsIE1heExvZ2ljYWxXaWR0aCB9OworZW51bSBTaXplVHlwZSB7IE1haW5T
aXplLCBNaW5TaXplLCBNYXhTaXplIH07CiAKIGVudW0gT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92ZXJsYXlTY3JvbGxi
YXJTaXplIH07CiAKQEAgLTMzNSwxNyArMzM1LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdoZXRo
ZXIgb3Igbm90IHRoZSBlbGVtZW50IHNocmlua3MgdG8gaXRzIGludHJpbnNpYyB3aWR0aCAocmF0
aGVyIHRoYW4gZmlsbGluZyB0aGUgd2lkdGgKICAgICAvLyBvZiBhIGNvbnRhaW5pbmcgYmxvY2sp
LiAgSFRNTDQgYnV0dG9ucywgPHNlbGVjdD5zLCA8aW5wdXQ+cywgbGVnZW5kcywgYW5kIGZsb2F0
aW5nL2NvbXBhY3QgZWxlbWVudHMgZG8gdGhpcy4KLSAgICBib29sIHNpemVzVG9JbnRyaW5zaWNM
b2dpY2FsV2lkdGgoTG9naWNhbFdpZHRoVHlwZSkgY29uc3Q7CisgICAgYm9vbCBzaXplc1RvSW50
cmluc2ljTG9naWNhbFdpZHRoKFNpemVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3Ry
ZXRjaGVzVG9NaW5JbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgTGF5b3V0VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91
dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1hcmdpbkVuZCwgY29uc3Qg
UmVuZGVyQmxvY2sqIGNiLCBSZW5kZXJSZWdpb24qLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UpOwogCi0gICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGhUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9u
KiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKLSAgICBMYXlv
dXRVbml0IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoZWlnaHQpOwot
ICAgIExheW91dFVuaXQgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVu
Z3RoJiBoZWlnaHQpOwotICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRo
VXNpbmcoTGVuZ3RoIHdpZHRoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2Fs
V2lkdGhJblJlZ2lvblVzaW5nKFNpemVUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCwgY29uc3QgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiwg
TGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBMYXlvdXRV
bml0IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVp
Z2h0KTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKFNp
emVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSwgTGVuZ3RoIHdpZHRoKSBjb25zdDsKICAg
ICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhX
aWR0aChMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgYm9vbCBpbmNsdWRlTWF4V2lkdGggPSB0cnVl
KSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2lu
ZyhMZW5ndGggaGVpZ2h0KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgTGVuZ3RoIGhlaWdodCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRy
dWUpIGNvbnN0OwpAQCAtNTQwLDExICs1NDAsMTEgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjb250YWluaW5nQmxvY2ssIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFy
V3JpdGluZ01vZGUgPSB0cnVlKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0KCk7Ci0gICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVz
aW5nKExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250
YWluZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCisgICAgdm9pZCBj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlLCBMZW5ndGggbG9naWNh
bFdpZHRoLCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHRE
aXJlY3Rpb24gY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgTGF5b3V0
VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExlbmd0aCBsb2dpY2FsTGVmdCwgTGVuZ3RoIGxvZ2ljYWxSaWdodCwgTGVu
Z3RoIG1hcmdpbkxvZ2ljYWxMZWZ0LCBMZW5ndGggbWFyZ2luTG9naWNhbFJpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBsb2dpY2Fs
V2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwgTGF5b3V0VW5p
dCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zKTsK
LSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dp
Y2FsSGVpZ2h0LCBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssCisg
ICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgTGVu
Z3RoIGxvZ2ljYWxIZWlnaHQsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJC
bG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91
dFVuaXQgY29udGFpbmVyTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRp
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgg
bG9naWNhbFRvcCwgTGVuZ3RoIGxvZ2ljYWxCb3R0b20sIExlbmd0aCBtYXJnaW5Mb2dpY2FsVG9w
LCBMZW5ndGggbWFyZ2luTG9naWNhbEJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5b3V0
VW5pdCYgbWFyZ2luTG9naWNhbFRvcFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsQm90
dG9tVmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRl
eCBhNGM0Yjg5MTBjZjU3NmU1YWUyNmE0ZWRjOTYwMDNlMjNhZjg1OTM1Li4wNDJkZTA4Zjg5OThj
ZWRkNmQwNzEyYTM3ZGNmMTFhYmIyNGE1ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTA1OCwx
MSArMTA1OCwxNCBAQCBMYXlvdXRVbml0IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxs
b3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sCiAgICAgICAgICAgICBtaW5XaWR0
aCA9IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgZWxzZSBpZiAo
Y2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkudHlwZSgpID09IE1pbkludHJpbnNpYykKICAgICAg
ICAgICAgIG1pbldpZHRoID0gY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOworICAg
ICAgICBlbHNlIGlmIChjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKS50eXBlKCkgPT0gQXV0bykK
KyAgICAgICAgICAgIG1pbldpZHRoID0gMDsKIAogICAgICAgICBMYXlvdXRVbml0IGFsbG93ZWRT
aHJpbmthZ2UgPSBtaW48TGF5b3V0VW5pdD4oMCwgbWluV2lkdGggLSB3aWR0aCk7CiAgICAgICAg
IHJldHVybiBhbGxvd2VkU2hyaW5rYWdlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjaGls
ZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCkuaXNGaXhlZCgpKSB7CisgICAgICAgIExlbmd0aCBtaW5I
ZWlnaHQgPSBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCk7CisgICAgICAgIGlmIChtaW5IZWln
aHQuaXNGaXhlZCgpIHx8IG1pbkhlaWdodC5pc0F1dG8oKSkgewogICAgICAgICAgICAgTGF5b3V0
VW5pdCBtaW5IZWlnaHQgPSBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCkudmFsdWUoKTsKICAg
ICAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0ID0gY2hpbGQtPm92ZXJyaWRlTG9naWNhbENvbnRl
bnRIZWlnaHQoKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYWxsb3dlZFNocmlua2FnZSA9IG1p
bjxMYXlvdXRVbml0PigwLCBtaW5IZWlnaHQgLSBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggYTA0ODlmODNiMGMxYjI0MjZi
NGY5NzZkZDc4ZDI2NTcxNWRmZTBiYy4uZmQ4YzU1NDAzM2M5MjBjNDM0MzM1ZWJjZGUzYTVmOGM2
YzIzYTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIEFTU0VSVChwcmVmZXJyZWRMb2dpY2FsV2lk
dGhzRGlydHkoKSk7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7Cisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGNoZWNraW5nIGZvciBpc1NwZWNp
ZmllZCBzaW5jZSB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIHBlcmNlbnRhZ2UsIGNhbGMgb3Ig
dmlld3BvcnQgcmVsYXRpdmUgdmFsdWVzIGZvciB3aWR0aDsKICAgICBpZiAoc3R5bGVUb1VzZS0+
bG9naWNhbFdpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxXaWR0aCgpLnZh
bHVlKCkgPiAwKQogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVU
b1VzZS0+bG9naWNhbFdpZHRoKCkudmFsdWUoKSk7CiAgICAgZWxzZSB7CkBAIC0yMDQsMTEgKzIw
NSwxMyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpCiAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7
CiAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAKKyAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2hlY2tpbmcgZm9yIGlzU3BlY2lm
aWVkIHNpbmNlIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgcGVyY2VudGFnZSwgY2FsYyBvciB2
aWV3cG9ydCByZWxhdGl2ZSB2YWx1ZXMgZm9yIG1pbi13aWR0aDsKICAgICBpZiAoc3R5bGVUb1Vz
ZS0+bG9naWNhbE1pbldpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5X
aWR0aCgpLnZhbHVlKCkgPiAwKSB7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKICAg
ICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCwgY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVUb1VzZS0+
bG9naWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBiZSBjaGVja2luZyBmb3IgaXNTcGVjaWZpZWQgc2luY2UgeW91IHNo
b3VsZCBiZSBhYmxlIHRvIHVzZSBwZXJjZW50YWdlLCBjYWxjIG9yIHZpZXdwb3J0IHJlbGF0aXZl
IHZhbHVlcyBmb3IgbWF4V2lkdGg7CiAgICAgaWYgKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0
aCgpLmlzRml4ZWQoKSkgewogICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0
ZDo6bWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxXaWR0aChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgICAg
IG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9taW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2lj
YWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsKQEAgLTU5NSwxMSArNTk4LDExIEBAIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVBdmFpbGFibGVGcmVlU3BhY2UoTGF5b3V0VW5pdCBw
cmVmZXJyZWRNYWluCiAgICAgZWxzZSBpZiAoaGFzT3ZlcnJpZGVIZWlnaHQoKSkKICAgICAgICAg
Y29udGVudEV4dGVudCA9IG92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQgPSBjb21wdXRlQ29udGVudExvZ2lj
YWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBMYXlvdXRV
bml0IGhlaWdodFJlc3VsdCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKE1haW5T
aXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICBpZiAoaGVpZ2h0UmVzdWx0
ID09IC0xKQogICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gcHJlZmVycmVkTWFpbkF4aXNFeHRl
bnQ7Ci0gICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2Fs
SGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpKTsgLy8gTGVhdmUgYXMgLTEg
aWYgdW5zZXQuCi0gICAgICAgIExheW91dFVuaXQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNh
bE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAg
ICBMYXlvdXRVbml0IG1pbkhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5n
KE1pblNpemUsIHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7IC8vIExlYXZlIGFzIC0xIGlm
IHVuc2V0LgorICAgICAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxN
YXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsK
ICAgICAgICAgaWYgKG1heEhlaWdodCA9PSAtMSkKICAgICAgICAgICAgIG1heEhlaWdodCA9IGhl
aWdodFJlc3VsdDsKICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gc3RkOjptaW4obWF4SGVpZ2h0LCBo
ZWlnaHRSZXN1bHQpOwpAQCAtNzcxLDEwICs3NzQsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6bGluZUJyZWFrTGVuZ3RoKCkKICAgICBpZiAoIWlzQ29sdW1uRmxvdygpKQogICAg
ICAgICByZXR1cm4gbWFpbkF4aXNDb250ZW50RXh0ZW50KCk7CiAKLSAgICBMYXlvdXRVbml0IGhl
aWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxI
ZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKICAgICBpZiAo
aGVpZ2h0ID09IC0xKQogICAgICAgICBoZWlnaHQgPSBNQVhfTEFZT1VUX1VOSVQ7Ci0gICAgTGF5
b3V0VW5pdCBtYXhIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhzdHls
ZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgbWF4SGVpZ2h0ID0gY29t
cHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1h
eEhlaWdodCgpKTsKICAgICBpZiAobWF4SGVpZ2h0ICE9IC0xKQogICAgICAgICBoZWlnaHQgPSBz
dGQ6Om1pbihoZWlnaHQsIG1heEhlaWdodCk7CiAgICAgcmV0dXJuIGhlaWdodDsKQEAgLTc4OSw2
ICs3OTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVG
b3JNaW5BbmRNYXgoUmVuZGVyQm94KiBjaGlsZCwgTGF5bwogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTgwOQogICAgIGlmIChtYXguaXNTcGVjaWZpZWQo
KSAmJiBjaGlsZFNpemUgPiB2YWx1ZUZvckxlbmd0aChtYXgsIGZsZXhib3hBdmFpbGFibGVDb250
ZW50RXh0ZW50LCByZW5kZXJWaWV3KSkKICAgICAgICAgY2hpbGRTaXplID0gdmFsdWVGb3JMZW5n
dGgobWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVyVmlldyk7CisgICAg
Ly8gRklYTUU6IFRyZWF0IGF1dG8gbWluIHZhbHVlcyBhcyBtaW4tY29udGVudC4KICAgICBpZiAo
bWluLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRTaXplIDwgdmFsdWVGb3JMZW5ndGgobWluLCBmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVyVmlldykpCiAgICAgICAgIGNoaWxkU2l6
ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pbiwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQsIHJl
bmRlclZpZXcpOwogICAgIHJldHVybiBjaGlsZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAyNTU1ZmNkNmEwNjI2NzMxNzdmNmVlMDkzMjZh
NjJkZDY1NDA0NTU1Li5iN2Y4OWNhMDU2MThlNzczNzdjNTc1NzM2ZWNjNWIyMTIzNzlkNzA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZv
cm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsCiBMYXlvdXRVbml0IFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lkdGgpIGNv
bnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkpCi0g
ICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4
V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbFdp
ZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOworICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1ZGVNYXhX
aWR0aCk7CiAKICAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVu
dEJveCgpOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb24KICAg
ICAgICAgICAgIC8vIG9yIGlmICd3aWR0aCcgaGFzIGEgY29tcHV0ZWQgdmFsdWUgb2YgJ2F1dG8n
LCAnaGVpZ2h0JyBoYXMgc29tZSBvdGhlciBjb21wdXRlZCB2YWx1ZSwgYW5kIHRoZSBlbGVtZW50
IGRvZXMgaGF2ZSBhbiBpbnRyaW5zaWMgcmF0aW87IHRoZW4gdGhlIHVzZWQgdmFsdWUKICAgICAg
ICAgICAgIC8vIG9mICd3aWR0aCcgaXM6ICh1c2VkIGhlaWdodCkgKiAoaW50cmluc2ljIHJhdGlv
KQogICAgICAgICAgICAgaWYgKGludHJpbnNpY1JhdGlvICYmICgoaGVpZ2h0SXNBdXRvICYmICFo
YXNJbnRyaW5zaWNXaWR0aCAmJiBoYXNJbnRyaW5zaWNIZWlnaHQpIHx8ICFoZWlnaHRJc0F1dG8p
KSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJl
cGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbEhlaWdodFVzaW5nKE1haW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5n
TWluTWF4V2lkdGgocm91bmRUb0ludChyb3VuZChsb2dpY2FsSGVpZ2h0ICogaW50cmluc2ljUmF0
aW8pKSk7CiAgICAgICAgICAgICB9CiAKQEAgLTM1Miw3ICszNTIsNyBAQCBMYXlvdXRVbml0IFJl
bmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9vbCBpbmNsdWRlTWF4
V2lkdGgpIGNvbgogICAgICAgICAgICAgICAgIC8vICdtYXJnaW4tbGVmdCcgKyAnYm9yZGVyLWxl
ZnQtd2lkdGgnICsgJ3BhZGRpbmctbGVmdCcgKyAnd2lkdGgnICsgJ3BhZGRpbmctcmlnaHQnICsg
J2JvcmRlci1yaWdodC13aWR0aCcgKyAnbWFyZ2luLXJpZ2h0JyA9IHdpZHRoIG9mIGNvbnRhaW5p
bmcgYmxvY2sKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKICAgICAg
ICAgICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrV2l0aFdpZHRoID0gZmlyc3RDb250YWlu
aW5nQmxvY2tXaXRoTG9naWNhbFdpZHRoKHRoaXMpKQotICAgICAgICAgICAgICAgICAgICBsb2dp
Y2FsV2lkdGggPSBibG9ja1dpdGhXaWR0aC0+Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVz
cGVjdGluZ01pbk1heFdpZHRoKGJsb2NrV2l0aFdpZHRoLT5jb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGhVc2luZyhibG9ja1dpdGhXaWR0aC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGJsb2NrV2l0aFdpZHRoLT5j
b21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoYmxvY2tXaXRo
V2lkdGgtPmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5TaXplLCBibG9ja1dp
dGhXaWR0aC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxv
Y2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKQEAgLTM4NCw3ICszODQsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29u
c3QKIHsKICAgICAvLyAxMC41IENvbnRlbnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJvcGVydHk6
IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhlaWdodAog
ICAgIGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVp
Z2h0KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+
bG9naWNhbEhlaWdodCgpKSk7CiAKICAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVt
YmVkZGVkQ29udGVudEJveCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWJmNzZlYmNhOGFhNGFiZTljNGVkODg4YjU0YWZk
NWZmNWY5ZWViYi4uNWJjZTBjMzI1ZTFlZDJhOGE1MTI1NDg2ZWFlZThhNGNhN2Q3ZDMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApA
QCAtNzksMTEgKzc5LDExIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6bGF5b3V0VmVydGlj
YWxQYXJ0KCkKICAgICB9IAogfQogCi1zdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NV
c2luZyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgaW50IGNvbnRhaW5pbmdMZW5ndGgsIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhT
aXplVHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGludCBjb250YWluaW5nTGVu
Z3RoLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewotICAgIGlmIChsZW5ndGguaXNJbnRyaW5z
aWNPckF1dG8oKSkKLSAgICAgICAgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3Jv
bGxiYXJUaGlja25lc3MoKTsKLSAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0
aCwgY29udGFpbmluZ0xlbmd0aCwgcmVuZGVyVmlldyk7CisgICAgaWYgKCFsZW5ndGguaXNJbnRy
aW5zaWNPckF1dG8oKSB8fCAoc2l6ZVR5cGUgPT0gTWluU2l6ZSAmJiBsZW5ndGguaXNBdXRvKCkp
KQorICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgY29udGFpbmlu
Z0xlbmd0aCwgcmVuZGVyVmlldyk7CisgICAgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LT5zY3JvbGxiYXJUaGlja25lc3MoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpj
b21wdXRlU2Nyb2xsYmFyV2lkdGgoKQpAQCAtOTIsOSArOTIsOSBAQCB2b2lkIFJlbmRlclNjcm9s
bGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCgpCiAgICAgICAgIHJldHVybjsKICAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAgIGludCB2aXNpYmxlU2l6ZSA9IG1f
c2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT53aWR0aCgpIC0gbV9zY3JvbGxiYXItPm93bmlu
Z1JlbmRlcmVyKCktPmJvcmRlckxlZnQoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigp
LT5ib3JkZXJSaWdodCgpOwotICAgIGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5n
KHN0eWxlKCktPndpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWlu
V2lkdGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+bWluV2lkdGgoKSwg
dmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtYXhXaWR0aCA9IHN0eWxlKCktPm1h
eFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmco
c3R5bGUoKS0+bWF4V2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOworICAgIGludCB3
ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1haW5TaXplLCBzdHlsZSgpLT53aWR0aCgp
LCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1pbldpZHRoID0gY2FsY1Njcm9s
bGJhclRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCktPm1pbldpZHRoKCksIHZpc2libGVT
aXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLT5tYXhXaWR0aCgp
LmlzVW5kZWZpbmVkKCkgPyB3IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUs
IHN0eWxlKCktPm1heFdpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKICAgICBzZXRX
aWR0aChtYXgobWluV2lkdGgsIG1pbihtYXhXaWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0
b25zIGFuZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMg
b2YgdGhlIHNjcm9sbGJhci4gCkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxi
YXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKICAgICAgICAgcmV0dXJuOwogICAgIFJl
bmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IHZpc2libGVTaXplID0gbV9z
Y3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPmhlaWdodCgpIC0gIG1fc2Nyb2xsYmFyLT5vd25p
bmdSZW5kZXJlcigpLT5ib3JkZXJUb3AoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigp
LT5ib3JkZXJCb3R0b20oKTsKLSAgICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
ZyhzdHlsZSgpLT5oZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBt
aW5IZWlnaHQgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+bWluSGVpZ2h0
KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUo
KS0+bWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGggOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNz
VXNpbmcoc3R5bGUoKS0+bWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAg
ICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYWluU2l6ZSwgc3R5bGUoKS0+
aGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgbWluSGVpZ2h0ID0g
Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCktPm1pbkhlaWdodCgp
LCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1heEhlaWdodCA9IHN0eWxlKCkt
Pm1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1Vz
aW5nKE1heFNpemUsIHN0eWxlKCktPm1heEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmll
dyk7CiAgICAgc2V0SGVpZ2h0KG1heChtaW5IZWlnaHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CiAK
ICAgICAvLyBCdXR0b25zIGFuZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxv
bmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGQ1N2ExMmYyYjIzMWVkNzM4N2FhNTNhODg0ZTBi
MWJkOTBhODI1ZjUuLjVkZDY3MDI0ZTcyN2RlM2MwY2MzNTI1MjhiYjJlMDJkMWZmZmFiZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xNTU0
LDcgKzE1NTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxP
dXRsaW5lV2lkdGgoKSB7IHJldHVybiAzOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTGV0dGVy
V29yZFNwYWNpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2l6
ZSgpIHsgcmV0dXJuIExlbmd0aCgpOyB9Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWluU2l6
ZSgpIHsgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxNaW5TaXplKCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRp
YWxNYXhTaXplKCkgeyByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7IH0KICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxPZmZzZXQoKSB7IHJldHVybiBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbE1hcmdpbigpIHsgcmV0dXJuIExlbmd0aChGaXhlZCk7IH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjE1
ZDY3MDlkODJmNzhkY2FjYTIwYTQ2NGNiNjVhMmU3Y2U0ZjA1Li5kN2JmZDhiM2U1M2E3MWI4ZDJj
OWI3YjQ3Zjc0YTQxNDNhMTIwZjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMDYg
IE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgbWluLWhlaWdodDphdXRvIGFuZCBtaW4td2lkdGg6YXV0bworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL2F1dG8tbWluLXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9hdXRvLW1pbi1zaXplLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA2LTA2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSW5kZXhlZERCOiBSZW5hbWUgSURCRmFjdG9yeS5nZXREYXRhYmFzZU5hbWVz
KCkgdG8gd2Via2l0R2V0RGF0YWJhc2VOYW1lcygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2F1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlY2Y5YTQ1YmM3NTMwY2Ey
NDhiMjQ4ODUxZmU0ZTY3MGRmMTEzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitQQVNT
IGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1p
bi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiMHB4IgorUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRpdi5z
dHlsZS5taW5XaWR0aCBpcyAiYXV0byIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1pbldp
ZHRoIGlzICIwcHgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlmNDA2ZjZhOWNlOTkyMjE0NTc0YWM3OWY2NGYxYTRjNTBiOTQyZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLmh0bWwKQEAgLTAsMCArMSwx
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJz48L3NjcmlwdD4KKzxkaXYgaWQ9Zm9vPjwvZGl2PgorPHNjcmlwdD4KK2RpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKTsKK3Nob3VsZEJlKCdkaXYuc3R5bGUubWlu
V2lkdGgnLCAnIiInKTsKK3Nob3VsZEJlKCdnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0
aCJdJywgJyIwcHgiJyk7CisKK2Rpdi5zdHlsZS5taW5XaWR0aCA9IDA7CitzaG91bGRCZSgnZGl2
LnN0eWxlLm1pbldpZHRoJywgJyIwcHgiJyk7CitzaG91bGRCZSgnZ2V0Q29tcHV0ZWRTdHlsZShk
aXYpWyJtaW4td2lkdGgiXScsICciMHB4IicpOworCitkaXYuc3R5bGUubWluV2lkdGggPSAnYXV0
byc7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyJhdXRvIicpOworc2hvdWxkQmUo
J2dldENvbXB1dGVkU3R5bGUoZGl2KS5taW5XaWR0aCcsICciMHB4IicpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0nLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151478</attachid>
            <date>2012-07-10 10:06:44 -0700</date>
            <delta_ts>2012-07-10 12:25:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88437-20120710100644.patch</filename>
            <type>text/plain</type>
            <size>52290</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRlNTljNmQ3ZWRlYjc3
NTYxNWE1NTE0MDcyNDA1N2Q2MTg5ZGNlMS4uMTM2ZGQxNmE5ZDA5NGIyYmRkODNmMGYxMTEyNTA4
OWNhZTk2YTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA3LTEwICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1p
bi1oZWlnaHQ6YXV0byBhbmQgbWluLXdpZHRoOmF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvY3NzL2F1dG8tbWluLXNpemUuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNp
emUuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIFJldHVybiAw
cHggZm9yIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiBhdXRvLgorCisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAg
ICAgICBBbGxvdyBhdXRvIGFzIGEgbWluIHNpemUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFk
anVzdFNpemVDb25zdHJhaW50cyk6CisgICAgICAgIFRoaXMgY29kZSB3YXMgdW5uZWNlc3Nhcmls
eSBjaGVja2luZyBpbnRyaW5zaWNPckF1dG8gc2luY2UgYXV0byB3YXMgcHJldmlvdXNseQorICAg
ICAgICBub3QgYW4gYWxsb3dlZCB2YWx1ZSBmb3IgbWluV2lkdGgvbWluSGVpZ2h0LgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJl
c3BlY3RpbmdNaW5NYXhXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICBOZWVk
IHRvIHBhc3MgYSBTaXplVHlwZSB0byBhbGwgdGhlc2UgbWV0aG9kcyBzbyB0aGF0IHdlIGtub3cg
aWYgdGhlIExlbmd0aAorICAgICAgICB3ZSdyZSB3b3JraW5nIHdpdGggaXMgYSBtaW4gbGVuZ3Ro
IHNpbmNlIGF1dG8gaGFzIGEgZGlmZmVyZW50IG1lYW5pbmcgbm93CisgICAgICAgIGZvciBtaW4g
bGVuZ3Rocy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJl
bmRlckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFs
bG93ZWRDaGlsZEZsZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNv
bXB1dGVBdmFpbGFibGVGcmVlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmxpbmVCcmVha0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJh
clRoaWNrbmVzc1VzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6
OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgRGVmYXVsdCBtaW5IZWlnaHQvbWluV2lkdGggdG8g
YXV0byBpbnN0ZWFkIG9mIDBweC4KKwogMjAxMi0wNy0wOSAgQWxpY2UgQ2hlbmcgIDxhbGljZV9j
aGVuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRWRpdGluZzogQXV0b2NvcnJlY3Rpb24gaW4gYmxv
Y2txdW90ZXMgY2F1c2VzIHRleHQgdG8gYnJlYWsgb3V0IG9mIHF1b3RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgppbmRleCBmMzY1NGU1MzAwY2FjMzllNmM0YjRhYWRjMzA3YjhhMjEzMGQ5NGQ3Li4zYjJiM2Y2
NTEzMDRiNzA4MWU1ZmJkZDFlYjFmYTU3NTdiN2RkNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAg
LTE2NzYsMTAgKzE2NzYsMTAgQEAgX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxMGxheW91dFJvb3RF
YgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNpc0ZsZXhpYmxlQm94RXYKIF9fWk5LN1dl
YkNvcmU5UmVuZGVyQm94MjdzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWRFdgogX19aTks3V2Vi
Q29yZTExUmVuZGVyU3R5bGUxMmxvZ2ljYWxXaWR0aEV2Ci1fX1pON1dlYkNvcmU5UmVuZGVyQm94
MjRjb21wdXRlTG9naWNhbFdpZHRoVXNpbmdFTlNfMTZMb2dpY2FsV2lkdGhUeXBlRWkKK19fWk43
V2ViQ29yZTlSZW5kZXJCb3gyNGNvbXB1dGVMb2dpY2FsV2lkdGhVc2luZ0VOU18xNlNpemVUeXBl
RWkKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTFtYXJnaW5TdGFydEV2CiBfX1pOSzdXZWJD
b3JlMTFSZW5kZXJTdHlsZTltYXJnaW5FbmRFdgotX19aTks3V2ViQ29yZTlSZW5kZXJCb3gyOHNp
emVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGhFTlNfMTZMb2dpY2FsV2lkdGhUeXBlRQorX19aTks3
V2ViQ29yZTlSZW5kZXJCb3gyOHNpemVzVG9JbnRyaW5zaWNMb2dpY2FsV2lkdGhFTlNfMTZTaXpl
VHlwZUUKIF9fWk5LN1dlYkNvcmUxMVJlbmRlckJsb2NrMjZpc0lubGluZUJsb2NrT3JJbmxpbmVU
YWJsZUV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTE1bG9naWNhbE1heFdpZHRoRXYKIF9f
Wk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTVsb2dpY2FsTWluV2lkdGhFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjYjg1
YmViYmY4ZmNiMzVmMGJjMTQ0MTM0Y2M5MWQ1YmVjNTFmNmUyLi4yMDhkNDcwMTkzMGQzODM1Zjg0
MmJkMmYxOTY5NWQyNTY5NWQ1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTg1Niw4ICsxODU2LDE0IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZUZvckxlbmd0aChtYXhXaWR0aCwgc3R5bGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CisgICAgICAgICAgICAvLyBGSVhNRTogRm9yIGZs
ZXgtaXRlbXMsIG1pbi1oZWlnaHQ6YXV0byBzaG91bGQgY29tcHV0ZSB0byBtaW4tY29udGVudC4K
KyAgICAgICAgICAgIGlmIChzdHlsZS0+bWluSGVpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoMCwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1p
bkhlaWdodCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0
aDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGb3IgZmxleC1pdGVtcywgbWluLXdpZHRoOmF1dG8g
c2hvdWxkIGNvbXB1dGUgdG8gbWluLWNvbnRlbnQuCisgICAgICAgICAgICBpZiAoc3R5bGUtPm1p
bldpZHRoKCkuaXNBdXRvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoMCwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1pbldpZHRoKCksIHN0eWxlLmdldCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFs
dWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPm9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAwMTVkOTMwNTg0OTEz
Y2FhODU0Y2JmZTJjMDVhZGNmYWM0ZjM0ZGZkLi42OTA5N2VmZmExMGRkZjAxYjY3ODZmNDA2MTdh
MTIwNTRhMzNkY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTk5MCw3ICsxOTkw
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICAvKiBub2JyZWFrICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1pbldpZHRoOiAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVJbnRyaW5zaWMgfHwgaWQgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMgfHwgaWQgPT0gQ1NT
VmFsdWVXZWJraXRNaW5Db250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8
fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpbGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJr
aXRGaXRDb250ZW50KQorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENT
U1ZhbHVlSW50cmluc2ljIHx8IGlkID09IENTU1ZhbHVlTWluSW50cmluc2ljIHx8IGlkID09IENT
U1ZhbHVlV2Via2l0TWluQ29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQg
fHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRGaWxsQXZhaWxhYmxlIHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0Rml0Q29udGVudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpOwpAQCAtMjAwNSw3ICsyMDA1LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICAvKiBub2JyZWFrICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1p
bkhlaWdodDogLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUludHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKKyAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9PSBD
U1NWYWx1ZU1pbkludHJpbnNpYykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggN2QyN2I5NmQwYTQw
MzhmYzRjYTM1YWZlNTZhNzJiMTMxYzEzNTg2Ny4uNDYyZWU5NDZlOTFjOTVmODZlNGUzMWEyNzhh
ZTllYWIyM2RjOWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Jl
bmRlclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVy
VGhlbWVFZmwuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNpemVDb25zdHJhaW50cyhSZW5kZXJTdHlsZSogc3R5bGUsIEZvcm1UeXBlIHR5cGUpIGNvCiB7
CiAgICAgY29uc3Qgc3RydWN0IFRoZW1lUGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChz
aXplX3QpdHlwZTsKIAotICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpY09yQXV0
bygpKQorICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpYygpKQogICAgICAgICBz
dHlsZS0+c2V0TWluV2lkdGgoZGVzYy0+bWluLndpZHRoKCkpOwotICAgIGlmIChzdHlsZS0+bWlu
SGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoc3R5bGUtPm1pbkhlaWdodCgp
LmlzSW50cmluc2ljKCkpCiAgICAgICAgIHN0eWxlLT5zZXRNaW5IZWlnaHQoZGVzYy0+bWluLmhl
aWdodCgpKTsKIAogICAgIGlmIChkZXNjLT5tYXgud2lkdGgoKS52YWx1ZSgpID4gMCAmJiBzdHls
ZS0+bWF4V2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCA4ZDgyODIwYzBkNGFmODA2OTNjM2ZjYjkwMTY3NzFiZDNkNTgy
N2NiLi45YmNhYzJmZDAyNDczMmYwZWI3OGYwZTU1YjQ5Mjc4N2M1OTRiM2Y0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTY5MCwxNyArMTY5MCwxNyBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiogcmVn
aW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRo
TGVuZ3RoLnZhbHVlKCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkpOwogICAgIGVs
c2UgewogICAgICAgICAvLyBDYWxjdWxhdGUgTG9naWNhbFdpZHRoCi0gICAgICAgIHNldExvZ2lj
YWxXaWR0aChjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGgsIGNv
bnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UpKTsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGNvbXB1dGVMb2dp
Y2FsV2lkdGhJblJlZ2lvblVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIGNvbnRhaW5lcldpZHRo
SW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UpKTsKIAogICAgICAgICAvLyBDYWxjdWxhdGUgTWF4TG9naWNhbFdpZHRoCiAgICAgICAg
IGlmICghc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSkgewotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb25Vc2luZyhNYXhMb2dpY2FsV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJl
Y3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb25Vc2luZyhNYXhTaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBj
YiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKICAgICAgICAgICAg
IGlmIChsb2dpY2FsV2lkdGgoKSA+IG1heExvZ2ljYWxXaWR0aCkKICAgICAgICAgICAgICAgICBz
ZXRMb2dpY2FsV2lkdGgobWF4TG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IENhbGN1bGF0ZSBNaW5Mb2dpY2FsV2lkdGgKLSAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2Fs
V2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5Mb2dpY2FsV2lkdGgs
IGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21M
b2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0
aCA9IGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNvbnRhaW5lcldp
ZHRoSW5JbmxpbmVEaXJlY3Rpb24sIGNiLCByZWdpb24sIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZG
aXJzdFBhZ2UpOwogICAgICAgICBpZiAobG9naWNhbFdpZHRoKCkgPCBtaW5Mb2dpY2FsV2lkdGgp
CiAgICAgICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluTG9naWNhbFdpZHRoKTsKICAgICB9CkBA
IC0xNzI2LDQ2ICsxNzI2LDUyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgICAgIGNi
LT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBjb250YWluZXJMb2dpY2FsV2lkdGggLSBsb2dp
Y2FsV2lkdGgoKSAtIGNiLT5tYXJnaW5TdGFydEZvckNoaWxkKHRoaXMpKTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKExvZ2ljYWxX
aWR0aFR5cGUgd2lkdGhUeXBlLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKK0xh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhTaXpl
VHlwZSB3aWR0aFR5cGUsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLAogICAgIGNv
bnN0IFJlbmRlckJsb2NrKiBjYiwgUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aFJlc3VsdCA9IGxvZ2ljYWxXaWR0aCgpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNl
ID0gc3R5bGUoKTsKICAgICBMZW5ndGggbG9naWNhbFdpZHRoOwotICAgIGlmICh3aWR0aFR5cGUg
PT0gTG9naWNhbFdpZHRoKQorICAgIGlmICh3aWR0aFR5cGUgPT0gTWFpbk9yUHJlZmVycmVkU2l6
ZSkKICAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGVUb1VzZS0+bG9naWNhbFdpZHRoKCk7Ci0g
ICAgZWxzZSBpZiAod2lkdGhUeXBlID09IE1pbkxvZ2ljYWxXaWR0aCkKKyAgICBlbHNlIGlmICh3
aWR0aFR5cGUgPT0gTWluU2l6ZSkKICAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGVUb1VzZS0+
bG9naWNhbE1pbldpZHRoKCk7CiAgICAgZWxzZQogICAgICAgICBsb2dpY2FsV2lkdGggPSBzdHls
ZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKTsKIAogICAgIEFTU0VSVCghbG9naWNhbFdpZHRoLmlz
VW5kZWZpbmVkKCkpOwogCi0gICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpY09yQXV0bygp
KSB7Ci0gICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7Ci0gICAgICAgIExh
eW91dFVuaXQgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+
bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAg
ICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1Vz
ZS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAg
ICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0
YXJ0IC0gbWFyZ2luRW5kOworICAgIC8vIEZJWE1FOiBtaW5XaWR0aDphdXRvIG9uIGEgZmxleC1p
dGVtIG5lZWRzIHRvIGdvIGRvd24gdGhlIGludHJpbnNpY09yQXV0byBwYXRoIGJlbG93LgorICAg
IGlmICh3aWR0aFR5cGUgPT0gTWluU2l6ZSAmJiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpCisgICAg
ICAgIHJldHVybiBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdpZHRoKDApOworICAgIAorICAgIGlm
ICghbG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IElmIHRoZSBjb250YWluaW5nIGJsb2NrIGZsb3cgaXMgcGVycGVuZGljdWxhciB0byBvdXIgZGly
ZWN0aW9uIHdlIG5lZWQgdG8gdXNlIHRoZSBhdmFpbGFibGUgbG9naWNhbCBoZWlnaHQgaW5zdGVh
ZC4KKyAgICAgICAgcmV0dXJuIGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JM
ZW5ndGgobG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHZpZXcoKSkpOworICAg
IH0KIAotICAgICAgICAvLyBzaHJpbmtUb0F2b2lkRmxvYXRzKCkgaXMgb25seSB0cnVlIGZvciB3
aWR0aDogYXV0byBzbyB0aGUgYmVsb3cgY29kZSB3b3JrcyBjb3JyZWN0bHkgZm9yCi0gICAgICAg
IC8vIHdpZHRoOiBmaWxsLWF2YWlsYWJsZSBzaW5jZSBubyBjYXNlIG1hdGNoZXMgYW5kIGl0IHJl
dHVybnMgdGhlIGxvZ2ljYWxXaWR0aFJlc3VsdCBmcm9tIGFib3ZlLgotICAgICAgICBpZiAoc2hy
aW5rVG9Bdm9pZEZsb2F0cygpICYmIGNiLT5jb250YWluc0Zsb2F0cygpKQotICAgICAgICAgICAg
bG9naWNhbFdpZHRoUmVzdWx0ID0gc2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhtYXJn
aW5TdGFydCwgbWFyZ2luRW5kLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmly
c3RQYWdlKTsKKyAgICBpZiAobG9naWNhbFdpZHRoLnR5cGUoKSA9PSBNaW5Db250ZW50KQorICAg
ICAgICByZXR1cm4gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CisgICAgaWYgKGxvZ2ljYWxX
aWR0aC50eXBlKCkgPT0gTWF4Q29udGVudCkKKyAgICAgICAgcmV0dXJuIG1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpOwogCi0gICAgICAgIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IE1pbkNv
bnRlbnQpCi0gICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtaW5QcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKTsKLSAgICAgICAgZWxzZSBpZiAobG9naWNhbFdpZHRoLnR5cGUoKSA9PSBNYXhD
b250ZW50KQotICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7Ci0gICAgICAgIGVsc2UgaWYgKGxvZ2ljYWxXaWR0aC50eXBlKCkgPT0gRml0
Q29udGVudCB8fCAobG9naWNhbFdpZHRoLnR5cGUoKSAhPSBGaWxsQXZhaWxhYmxlICYmIHNpemVz
TG9naWNhbFdpZHRoVG9GaXRDb250ZW50KHdpZHRoVHlwZSkpKQotICAgICAgICAgICAgbG9naWNh
bFdpZHRoUmVzdWx0ID0gbWF4KG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBtaW4obWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKCksIGxvZ2ljYWxXaWR0aFJlc3VsdCkpOworICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgsIHJlbmRlclZpZXcpOworICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0
OwogCi0gICAgfSBlbHNlIC8vIEZJWE1FOiBJZiB0aGUgY29udGFpbmluZyBibG9jayBmbG93IGlz
IHBlcnBlbmRpY3VsYXIgdG8gb3VyIGRpcmVjdGlvbiB3ZSBuZWVkIHRvIHVzZSB0aGUgYXZhaWxh
YmxlIGxvZ2ljYWwgaGVpZ2h0IGluc3RlYWQuCi0gICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9
IGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRo
LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHZpZXcoKSkpOyAKKyAgICAvLyBzaHJpbmtUb0F2b2lk
RmxvYXRzKCkgaXMgb25seSB0cnVlIGZvciB3aWR0aDogYXV0byBzbyB0aGUgYmVsb3cgY29kZSB3
b3JrcyBjb3JyZWN0bHkgZm9yCisgICAgLy8gd2lkdGg6IGZpbGwtYXZhaWxhYmxlIHNpbmNlIG5v
IGNhc2UgbWF0Y2hlcyBhbmQgaXQgcmV0dXJucyB0aGUgbG9naWNhbFdpZHRoUmVzdWx0IGZyb20g
YWJvdmUuCisgICAgaWYgKHNocmlua1RvQXZvaWRGbG9hdHMoKSAmJiBjYi0+Y29udGFpbnNGbG9h
dHMoKSkKKyAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gc2hyaW5rTG9naWNhbFdpZHRoVG9B
dm9pZEZsb2F0cyhtYXJnaW5TdGFydCwgbWFyZ2luRW5kLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICBlbHNlCisgICAgICAgIGxvZ2ljYWxXaWR0aFJl
c3VsdCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0YXJ0IC0gbWFyZ2luRW5kOwog
CisgICAgaWYgKGxvZ2ljYWxXaWR0aC50eXBlKCkgPT0gRml0Q29udGVudCB8fCAobG9naWNhbFdp
ZHRoLnR5cGUoKSAhPSBGaWxsQXZhaWxhYmxlICYmIHNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250
ZW50KHdpZHRoVHlwZSkpKQorICAgICAgICByZXR1cm4gbWF4KG1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpLCBtaW4obWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCksIGxvZ2ljYWxXaWR0aFJlc3Vs
dCkpOwogICAgIHJldHVybiBsb2dpY2FsV2lkdGhSZXN1bHQ7CiB9CiAKLWJvb2wgUmVuZGVyQm94
OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChMb2dpY2FsV2lkdGhUeXBlIHdpZHRoVHlw
ZSkgY29uc3QKK2Jvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChT
aXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gTWFycXVlZXMgaW4gV2luSUUgYXJl
IGxpa2UgYSBtaXh0dXJlIG9mIGJsb2NrcyBhbmQgaW5saW5lLWJsb2Nrcy4gIFRoZXkgc2l6ZSBh
cyB0aG91Z2ggdGhleSdyZSBibG9ja3MsCiAgICAgLy8gYnV0IHRoZXkgYWxsb3cgdGV4dCB0byBz
aXQgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgbWFycXVlZS4KQEAgLTE3NzQsNyArMTc4MCw3IEBA
IGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChMb2dpY2FsV2lk
dGhUeXBlIHdpZHRoVHlwZSkgY29uc3QKIAogICAgIC8vIFRoaXMgY29kZSBtYXkgbG9vayBhIGJp
dCBzdHJhbmdlLiAgQmFzaWNhbGx5IHdpZHRoOmludHJpbnNpYyBzaG91bGQgY2xhbXAgdGhlIHNp
emUgd2hlbiB0ZXN0aW5nIGJvdGgKICAgICAvLyBtaW4td2lkdGggYW5kIHdpZHRoLiAgbWF4LXdp
ZHRoIGlzIG9ubHkgY2xhbXBlZCBpZiBpdCBpcyBhbHNvIGludHJpbnNpYy4KLSAgICBMZW5ndGgg
bG9naWNhbFdpZHRoID0gKHdpZHRoVHlwZSA9PSBNYXhMb2dpY2FsV2lkdGgpID8gc3R5bGUoKS0+
bG9naWNhbE1heFdpZHRoKCkgOiBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKTsKKyAgICBMZW5ndGgg
bG9naWNhbFdpZHRoID0gKHdpZHRoVHlwZSA9PSBNYXhTaXplKSA/IHN0eWxlKCktPmxvZ2ljYWxN
YXhXaWR0aCgpIDogc3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7CiAgICAgaWYgKGxvZ2ljYWxXaWR0
aC50eXBlKCkgPT0gSW50cmluc2ljKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMjAxMSwx
MSArMjAxNywxMSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogCiAg
ICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5NYXhI
ZWlnaHQpIHsKLSAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0
VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIGhlaWdodFJl
c3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGVUb1VzZS0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgIGlmIChoZWlnaHRSZXN1bHQg
PT0gLTEpCiAgICAgICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gbG9naWNhbEhlaWdodCgpOwot
ICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhz
dHlsZVRvVXNlLT5sb2dpY2FsTWluSGVpZ2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4K
LSAgICAgICAgICAgIExheW91dFVuaXQgbWF4SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWln
aHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICAgICAgTGF5b3V0
VW5pdCBtaW5IID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNl
LT5sb2dpY2FsTWluSGVpZ2h0KCkpOyAvLyBMZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAg
ICAgIExheW91dFVuaXQgbWF4SCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1Vu
ZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhT
aXplLCBzdHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKG1h
eEggPT0gLTEpCiAgICAgICAgICAgICAgICAgbWF4SCA9IGhlaWdodFJlc3VsdDsKICAgICAgICAg
ICAgIGhlaWdodFJlc3VsdCA9IG1pbihtYXhILCBoZWlnaHRSZXN1bHQpOwpAQCAtMjA2MiwyNiAr
MjA2OCwyOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogICAgIH0K
IH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29u
c3QgTGVuZ3RoJiBoZWlnaHQpCitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCkKIHsK
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHRVc2luZyhoZWlnaHQpOworICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCk7CiAgICAgaWYgKGxv
Z2ljYWxIZWlnaHQgIT0gLTEpCiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQm9yZGVy
Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdo
dDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdo
dFVzaW5nKGNvbnN0IExlbmd0aCYgaGVpZ2h0KQorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExl
bmd0aCYgaGVpZ2h0KQogeworICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5IZWlnaHQ6
YXV0byBzaG91bGQgYmUgbWluLWNvbnRlbnQuCisgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKKyAg
ICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IDAgOiAtMTsKKyAKICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQgPSAtMTsKLSAgICBpZiAoIWhlaWdodC5pc0F1dG8oKSkgewot
ICAgICAgICBpZiAoaGVpZ2h0LmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQg
PSBoZWlnaHQudmFsdWUoKTsKLSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0LmlzUGVyY2VudCgpKQot
ICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdo
dChoZWlnaHQpOwotICAgICAgICBlbHNlIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChoZWlnaHQsIDAs
IHZpZXcoKSk7Ci0gICAgfQotICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OworICAgIGlmIChoZWln
aHQuaXNGaXhlZCgpKQorICAgICAgICByZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CisgICAgaWYgKGhl
aWdodC5pc1BlcmNlbnQoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNh
bEhlaWdodChoZWlnaHQpOworICAgIGlmIChoZWlnaHQuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGhlaWdodCwgMCwgdmlldygpKTsKKyAgICBy
ZXR1cm4gLTE7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpCkBAIC0yMTcxLDE4ICsyMTc5LDIyIEBA
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29u
c3QgTGVuZ3RoJiBoZWlnaHQpCiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1
ZGVNYXhXaWR0aCk7CisgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3Bl
Y3RpbmdNaW5NYXhXaWR0aChjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluT3JQ
cmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGluY2x1ZGVNYXhXaWR0aCk7
CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhS
ZXNwZWN0aW5nTWluTWF4V2lkdGgoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIGJvb2wgaW5jbHVk
ZU1heFdpZHRoKSBjb25zdAogewotICAgIExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gY29t
cHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCkp
OwotICAgIExheW91dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gIWluY2x1ZGVNYXhXaWR0aCB8fCBz
dHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpID8gbG9naWNhbFdpZHRoIDog
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heFdpZHRo
KCkpOworICAgIExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCkpOworICAg
IExheW91dFVuaXQgbWF4TG9naWNhbFdpZHRoID0gIWluY2x1ZGVNYXhXaWR0aCB8fCBzdHlsZSgp
LT5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpID8gbG9naWNhbFdpZHRoIDogY29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heFdp
ZHRoKCkpOwogICAgIHJldHVybiBtYXgobWluTG9naWNhbFdpZHRoLCBtaW4obG9naWNhbFdpZHRo
LCBtYXhMb2dpY2FsV2lkdGgpKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGgpIGNvbnN0CitMYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5
cGUgc2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsV2lkdGgpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6
IEZvciBmbGV4Ym94ZXMsIG1pbldpZHRoOmF1dG8gc2hvdWxkIGJlIG1pbi1jb250ZW50LgorICAg
IGlmIChzaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKDApOworCiAgICAgc3dpdGNo
IChsb2dpY2FsV2lkdGgudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRml4ZWQ6CiAgICAgICAgICAg
ICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLnZhbHVl
KCkpOwpAQCAtMjIwNywxOCArMjIxOSwyMiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCkgY29ucwogCiBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWlu
TWF4SGVpZ2h0KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dp
Y2FsSGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJl
c3BlY3RpbmdNaW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKE1h
aW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSkpOwogfQogCiBMYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdN
aW5NYXhIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSBjb25zdAogewotICAgIExheW91
dFVuaXQgbWluTG9naWNhbEhlaWdodCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2lu
ZyhzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgbWF4TG9naWNh
bEhlaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gbG9n
aWNhbEhlaWdodCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5s
b2dpY2FsTWF4SGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgbWluTG9naWNhbEhlaWdodCA9IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5sb2dpY2Fs
TWluSGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgbWF4TG9naWNhbEhlaWdodCA9IHN0eWxlKCkt
PmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gbG9naWNhbEhlaWdodCA6IGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZSgpLT5sb2dpY2FsTWF4
SGVpZ2h0KCkpOwogICAgIHJldHVybiBtYXgobWluTG9naWNhbEhlaWdodCwgbWluKGxvZ2ljYWxI
ZWlnaHQsIG1heExvZ2ljYWxIZWlnaHQpKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodCkgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsSGVpZ2h0KSBjb25zdAogeworICAg
IC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5XaWR0aDphdXRvIHNob3VsZCBiZSBtaW4tY29u
dGVudC4KKyAgICBpZiAoc2l6ZVR5cGUgPT0gTWluU2l6ZSAmJiBsb2dpY2FsSGVpZ2h0LmlzQXV0
bygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KDApOwor
CiAgICAgc3dpdGNoIChsb2dpY2FsSGVpZ2h0LnR5cGUoKSkgewogICAgICAgICBjYXNlIEZpeGVk
OgogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChsb2dp
Y2FsSGVpZ2h0LnZhbHVlKCkpOwpAQCAtMjU2Myw3ICsyNTc5LDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlv
dXRVbml0IG8KICAgICAvLyBDYWxjdWxhdGUgY29uc3RyYWludCBlcXVhdGlvbiB2YWx1ZXMgZm9y
ICd3aWR0aCcgY2FzZS4KICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aFJlc3VsdDsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxMZWZ0UmVzdWx0OwotICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbFdpZHRoKCksIGNvbnRhaW5lckJsb2NrLCBjb250
YWluZXJEaXJlY3Rpb24sCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhN
YWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmVyQmxv
Y2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5ndGgsIGxvZ2lj
YWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxSaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCwg
bWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMsIGxvZ2ljYWxM
ZWZ0UmVzdWx0KTsKQEAgLTI1NzcsNyArMjU5Myw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBv
CiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luTG9naWNhbFJpZ2h0OwogICAgICAgICBMYXlv
dXRVbml0IG1heExvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNvbnRhaW5lckJsb2Nr
LCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdp
ZHRoVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCksIGNvbnRhaW5lckJs
b2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRMZW5n
dGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxvZ2ljYWxS
aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhMb2dp
Y2FsV2lkdGgsIG1heE1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXhNYXJnaW5Mb2dpY2FsUmlnaHQsIG1h
eExvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI1OTcsNyArMjYxMyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpj
b21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0
VW5pdCBvCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luTG9naWNhbFJpZ2h0OwogICAgICAg
ICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxMZWZ0UG9zOwogCi0gICAgICAgIGNvbXB1dGVQb3NpdGlv
bmVkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCksIGNvbnRhaW5l
ckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCksIGNvbnRh
aW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoLCBib3JkZXJzUGx1c1BhZGRp
bmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbExl
ZnRMZW5ndGgsIGxvZ2ljYWxSaWdodExlbmd0aCwgbWFyZ2luTG9naWNhbExlZnQsIG1hcmdpbkxv
Z2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
aW5Mb2dpY2FsV2lkdGgsIG1pbk1hcmdpbkxvZ2ljYWxMZWZ0LCBtaW5NYXJnaW5Mb2dpY2FsUmln
aHQsIG1pbkxvZ2ljYWxMZWZ0UG9zKTsKQEAgLTI2MTEsNyArMjYyNyw3IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwg
TGF5b3V0VW5pdCBvCiAgICAgfQogCiAgICAgaWYgKHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9n
aWNhbFdpZHRoKCkgJiYgbG9naWNhbFdpZHRoKCkgPCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgo
KSAtIGJvcmRlcnNQbHVzUGFkZGluZykgewotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aFVzaW5nKExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQ
bHVzUGFkZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAor
ICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5PclByZWZlcnJl
ZFNpemUsIExlbmd0aChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFk
ZGluZywgRml4ZWQpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxv
Z2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0LCBtYXJnaW5Mb2dpY2FsTGVmdEFs
aWFzLCBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcywgbG9naWNhbExlZnRSZXN1bHQpOwpAQCAtMjY0
OCwxMSArMjY2NCwxNSBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9naWNhbExlZnRQb3NpdGlvbmVk
T2Zmc2V0KExheW91dFVuaXQmIGxvZ2ljYWxMZWZ0UG9zLCBjb25zdAogICAgICAgICBsb2dpY2Fs
TGVmdFBvcyArPSAoY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb250YWluZXJC
bG9jay0+Ym9yZGVyTGVmdCgpIDogY29udGFpbmVyQmxvY2stPmJvcmRlclRvcCgpKTsKIH0KIAot
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3Ro
IGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2Nr
LCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKK3ZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHdpZHRoU2l6ZVR5cGUsIExl
bmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJC
bG9jaywgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbExlZnQs
IExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBt
YXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3MpCiB7CisgICAgLy8gRklYTUU6IFdoYXQgc2hv
dWxkIGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6
bWluLWNvbnRlbnQgaW5zdGVhZCBvZiBtaW4td2lkdGg6YXV0byA9PSBtaW4td2lkdGg6MC4KKyAg
ICBpZiAod2lkdGhTaXplVHlwZSA9PSBNaW5TaXplICYmIGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSkK
KyAgICAgICAgbG9naWNhbFdpZHRoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKwogICAgIC8vICdsZWZ0
JyBhbmQgJ3JpZ2h0JyBjYW5ub3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSBvbmUgd291bGQgb2Yg
YmVlbgogICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgc3RhdGljIHBvc2l0aW9uIGFscmVhZHkKICAg
ICBBU1NFUlQoIShsb2dpY2FsTGVmdC5pc0F1dG8oKSAmJiBsb2dpY2FsUmlnaHQuaXNBdXRvKCkp
KTsKQEAgLTI4OTIsNyArMjkxMiw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHQoKQogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvczsKIAogICAgIC8v
IENhbGN1bGF0ZSBjb25zdHJhaW50IGVxdWF0aW9uIHZhbHVlcyBmb3IgJ2hlaWdodCcgY2FzZS4K
LSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dp
Y2FsSGVpZ2h0KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3Jk
ZXJzUGx1c1BhZGRpbmcsCisgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNhbEhlaWdodCgpLCBjb250YWlu
ZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3BMZW5ndGgsIGxv
Z2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0ZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbEhlaWdodFJlc3VsdCwgbWFyZ2lu
QmVmb3JlQWxpYXMsIG1hcmdpbkFmdGVyQWxpYXMsIGxvZ2ljYWxUb3BQb3MpOwogICAgIHNldExv
Z2ljYWxUb3AobG9naWNhbFRvcFBvcyk7CkBAIC0yOTA3LDcgKzI5MjcsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICAgICAgTGF5b3V0VW5p
dCBtYXhNYXJnaW5BZnRlcjsKICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsVG9wUG9zOwog
Ci0gICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlVG9Vc2Ut
PmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQsIGJvcmRlcnNQbHVzUGFkZGluZywKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
SGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNhbE1heEhlaWdodCgpLCBjb250
YWluZXJCbG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVu
Z3RoLCBsb2dpY2FsQm90dG9tTGVuZ3RoLCBtYXJnaW5CZWZvcmUsIG1hcmdpbkFmdGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsSGVpZ2h0
LCBtYXhNYXJnaW5CZWZvcmUsIG1heE1hcmdpbkFmdGVyLCBtYXhMb2dpY2FsVG9wUG9zKTsKIApA
QCAtMjkyNiw3ICsyOTQ2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luQWZ0ZXI7CiAgICAgICAg
IExheW91dFVuaXQgbWluTG9naWNhbFRvcFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWluSGVpZ2h0KCksIGNvbnRh
aW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcsCisg
ICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIHN0eWxl
VG9Vc2UtPmxvZ2ljYWxNaW5IZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0aCwgbG9naWNhbEJvdHRvbUxlbmd0aCwg
bWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWluTG9naWNhbEhlaWdodCwgbWluTWFyZ2luQmVmb3JlLCBtaW5NYXJn
aW5BZnRlciwgbWluTG9naWNhbFRvcFBvcyk7CiAKQEAgLTI5NzgsMTEgKzI5OTgsMTUgQEAgc3Rh
dGljIHZvaWQgY29tcHV0ZUxvZ2ljYWxUb3BQb3NpdGlvbmVkT2Zmc2V0KExheW91dFVuaXQmIGxv
Z2ljYWxUb3BQb3MsIGNvbnN0IFIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwg
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5lckJsb2NrLAordm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFNp
emVUeXBlLCBMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNvbnRhaW5lckJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxUb3AsIExlbmd0aCBsb2dpY2Fs
Qm90dG9tLCBMZW5ndGggbWFyZ2luQmVmb3JlLCBMZW5ndGggbWFyZ2luQWZ0ZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCYg
bG9naWNhbEhlaWdodFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5CZWZvcmVWYWx1ZSwgTGF5b3V0
VW5pdCYgbWFyZ2luQWZ0ZXJWYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcFBvcykKIHsKKyAg
ICAvLyBGSVhNRTogV2hhdCBzaG91bGQgZmxleCBpdGVtcyBkbyBoZXJlIHNpbmNlIG1pbi1oZWln
aHQ6YXV0byA9PSBtaW4taGVpZ2h0Om1pbi1jb250ZW50IGluc3RlYWQgb2YgbWluLWhlaWdodDph
dXRvID09IG1pbi1oZWlnaHQ6MC4KKyAgICBpZiAoaGVpZ2h0U2l6ZVR5cGUgPT0gTWluU2l6ZSAm
JiBsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzQXV0bygpKQorICAgICAgICBsb2dpY2FsSGVpZ2h0TGVu
Z3RoID0gTGVuZ3RoKDAsIEZpeGVkKTsKKwogICAgIC8vICd0b3AnIGFuZCAnYm90dG9tJyBjYW5u
b3QgYm90aCBiZSAnYXV0bycgYmVjYXVzZSAndG9wIHdvdWxkIG9mIGJlZW4KICAgICAvLyBjb252
ZXJ0ZWQgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBpbiBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxI
ZWlnaHQoKQogICAgIEFTU0VSVCghKGxvZ2ljYWxUb3AuaXNBdXRvKCkgJiYgbG9naWNhbEJvdHRv
bS5pc0F1dG8oKSkpOwpAQCAtMjk5MSw2ICszMDE1LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3Ro
LAogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wVmFsdWUgPSAwOwogCisgICAgLy8gRklYTUU6
IEZvciBub24tZmxleGJveGVzICsgbWluLWhlaWdodCwgdGhpcyBuZWVkcyB0byB0cmVhdCBub24t
ZmxleGJveGVzIGFzIDAuCiAgICAgYm9vbCBsb2dpY2FsSGVpZ2h0SXNBdXRvID0gbG9naWNhbEhl
aWdodExlbmd0aC5pc0F1dG8oKTsKICAgICBib29sIGxvZ2ljYWxUb3BJc0F1dG8gPSBsb2dpY2Fs
VG9wLmlzQXV0bygpOwogICAgIGJvb2wgbG9naWNhbEJvdHRvbUlzQXV0byA9IGxvZ2ljYWxCb3R0
b20uaXNBdXRvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggOWYwNTc3
ZTgyMDFhN2U4ZDlmYjQxMDUzYmE3M2Q2YTcxMjYzNjE1ZC4uMDMxNDU4MjY2ZDY1NzEyNzcwZmVi
MjhjODEzNWM2NmMzNzNkMTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApA
QCAtMzMsNyArMzMsNyBAQCBjbGFzcyBSZW5kZXJCb3hSZWdpb25JbmZvOwogY2xhc3MgUmVuZGVy
UmVnaW9uOwogc3RydWN0IFBhaW50SW5mbzsKIAotZW51bSBMb2dpY2FsV2lkdGhUeXBlIHsgTG9n
aWNhbFdpZHRoLCBNaW5Mb2dpY2FsV2lkdGgsIE1heExvZ2ljYWxXaWR0aCB9OworZW51bSBTaXpl
VHlwZSB7IE1haW5PclByZWZlcnJlZFNpemUsIE1pblNpemUsIE1heFNpemUgfTsKIAogZW51bSBP
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSB7IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXpl
LCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJhclNpemUgfTsKIApAQCAtMzM1LDE3ICszMzUsMTcgQEAg
cHVibGljOgogCiAgICAgLy8gV2hldGhlciBvciBub3QgdGhlIGVsZW1lbnQgc2hyaW5rcyB0byBp
dHMgaW50cmluc2ljIHdpZHRoIChyYXRoZXIgdGhhbiBmaWxsaW5nIHRoZSB3aWR0aAogICAgIC8v
IG9mIGEgY29udGFpbmluZyBibG9jaykuICBIVE1MNCBidXR0b25zLCA8c2VsZWN0PnMsIDxpbnB1
dD5zLCBsZWdlbmRzLCBhbmQgZmxvYXRpbmcvY29tcGFjdCBlbGVtZW50cyBkbyB0aGlzLgotICAg
IGJvb2wgc2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoTG9naWNhbFdpZHRoVHlwZSkgY29u
c3Q7CisgICAgYm9vbCBzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChTaXplVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHN0cmV0Y2hlc1RvTWluSW50cmluc2ljTG9naWNhbFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIExheW91dFVuaXQgc2hyaW5rTG9naWNh
bFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcnQsIExheW91dFVu
aXQgY2hpbGRNYXJnaW5FbmQsIGNvbnN0IFJlbmRlckJsb2NrKiBjYiwgUmVuZGVyUmVnaW9uKiwg
TGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKIAotICAgIExheW91
dFVuaXQgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTG9naWNhbFdpZHRoVHlwZSwg
TGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJsb2NrKiBjb250
YWluaW5nQmxvY2ssIFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UGFnZSk7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5n
KGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKLSAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCB3aWR0aCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhTaXplVHlwZSwgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWlu
aW5nQmxvY2ssIFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UGFnZSk7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNp
emVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCk7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29u
dGVudExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQpOwor
ICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUs
IExlbmd0aCB3aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIGJv
b2wgaW5jbHVkZU1heFdpZHRoID0gdHJ1ZSkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGhlaWdodCkgY29uc3Q7CisgICAgTGF5
b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIExlbmd0
aCBoZWlnaHQpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSBjb25z
dDsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgo
Ym9vbCBpbmNsdWRlTWF4V2lkdGggPSB0cnVlKSBjb25zdDsKQEAgLTU0MCwxMSArNTQwLDExIEBA
IHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9y
UG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmluZ0Jsb2NrLCBi
b29sIGNoZWNrRm9yUGVycGVuZGljdWxhcldyaXRpbmdNb2RlID0gdHJ1ZSkgY29uc3Q7CiAKICAg
ICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCgpOwotICAgIHZvaWQgY29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29udGFp
bmVyRGlyZWN0aW9uLAorICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2lu
ZyhTaXplVHlwZSwgTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250
YWluZXJMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggbG9naWNhbExlZnQs
IExlbmd0aCBsb2dpY2FsUmlnaHQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCwgTGVuZ3RoIG1h
cmdpbkxvZ2ljYWxSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCYgbG9naWNhbFdpZHRoVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxv
Z2ljYWxMZWZ0VmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlLCBMYXlv
dXRVbml0JiBsb2dpY2FsTGVmdFBvcyk7Ci0gICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodCwgY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNvbnRhaW5lckJsb2NrLAorICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
SGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsSGVpZ2h0LCBjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxUb3AsIExlbmd0aCBsb2dpY2FsQm90dG9t
LCBMZW5ndGggbWFyZ2luTG9naWNhbFRvcCwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxCb3R0b20sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0JiBs
b2dpY2FsSGVpZ2h0VmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxUb3BWYWx1ZSwgTGF5
b3V0VW5pdCYgbWFyZ2luTG9naWNhbEJvdHRvbVZhbHVlLCBMYXlvdXRVbml0JiBsb2dpY2FsVG9w
UG9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggYWVlZWQxMGQzY2MwOTk2ZmEzMThhMmE1ZGI4MmE0
YTc2N2RlMjM2OC4uNGFlNDJiYzdkYWFlOWI4NGM0NThiY2U0MDY1MzlmMmU0NzM2NzAxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHAKQEAgLTEwNjMsMTEgKzEwNjMsMTQgQEAgTGF5b3V0VW5pdCBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBjaGlsZCwg
Ym9vbAogICAgICAgICAgICAgbWluV2lkdGggPSBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKCk7CiAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpLnR5cGUo
KSA9PSBNaW5JbnRyaW5zaWMpCiAgICAgICAgICAgICBtaW5XaWR0aCA9IGNoaWxkLT5taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgoKTsKKyAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCktPm1p
bldpZHRoKCkudHlwZSgpID09IEF1dG8pCisgICAgICAgICAgICBtaW5XaWR0aCA9IDA7CiAKICAg
ICAgICAgTGF5b3V0VW5pdCBhbGxvd2VkU2hyaW5rYWdlID0gbWluPExheW91dFVuaXQ+KDAsIG1p
bldpZHRoIC0gd2lkdGgpOwogICAgICAgICByZXR1cm4gYWxsb3dlZFNocmlua2FnZTsKICAgICB9
IGVsc2UgewotICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpLmlzRml4ZWQo
KSkgeworICAgICAgICBMZW5ndGggbWluSGVpZ2h0ID0gY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdo
dCgpOworICAgICAgICBpZiAobWluSGVpZ2h0LmlzRml4ZWQoKSB8fCBtaW5IZWlnaHQuaXNBdXRv
KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgbWluSGVpZ2h0ID0gY2hpbGQtPnN0eWxlKCkt
Pm1pbkhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGhlaWdodCA9IGNo
aWxkLT5vdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCk7CiAgICAgICAgICAgICBMYXlvdXRV
bml0IGFsbG93ZWRTaHJpbmthZ2UgPSBtaW48TGF5b3V0VW5pdD4oMCwgbWluSGVpZ2h0IC0gaGVp
Z2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CmluZGV4IGY2ZjFmNTFmMjBmODVjYzVjZmJlMmVkMTRkODlmMTVhZDkxMDA2YzEuLjFiYzNhZWZh
ZjY1OWZiOTFjM2RiZTUxNzI1YmE0ZTUxNzg0ZjA4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTU1LDYgKzE1NSw3IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBB
U1NFUlQocHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpOwogCiAgICAgUmVuZGVyU3R5bGUq
IHN0eWxlVG9Vc2UgPSBzdHlsZSgpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJs
eSBiZSBjaGVja2luZyBmb3IgaXNTcGVjaWZpZWQgc2luY2UgeW91IHNob3VsZCBiZSBhYmxlIHRv
IHVzZSBwZXJjZW50YWdlLCBjYWxjIG9yIHZpZXdwb3J0IHJlbGF0aXZlIHZhbHVlcyBmb3Igd2lk
dGguCiAgICAgaWYgKHN0eWxlVG9Vc2UtPmxvZ2ljYWxXaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHls
ZVRvVXNlLT5sb2dpY2FsV2lkdGgoKS52YWx1ZSgpID4gMCkKICAgICAgICAgbV9taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGggPSBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNvbXB1dGVDb250
ZW50Qm94TG9naWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxXaWR0aCgpLnZhbHVlKCkpOwog
ICAgIGVsc2UgewpAQCAtMjA0LDExICsyMDUsMTMgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ICs9IHNjcm9sbGJhcldpZHRoOwogCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlIGNoZWNraW5nIGZvciBpc1NwZWNpZmllZCBzaW5jZSB5b3Ugc2hvdWxkIGJlIGFibGUgdG8g
dXNlIHBlcmNlbnRhZ2UsIGNhbGMgb3Igdmlld3BvcnQgcmVsYXRpdmUgdmFsdWVzIGZvciBtaW4t
d2lkdGguCiAgICAgaWYgKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLmlzRml4ZWQoKSAm
JiBzdHlsZVRvVXNlLT5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpID4gMCkgewogICAgICAgICBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChzdHlsZVRvVXNlLT5sb2dpY2Fs
TWluV2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKICAg
ICB9CiAKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2hlY2tpbmcgZm9y
IGlzU3BlY2lmaWVkIHNpbmNlIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgcGVyY2VudGFnZSwg
Y2FsYyBvciB2aWV3cG9ydCByZWxhdGl2ZSB2YWx1ZXMgZm9yIG1heFdpZHRoLgogICAgIGlmIChz
dHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgbV9tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCwgY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVUb1VzZS0+bG9naWNhbE1heFdp
ZHRoKCkudmFsdWUoKSkpOwogICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0
ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxXaWR0aChzdHlsZVRvVXNlLT5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CkBAIC01OTUs
MTEgKzU5OCwxMSBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlQXZhaWxh
YmxlRnJlZVNwYWNlKExheW91dFVuaXQgcHJlZmVycmVkTWFpbgogICAgIGVsc2UgaWYgKGhhc092
ZXJyaWRlSGVpZ2h0KCkpCiAgICAgICAgIGNvbnRlbnRFeHRlbnQgPSBvdmVycmlkZUxvZ2ljYWxD
b250ZW50SGVpZ2h0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVz
dWx0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhl
aWdodCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQgPSBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2Fs
SGVpZ2h0KCkpOwogICAgICAgICBpZiAoaGVpZ2h0UmVzdWx0ID09IC0xKQogICAgICAgICAgICAg
aGVpZ2h0UmVzdWx0ID0gcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQ7Ci0gICAgICAgIExheW91dFVu
aXQgbWluSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+
bG9naWNhbE1pbkhlaWdodCgpKTsgLy8gTGVhdmUgYXMgLTEgaWYgdW5zZXQuCi0gICAgICAgIExh
eW91dFVuaXQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZp
bmVkKCkgPyBoZWlnaHRSZXN1bHQgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhz
dHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdo
dCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIHN0eWxlKCktPmxv
Z2ljYWxNaW5IZWlnaHQoKSk7IC8vIExlYXZlIGFzIC0xIGlmIHVuc2V0LgorICAgICAgICBMYXlv
dXRVbml0IG1heEhlaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5l
ZCgpID8gaGVpZ2h0UmVzdWx0IDogY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4
U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsKICAgICAgICAgaWYgKG1heEhlaWdo
dCA9PSAtMSkKICAgICAgICAgICAgIG1heEhlaWdodCA9IGhlaWdodFJlc3VsdDsKICAgICAgICAg
aGVpZ2h0UmVzdWx0ID0gc3RkOjptaW4obWF4SGVpZ2h0LCBoZWlnaHRSZXN1bHQpOwpAQCAtNzcx
LDEwICs3NzQsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bGluZUJyZWFrTGVu
Z3RoKCkKICAgICBpZiAoIWlzQ29sdW1uRmxvdygpKQogICAgICAgICByZXR1cm4gbWFpbkF4aXND
b250ZW50RXh0ZW50KCk7CiAKLSAgICBMYXlvdXRVbml0IGhlaWdodCA9IGNvbXB1dGVDb250ZW50
TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgTGF5b3V0
VW5pdCBoZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVm
ZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIGlmIChoZWlnaHQgPT0g
LTEpCiAgICAgICAgIGhlaWdodCA9IE1BWF9MQVlPVVRfVU5JVDsKLSAgICBMYXlvdXRVbml0IG1h
eEhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2lj
YWxNYXhIZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBtYXhIZWlnaHQgPSBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkp
OwogICAgIGlmIChtYXhIZWlnaHQgIT0gLTEpCiAgICAgICAgIGhlaWdodCA9IHN0ZDo6bWluKGhl
aWdodCwgbWF4SGVpZ2h0KTsKICAgICByZXR1cm4gaGVpZ2h0OwpAQCAtNzg5LDYgKzc5Miw3IEBA
IExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1h
eChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxODA5CiAgICAgaWYgKG1heC5pc1NwZWNpZmllZCgpICYmIGNoaWxk
U2l6ZSA+IHZhbHVlRm9yTGVuZ3RoKG1heCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQs
IHJlbmRlclZpZXcpKQogICAgICAgICBjaGlsZFNpemUgPSB2YWx1ZUZvckxlbmd0aChtYXgsIGZs
ZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50LCByZW5kZXJWaWV3KTsKKyAgICAvLyBGSVhNRTog
VHJlYXQgYXV0byBtaW4gdmFsdWVzIGFzIG1pbi1jb250ZW50LgogICAgIGlmIChtaW4uaXNTcGVj
aWZpZWQoKSAmJiBjaGlsZFNpemUgPCB2YWx1ZUZvckxlbmd0aChtaW4sIGZsZXhib3hBdmFpbGFi
bGVDb250ZW50RXh0ZW50LCByZW5kZXJWaWV3KSkKICAgICAgICAgY2hpbGRTaXplID0gdmFsdWVG
b3JMZW5ndGgobWluLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVyVmlldyk7
CiAgICAgcmV0dXJuIGNoaWxkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCmluZGV4IDc5NGFjZDgyMDM5NDE4Yzc0NDE0ZWZmOTg0M2MyM2U4MGUzYjUx
MDMuLjJlMGQ3NDczYmI1MmM2N2NiODVhODhlNmI5ZTEwZjNhZDg2ODFiZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBA
IHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZs
b2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwKIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKICAg
ICBpZiAoc3R5bGUoKS0+bG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQoKSkKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb21w
dXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSksIGlu
Y2x1ZGVNYXhXaWR0aCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBpbmNsdWRlTWF4
V2lkdGgpOwogCiAgICAgUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRl
bnRCb3goKTsKIApAQCAtMzQwLDcgKzM0MCw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uCiAg
ICAgICAgICAgICAvLyBvciBpZiAnd2lkdGgnIGhhcyBhIGNvbXB1dGVkIHZhbHVlIG9mICdhdXRv
JywgJ2hlaWdodCcgaGFzIHNvbWUgb3RoZXIgY29tcHV0ZWQgdmFsdWUsIGFuZCB0aGUgZWxlbWVu
dCBkb2VzIGhhdmUgYW4gaW50cmluc2ljIHJhdGlvOyB0aGVuIHRoZSB1c2VkIHZhbHVlCiAgICAg
ICAgICAgICAvLyBvZiAnd2lkdGgnIGlzOiAodXNlZCBoZWlnaHQpICogKGludHJpbnNpYyByYXRp
bykKICAgICAgICAgICAgIGlmIChpbnRyaW5zaWNSYXRpbyAmJiAoKGhlaWdodElzQXV0byAmJiAh
aGFzSW50cmluc2ljV2lkdGggJiYgaGFzSW50cmluc2ljSGVpZ2h0KSB8fCAhaGVpZ2h0SXNBdXRv
KSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOworICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGNvbXB1dGVSZXBsYWNlZExv
Z2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5sb2dpY2FsSGVp
Z2h0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGhSZXNwZWN0aW5nTWluTWF4V2lkdGgocm91bmRUb0ludChyb3VuZChsb2dpY2FsSGVpZ2h0ICog
aW50cmluc2ljUmF0aW8pKSk7CiAgICAgICAgICAgICB9CiAKQEAgLTM1Miw3ICszNTIsNyBAQCBM
YXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoYm9v
bCBpbmNsdWRlTWF4V2lkdGgpIGNvbgogICAgICAgICAgICAgICAgIC8vICdtYXJnaW4tbGVmdCcg
KyAnYm9yZGVyLWxlZnQtd2lkdGgnICsgJ3BhZGRpbmctbGVmdCcgKyAnd2lkdGgnICsgJ3BhZGRp
bmctcmlnaHQnICsgJ2JvcmRlci1yaWdodC13aWR0aCcgKyAnbWFyZ2luLXJpZ2h0JyA9IHdpZHRo
IG9mIGNvbnRhaW5pbmcgYmxvY2sKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aDsKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrV2l0aFdpZHRoID0g
Zmlyc3RDb250YWluaW5nQmxvY2tXaXRoTG9naWNhbFdpZHRoKHRoaXMpKQotICAgICAgICAgICAg
ICAgICAgICBsb2dpY2FsV2lkdGggPSBibG9ja1dpdGhXaWR0aC0+Y29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGJsb2NrV2l0aFdpZHRoLT5jb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGhVc2luZyhibG9ja1dpdGhXaWR0aC0+c3R5bGUoKS0+bG9naWNhbFdp
ZHRoKCkpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGJsb2Nr
V2l0aFdpZHRoLT5jb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lk
dGgoYmxvY2tXaXRoV2lkdGgtPmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5P
clByZWZlcnJlZFNpemUsIGJsb2NrV2l0aFdpZHRoLT5zdHlsZSgpLT5sb2dpY2FsV2lkdGgoKSks
IGZhbHNlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aCA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKIApA
QCAtMzg0LDcgKzM4NCw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIC8vIDEwLjUgQ29udGVudCBoZWlnaHQ6
IHRoZSAnaGVpZ2h0JyBwcm9wZXJ0eTogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRl
dC5odG1sI3Byb3BkZWYtaGVpZ2h0CiAgICAgaWYgKGhhc1JlcGxhY2VkTG9naWNhbEhlaWdodCgp
KQotICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdN
aW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSkpOworICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVz
aW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSkpOwogCiAg
ICAgUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmlu
ZGV4IDFiZjc2ZWJjYThhYTRhYmU5YzRlZDg4OGI1NGFmZDVmZjVmOWVlYmIuLjNkOTNmZTgyOGU4
MTY0ZjUxYzljOTg0Yjk5ZWE5NTdmYmJlNjg5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTc5LDExICs3OSwxMSBAQCB2b2lk
IFJlbmRlclNjcm9sbGJhclBhcnQ6OmxheW91dFZlcnRpY2FsUGFydCgpCiAgICAgfSAKIH0KIAot
c3RhdGljIGludCBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoY29uc3QgTGVuZ3RoJiBsZW5n
dGgsIGludCBjb250YWluaW5nTGVuZ3RoLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGlj
IGludCBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0
IExlbmd0aCYgbGVuZ3RoLCBpbnQgY29udGFpbmluZ0xlbmd0aCwgUmVuZGVyVmlldyogcmVuZGVy
VmlldykKIHsKLSAgICBpZiAobGVuZ3RoLmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAgIHJl
dHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCk7Ci0gICAg
cmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIGNvbnRhaW5pbmdMZW5ndGgsIHJl
bmRlclZpZXcpOworICAgIGlmICghbGVuZ3RoLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgKHNpemVU
eXBlID09IE1pblNpemUgJiYgbGVuZ3RoLmlzQXV0bygpKSkKKyAgICAgICAgcmV0dXJuIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIGNvbnRhaW5pbmdMZW5ndGgsIHJlbmRlclZpZXcpOwor
ICAgIHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCk7
CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkK
QEAgLTkyLDkgKzkyLDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFyV2lkdGgoKQogICAgICAgICByZXR1cm47CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHZpZXcoKTsKICAgICBpbnQgdmlzaWJsZVNpemUgPSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVy
ZXIoKS0+d2lkdGgoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5ib3JkZXJMZWZ0
KCkgLSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+Ym9yZGVyUmlnaHQoKTsKLSAgICBp
bnQgdyA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhzdHlsZSgpLT53aWR0aCgpLCB2aXNp
YmxlU2l6ZSwgcmVuZGVyVmlldyk7Ci0gICAgaW50IG1pbldpZHRoID0gY2FsY1Njcm9sbGJhclRo
aWNrbmVzc1VzaW5nKHN0eWxlKCktPm1pbldpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3
KTsKLSAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLT5tYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkg
PyB3IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKHN0eWxlKCktPm1heFdpZHRoKCksIHZp
c2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgdyA9IGNhbGNTY3JvbGxiYXJUaGlja25l
c3NVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT53aWR0aCgpLCB2aXNpYmxlU2l6
ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1pbldpZHRoID0gY2FsY1Njcm9sbGJhclRoaWNrbmVz
c1VzaW5nKE1pblNpemUsIHN0eWxlKCktPm1pbldpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJW
aWV3KTsKKyAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLT5tYXhXaWR0aCgpLmlzVW5kZWZpbmVk
KCkgPyB3IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCktPm1h
eFdpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKICAgICBzZXRXaWR0aChtYXgobWlu
V2lkdGgsIG1pbihtYXhXaWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFj
ayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9s
bGJhci4gCkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21w
dXRlU2Nyb2xsYmFySGVpZ2h0KCkKICAgICAgICAgcmV0dXJuOwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IHZpc2libGVTaXplID0gbV9zY3JvbGxiYXItPm93
bmluZ1JlbmRlcmVyKCktPmhlaWdodCgpIC0gIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigp
LT5ib3JkZXJUb3AoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5ib3JkZXJCb3R0
b20oKTsKLSAgICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhzdHlsZSgpLT5o
ZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtaW5IZWlnaHQgPSBj
YWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+bWluSGVpZ2h0KCksIHZpc2libGVT
aXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+bWF4SGVpZ2h0
KCkuaXNVbmRlZmluZWQoKSA/IGggOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUo
KS0+bWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgaCA9IGNh
bGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLT5o
ZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOworICAgIGludCBtaW5IZWlnaHQgPSBj
YWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bWluSGVpZ2h0KCks
IHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+
bWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGggOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNp
bmcoTWF4U2l6ZSwgc3R5bGUoKS0+bWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3
KTsKICAgICBzZXRIZWlnaHQobWF4KG1pbkhlaWdodCwgbWluKG1heEhlaWdodCwgaCkpKTsKIAog
ICAgIC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9u
ZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggY2I3OTUzMDI0MzU3NjIxZjM1MzQ4YzUzZTcxNzZl
ZjcyMDc1YTBiMC4uY2Y0ZjdiYTk4MTgxNjI5M2QwZjc0MWFhOTRhYjczMGRjNzE0YTI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE1ODgs
NyArMTU4OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbE91
dGxpbmVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgaW50IGluaXRpYWxMZXR0ZXJX
b3JkU3BhY2luZygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaXpl
KCkgeyByZXR1cm4gTGVuZ3RoKCk7IH0KLSAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNaW5TaXpl
KCkgeyByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQorICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bE1pblNpemUoKSB7IHJldHVybiBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlh
bE1heFNpemUoKSB7IHJldHVybiBMZW5ndGgoVW5kZWZpbmVkKTsgfQogICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbE9mZnNldCgpIHsgcmV0dXJuIExlbmd0aCgpOyB9CiAgICAgc3RhdGljIExlbmd0
aCBpbml0aWFsTWFyZ2luKCkgeyByZXR1cm4gTGVuZ3RoKEZpeGVkKTsgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkZDU4
NmY3ZTU5ZWY5ZGIwZTdiYjlhZjdmYjVhODNlOTA1ZTIxYWIuLmY3Y2JjNDkzNjRiMTMwM2Y5MWRm
YTU4ZTNjZTkyNzFkYjQxOGJmODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMCAg
T2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBtaW4taGVpZ2h0OmF1dG8gYW5kIG1pbi13aWR0aDphdXRvCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQzNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MvYXV0by1taW4tc2l6ZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2F1dG8tbWluLXNpemUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNp
emUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9j
c3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KwogMjAxMi0wNy0wOSAgQWxpY2UgQ2hlbmcgIDxhbGljZV9jaGVuZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRWRpdGluZzogQXV0b2NvcnJlY3Rpb24gaW4gYmxvY2txdW90ZXMgY2F1c2VzIHRleHQg
dG8gYnJlYWsgb3V0IG9mIHF1b3RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9h
dXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2F1dG8tbWlu
LXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMjNkOTExNTkwOTYzYjU0ZGQ2ZjI5NGRk
ZTM0MDRmZTY0OTI5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9h
dXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitQQVNTIGRpdi5zdHls
ZS5taW5XaWR0aCBpcyAiIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJd
IGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiMHB4IgorUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5X
aWR0aCBpcyAiYXV0byIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1pbldpZHRoIGlzICIw
cHgiCitQQVNTIGRpdi5zdHlsZS5taW5IZWlnaHQgaXMgIiIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShkaXYpWyJtaW4taGVpZ2h0Il0gaXMgIjBweCIKK1BBU1MgZGl2LnN0eWxlLm1pbkhlaWdodCBp
cyAiMHB4IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi1oZWlnaHQiXSBpcyAiMHB4
IgorUEFTUyBkaXYuc3R5bGUubWluSGVpZ2h0IGlzICJhdXRvIgorUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGRpdikubWluSGVpZ2h0IGlzICIwcHgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
YXV0by1taW4tc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ5ZWY4ZTBiNDM4ZGUzZjkyMmRmYzg1ZTc2M2ZjYTkwYzc0ZDczZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLmh0
bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxkaXYgaWQ9Zm9vPjwvZGl2Pgor
PHNjcmlwdD4KK2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb28nKTsKK3Nob3VsZEJl
KCdkaXYuc3R5bGUubWluV2lkdGgnLCAnIiInKTsKK3Nob3VsZEJlKCdnZXRDb21wdXRlZFN0eWxl
KGRpdilbIm1pbi13aWR0aCJdJywgJyIwcHgiJyk7CisKK2Rpdi5zdHlsZS5taW5XaWR0aCA9IDA7
CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyIwcHgiJyk7CitzaG91bGRCZSgnZ2V0
Q29tcHV0ZWRTdHlsZShkaXYpWyJtaW4td2lkdGgiXScsICciMHB4IicpOworCitkaXYuc3R5bGUu
bWluV2lkdGggPSAnYXV0byc7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyJhdXRv
IicpOworc2hvdWxkQmUoJ2dldENvbXB1dGVkU3R5bGUoZGl2KS5taW5XaWR0aCcsICciMHB4Iicp
OworCitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbkhlaWdodCcsICciIicpOworc2hvdWxkQmUoJ2dl
dENvbXB1dGVkU3R5bGUoZGl2KVsibWluLWhlaWdodCJdJywgJyIwcHgiJyk7CisKK2Rpdi5zdHls
ZS5taW5IZWlnaHQgPSAwOworc2hvdWxkQmUoJ2Rpdi5zdHlsZS5taW5IZWlnaHQnLCAnIjBweCIn
KTsKK3Nob3VsZEJlKCdnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi1oZWlnaHQiXScsICciMHB4
IicpOworCitkaXYuc3R5bGUubWluSGVpZ2h0ID0gJ2F1dG8nOworc2hvdWxkQmUoJ2Rpdi5zdHls
ZS5taW5IZWlnaHQnLCAnImF1dG8iJyk7CitzaG91bGRCZSgnZ2V0Q29tcHV0ZWRTdHlsZShkaXYp
Lm1pbkhlaWdodCcsICciMHB4IicpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9kZXByZWNhdGVkLWZsZXhib3gtYXV0by1taW4tc2l6ZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNpemUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMTc0MWQ5NzY2Nzk3OTg3NDcxMjY1MDE2ZTAxMTRmN2IzOWY1NGI1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8t
bWluLXNpemUuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4K
Ky5mbGV4Ym94IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICB3aWR0aDogMzBweDsK
KyAgICBoZWlnaHQ6IDMwcHg7Cit9CisuaXRlbSB7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
KyAgICB3aWR0aDogMjBweDsKKyAgICBoZWlnaHQ6IDIwcHg7Cit9CisuaXRlbTpudGgtY2hpbGQo
MSkgeworICAgIGJhY2tncm91bmQtY29sb3I6IHNhbG1vbjsKKyAgICBtaW4td2lkdGg6IDA7Cisg
ICAgbWluLWhlaWdodDogMDsKK30KKy5pdGVtOm50aC1jaGlsZCgyKSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOworICAgIG1pbi13aWR0aDogYXV0bzsKKyAgICBtaW4taGVpZ2h0
OiBhdXRvOworfQorLml0ZW06bnRoLWNoaWxkKDMpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBv
cmFuZ2U7CisgICAgbWluLXdpZHRoOiAzMHB4OworICAgIG1pbi1oZWlnaHQ6IDMwcHg7Cit9Cisu
aW5saW5lIHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDIwcHg7Cisg
ICAgaGVpZ2h0OiAyMHB4OworfQorLnZlcnRpY2FsIHsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6
IHZlcnRpY2FsOworfQorPC9zdHlsZT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2NzczMvZmxleGJveC9yZXNvdXJjZXMvZmxleGJveC5qcyI+PC9zY3JpcHQ+Cis8Ym9k
eSBvbmxvYWQ9ImNoZWNrRmxleEJveGVuKCkiPgorCitUZXN0cyB0aGF0IGRlcHJlY2F0ZWQgZmxl
eGJveGVzIHRyZWF0IG1pbi13aWR0aC9taW4taGVpZ2h0OmF1dG8gYXMgMHB4LgorCis8ZGl2IGNs
YXNzPSJmbGV4Ym94IGhvcml6b250YWwiPgorICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9MCBkYXRhLWV4cGVjdGVkLWhlaWdodD0yMD48ZGl2IGNsYXNzPSJpbmxpbmUi
PjwvZGl2PjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
MCBkYXRhLWV4cGVjdGVkLWhlaWdodD0yMD48ZGl2IGNsYXNzPSJpbmxpbmUiPjwvZGl2PjwvZGl2
PgorICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MzAgZGF0YS1leHBl
Y3RlZC1oZWlnaHQ9MzA+PGRpdiBjbGFzcz0iaW5saW5lIj48L2Rpdj48L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJmbGV4Ym94IHZlcnRpY2FsIj4KKyAgICA8ZGl2IGNsYXNzPSJpdGVtIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPTIwIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTA+PGRpdiBjbGFzcz0i
aW5saW5lIj48L2Rpdj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJpdGVtIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPTIwIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTA+PGRpdiBjbGFzcz0iaW5saW5lIj48L2Rp
dj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJpdGVtIiBkYXRhLWV4cGVjdGVkLXdpZHRoPTMwIGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PTMwPjxkaXYgY2xhc3M9ImlubGluZSI+PC9kaXY+PC9kaXY+Cis8
L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWxpbnV4L2Zhc3QvY3NzL2RlcHJlY2F0ZWQtZmxleGJveC1hdXRvLW1pbi1zaXplLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvY3NzL2RlcHJl
Y2F0ZWQtZmxleGJveC1hdXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjMz
YjI5ZTM5ZTlmNTFiNTExZmIxNzMxYWYxNTA4MWMyZjdiMzFlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9jc3MvZGVwcmVjYXRlZC1m
bGV4Ym94LWF1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMg
dGhhdCBkZXByZWNhdGVkIGZsZXhib3hlcyB0cmVhdCBtaW4td2lkdGgvbWluLWhlaWdodDphdXRv
IGFzIDBweC4KK1BBU1MKK1BBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151500</attachid>
            <date>2012-07-10 12:25:13 -0700</date>
            <delta_ts>2012-07-10 13:54:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88437-20120710122513.patch</filename>
            <type>text/plain</type>
            <size>56441</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDczYTE3Yjk3OWRjNzIy
ZDZmYjk2YzlhMzYwNWEzZWU0N2Y5YTNmYy4uMzAyM2U4YzQ0M2Q3MjZmZDFhZmY3ODRlMzNmZWQy
OTAzYjI4OTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA3LTEwICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG1p
bi1oZWlnaHQ6YXV0byBhbmQgbWluLXdpZHRoOmF1dG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmlnaHQgbm93IGF1dG8gZG9lcyB0aGUgc2FtZSB0aGlu
ZyBhcyBtaW4taGVpZ2h0L21pbi13aWR0aDowLgorICAgICAgICBGb3IgZmxleC1pdGVtcyBpdCBz
aG91bGQgYmUgdGhlIHNhbWUgYXMgbWluLWNvbnRlbnQgKGZvbGxvd3VwIHBhdGNoKS4KKyAgICAg
ICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1mbGV4Ym94LyNtaW4tc2l6ZS1hdXRvCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvY3NzL2F1dG8tbWluLXNpemUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNpemUuaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIFJldHVybiAwcHggZm9yIHRoZSBjb21w
dXRlZCB2YWx1ZSBvZiBhdXRvLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnZhbGlkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnZhbGlkSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgUmVzdHJ1Y3R1cmUgd2lkdGgvaGVpZ2h0
IHBhcnNpbmcgdG8gcmVkdWNlIGNvZGUgZHVwbGljYXRpb24gYW5kIG1ha2UgaXQgZWFzaWVyCisg
ICAgICAgIHRvIGFkZCBhdXRvIGFzIGEgdmFsaWQgbWluIHZhbHVlLgorCisgICAgICAgICogcGxh
dGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjphZGp1c3RTaXplQ29uc3RyYWludHMpOgorICAgICAgICBUaGlzIGNvZGUgd2FzIHVu
bmVjZXNzYXJpbHkgY2hlY2tpbmcgaW50cmluc2ljT3JBdXRvIHNpbmNlIGF1dG8gd2FzIHByZXZp
b3VzbHkKKyAgICAgICAgbm90IGFuIGFsbG93ZWQgdmFsdWUgZm9yIG1pbldpZHRoL21pbkhlaWdo
dC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01p
bk1heEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAg
ICAgICAgTmVlZCB0byBwYXNzIGEgU2l6ZVR5cGUgdG8gYWxsIHRoZXNlIG1ldGhvZHMgc28gdGhh
dCB3ZSBrbm93IGlmIHRoZSBMZW5ndGgKKyAgICAgICAgd2UncmUgd29ya2luZyB3aXRoIGlzIGEg
bWluIGxlbmd0aCBzaW5jZSBhdXRvIGhhcyBhIGRpZmZlcmVudCBtZWFuaW5nIG5vdworICAgICAg
ICBmb3IgbWluIGxlbmd0aHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgIChSZW5kZXJCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhp
YmxlQm94Ojpjb21wdXRlQXZhaWxhYmxlRnJlZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpsaW5lQnJlYWtMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNh
bGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhckhlaWdodCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIERlZmF1bHQgbWluSGVpZ2h0L21p
bldpZHRoIHRvIGF1dG8gaW5zdGVhZCBvZiAwcHguCisKIDIwMTItMDctMTAgIFN1ZGFyc2FuYSBO
YWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAg
W0dUS10gRml4IG1lbW9yeSBsZWFrcyBieSBhZG9wdGluZyBhbGxvY2F0aW9uIG9mIEdka1BpeGJ1
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKaW5kZXggZjM2NTRlNTMwMGNhYzM5ZTZjNGI0YWFkYzMwN2I4YTIx
MzBkOTRkNy4uM2IyYjNmNjUxMzA0YjcwODFlNWZiZGQxZWIxZmE1NzU3YjdkZDc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCkBAIC0xNjc2LDEwICsxNjc2LDEwIEBAIF9fWk5LN1dlYkNvcmU5RnJhbWVW
aWV3MTBsYXlvdXRSb290RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDEzaXNGbGV4aWJs
ZUJveEV2CiBfX1pOSzdXZWJDb3JlOVJlbmRlckJveDI3c2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxh
Y2VkRXYKIF9fWk5LN1dlYkNvcmUxMVJlbmRlclN0eWxlMTJsb2dpY2FsV2lkdGhFdgotX19aTjdX
ZWJDb3JlOVJlbmRlckJveDI0Y29tcHV0ZUxvZ2ljYWxXaWR0aFVzaW5nRU5TXzE2TG9naWNhbFdp
ZHRoVHlwZUVpCitfX1pON1dlYkNvcmU5UmVuZGVyQm94MjRjb21wdXRlTG9naWNhbFdpZHRoVXNp
bmdFTlNfMTZTaXplVHlwZUVpCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTExbWFyZ2luU3Rh
cnRFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGU5bWFyZ2luRW5kRXYKLV9fWk5LN1dlYkNv
cmU5UmVuZGVyQm94MjhzaXplc1RvSW50cmluc2ljTG9naWNhbFdpZHRoRU5TXzE2TG9naWNhbFdp
ZHRoVHlwZUUKK19fWk5LN1dlYkNvcmU5UmVuZGVyQm94MjhzaXplc1RvSW50cmluc2ljTG9naWNh
bFdpZHRoRU5TXzE2U2l6ZVR5cGVFCiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJCbG9jazI2aXNJbmxp
bmVCbG9ja09ySW5saW5lVGFibGVFdgogX19aTks3V2ViQ29yZTExUmVuZGVyU3R5bGUxNWxvZ2lj
YWxNYXhXaWR0aEV2CiBfX1pOSzdXZWJDb3JlMTFSZW5kZXJTdHlsZTE1bG9naWNhbE1pbldpZHRo
RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggY2I4NWJlYmJmOGZjYjM1ZjBiYzE0NDEzNGNjOTFkNWJlYzUxZjZlMi4uMjA4
ZDQ3MDE5MzBkMzgzNWY4NDJiZDJmMTk2OTVkMjU2OTVkNTE4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE4NTYsOCAr
MTg1NiwxNCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgobWF4V2lkdGgsIHN0eWxlLmdldCgpKTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgorICAgICAgICAgICAg
Ly8gRklYTUU6IEZvciBmbGV4LWl0ZW1zLCBtaW4taGVpZ2h0OmF1dG8gc2hvdWxkIGNvbXB1dGUg
dG8gbWluLWNvbnRlbnQuCisgICAgICAgICAgICBpZiAoc3R5bGUtPm1pbkhlaWdodCgpLmlzQXV0
bygpKQorICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKDAsIHN0
eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5taW5IZWlnaHQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5TWluV2lkdGg6CisgICAgICAgICAgICAvLyBGSVhNRTogRm9yIGZsZXgtaXRlbXMs
IG1pbi13aWR0aDphdXRvIHNob3VsZCBjb21wdXRlIHRvIG1pbi1jb250ZW50LgorICAgICAgICAg
ICAgaWYgKHN0eWxlLT5taW5XaWR0aCgpLmlzQXV0bygpKQorICAgICAgICAgICAgICAgIHJldHVy
biB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKDAsIHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5taW5XaWR0aCgpLCBz
dHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5vcGFjaXR5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMDE1ZDkzMDU4NDkxM2NhYTg1NGNiZmUyYzA1YWRjZmFjNGYzNGRmZC4uZGMzZmRmYTY3ZDlm
NDczZTc1MDQzMzViOGIxYTQ1ZjRmNDBhZDAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE1NjksNiArMTU2OSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb21tYShDU1NQYXJz
ZXJWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLT51bml0ID09IENTU1Bh
cnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJzsgCiB9CiAKK2Jvb2wg
Q1NTUGFyc2VyOjp2YWxpZFdpZHRoKENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpbnQg
aWQgPSB2YWx1ZS0+aWQ7CisgICAgaWYgKGlkID09IENTU1ZhbHVlSW50cmluc2ljIHx8IGlkID09
IENTU1ZhbHVlTWluSW50cmluc2ljIHx8IGlkID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCB8
fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRG
aWxsQXZhaWxhYmxlIHx8IGlkID09IENTU1ZhbHVlV2Via2l0Rml0Q29udGVudCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgg
fCBGUGVyY2VudCB8IEZOb25OZWcpOworfQorCisvLyBGSVhNRTogQ29tYmluZSB0aGlzIHdpdGgg
dmFsaWRXaWR0aCB3aGVuIHdlIHN1cHBvcnQgZml0LWNvbnRlbnQsIGV0IGFsLCBmb3IgaGVpZ2h0
cy4KK2Jvb2wgQ1NTUGFyc2VyOjp2YWxpZEhlaWdodChDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCit7
CisgICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIGlmIChpZCA9PSBDU1NWYWx1ZUludHJpbnNp
YyB8fCBpZCA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZO
b25OZWcpOworfQogCiB2b2lkIENTU1BhcnNlcjo6Y2hlY2tGb3JPcnBoYW5lZFVuaXRzKCkKIHsK
QEAgLTE5ODEsMzQgKzE5OTcsMjggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnKSk7
CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOiAvLyA8bGVu
Z3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0CisgICAgY2FzZSBDU1NQcm9wZXJ0
eU1heFdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8qIG5v
YnJlYWsgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6IC8vIDxsZW5ndGg+IHwgPHBl
cmNlbnRhZ2U+IHwgaW5oZXJpdAorICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChpZCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsaWRXaWR0aCh2YWx1ZSkpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9n
aWNhbFdpZHRoOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnRyaW5zaWMgfHwgaWQgPT0g
Q1NTVmFsdWVNaW5JbnRyaW5zaWMgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8
IGlkID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZp
bGxBdmFpbGFibGUgfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRGaXRDb250ZW50KQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQg
fCBGTm9uTmVnKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRMb2dpY2FsV2lkdGg6CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKGlkID09
IENTU1ZhbHVlQXV0byB8fCB2YWxpZFdpZHRoKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDogLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4g
fCBub25lIHwgaW5oZXJpdAorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8qIG5vYnJlYWsgKi8KLSAgICBjYXNl
IENTU1Byb3BlcnR5TWluSGVpZ2h0OiAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVy
aXQKKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoaWQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbGlk
SGVpZ2h0KHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NQcm9wZXJ0eU1p
bkhlaWdodDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW50cmluc2ljIHx8IGlkID09IENTU1ZhbHVlTWluSW50
cmluc2ljKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnKSk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdo
dDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbGlkSGVpZ2h0KHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgpAQCAtMjAy
NywyMiArMjAzNyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFp
ZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCkpOwogICAgICAgICBicmVh
azsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDogLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFn
ZT4gfCBhdXRvIHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lk
dGg6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQgfHwgaWQgPT0g
Q1NTVmFsdWVXZWJraXRNYXhDb250ZW50IHx8IGlkID09IENTU1ZhbHVlV2Via2l0RmlsbEF2YWls
YWJsZSB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdEZpdENvbnRlbnQpIHsKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIC8qIG5vYnJlYWsgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OiAvLyA8bGVuZ3Ro
PiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVJbnRyaW5zaWMgfHwgaWQgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcpKQotICAgICAgICAg
ICAgLy8gIyMjIGhhbmRsZSBtdWx0aWxlbmd0aCBjYXNlIHdoZXJlIHdlIGFsbG93IHJlbGF0aXZl
IHVuaXRzCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbTogICAgICAgICAgICAgICAvLyA8bGVuZ3Ro
PiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUxl
ZnQ6ICAgICAgICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBp
bmhlcml0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OiAgICAgICAgICAgICAgICAvLyA8bGVu
Z3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
aW5kZXggMTRhOThlMWUzNzIxNjUzMjVlNmY5ZDFjOWFkYjhiODZkMGQ5NTA2NS4uNmFjYmJhMjUy
OTMwNTVhMTYzMzkyZjE4ZDY3N2UxYThhNTZhODRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApA
QCAtMzc5LDYgKzM3OSw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGluU2hvcnRoYW5kKCkgY29u
c3QgeyByZXR1cm4gbV9pblBhcnNlU2hvcnRoYW5kOyB9CiAKKyAgICBib29sIHZhbGlkV2lkdGgo
Q1NTUGFyc2VyVmFsdWUqKTsKKyAgICBib29sIHZhbGlkSGVpZ2h0KENTU1BhcnNlclZhbHVlKik7
CisKICAgICB2b2lkIGNoZWNrRm9yT3JwaGFuZWRVbml0cygpOwogCiAgICAgdm9pZCBkZWxldGVG
b250RmFjZU9ubHlWYWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuY3BwCmluZGV4IDdkMjdiOTZkMGE0MDM4ZmM0Y2EzNWFmZTU2YTcyYjEzMWMx
MzU4NjcuLjQ2MmVlOTQ2ZTkxYzk1Zjg2ZTRlMzFhMjc4YWU5ZWFiMjNkYzliZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtODIsOSAr
ODIsOSBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTaXplQ29uc3RyYWludHMoUmVuZGVy
U3R5bGUqIHN0eWxlLCBGb3JtVHlwZSB0eXBlKSBjbwogewogICAgIGNvbnN0IHN0cnVjdCBUaGVt
ZVBhcnREZXNjKiBkZXNjID0gbV9wYXJ0RGVzY3MgKyAoc2l6ZV90KXR5cGU7CiAKLSAgICBpZiAo
c3R5bGUtPm1pbldpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICBpZiAoc3R5bGUtPm1p
bldpZHRoKCkuaXNJbnRyaW5zaWMoKSkKICAgICAgICAgc3R5bGUtPnNldE1pbldpZHRoKGRlc2Mt
Pm1pbi53aWR0aCgpKTsKLSAgICBpZiAoc3R5bGUtPm1pbkhlaWdodCgpLmlzSW50cmluc2ljT3JB
dXRvKCkpCisgICAgaWYgKHN0eWxlLT5taW5IZWlnaHQoKS5pc0ludHJpbnNpYygpKQogICAgICAg
ICBzdHlsZS0+c2V0TWluSGVpZ2h0KGRlc2MtPm1pbi5oZWlnaHQoKSk7CiAKICAgICBpZiAoZGVz
Yy0+bWF4LndpZHRoKCkudmFsdWUoKSA+IDAgJiYgc3R5bGUtPm1heFdpZHRoKCkuaXNJbnRyaW5z
aWNPckF1dG8oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOGQ4
MjgyMGMwZDRhZjgwNjkzYzNmY2I5MDE2NzcxYmQzZDU4MjdjYi4uOWJjYWMyZmQwMjQ3MzJmMGVi
NzhmMGU1NWI0OTI3ODdjNTk0YjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKQEAgLTE2OTAsMTcgKzE2OTAsMTcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsV2lkdGhJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmYKICAg
ICAgICAgc2V0TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aExlbmd0aC52YWx1ZSgpICsgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ2FsY3Vs
YXRlIExvZ2ljYWxXaWR0aAotICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGly
ZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7Cisg
ICAgICAgIHNldExvZ2ljYWxXaWR0aChjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhN
YWluT3JQcmVmZXJyZWRTaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBjYiwg
cmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKSk7CiAKICAgICAgICAgLy8g
Q2FsY3VsYXRlIE1heExvZ2ljYWxXaWR0aAogICAgICAgICBpZiAoIXN0eWxlVG9Vc2UtPmxvZ2lj
YWxNYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWF4
TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWF4TG9naWNh
bFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZz
ZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbWF4
TG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWF4U2l6ZSwg
Y29udGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbiwgY2IsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoKCkgPiBt
YXhMb2dpY2FsV2lkdGgpCiAgICAgICAgICAgICAgICAgc2V0TG9naWNhbFdpZHRoKG1heExvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDYWxjdWxhdGUgTWluTG9naWNhbFdp
ZHRoCi0gICAgICAgIExheW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoTWluTG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5l
RGlyZWN0aW9uLCBjYiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsK
KyAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2FsV2lkdGggPSBjb21wdXRlTG9naWNhbFdpZHRo
SW5SZWdpb25Vc2luZyhNaW5TaXplLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCBj
YiwgcmVnaW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKICAgICAgICAgaWYg
KGxvZ2ljYWxXaWR0aCgpIDwgbWluTG9naWNhbFdpZHRoKQogICAgICAgICAgICAgc2V0TG9naWNh
bFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCk7CiAgICAgfQpAQCAtMTcyNiw0NiArMTcyNiw1MiBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBjYi0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQo
dGhpcywgY29udGFpbmVyTG9naWNhbFdpZHRoIC0gbG9naWNhbFdpZHRoKCkgLSBjYi0+bWFyZ2lu
U3RhcnRGb3JDaGlsZCh0aGlzKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhMb2dpY2FsV2lkdGhUeXBlIHdpZHRoVHlwZSwgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsCitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwKICAgICBjb25zdCBSZW5kZXJCbG9jayogY2IsIFJl
bmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJz
dFBhZ2UpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQgPSBsb2dpY2FsV2lk
dGgoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgTGVuZ3Ro
IGxvZ2ljYWxXaWR0aDsKLSAgICBpZiAod2lkdGhUeXBlID09IExvZ2ljYWxXaWR0aCkKKyAgICBp
ZiAod2lkdGhUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUpCiAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxXaWR0aCgpOwotICAgIGVsc2UgaWYgKHdpZHRoVHlwZSA9
PSBNaW5Mb2dpY2FsV2lkdGgpCisgICAgZWxzZSBpZiAod2lkdGhUeXBlID09IE1pblNpemUpCiAg
ICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNaW5XaWR0aCgpOwogICAg
IGVsc2UKICAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRo
KCk7CiAKICAgICBBU1NFUlQoIWxvZ2ljYWxXaWR0aC5pc1VuZGVmaW5lZCgpKTsKIAotICAgIGlm
IChsb2dpY2FsV2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSkgewotICAgICAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdmlldygpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5k
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQg
PSBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZDsKKyAgICAv
LyBGSVhNRTogbWluV2lkdGg6YXV0byBvbiBhIGZsZXgtaXRlbSBuZWVkcyB0byBnbyBkb3duIHRo
ZSBpbnRyaW5zaWNPckF1dG8gcGF0aCBiZWxvdy4KKyAgICBpZiAod2lkdGhUeXBlID09IE1pblNp
emUgJiYgbG9naWNhbFdpZHRoLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUJvcmRl
ckJveExvZ2ljYWxXaWR0aCgwKTsKKyAgICAKKyAgICBpZiAoIWxvZ2ljYWxXaWR0aC5pc0ludHJp
bnNpY09yQXV0bygpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgY29udGFpbmluZyBibG9j
ayBmbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gb3VyIGRpcmVjdGlvbiB3ZSBuZWVkIHRvIHVzZSB0
aGUgYXZhaWxhYmxlIGxvZ2ljYWwgaGVpZ2h0IGluc3RlYWQuCisgICAgICAgIHJldHVybiBjb21w
dXRlQm9yZGVyQm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgYXZh
aWxhYmxlTG9naWNhbFdpZHRoLCB2aWV3KCkpKTsKKyAgICB9CiAKLSAgICAgICAgLy8gc2hyaW5r
VG9Bdm9pZEZsb2F0cygpIGlzIG9ubHkgdHJ1ZSBmb3Igd2lkdGg6IGF1dG8gc28gdGhlIGJlbG93
IGNvZGUgd29ya3MgY29ycmVjdGx5IGZvcgotICAgICAgICAvLyB3aWR0aDogZmlsbC1hdmFpbGFi
bGUgc2luY2Ugbm8gY2FzZSBtYXRjaGVzIGFuZCBpdCByZXR1cm5zIHRoZSBsb2dpY2FsV2lkdGhS
ZXN1bHQgZnJvbSBhYm92ZS4KLSAgICAgICAgaWYgKHNocmlua1RvQXZvaWRGbG9hdHMoKSAmJiBj
Yi0+Y29udGFpbnNGbG9hdHMoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IHNo
cmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMobWFyZ2luU3RhcnQsIG1hcmdpbkVuZCwgY2Is
IHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7CisgICAgaWYgKGxvZ2lj
YWxXaWR0aC50eXBlKCkgPT0gTWluQ29udGVudCkKKyAgICAgICAgcmV0dXJuIG1pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpOworICAgIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IE1heENvbnRl
bnQpCisgICAgICAgIHJldHVybiBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKIAotICAgICAg
ICBpZiAobG9naWNhbFdpZHRoLnR5cGUoKSA9PSBNaW5Db250ZW50KQotICAgICAgICAgICAgbG9n
aWNhbFdpZHRoUmVzdWx0ID0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGVs
c2UgaWYgKGxvZ2ljYWxXaWR0aC50eXBlKCkgPT0gTWF4Q29udGVudCkKLSAgICAgICAgICAgIGxv
Z2ljYWxXaWR0aFJlc3VsdCA9IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwotICAgICAgICBl
bHNlIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IEZpdENvbnRlbnQgfHwgKGxvZ2ljYWxXaWR0
aC50eXBlKCkgIT0gRmlsbEF2YWlsYWJsZSAmJiBzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVu
dCh3aWR0aFR5cGUpKSkKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IG1heChtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgbWluKG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBs
b2dpY2FsV2lkdGhSZXN1bHQpKTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygp
OworICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGVUb1VzZS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3
KTsKKyAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZVRvVXNlLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aFJlc3VsdDsKIAotICAgIH0gZWxzZSAvLyBGSVhN
RTogSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIG91ciBk
aXJlY3Rpb24gd2UgbmVlZCB0byB1c2UgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIGhlaWdodCBpbnN0
ZWFkLgotICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNh
bFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCB2aWV3KCkpKTsgCisgICAgLy8gc2hyaW5rVG9Bdm9pZEZsb2F0cygpIGlzIG9ubHkgdHJ1ZSBm
b3Igd2lkdGg6IGF1dG8gc28gdGhlIGJlbG93IGNvZGUgd29ya3MgY29ycmVjdGx5IGZvcgorICAg
IC8vIHdpZHRoOiBmaWxsLWF2YWlsYWJsZSBzaW5jZSBubyBjYXNlIG1hdGNoZXMgYW5kIGl0IHJl
dHVybnMgdGhlIGxvZ2ljYWxXaWR0aFJlc3VsdCBmcm9tIGFib3ZlLgorICAgIGlmIChzaHJpbmtU
b0F2b2lkRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCisgICAgICAgIGxvZ2ljYWxX
aWR0aFJlc3VsdCA9IHNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMobWFyZ2luU3RhcnQs
IG1hcmdpbkVuZCwgY2IsIHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7
CisgICAgZWxzZQorICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBhdmFpbGFibGVMb2dpY2Fs
V2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZDsKIAorICAgIGlmIChsb2dpY2FsV2lkdGgu
dHlwZSgpID09IEZpdENvbnRlbnQgfHwgKGxvZ2ljYWxXaWR0aC50eXBlKCkgIT0gRmlsbEF2YWls
YWJsZSAmJiBzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudCh3aWR0aFR5cGUpKSkKKyAgICAg
ICAgcmV0dXJuIG1heChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgbWluKG1heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGhSZXN1bHQpKTsKICAgICByZXR1cm4gbG9naWNh
bFdpZHRoUmVzdWx0OwogfQogCi1ib29sIFJlbmRlckJveDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0Zp
dENvbnRlbnQoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUpIGNvbnN0Citib29sIFJlbmRlckJv
eDo6c2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoU2l6ZVR5cGUgd2lkdGhUeXBlKSBjb25z
dAogewogICAgIC8vIE1hcnF1ZWVzIGluIFdpbklFIGFyZSBsaWtlIGEgbWl4dHVyZSBvZiBibG9j
a3MgYW5kIGlubGluZS1ibG9ja3MuICBUaGV5IHNpemUgYXMgdGhvdWdoIHRoZXkncmUgYmxvY2tz
LAogICAgIC8vIGJ1dCB0aGV5IGFsbG93IHRleHQgdG8gc2l0IG9uIHRoZSBzYW1lIGxpbmUgYXMg
dGhlIG1hcnF1ZWUuCkBAIC0xNzc0LDcgKzE3ODAsNyBAQCBib29sIFJlbmRlckJveDo6c2l6ZXNM
b2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQoTG9naWNhbFdpZHRoVHlwZSB3aWR0aFR5cGUpIGNvbnN0
CiAKICAgICAvLyBUaGlzIGNvZGUgbWF5IGxvb2sgYSBiaXQgc3RyYW5nZS4gIEJhc2ljYWxseSB3
aWR0aDppbnRyaW5zaWMgc2hvdWxkIGNsYW1wIHRoZSBzaXplIHdoZW4gdGVzdGluZyBib3RoCiAg
ICAgLy8gbWluLXdpZHRoIGFuZCB3aWR0aC4gIG1heC13aWR0aCBpcyBvbmx5IGNsYW1wZWQgaWYg
aXQgaXMgYWxzbyBpbnRyaW5zaWMuCi0gICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aCA9ICh3aWR0aFR5
cGUgPT0gTWF4TG9naWNhbFdpZHRoKSA/IHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpIDogc3R5
bGUoKS0+bG9naWNhbFdpZHRoKCk7CisgICAgTGVuZ3RoIGxvZ2ljYWxXaWR0aCA9ICh3aWR0aFR5
cGUgPT0gTWF4U2l6ZSkgPyBzdHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKSA6IHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpOwogICAgIGlmIChsb2dpY2FsV2lkdGgudHlwZSgpID09IEludHJpbnNpYykK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTIwMTEsMTEgKzIwMTcsMTEgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKIAogICAgICAgICBMYXlvdXRVbml0IGhlaWdo
dFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7Ci0gICAgICAgICAgICBo
ZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlVG9Vc2UtPmxvZ2lj
YWxIZWlnaHQoKSk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlVG9Vc2UtPmxvZ2ljYWxIZWlnaHQo
KSk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0UmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAg
IGhlaWdodFJlc3VsdCA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQg
bWluSCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNhbE1pbkhl
aWdodCgpKTsgLy8gTGVhdmUgYXMgLTEgaWYgdW5zZXQuCi0gICAgICAgICAgICBMYXlvdXRVbml0
IG1heEggPSBzdHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGhl
aWdodFJlc3VsdCA6IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNh
bE1heEhlaWdodCgpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbWluSCA9IGNvbXB1dGVMb2dp
Y2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNhbE1pbkhlaWdodCgpKTsg
Ly8gTGVhdmUgYXMgLTEgaWYgdW5zZXQuCisgICAgICAgICAgICBMYXlvdXRVbml0IG1heEggPSBz
dHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGhlaWdodFJlc3Vs
dCA6IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGVUb1VzZS0+bG9naWNh
bE1heEhlaWdodCgpKTsKICAgICAgICAgICAgIGlmIChtYXhIID09IC0xKQogICAgICAgICAgICAg
ICAgIG1heEggPSBoZWlnaHRSZXN1bHQ7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBtaW4o
bWF4SCwgaGVpZ2h0UmVzdWx0KTsKQEAgLTIwNjIsMjYgKzIwNjgsMjggQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKICAgICB9CiB9CiAKLUxheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaGVpZ2h0KQorTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVp
Z2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoaGVpZ2h0KTsKKyAgICBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2lu
ZyhoZWlnaHRUeXBlLCBoZWlnaHQpOwogICAgIGlmIChsb2dpY2FsSGVpZ2h0ICE9IC0xKQogICAg
ICAgICBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUJvcmRlckJveExvZ2ljYWxIZWlnaHQobG9naWNh
bEhlaWdodCk7CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CiB9CiAKLUxheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGhl
aWdodCkKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRV
c2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCkKIHsKKyAgICAv
LyBGSVhNRTogRm9yIGZsZXhib3hlcywgbWluSGVpZ2h0OmF1dG8gc2hvdWxkIGJlIG1pbi1jb250
ZW50LgorICAgIGlmIChoZWlnaHQuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBoZWlnaHRUeXBl
ID09IE1pblNpemUgPyAwIDogLTE7CisgCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0g
LTE7Ci0gICAgaWYgKCFoZWlnaHQuaXNBdXRvKCkpIHsKLSAgICAgICAgaWYgKGhlaWdodC5pc0Zp
eGVkKCkpCi0gICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gaGVpZ2h0LnZhbHVlKCk7Ci0gICAg
ICAgIGVsc2UgaWYgKGhlaWdodC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgIGxvZ2ljYWxIZWln
aHQgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaGVpZ2h0KTsKLSAgICAgICAgZWxz
ZSBpZiAoaGVpZ2h0LmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICBsb2dpY2Fs
SGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgoaGVpZ2h0LCAwLCB2aWV3KCkpOwotICAgIH0KLSAgICBy
ZXR1cm4gbG9naWNhbEhlaWdodDsKKyAgICBpZiAoaGVpZ2h0LmlzRml4ZWQoKSkKKyAgICAgICAg
cmV0dXJuIGhlaWdodC52YWx1ZSgpOworICAgIGlmIChoZWlnaHQuaXNQZXJjZW50KCkpCisgICAg
ICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaGVpZ2h0KTsKKyAgICBp
ZiAoaGVpZ2h0LmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCisgICAgICAgIHJldHVybiB2YWx1ZUZv
ckxlbmd0aChoZWlnaHQsIDAsIHZpZXcoKSk7CisgICAgcmV0dXJuIC0xOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0
aCYgaGVpZ2h0KQpAQCAtMjE3MSwxOCArMjE3OSwyMiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KQogCiBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5j
bHVkZU1heFdpZHRoKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNp
bmcoc3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOworICAgIHJldHVy
biBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoY29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+
bG9naWNhbFdpZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExh
eW91dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIGluY2x1ZGVNYXhXaWR0aCkgY29uc3QKIHsKLSAg
ICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKLSAgICBMYXlvdXRVbml0IG1heExv
Z2ljYWxXaWR0aCA9ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRo
KCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1p
bkxvZ2ljYWxXaWR0aCA9IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUs
IHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpKTsKKyAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxX
aWR0aCA9ICFpbmNsdWRlTWF4V2lkdGggfHwgc3R5bGUoKS0+bG9naWNhbE1heFdpZHRoKCkuaXNV
bmRlZmluZWQoKSA/IGxvZ2ljYWxXaWR0aCA6IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVz
aW5nKE1heFNpemUsIHN0eWxlKCktPmxvZ2ljYWxNYXhXaWR0aCgpKTsKICAgICByZXR1cm4gbWF4
KG1pbkxvZ2ljYWxXaWR0aCwgbWluKGxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9
CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2lu
ZyhMZW5ndGggbG9naWNhbFdpZHRoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBMZW5ndGggbG9n
aWNhbFdpZHRoKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBGb3IgZmxleGJveGVzLCBtaW5XaWR0
aDphdXRvIHNob3VsZCBiZSBtaW4tY29udGVudC4KKyAgICBpZiAoc2l6ZVR5cGUgPT0gTWluU2l6
ZSAmJiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVu
dEJveExvZ2ljYWxXaWR0aCgwKTsKKwogICAgIHN3aXRjaCAobG9naWNhbFdpZHRoLnR5cGUoKSkg
ewogICAgICAgICBjYXNlIEZpeGVkOgogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50
Qm94TG9naWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC52YWx1ZSgpKTsKQEAgLTIyMDcsMTggKzIyMTks
MjIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVz
aW5nKExlbmd0aCBsb2dpY2FsV2lkdGgpIGNvbnMKIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKSk7CisgICAgcmV0
dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHls
ZSgpLT5sb2dpY2FsSGVpZ2h0KCkpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCkgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxIZWlnaHQg
PSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1pbkhl
aWdodCgpKTsKLSAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxIZWlnaHQgPSBzdHlsZSgpLT5sb2dp
Y2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGxvZ2ljYWxIZWlnaHQgOiBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsKKyAg
ICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0VXNpbmcoTWluU2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpKTsKKyAgICBMYXlv
dXRVbml0IG1heExvZ2ljYWxIZWlnaHQgPSBzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNV
bmRlZmluZWQoKSA/IGxvZ2ljYWxIZWlnaHQgOiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsKICAgICByZXR1cm4g
bWF4KG1pbkxvZ2ljYWxIZWlnaHQsIG1pbihsb2dpY2FsSGVpZ2h0LCBtYXhMb2dpY2FsSGVpZ2h0
KSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBM
ZW5ndGggbG9naWNhbEhlaWdodCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogRm9yIGZsZXhib3hl
cywgbWluV2lkdGg6YXV0byBzaG91bGQgYmUgbWluLWNvbnRlbnQuCisgICAgaWYgKHNpemVUeXBl
ID09IE1pblNpemUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodCgwKTsKKwogICAgIHN3aXRjaCAobG9naWNhbEhl
aWdodC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaXhlZDoKICAgICAgICAgICAgIHJldHVybiBj
b21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodC52YWx1ZSgpKTsKQEAg
LTI1NjMsNyArMjU3OSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2lj
YWxXaWR0aChSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvCiAgICAgLy8gQ2FsY3Vs
YXRlIGNvbnN0cmFpbnQgZXF1YXRpb24gdmFsdWVzIGZvciAnd2lkdGgnIGNhc2UuCiAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGhSZXN1bHQ7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFJl
c3VsdDsKLSAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAorICAgIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS0+bG9naWNhbFdpZHRoKCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJEaXJlY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMb2dpY2Fs
V2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgsIG1hcmdpbkxv
Z2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQsIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMs
IG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzLCBsb2dpY2FsTGVmdFJlc3VsdCk7CkBAIC0yNTc3LDcg
KzI1OTMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgo
UmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgICAgICBMYXlvdXRVbml0IG1h
eE1hcmdpbkxvZ2ljYWxSaWdodDsKICAgICAgICAgTGF5b3V0VW5pdCBtYXhMb2dpY2FsTGVmdFBv
czsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlKCkt
PmxvZ2ljYWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9uLAor
ICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1heFNpemUsIHN0eWxl
KCktPmxvZ2ljYWxNYXhXaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRMZW5ndGgs
IG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoLCBtYXhNYXJnaW5Mb2dp
Y2FsTGVmdCwgbWF4TWFyZ2luTG9naWNhbFJpZ2h0LCBtYXhMb2dpY2FsTGVmdFBvcyk7CkBAIC0y
NTk3LDcgKzI2MTMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
V2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgICAgICBMYXlvdXRV
bml0IG1pbk1hcmdpbkxvZ2ljYWxSaWdodDsKICAgICAgICAgTGF5b3V0VW5pdCBtaW5Mb2dpY2Fs
TGVmdFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKHN0
eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGlyZWN0
aW9uLAorICAgICAgICBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKE1pblNpemUs
IHN0eWxlKCktPmxvZ2ljYWxNaW5XaWR0aCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyRGly
ZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCwgYm9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0TGVuZ3RoLCBsb2dpY2FsUmlnaHRM
ZW5ndGgsIG1hcmdpbkxvZ2ljYWxMZWZ0LCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoLCBtaW5NYXJn
aW5Mb2dpY2FsTGVmdCwgbWluTWFyZ2luTG9naWNhbFJpZ2h0LCBtaW5Mb2dpY2FsTGVmdFBvcyk7
CkBAIC0yNjExLDcgKzI2MjcsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsV2lkdGgoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgbwogICAgIH0KIAog
ICAgIGlmIChzdHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpICYmIGxvZ2ljYWxX
aWR0aCgpIDwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcp
IHsKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5ndGgobWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVkKSwgY29u
dGFpbmVyQmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICAgICAgY29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBMZW5ndGgobWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmcsIEZpeGVkKSwgY29udGFpbmVy
QmxvY2ssIGNvbnRhaW5lckRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGgsIGJvcmRlcnNQbHVzUGFkZGluZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExl
bmd0aCwgbG9naWNhbFJpZ2h0TGVuZ3RoLCBtYXJnaW5Mb2dpY2FsTGVmdCwgbWFyZ2luTG9naWNh
bFJpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aFJlc3VsdCwgbWFyZ2luTG9naWNhbExlZnRBbGlhcywgbWFyZ2luTG9naWNhbFJpZ2h0
QWxpYXMsIGxvZ2ljYWxMZWZ0UmVzdWx0KTsKQEAgLTI2NDgsMTEgKzI2NjQsMTUgQEAgc3RhdGlj
IHZvaWQgY29tcHV0ZUxvZ2ljYWxMZWZ0UG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dp
Y2FsTGVmdFBvcywgY29uc3QKICAgICAgICAgbG9naWNhbExlZnRQb3MgKz0gKGNoaWxkLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGFpbmVyQmxvY2stPmJvcmRlckxlZnQoKSA6IGNv
bnRhaW5lckJsb2NrLT5ib3JkZXJUb3AoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4dERpcmVjdGlvbiBjb250YWlu
ZXJEaXJlY3Rpb24sCit2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lk
dGhVc2luZyhTaXplVHlwZSB3aWR0aFNpemVUeXBlLCBMZW5ndGggbG9naWNhbFdpZHRoLCBjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyQmxvY2ssIFRleHREaXJlY3Rpb24gY29u
dGFpbmVyRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGgsIExheW91dFVuaXQg
Ym9yZGVyc1BsdXNQYWRkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBM
ZW5ndGggbWFyZ2luTG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
JiBsb2dpY2FsV2lkdGhWYWx1ZSwgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSwg
TGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUsIExheW91dFVuaXQmIGxvZ2ljYWxM
ZWZ0UG9zKQogeworICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBmbGV4IGl0ZW1zIGRvIGhlcmUg
c2luY2UgbWluLXdpZHRoOmF1dG8gPT0gbWluLXdpZHRoOm1pbi1jb250ZW50IGluc3RlYWQgb2Yg
bWluLXdpZHRoOmF1dG8gPT0gbWluLXdpZHRoOjAuCisgICAgaWYgKHdpZHRoU2l6ZVR5cGUgPT0g
TWluU2l6ZSAmJiBsb2dpY2FsV2lkdGguaXNBdXRvKCkpCisgICAgICAgIGxvZ2ljYWxXaWR0aCA9
IExlbmd0aCgwLCBGaXhlZCk7CisKICAgICAvLyAnbGVmdCcgYW5kICdyaWdodCcgY2Fubm90IGJv
dGggYmUgJ2F1dG8nIGJlY2F1c2Ugb25lIHdvdWxkIG9mIGJlZW4KICAgICAvLyBjb252ZXJ0ZWQg
dG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbHJlYWR5CiAgICAgQVNTRVJUKCEobG9naWNhbExlZnQu
aXNBdXRvKCkgJiYgbG9naWNhbFJpZ2h0LmlzQXV0bygpKSk7CkBAIC0yODkyLDcgKzI5MTIsNyBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxUb3BQb3M7CiAKICAgICAvLyBDYWxjdWxhdGUgY29uc3RyYWludCBl
cXVhdGlvbiB2YWx1ZXMgZm9yICdoZWlnaHQnIGNhc2UuCi0gICAgY29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGVUb1VzZS0+bG9naWNhbEhlaWdodCgpLCBjb250YWluZXJC
bG9jaywgY29udGFpbmVyTG9naWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgIGNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0
eWxlVG9Vc2UtPmxvZ2ljYWxIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVuZ3RoLCBsb2dpY2FsQm90dG9tTGVuZ3RoLCBtYXJn
aW5CZWZvcmUsIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRSZXN1bHQsIG1hcmdpbkJlZm9yZUFsaWFzLCBtYXJnaW5BZnRl
ckFsaWFzLCBsb2dpY2FsVG9wUG9zKTsKICAgICBzZXRMb2dpY2FsVG9wKGxvZ2ljYWxUb3BQb3Mp
OwpAQCAtMjkwNyw3ICsyOTI3LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgbWF4TWFyZ2luQWZ0ZXI7CiAgICAg
ICAgIExheW91dFVuaXQgbWF4TG9naWNhbFRvcFBvczsKIAotICAgICAgICBjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNlLT5sb2dpY2FsTWF4SGVpZ2h0KCksIGNv
bnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcs
CisgICAgICAgIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUsIHN0
eWxlVG9Vc2UtPmxvZ2ljYWxNYXhIZWlnaHQoKSwgY29udGFpbmVyQmxvY2ssIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQsIGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlbmd0aCwgbG9naWNhbEJvdHRvbUxlbmd0
aCwgbWFyZ2luQmVmb3JlLCBtYXJnaW5BZnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbEhlaWdodCwgbWF4TWFyZ2luQmVmb3JlLCBtYXhN
YXJnaW5BZnRlciwgbWF4TG9naWNhbFRvcFBvcyk7CiAKQEAgLTI5MjYsNyArMjk0Niw3IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKQogICAgICAgICBM
YXlvdXRVbml0IG1pbk1hcmdpbkFmdGVyOwogICAgICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxU
b3BQb3M7CiAKLSAgICAgICAgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5
bGVUb1VzZS0+bG9naWNhbE1pbkhlaWdodCgpLCBjb250YWluZXJCbG9jaywgY29udGFpbmVyTG9n
aWNhbEhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nLAorICAgICAgICBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLT5sb2dpY2FsTWluSGVpZ2h0
KCksIGNvbnRhaW5lckJsb2NrLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBib3JkZXJzUGx1c1Bh
ZGRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3BMZW5ndGgsIGxvZ2ljYWxCb3R0b21MZW5ndGgsIG1hcmdpbkJlZm9yZSwgbWFyZ2luQWZ0
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkxvZ2lj
YWxIZWlnaHQsIG1pbk1hcmdpbkJlZm9yZSwgbWluTWFyZ2luQWZ0ZXIsIG1pbkxvZ2ljYWxUb3BQ
b3MpOwogCkBAIC0yOTc4LDExICsyOTk4LDE1IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2dpY2Fs
VG9wUG9zaXRpb25lZE9mZnNldChMYXlvdXRVbml0JiBsb2dpY2FsVG9wUG9zLCBjb25zdCBSCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0
VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBjb250YWluZXJCbG9jaywKK3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRTaXplVHlwZSwgTGVuZ3RoIGxvZ2ljYWxI
ZWlnaHRMZW5ndGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyc1BsdXNQYWRk
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExlbmd0aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkJl
Zm9yZSwgTGVuZ3RoIG1hcmdpbkFmdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWlnaHRWYWx1ZSwgTGF5
b3V0VW5pdCYgbWFyZ2luQmVmb3JlVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkFmdGVyVmFsdWUs
IExheW91dFVuaXQmIGxvZ2ljYWxUb3BQb3MpCiB7CisgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxk
IGZsZXggaXRlbXMgZG8gaGVyZSBzaW5jZSBtaW4taGVpZ2h0OmF1dG8gPT0gbWluLWhlaWdodDpt
aW4tY29udGVudCBpbnN0ZWFkIG9mIG1pbi1oZWlnaHQ6YXV0byA9PSBtaW4taGVpZ2h0OjAuCisg
ICAgaWYgKGhlaWdodFNpemVUeXBlID09IE1pblNpemUgJiYgbG9naWNhbEhlaWdodExlbmd0aC5p
c0F1dG8oKSkKKyAgICAgICAgbG9naWNhbEhlaWdodExlbmd0aCA9IExlbmd0aCgwLCBGaXhlZCk7
CisKICAgICAvLyAndG9wJyBhbmQgJ2JvdHRvbScgY2Fubm90IGJvdGggYmUgJ2F1dG8nIGJlY2F1
c2UgJ3RvcCB3b3VsZCBvZiBiZWVuCiAgICAgLy8gY29udmVydGVkIHRvIHRoZSBzdGF0aWMgcG9z
aXRpb24gaW4gY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0KCkKICAgICBBU1NFUlQoIShs
b2dpY2FsVG9wLmlzQXV0bygpICYmIGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpKTsKQEAgLTI5OTEs
NiArMzAxNSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWln
aHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwKIAogICAgIExheW91dFVuaXQgbG9n
aWNhbFRvcFZhbHVlID0gMDsKIAorICAgIC8vIEZJWE1FOiBGb3Igbm9uLWZsZXhib3hlcyArIG1p
bi1oZWlnaHQsIHRoaXMgbmVlZHMgdG8gdHJlYXQgbm9uLWZsZXhib3hlcyBhcyAwLgogICAgIGJv
b2wgbG9naWNhbEhlaWdodElzQXV0byA9IGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCk7CiAg
ICAgYm9vbCBsb2dpY2FsVG9wSXNBdXRvID0gbG9naWNhbFRvcC5pc0F1dG8oKTsKICAgICBib29s
IGxvZ2ljYWxCb3R0b21Jc0F1dG8gPSBsb2dpY2FsQm90dG9tLmlzQXV0bygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDlmMDU3N2U4MjAxYTdlOGQ5ZmI0MTA1M2JhNzNk
NmE3MTI2MzYxNWQuLjAzMTQ1ODI2NmQ2NTcxMjc3MGZlYjI4YzgxMzVjNjZjMzczZDE2YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
UmVuZGVyQm94UmVnaW9uSW5mbzsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIHN0cnVjdCBQYWludElu
Zm87CiAKLWVudW0gTG9naWNhbFdpZHRoVHlwZSB7IExvZ2ljYWxXaWR0aCwgTWluTG9naWNhbFdp
ZHRoLCBNYXhMb2dpY2FsV2lkdGggfTsKK2VudW0gU2l6ZVR5cGUgeyBNYWluT3JQcmVmZXJyZWRT
aXplLCBNaW5TaXplLCBNYXhTaXplIH07CiAKIGVudW0gT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92ZXJsYXlTY3JvbGxi
YXJTaXplIH07CiAKQEAgLTMzNSwxNyArMzM1LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdoZXRo
ZXIgb3Igbm90IHRoZSBlbGVtZW50IHNocmlua3MgdG8gaXRzIGludHJpbnNpYyB3aWR0aCAocmF0
aGVyIHRoYW4gZmlsbGluZyB0aGUgd2lkdGgKICAgICAvLyBvZiBhIGNvbnRhaW5pbmcgYmxvY2sp
LiAgSFRNTDQgYnV0dG9ucywgPHNlbGVjdD5zLCA8aW5wdXQ+cywgbGVnZW5kcywgYW5kIGZsb2F0
aW5nL2NvbXBhY3QgZWxlbWVudHMgZG8gdGhpcy4KLSAgICBib29sIHNpemVzTG9naWNhbFdpZHRo
VG9GaXRDb250ZW50KExvZ2ljYWxXaWR0aFR5cGUpIGNvbnN0OworICAgIGJvb2wgc2l6ZXNMb2dp
Y2FsV2lkdGhUb0ZpdENvbnRlbnQoU2l6ZVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dHJldGNoZXNUb01pbkludHJpbnNpY0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICBMYXlvdXRVbml0IHNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMoTGF5
b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBMYXlvdXRVbml0IGNoaWxkTWFyZ2luRW5kLCBjb25z
dCBSZW5kZXJCbG9jayogY2IsIFJlbmRlclJlZ2lvbiosIExheW91dFVuaXQgb2Zmc2V0RnJvbUxv
Z2ljYWxUb3BPZkZpcnN0UGFnZSk7CiAKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvblVzaW5nKExvZ2ljYWxXaWR0aFR5cGUsIExheW91dFVuaXQgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBSZW5kZXJSZWdp
b24qLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOwotICAgIExh
eW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGhlaWdodCk7
Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBM
ZW5ndGgmIGhlaWdodCk7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lk
dGhVc2luZyhMZW5ndGggd2lkdGgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2lj
YWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNh
bFdpZHRoLCBjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBSZW5kZXJSZWdpb24q
LCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpOworICAgIExheW91
dFVuaXQgY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBo
ZWlnaHQpOworICAgIExheW91dFVuaXQgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmco
U2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0KTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlLCBMZW5ndGggd2lkdGgpIGNvbnN0Owog
ICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1h
eFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRy
dWUpIGNvbnN0OwotICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVz
aW5nKExlbmd0aCBoZWlnaHQpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBMZW5ndGggaGVpZ2h0KSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoID0g
dHJ1ZSkgY29uc3Q7CkBAIC01NDAsMTEgKzU0MCwxMSBAQCBwcml2YXRlOgogICAgIExheW91dFVu
aXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBjaGVja0ZvclBlcnBlbmRpY3Vs
YXJXcml0aW5nTW9kZSA9IHRydWUpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWxIZWlnaHQoKTsKLSAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRo
VXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNv
bnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwKKyAgICB2b2lk
IGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUsIExlbmd0aCBsb2dp
Y2FsV2lkdGgsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywgVGV4
dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRoLCBMYXlv
dXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0LCBMZW5ndGggbG9naWNhbFJpZ2h0LCBM
ZW5ndGggbWFyZ2luTG9naWNhbExlZnQsIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQmIGxvZ2lj
YWxXaWR0aFZhbHVlLCBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlLCBMYXlvdXRV
bml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbExlZnRQb3Mp
OwotICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxv
Z2ljYWxIZWlnaHQsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWluZXJCbG9jaywK
KyAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBM
ZW5ndGggbG9naWNhbEhlaWdodCwgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5l
ckJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBjb250YWluZXJMb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFk
ZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0
aCBsb2dpY2FsVG9wLCBMZW5ndGggbG9naWNhbEJvdHRvbSwgTGVuZ3RoIG1hcmdpbkxvZ2ljYWxU
b3AsIExlbmd0aCBtYXJnaW5Mb2dpY2FsQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCYgbG9naWNhbEhlaWdodFZhbHVlLCBMYXlv
dXRVbml0JiBtYXJnaW5Mb2dpY2FsVG9wVmFsdWUsIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxC
b3R0b21WYWx1ZSwgTGF5b3V0VW5pdCYgbG9naWNhbFRvcFBvcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmlu
ZGV4IGFlZWVkMTBkM2NjMDk5NmZhMzE4YTJhNWRiODJhNGE3NjdkZTIzNjguLjRhZTQyYmM3ZGFh
ZTliODRjNDU4YmNlNDA2NTM5ZjJlNDczNjcwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xMDYz
LDExICsxMDYzLDE0IEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojph
bGxvd2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wKICAgICAgICAgICAgIG1pbldp
ZHRoID0gY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogICAgICAgICBlbHNlIGlm
IChjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKS50eXBlKCkgPT0gTWluSW50cmluc2ljKQogICAg
ICAgICAgICAgbWluV2lkdGggPSBjaGlsZC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCk7Cisg
ICAgICAgIGVsc2UgaWYgKGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpLnR5cGUoKSA9PSBBdXRv
KQorICAgICAgICAgICAgbWluV2lkdGggPSAwOwogCiAgICAgICAgIExheW91dFVuaXQgYWxsb3dl
ZFNocmlua2FnZSA9IG1pbjxMYXlvdXRVbml0PigwLCBtaW5XaWR0aCAtIHdpZHRoKTsKICAgICAg
ICAgcmV0dXJuIGFsbG93ZWRTaHJpbmthZ2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGNo
aWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKS5pc0ZpeGVkKCkpIHsKKyAgICAgICAgTGVuZ3RoIG1p
bkhlaWdodCA9IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKTsKKyAgICAgICAgaWYgKG1pbkhl
aWdodC5pc0ZpeGVkKCkgfHwgbWluSGVpZ2h0LmlzQXV0bygpKSB7CiAgICAgICAgICAgICBMYXlv
dXRVbml0IG1pbkhlaWdodCA9IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKS52YWx1ZSgpOwog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBjaGlsZC0+b3ZlcnJpZGVMb2dpY2FsQ29u
dGVudEhlaWdodCgpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBhbGxvd2VkU2hyaW5rYWdlID0g
bWluPExheW91dFVuaXQ+KDAsIG1pbkhlaWdodCAtIGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBmNmYxZjUxZjIwZjg1Y2M1
Y2ZiZTJlZDE0ZDg5ZjE1YWQ5MTAwNmMxLi4xYmMzYWVmYWY2NTlmYjkxYzNkYmU1MTcyNWJhNGU1
MTc4NGYwODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgQVNTRVJUKHByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSgpKTsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsK
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2hlY2tpbmcgZm9yIGlzU3Bl
Y2lmaWVkIHNpbmNlIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgcGVyY2VudGFnZSwgY2FsYyBv
ciB2aWV3cG9ydCByZWxhdGl2ZSB2YWx1ZXMgZm9yIHdpZHRoLgogICAgIGlmIChzdHlsZVRvVXNl
LT5sb2dpY2FsV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGVUb1VzZS0+bG9naWNhbFdpZHRoKCku
dmFsdWUoKSA+IDApCiAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChzdHls
ZVRvVXNlLT5sb2dpY2FsV2lkdGgoKS52YWx1ZSgpKTsKICAgICBlbHNlIHsKQEAgLTIwNCwxMSAr
MjA1LDEzIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkKICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBzY3JvbGxiYXJXaWR0
aDsKICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBzY3JvbGxiYXJXaWR0aDsKIAor
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBjaGVja2luZyBmb3IgaXNTcGVj
aWZpZWQgc2luY2UgeW91IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBwZXJjZW50YWdlLCBjYWxjIG9y
IHZpZXdwb3J0IHJlbGF0aXZlIHZhbHVlcyBmb3IgbWluLXdpZHRoLgogICAgIGlmIChzdHlsZVRv
VXNlLT5sb2dpY2FsTWluV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGVUb1VzZS0+bG9naWNhbE1p
bldpZHRoKCkudmFsdWUoKSA+IDApIHsKICAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGggPSBzdGQ6Om1heChtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgY29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsV2lkdGgoc3R5bGVUb1VzZS0+bG9naWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwog
ICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoLCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChzdHlsZVRvVXNl
LT5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCisgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIGNoZWNraW5nIGZvciBpc1NwZWNpZmllZCBzaW5jZSB5b3Ug
c2hvdWxkIGJlIGFibGUgdG8gdXNlIHBlcmNlbnRhZ2UsIGNhbGMgb3Igdmlld3BvcnQgcmVsYXRp
dmUgdmFsdWVzIGZvciBtYXhXaWR0aC4KICAgICBpZiAoc3R5bGVUb1VzZS0+bG9naWNhbE1heFdp
ZHRoKCkuaXNGaXhlZCgpKSB7CiAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0g
c3RkOjptaW4obV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbFdpZHRoKHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICAg
ICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoc3R5bGVUb1VzZS0+bG9n
aWNhbE1heFdpZHRoKCkudmFsdWUoKSkpOwpAQCAtNTk1LDExICs1OTgsMTEgQEAgTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUF2YWlsYWJsZUZyZWVTcGFjZShMYXlvdXRVbml0
IHByZWZlcnJlZE1haW4KICAgICBlbHNlIGlmIChoYXNPdmVycmlkZUhlaWdodCgpKQogICAgICAg
ICBjb250ZW50RXh0ZW50ID0gb3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpOwogICAgIGVs
c2UgewotICAgICAgICBMYXlvdXRVbml0IGhlaWdodFJlc3VsdCA9IGNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIExheW91
dFVuaXQgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWFp
bk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgaWYg
KGhlaWdodFJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IHByZWZlcnJl
ZE1haW5BeGlzRXh0ZW50OwotICAgICAgICBMYXlvdXRVbml0IG1pbkhlaWdodCA9IGNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCktPmxvZ2ljYWxNaW5IZWlnaHQoKSk7IC8v
IExlYXZlIGFzIC0xIGlmIHVuc2V0LgotICAgICAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IHN0
eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaGVpZ2h0UmVzdWx0IDog
Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS0+bG9naWNhbE1heEhlaWdo
dCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2lj
YWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZSgpLT5sb2dpY2FsTWluSGVpZ2h0KCkpOyAvLyBM
ZWF2ZSBhcyAtMSBpZiB1bnNldC4KKyAgICAgICAgTGF5b3V0VW5pdCBtYXhIZWlnaHQgPSBzdHls
ZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSA/IGhlaWdodFJlc3VsdCA6IGNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUsIHN0eWxlKCktPmxvZ2ljYWxN
YXhIZWlnaHQoKSk7CiAgICAgICAgIGlmIChtYXhIZWlnaHQgPT0gLTEpCiAgICAgICAgICAgICBt
YXhIZWlnaHQgPSBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGhlaWdodFJlc3VsdCA9IHN0ZDo6bWlu
KG1heEhlaWdodCwgaGVpZ2h0UmVzdWx0KTsKQEAgLTc3MSwxMCArNzc0LDEwIEBAIExheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6OmxpbmVCcmVha0xlbmd0aCgpCiAgICAgaWYgKCFpc0NvbHVt
bkZsb3coKSkKICAgICAgICAgcmV0dXJuIG1haW5BeGlzQ29udGVudEV4dGVudCgpOwogCi0gICAg
TGF5b3V0VW5pdCBoZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHRVc2luZyhzdHls
ZSgpLT5sb2dpY2FsSGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgaGVpZ2h0ID0gY29tcHV0ZUNv
bnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9n
aWNhbEhlaWdodCgpKTsKICAgICBpZiAoaGVpZ2h0ID09IC0xKQogICAgICAgICBoZWlnaHQgPSBN
QVhfTEFZT1VUX1VOSVQ7Ci0gICAgTGF5b3V0VW5pdCBtYXhIZWlnaHQgPSBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsTWF4SGVpZ2h0KCkpOworICAgIExh
eW91dFVuaXQgbWF4SGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4
U2l6ZSwgc3R5bGUoKS0+bG9naWNhbE1heEhlaWdodCgpKTsKICAgICBpZiAobWF4SGVpZ2h0ICE9
IC0xKQogICAgICAgICBoZWlnaHQgPSBzdGQ6Om1pbihoZWlnaHQsIG1heEhlaWdodCk7CiAgICAg
cmV0dXJuIGhlaWdodDsKQEAgLTc4OSw2ICs3OTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVuZGVyQm94KiBjaGlsZCwgTGF5
bwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTgwOQog
ICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFNpemUgPiB2YWx1ZUZvckxlbmd0aCht
YXgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50LCByZW5kZXJWaWV3KSkKICAgICAgICAg
Y2hpbGRTaXplID0gdmFsdWVGb3JMZW5ndGgobWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4
dGVudCwgcmVuZGVyVmlldyk7CisgICAgLy8gRklYTUU6IFRyZWF0IGF1dG8gbWluIHZhbHVlcyBh
cyBtaW4tY29udGVudC4KICAgICBpZiAobWluLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRTaXplIDwg
dmFsdWVGb3JMZW5ndGgobWluLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgcmVuZGVy
VmlldykpCiAgICAgICAgIGNoaWxkU2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pbiwgZmxleGJveEF2
YWlsYWJsZUNvbnRlbnRFeHRlbnQsIHJlbmRlclZpZXcpOwogICAgIHJldHVybiBjaGlsZFNpemU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCA3OTRh
Y2Q4MjAzOTQxOGM3NDQxNGVmZjk4NDNjMjNlODBlM2I1MTAzLi4yZTBkNzQ3M2JiNTJjNjdjYjg1
YTg4ZTZiOWUxMGYzYWQ4NjgxYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUs
CiBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgo
Ym9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPmxvZ2ljYWxX
aWR0aCgpLmlzU3BlY2lmaWVkKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRo
VXNpbmcoc3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBpbmNsdWRlTWF4V2lkdGgpOworICAgICAg
ICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRo
KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0
eWxlKCktPmxvZ2ljYWxXaWR0aCgpKSwgaW5jbHVkZU1heFdpZHRoKTsKIAogICAgIFJlbmRlckJv
eCogY29udGVudFJlbmRlcmVyID0gZW1iZWRkZWRDb250ZW50Qm94KCk7CiAKQEAgLTM0MCw3ICsz
NDAsNyBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGgoYm9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbgogICAgICAgICAgICAgLy8gb3IgaWYgJ3dp
ZHRoJyBoYXMgYSBjb21wdXRlZCB2YWx1ZSBvZiAnYXV0bycsICdoZWlnaHQnIGhhcyBzb21lIG90
aGVyIGNvbXB1dGVkIHZhbHVlLCBhbmQgdGhlIGVsZW1lbnQgZG9lcyBoYXZlIGFuIGludHJpbnNp
YyByYXRpbzsgdGhlbiB0aGUgdXNlZCB2YWx1ZQogICAgICAgICAgICAgLy8gb2YgJ3dpZHRoJyBp
czogKHVzZWQgaGVpZ2h0KSAqIChpbnRyaW5zaWMgcmF0aW8pCiAgICAgICAgICAgICBpZiAoaW50
cmluc2ljUmF0aW8gJiYgKChoZWlnaHRJc0F1dG8gJiYgIWhhc0ludHJpbnNpY1dpZHRoICYmIGhh
c0ludHJpbnNpY0hlaWdodCkgfHwgIWhlaWdodElzQXV0bykpIHsKLSAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9y
UHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRo
KHJvdW5kVG9JbnQocm91bmQobG9naWNhbEhlaWdodCAqIGludHJpbnNpY1JhdGlvKSkpOwogICAg
ICAgICAgICAgfQogCkBAIC0zNTIsNyArMzUyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRoKSBjb24K
ICAgICAgICAgICAgICAgICAvLyAnbWFyZ2luLWxlZnQnICsgJ2JvcmRlci1sZWZ0LXdpZHRoJyAr
ICdwYWRkaW5nLWxlZnQnICsgJ3dpZHRoJyArICdwYWRkaW5nLXJpZ2h0JyArICdib3JkZXItcmln
aHQtd2lkdGgnICsgJ21hcmdpbi1yaWdodCcgPSB3aWR0aCBvZiBjb250YWluaW5nIGJsb2NrCiAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAg
aWYgKFJlbmRlckJsb2NrKiBibG9ja1dpdGhXaWR0aCA9IGZpcnN0Q29udGFpbmluZ0Jsb2NrV2l0
aExvZ2ljYWxXaWR0aCh0aGlzKSkKLSAgICAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoID0g
YmxvY2tXaXRoV2lkdGgtPmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5N
YXhXaWR0aChibG9ja1dpdGhXaWR0aC0+Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmco
YmxvY2tXaXRoV2lkdGgtPnN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpKSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBibG9ja1dpdGhXaWR0aC0+Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGJsb2NrV2l0aFdpZHRoLT5jb21w
dXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBibG9ja1dp
dGhXaWR0aC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCkpLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxv
Y2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKQEAgLTM4NCw3ICszODQsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29u
c3QKIHsKICAgICAvLyAxMC41IENvbnRlbnQgaGVpZ2h0OiB0aGUgJ2hlaWdodCcgcHJvcGVydHk6
IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNwcm9wZGVmLWhlaWdodAog
ICAgIGlmIChoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0KGNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVp
Z2h0KGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXpl
LCBzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCkpKTsKIAogICAgIFJlbmRlckJveCogY29udGVudFJl
bmRlcmVyID0gZW1iZWRkZWRDb250ZW50Qm94KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRleCAxYmY3NmViY2E4YWE0YWJlOWM0
ZWQ4ODhiNTRhZmQ1ZmY1ZjllZWJiLi4zZDkzZmU4MjhlODE2NGY1MWM5Yzk4NGI5OWVhOTU3ZmJi
ZTY4OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwCkBAIC03OSwxMSArNzksMTEgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojps
YXlvdXRWZXJ0aWNhbFBhcnQoKQogICAgIH0gCiB9CiAKLXN0YXRpYyBpbnQgY2FsY1Njcm9sbGJh
clRoaWNrbmVzc1VzaW5nKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBpbnQgY29udGFpbmluZ0xlbmd0
aCwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBpbnQgY2FsY1Njcm9sbGJhclRoaWNr
bmVzc1VzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGxlbmd0aCwgaW50IGNv
bnRhaW5pbmdMZW5ndGgsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7Ci0gICAgaWYgKGxlbmd0
aC5pc0ludHJpbnNpY09yQXV0bygpKQotICAgICAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwotICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgobGVuZ3RoLCBjb250YWluaW5nTGVuZ3RoLCByZW5kZXJWaWV3KTsKKyAgICBpZiAoIWxl
bmd0aC5pc0ludHJpbnNpY09yQXV0bygpIHx8IChzaXplVHlwZSA9PSBNaW5TaXplICYmIGxlbmd0
aC5pc0F1dG8oKSkpCisgICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3Ro
LCBjb250YWluaW5nTGVuZ3RoLCByZW5kZXJWaWV3KTsKKyAgICByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwogfQogCiB2b2lkIFJlbmRlclNjcm9s
bGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCgpCkBAIC05Miw5ICs5Miw5IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkKICAgICAgICAgcmV0
dXJuOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB2aWV3KCk7CiAgICAgaW50IHZpc2li
bGVTaXplID0gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPndpZHRoKCkgLSBtX3Njcm9s
bGJhci0+b3duaW5nUmVuZGVyZXIoKS0+Ym9yZGVyTGVmdCgpIC0gbV9zY3JvbGxiYXItPm93bmlu
Z1JlbmRlcmVyKCktPmJvcmRlclJpZ2h0KCk7Ci0gICAgaW50IHcgPSBjYWxjU2Nyb2xsYmFyVGhp
Y2tuZXNzVXNpbmcoc3R5bGUoKS0+d2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwot
ICAgIGludCBtaW5XaWR0aCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhzdHlsZSgpLT5t
aW5XaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7Ci0gICAgaW50IG1heFdpZHRoID0g
c3R5bGUoKS0+bWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpID8gdyA6IGNhbGNTY3JvbGxiYXJUaGlj
a25lc3NVc2luZyhzdHlsZSgpLT5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7
CisgICAgaW50IHcgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWFpbk9yUHJlZmVycmVk
U2l6ZSwgc3R5bGUoKS0+d2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOworICAgIGlu
dCBtaW5XaWR0aCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNaW5TaXplLCBzdHlsZSgp
LT5taW5XaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IG1heFdpZHRo
ID0gc3R5bGUoKS0+bWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpID8gdyA6IGNhbGNTY3JvbGxiYXJU
aGlja25lc3NVc2luZyhNYXhTaXplLCBzdHlsZSgpLT5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwg
cmVuZGVyVmlldyk7CiAgICAgc2V0V2lkdGgobWF4KG1pbldpZHRoLCBtaW4obWF4V2lkdGgsIHcp
KSk7CiAgICAgCiAgICAgLy8gQnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzIGNhbiBhbGwgaGF2ZSBt
YXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuIApAQCAtMTA4LDkgKzEwOCw5
IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhckhlaWdodCgpCiAg
ICAgICAgIHJldHVybjsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdmlldygpOwogICAg
IGludCB2aXNpYmxlU2l6ZSA9IG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5oZWlnaHQo
KSAtICBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+Ym9yZGVyVG9wKCkgLSBtX3Njcm9s
bGJhci0+b3duaW5nUmVuZGVyZXIoKS0+Ym9yZGVyQm90dG9tKCk7Ci0gICAgaW50IGggPSBjYWxj
U2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoc3R5bGUoKS0+aGVpZ2h0KCksIHZpc2libGVTaXplLCBy
ZW5kZXJWaWV3KTsKLSAgICBpbnQgbWluSGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1Vz
aW5nKHN0eWxlKCktPm1pbkhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7Ci0gICAg
aW50IG1heEhlaWdodCA9IHN0eWxlKCktPm1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDog
Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKHN0eWxlKCktPm1heEhlaWdodCgpLCB2aXNpYmxl
U2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNp
bmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS0+aGVpZ2h0KCksIHZpc2libGVTaXplLCBy
ZW5kZXJWaWV3KTsKKyAgICBpbnQgbWluSGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1Vz
aW5nKE1pblNpemUsIHN0eWxlKCktPm1pbkhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmll
dyk7CisgICAgaW50IG1heEhlaWdodCA9IHN0eWxlKCktPm1heEhlaWdodCgpLmlzVW5kZWZpbmVk
KCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCktPm1h
eEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CiAgICAgc2V0SGVpZ2h0KG1heCht
aW5IZWlnaHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CiAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFj
ayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9s
bGJhci4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IGNiNzk1MzAyNDM1NzYyMWYzNTM0OGM1M2U3MTc2ZWY3MjA3NWEwYjAuLmNmNGY3YmE5ODE4
MTYyOTNkMGY3NDFhYTk0YWI3MzBkYzcxNGEyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGluaXRpYWxPdXRsaW5lV2lkdGgoKSB7IHJldHVybiAz
OyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTGV0dGVyV29yZFNwYWNpbmcoKSB7IHJldHVybiAw
OyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgpOyB9
Ci0gICAgc3RhdGljIExlbmd0aCBpbml0aWFsTWluU2l6ZSgpIHsgcmV0dXJuIExlbmd0aCgwLCBG
aXhlZCk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNaW5TaXplKCkgeyByZXR1cm4gTGVu
Z3RoKCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNYXhTaXplKCkgeyByZXR1cm4gTGVu
Z3RoKFVuZGVmaW5lZCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxPZmZzZXQoKSB7IHJl
dHVybiBMZW5ndGgoKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE1hcmdpbigpIHsgcmV0
dXJuIExlbmd0aChGaXhlZCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OTE1NDYxN2MyMGVjMTI5NGNkY2E5NzU3Yjg4
YTEwZTEzMDI2NWQ0Li5mNzhkOWY2ZDNmZjk0MmY4ZDYwNTdlYzg4NDVmOTZmMGY1OWY4MWYzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTAgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWluLWhlaWdodDphdXRvIGFuZCBt
aW4td2lkdGg6YXV0bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY3NzL2F1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9hdXRvLW1pbi1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y3NzL2RlcHJlY2F0ZWQtZmxleGJveC1hdXRvLW1pbi1zaXplLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvY3NzL2RlcHJlY2F0ZWQtZmxleGJveC1h
dXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDctMTAgIFJhZmFlbCBX
ZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdh
cmRlbmluZy4gZmFzdC9qcy9kZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1pbmxpbmUtYXJyYXktbGl0
ZXJhbC5odG1sIGlzIHJhY2V5IChhbmQgdGh1cyBmbGFreSkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL2F1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5OTY5YTRkNjZj
NDRkYTA2YWY3ZjkxNDI3YjJiYTc5ODYwMGRiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9hdXRvLW1pbi1zaXplLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBA
CitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRp
dilbIm1pbi13aWR0aCJdIGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiMHB4
IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdIGlzICIwcHgiCitQQVNT
IGRpdi5zdHlsZS5taW5XaWR0aCBpcyAiYXV0byIKK1BBU1MgZGl2LnN0eWxlLm1heFdpZHRoIGlz
ICIiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZGl2KS5taW5XaWR0aCBpcyAiMHB4IgorUEFTUyBk
aXYuc3R5bGUubWluSGVpZ2h0IGlzICIiCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZGl2KVsibWlu
LWhlaWdodCJdIGlzICIwcHgiCitQQVNTIGRpdi5zdHlsZS5taW5IZWlnaHQgaXMgIjBweCIKK1BB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpWyJtaW4taGVpZ2h0Il0gaXMgIjBweCIKK1BBU1MgZGl2
LnN0eWxlLm1pbkhlaWdodCBpcyAiYXV0byIKK1BBU1MgZGl2LnN0eWxlLm1heEhlaWdodCBpcyAi
IgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRpdikubWluSGVpZ2h0IGlzICIwcHgiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvYXV0by1taW4tc2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvYXV0by1taW4tc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4OGY4MjdhMDIyYTdiMTY3NWM2
ZWU1ZDdlNWZhOGNlOTdhMDE4MDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9hdXRvLW1pbi1zaXplLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8c2NyaXB0IHNyYz0nLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4K
KzxkaXYgaWQ9Zm9vPjwvZGl2PgorPHNjcmlwdD4KK2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdmb28nKTsKK3Nob3VsZEJlKCdkaXYuc3R5bGUubWluV2lkdGgnLCAnIiInKTsKK3Nob3Vs
ZEJlKCdnZXRDb21wdXRlZFN0eWxlKGRpdilbIm1pbi13aWR0aCJdJywgJyIwcHgiJyk7CisKK2Rp
di5zdHlsZS5taW5XaWR0aCA9IDA7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyIw
cHgiJyk7CitzaG91bGRCZSgnZ2V0Q29tcHV0ZWRTdHlsZShkaXYpWyJtaW4td2lkdGgiXScsICci
MHB4IicpOworCitkaXYuc3R5bGUubWluV2lkdGggPSAnYXV0byc7CitkaXYuc3R5bGUubWF4V2lk
dGggPSAnYXV0byc7CitzaG91bGRCZSgnZGl2LnN0eWxlLm1pbldpZHRoJywgJyJhdXRvIicpOwor
c2hvdWxkQmUoJ2Rpdi5zdHlsZS5tYXhXaWR0aCcsICciIicpOworc2hvdWxkQmUoJ2dldENvbXB1
dGVkU3R5bGUoZGl2KS5taW5XaWR0aCcsICciMHB4IicpOworCitzaG91bGRCZSgnZGl2LnN0eWxl
Lm1pbkhlaWdodCcsICciIicpOworc2hvdWxkQmUoJ2dldENvbXB1dGVkU3R5bGUoZGl2KVsibWlu
LWhlaWdodCJdJywgJyIwcHgiJyk7CisKK2Rpdi5zdHlsZS5taW5IZWlnaHQgPSAwOworc2hvdWxk
QmUoJ2Rpdi5zdHlsZS5taW5IZWlnaHQnLCAnIjBweCInKTsKK3Nob3VsZEJlKCdnZXRDb21wdXRl
ZFN0eWxlKGRpdilbIm1pbi1oZWlnaHQiXScsICciMHB4IicpOworCitkaXYuc3R5bGUubWluSGVp
Z2h0ID0gJ2F1dG8nOworZGl2LnN0eWxlLm1heEhlaWdodCA9ICdhdXRvJzsKK3Nob3VsZEJlKCdk
aXYuc3R5bGUubWluSGVpZ2h0JywgJyJhdXRvIicpOworc2hvdWxkQmUoJ2Rpdi5zdHlsZS5tYXhI
ZWlnaHQnLCAnIiInKTsKK3Nob3VsZEJlKCdnZXRDb21wdXRlZFN0eWxlKGRpdikubWluSGVpZ2h0
JywgJyIwcHgiJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2RlcHJlY2F0ZWQtZmxleGJveC1hdXRvLW1pbi1zaXplLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9kZXByZWNhdGVkLWZsZXhib3gtYXV0by1taW4tc2l6ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
NzQxZDk3NjY3OTc5ODc0NzEyNjUwMTZlMDExNGY3YjM5ZjU0YjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9kZXByZWNhdGVkLWZsZXhib3gtYXV0by1taW4tc2l6ZS5o
dG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorLmZsZXhib3gg
eworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIHdpZHRoOiAzMHB4OworICAgIGhlaWdo
dDogMzBweDsKK30KKy5pdGVtIHsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIHdpZHRo
OiAyMHB4OworICAgIGhlaWdodDogMjBweDsKK30KKy5pdGVtOm50aC1jaGlsZCgxKSB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogc2FsbW9uOworICAgIG1pbi13aWR0aDogMDsKKyAgICBtaW4taGVp
Z2h0OiAwOworfQorLml0ZW06bnRoLWNoaWxkKDIpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBs
aWdodGJsdWU7CisgICAgbWluLXdpZHRoOiBhdXRvOworICAgIG1pbi1oZWlnaHQ6IGF1dG87Cit9
CisuaXRlbTpudGgtY2hpbGQoMykgeworICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKKyAg
ICBtaW4td2lkdGg6IDMwcHg7CisgICAgbWluLWhlaWdodDogMzBweDsKK30KKy5pbmxpbmUgewor
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0aDogMjBweDsKKyAgICBoZWlnaHQ6
IDIwcHg7Cit9CisudmVydGljYWwgeworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7
Cit9Cis8L3N0eWxlPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vY3Nz
My9mbGV4Ym94L3Jlc291cmNlcy9mbGV4Ym94LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0i
Y2hlY2tGbGV4Qm94ZW4oKSI+CisKK1Rlc3RzIHRoYXQgZGVwcmVjYXRlZCBmbGV4Ym94ZXMgdHJl
YXQgbWluLXdpZHRoL21pbi1oZWlnaHQ6YXV0byBhcyAwcHguCisKKzxkaXYgY2xhc3M9ImZsZXhi
b3ggaG9yaXpvbnRhbCI+CisgICAgPGRpdiBjbGFzcz0iaXRlbSIgZGF0YS1leHBlY3RlZC13aWR0
aD0wIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PTIwPjxkaXYgY2xhc3M9ImlubGluZSI+PC9kaXY+PC9k
aXY+CisgICAgPGRpdiBjbGFzcz0iaXRlbSIgZGF0YS1leHBlY3RlZC13aWR0aD0wIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PTIwPjxkaXYgY2xhc3M9ImlubGluZSI+PC9kaXY+PC9kaXY+CisgICAgPGRp
diBjbGFzcz0iaXRlbSIgZGF0YS1leHBlY3RlZC13aWR0aD0zMCBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0zMD48ZGl2IGNsYXNzPSJpbmxpbmUiPjwvZGl2PjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xh
c3M9ImZsZXhib3ggdmVydGljYWwiPgorICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9MjAgZGF0YS1leHBlY3RlZC1oZWlnaHQ9MD48ZGl2IGNsYXNzPSJpbmxpbmUiPjwv
ZGl2PjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MjAg
ZGF0YS1leHBlY3RlZC1oZWlnaHQ9MD48ZGl2IGNsYXNzPSJpbmxpbmUiPjwvZGl2PjwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9Iml0ZW0iIGRhdGEtZXhwZWN0ZWQtd2lkdGg9MzAgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9MzA+PGRpdiBjbGFzcz0iaW5saW5lIj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFz
dC9jc3MvZGVwcmVjYXRlZC1mbGV4Ym94LWF1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9jc3MvZGVwcmVjYXRlZC1mbGV4
Ym94LWF1dG8tbWluLXNpemUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMzNiMjllMzllOWY1
MWI1MTFmYjE3MzFhZjE1MDgxYzJmN2IzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L2Nzcy9kZXByZWNhdGVkLWZsZXhib3gtYXV0
by1taW4tc2l6ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0cyB0aGF0IGRlcHJl
Y2F0ZWQgZmxleGJveGVzIHRyZWF0IG1pbi13aWR0aC9taW4taGVpZ2h0OmF1dG8gYXMgMHB4Lgor
UEFTUworUEFTUwo=
</data>
<flag name="review"
          id="159972"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>