<?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>212143</bug_id>
          
          <creation_ts>2020-05-20 09:02:34 -0700</creation_ts>
          <short_desc>Replace Color::getHSL() with sRGBToHSL to ensure it at least gives somewhat sensible results for ExtendedColors and reduce code duplication</short_desc>
          <delta_ts>2020-05-20 15:55:17 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1654466</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 09:02:34 -0700</bug_when>
    <thetext>Replace Color::getHSL() with sRGBToHSL to ensure it at least gives somewhat sensible results for ExtendedColors and reduce code duplication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654478</commentid>
    <comment_count>1</comment_count>
      <attachid>399845</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 09:25:59 -0700</bug_when>
    <thetext>Created attachment 399845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654485</commentid>
    <comment_count>2</comment_count>
      <attachid>399847</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 09:45:54 -0700</bug_when>
    <thetext>Created attachment 399847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654506</commentid>
    <comment_count>3</comment_count>
      <attachid>399847</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-20 10:25:31 -0700</bug_when>
    <thetext>Comment on attachment 399847
Patch

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

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:550
&gt; +        return lightness(color.value().toSRGBAComponentsLossy());

Ideally we&apos;d be able to compute lightness for any colorspace without converting to sRGB. Which makes me think that lightness() should stay as a function on Color. This will be especially true when we have LAB color where lightness is just one of the components.

&gt; Source/WebCore/editing/cocoa/DataDetection.mm:628
&gt; +                        auto underlineColor = Color(makeRGBAFromHSLA(hue, saturation, overrideLightness, overrideAlphaMultiplier * alpha));

Make sure the hue is correctly round-tripped here.

&gt; Source/WebCore/page/FrameView.cpp:368
&gt; +        if (lightness(backgroundColor.toSRGBAComponentsLossy()) &lt;= .5f &amp;&amp; backgroundColor.isVisible())

Yeah, this would be much better with backgroundColor.getHSL.lightness().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654511</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 10:35:52 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 399847 [details]
&gt; Patch

&gt; &gt; Source/WebCore/page/FrameView.cpp:368
&gt; &gt; +        if (lightness(backgroundColor.toSRGBAComponentsLossy()) &lt;= .5f &amp;&amp; backgroundColor.isVisible())
&gt; 
&gt; Yeah, this would be much better with backgroundColor.getHSL.lightness().

Would you be ok with backgroundColor.lightness()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654626</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-20 13:52:46 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; (In reply to Simon Fraser (smfr) from comment #3)
&gt; &gt; Comment on attachment 399847 [details]
&gt; &gt; Patch
&gt; 
&gt; &gt; &gt; Source/WebCore/page/FrameView.cpp:368
&gt; &gt; &gt; +        if (lightness(backgroundColor.toSRGBAComponentsLossy()) &lt;= .5f &amp;&amp; backgroundColor.isVisible())
&gt; &gt; 
&gt; &gt; Yeah, this would be much better with backgroundColor.getHSL.lightness().
&gt; 
&gt; Would you be ok with backgroundColor.lightness()?

That&apos;s actually what I mean to write!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654633</commentid>
    <comment_count>6</comment_count>
      <attachid>399847</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 14:00:12 -0700</bug_when>
    <thetext>Comment on attachment 399847
Patch

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

&gt;&gt; Source/WebCore/editing/cocoa/DataDetection.mm:628
&gt;&gt; +                        auto underlineColor = Color(makeRGBAFromHSLA(hue, saturation, overrideLightness, overrideAlphaMultiplier * alpha));
&gt; 
&gt; Make sure the hue is correctly round-tripped here.

I think this is wrong now. Going to make an API test with round-tripping to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654664</commentid>
    <comment_count>7</comment_count>
      <attachid>399897</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-20 15:09:52 -0700</bug_when>
    <thetext>Created attachment 399897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654682</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 15:54:16 -0700</bug_when>
    <thetext>Committed r261967: &lt;https://trac.webkit.org/changeset/261967&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399897.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654683</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-20 15:55:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63467460&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399845</attachid>
            <date>2020-05-20 09:25:59 -0700</date>
            <delta_ts>2020-05-20 09:45:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212143-20200520092558.patch</filename>
            <type>text/plain</type>
            <size>18255</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA1LTIwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9yOjpnZXRIU0wo
KSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29tZXdoYXQgc2Vu
c2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2RlIGR1cGxpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIx
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGVkIEFQSSB0ZXN0cyB0byB0ZXN0IHNSR0JUb0hTTCgpIHJhdGhlciB0aGFuIENvbG9yOjpnZXRI
U0woKS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2VzIENvbG9yOjpnZXRIU0woKSB3aXRoIHNS
R0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpIGFuZCBhZGRzCisgICAgICAg
IGFuIG9wdGltaXplZCB2YXJpYW50LCBsaWdodG5lc3MoLi4uKSB0aGF0IGp1c3QgZXh0cmFjdHMg
dGhlIGxpZ2h0bmVzcyBjb21wb25lbnQgZm9yIAorICAgICAgICBjYWxsZXJzIHRoYXQgb25seSBu
ZWVkZWQgdGhhdC4KKyAgICAgICAgCisgICAgICAgIEl0IGlzIG5vdyByZXF1aXJlZCB0byBleHBs
aWNpdGx5IHVzZSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgdG8gaW5kaWNhdGUgdGhh
dAorICAgICAgICBmb3Igbm9uLVNSR0IgY29sb3JzLCB0aGlzIHdpbGwgYmUgYSBsb3NzeSB0cmFu
c2Zvcm1hdGlvbiBhbmQgZ2l2ZSB1cyBhbiBlYXN5IHdheSB0bworICAgICAgICBmaW5kIGFsbCB0
aGVzZSBzaXRlcyBpbiB0aGUgZnV0dXJlLCBpZiB3ZSB3YW50IHRvIG1ha2UgYSBiZXR0ZXIgY29u
dmVyc2lvbiBmb3Igb3RoZXIKKyAgICAgICAgY29sb3Igc3BhY2VzLiAKKworICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZnJh
Z21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbGln
aHRuZXNzKCkuCisgICAgICAgIAorICAgICAgICBURVNUSU5HIFRPIERPIEJFRk9SRSBMQU5ESU5H
IC0gU2hvdWxkIHVwZGF0ZSBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9y
LWZpbHRlcmVkLmh0bWwgd2l0aCBleHRlbmRlZCBjb2xvcnMuCisKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9u
OjpkZXRlY3RDb250ZW50SW5SYW5nZSk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBzUkdCVG9I
U0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKS4KKworICAgICAgICBURVNUSU5HIFRP
IERPIEJFRk9SRSBMQU5ESU5HIC0gTm90IHN1cmUgaG93IHRvIHRlc3QgRGF0YURldGVjdGlvbi4K
KyAgICAgICAgCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAg
IFN3aXRjaCB0byB1c2luZyBsaWdodG5lc3MoKS4KKyAgICAgICAgCisgICAgICAgIFRFU1RJTkcg
VE8gRE8gQkVGT1JFIExBTkRJTkcgLSBGaW5kIG91dCBpZiB3ZSBkdW1wIHRoZSBvdmVybGF5IHNj
cm9sbGJhciBzdHlsZSBhbnl3aGVyZSBpbiB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmdldEhT
TCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoK
KyAgICAgICAgUmVtb3ZlIENvbG9yOjpnZXRIU0woKS4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGln
aHRuZXNzKToKKyAgICAgICAgQWRkZWQgb3B0aW1pemVkIHN1YnNldCBvZiBzUkdCVG9IU0wgd2hp
Y2gganVzdCBjb21wdXRlcyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBmb3IgY2FsbGVycworICAg
ICAgICB0aGF0IG9ubHkgbmVlZCB0aGF0LgorCisgICAgICAgIChXZWJDb3JlOjpzUkdCVG9IU0wp
OgorICAgICAgICBTaW1wbGlmeS9jbGVhbnVwIGNvZGUgYSBsaXR0bGUgdXNpbmcgaW5pdGlhbGl6
ZS1saXN0IGJhc2VkIHN0ZDo6bWF4L3N0ZDo6bWluIGFuZCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAg
RXhwb3J0IGZ1bmN0aW9ucyB0byBhbGxvdyB0ZXN0aW5nIHRoZW0gZGlyZWN0bHkuCisKIDIwMjAt
MDUtMjAgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0
YWJsZSBzaXppbmcgd2hlbiAnbWF4LXdpZHRoJyBpcyB1c2VkCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24g
MjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw5ICs1NDcsNyBAQCBzdGF0aWMgYm9vbCBmcmFn
bWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lCiAgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9yLnZh
bHVlKCkuaXNWaXNpYmxlKCkgfHwgY29sb3IudmFsdWUoKS5pc1NlbWFudGljKCkpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzczsKLSAgICAgICAgY29sb3IudmFsdWUoKS5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3MpOwotICAgICAgICByZXR1cm4gbGlnaHRuZXNzOworICAgICAgICByZXR1cm4gbGlnaHRu
ZXNzKGNvbG9yLnZhbHVlKCkudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKICAgICB9OwogCiAg
ICAgY29uc3QgZG91YmxlIGxpZ2h0bmVzc0RhcmtFbm91Z2hGb3JUZXh0ID0gMC40OwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkocmV2aXNp
b24gMjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTQgKzYxOSwxMyBAQCBOU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SCiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclN0eWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dENvbG9yID0gcmVuZGVyU3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9
IHNSR0JUb0hTTCh0ZXh0Q29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdGhlIGxpZ2h0bmVzcyBvZiB0aGUgdW5kZXJsaW5l
IGNvbG9yIHRvIHRoZSBtaWRkbGUsIGFuZCBtdWx0aXBseSB0aGUgYWxwaGEgYnkgMzglLAogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhlIGNvbG9yIHdpbGwgYXBwZWFyIG9uIGxpZ2h0
IGFuZCBkYXJrIGJhY2tncm91bmRzLCBzaW5jZSBvbmx5IG9uZSBjb2xvciBjYW4gYmUgc3BlY2lm
aWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG92ZXJyaWRlTGlnaHRuZXNzID0g
MC41OwogICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG92ZXJyaWRlQWxwaGFNdWx0aXBs
aWVyID0gMC4zODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdW5kZXJsaW5lQ29sb3Ig
PSBDb2xvcihtYWtlUkdCQUZyb21IU0xBKGh1ZSwgc2F0dXJhdGlvbiwgb3ZlcnJpZGVMaWdodG5l
c3MsIG92ZXJyaWRlQWxwaGFNdWx0aXBsaWVyICogdGV4dENvbG9yLmFscGhhQXNGbG9hdCgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHVuZGVybGluZUNvbG9yID0gQ29sb3IobWFr
ZVJHQkFGcm9tSFNMQShodWUsIHNhdHVyYXRpb24sIG92ZXJyaWRlTGlnaHRuZXNzLCBvdmVycmlk
ZUFscGhhTXVsdGlwbGllciAqIGFscGhhKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Y2hvckVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgQ1NT
VmFsdWVDdXJyZW50Y29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVu
dC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Is
IHVuZGVybGluZUNvbG9yLmNzc1RleHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAyNjE5MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw5ICszNjUsOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVj
YWxjdWxhdGVTY3JvbGxiYXJPdmVyCiAgICAgICAgIC8vIFJlZHVjZSB0aGUgYmFja2dyb3VuZCBj
b2xvciBmcm9tIFJHQiB0byBhIGxpZ2h0bmVzcyB2YWx1ZQogICAgICAgICAvLyBhbmQgZGV0ZXJt
aW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5lc3MKICAg
ICAgICAgLy8gaGV1cmlzdGljLgotICAgICAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3M7Ci0gICAgICAgIGJhY2tncm91bmRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3MpOwotICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41ICYmIGJhY2tncm91bmRDb2xv
ci5pc1Zpc2libGUoKSkKKyAgICAgICAgZmxvYXQgbGlnaHRuZXNzID0gbGlnaHRuZXNzKGJhY2tn
cm91bmRDb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOworICAgICAgICBpZiAobGlnaHRu
ZXNzIDw9IC41ZiAmJiBiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICBj
b21wdXRlZE92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OwogICAgICAg
ICBlbHNlIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpICYmIHVzZURhcmtBcHBlYXJh
bmNlKCkpCiAgICAgICAgICAgICBjb21wdXRlZE92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJs
YXlTdHlsZUxpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmNwcAkocmV2aXNpb24gMjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNDMgKzQ2Nyw2IEBAIENvbG9y
IENvbG9yOjpjb2xvcldpdGhBbHBoYShmbG9hdCBhbHBoYSkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi0vLyBGSVhNRTogVXNlIHNSR0JUb0hTTCgpLgotdm9pZCBDb2xvcjo6Z2V0SFNMKGRvdWJs
ZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgbGlnaHRuZXNzKSBjb25zdAotewot
ICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLiBUaGlz
IGlzIGEgZGlyZWN0IGNvcHkgb2YKLSAgICAvLyB0aGUgYWxnb3JpdGhtIHRoZXJlaW4sIGFsdGhv
dWdoIGl0J3MgMzYwXm8gYmFzZWQgYW5kIHdlIGVuZCB1cCB3YW50aW5nCi0gICAgLy8gWzAuLi42
KSBiYXNlZC4gSXQncyBjbGVhcmVyIGlmIHdlIHN0aWNrIHRvIDM2MF5vIHVudGlsIHRoZSBlbmQu
Ci0gICAgZG91YmxlIHIgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHJlZCgpKSAvIDI1NS4wOwotICAg
IGRvdWJsZSBnID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihncmVlbigpKSAvIDI1NS4wOwotICAgIGRv
dWJsZSBiID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihibHVlKCkpIC8gMjU1LjA7Ci0gICAgZG91Ymxl
IG1heCA9IHN0ZDo6bWF4KHN0ZDo6bWF4KHIsIGcpLCBiKTsKLSAgICBkb3VibGUgbWluID0gc3Rk
OjptaW4oc3RkOjptaW4ociwgZyksIGIpOwotICAgIGRvdWJsZSBjaHJvbWEgPSBtYXggLSBtaW47
Ci0KLSAgICBpZiAoIWNocm9tYSkKLSAgICAgICAgaHVlID0gMC4wOwotICAgIGVsc2UgaWYgKG1h
eCA9PSByKQotICAgICAgICBodWUgPSAoNjAuMCAqICgoZyAtIGIpIC8gY2hyb21hKSkgKyAzNjAu
MDsKLSAgICBlbHNlIGlmIChtYXggPT0gZykKLSAgICAgICAgaHVlID0gKDYwLjAgKiAoKGIgLSBy
KSAvIGNocm9tYSkpICsgMTIwLjA7Ci0gICAgZWxzZQotICAgICAgICBodWUgPSAoNjAuMCAqICgo
ciAtIGcpIC8gY2hyb21hKSkgKyAyNDAuMDsKLQotICAgIGlmIChodWUgPj0gMzYwLjApCi0gICAg
ICAgIGh1ZSAtPSAzNjAuMDsKLQotICAgIC8vIG1ha2VSR0JBRnJvbUhTTEEgYXNzdW1lcyB0aGF0
IGh1ZSBpcyBpbiBbMC4uLjYpLgotICAgIGh1ZSAvPSA2MC4wOwotCi0gICAgbGlnaHRuZXNzID0g
MC41ICogKG1heCArIG1pbik7Ci0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIHNhdHVyYXRpb24g
PSAwLjA7Ci0gICAgZWxzZSBpZiAobGlnaHRuZXNzIDw9IDAuNSkKLSAgICAgICAgc2F0dXJhdGlv
biA9IChjaHJvbWEgLyAobWF4ICsgbWluKSk7Ci0gICAgZWxzZQotICAgICAgICBzYXR1cmF0aW9u
ID0gKGNocm9tYSAvICgyLjAgLSAobWF4ICsgbWluKSkpOwotfQotCiBzdGQ6OnBhaXI8Q29sb3JT
cGFjZSwgRmxvYXRDb21wb25lbnRzPiBDb2xvcjo6Y29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBj
b25zdAogewogICAgIGlmIChpc0V4dGVuZGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjYxOTI1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDExICsy
MDcsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKLSAgICAvLyBG
SVhNRTogRXh0ZW5kZWRDb2xvciAtIHRoZXNlIHNob3VsZCBiZSByZW5hbWVkICh0byBiZSBjbGVh
ciBhYm91dCB0aGVpciBwYXJhbWV0ZXIgdHlwZXMsIG9yCi0gICAgLy8gcmVwbGFjZWQgd2l0aCBh
bHRlcm5hdGl2ZSBhY2Nlc3NvcnMuCi0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhTTChk
b3VibGUmIGgsIGRvdWJsZSYgcywgZG91YmxlJiBsKSBjb25zdDsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBGbG9hdENvbXBvbmVudHM+IGNvbG9yU3BhY2VBbmRD
b21wb25lbnRzKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBj
b2xvcnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjE5MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTYgQEAgRmxvYXRDb21wb25lbnRzIHNSR0JU
b1AzKGNvbnN0IEZsb2F0Q29tcAogICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMobGlu
ZWFyUDMpOwogfQogCitmbG9hdCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdC
Q29tcG9udGVudHMpCit7CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9udGVudHM7
CisKKyAgICBmbG9hdCBtYXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7CisgICAgZmxvYXQgbWlu
ID0gc3RkOjptaW4oeyByLCBnLCBiIH0pOworCisgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWlu
KTsKK30KKwogLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50
IGJ1dCBmb3Igc29tZSByZWFzb24KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1X
Q0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmCiAvLyBkb2Vzbid0IHVzZSB0aGUg
c3RhbmRhcmQgc1JHQiAtPiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCkBAIC0xODUs
MTUgKzE5NSwxMyBAQCBmbG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IEZsb2F0Q29tcG9uZW50CiAg
ICAgcmV0dXJuIChsaWdodGVyTHVtaW5hbmNlICsgMC4wNSkgLyAoZGFya2VyTHVtaW5hbmNlICsg
MC4wNSk7CiB9CiAKLUZsb2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb21wb25l
bnRzJiBzUkdCQ29sb3IpCitGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29t
cG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKQogewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLgotICAgIGZsb2F0IHIgPSBzUkdCQ29sb3IuY29tcG9u
ZW50c1swXTsKLSAgICBmbG9hdCBnID0gc1JHQkNvbG9yLmNvbXBvbmVudHNbMV07Ci0gICAgZmxv
YXQgYiA9IHNSR0JDb2xvci5jb21wb25lbnRzWzJdOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhh
XSA9IHNSR0JDb21wb250ZW50czsKIAotICAgIGZsb2F0IG1heCA9IHN0ZDo6bWF4KHN0ZDo6bWF4
KHIsIGcpLCBiKTsKLSAgICBmbG9hdCBtaW4gPSBzdGQ6Om1pbihzdGQ6Om1pbihyLCBnKSwgYik7
CisgICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0IG1pbiA9
IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKICAgICBmbG9hdCBjaHJvbWEgPSBtYXggLSBtaW47CiAK
ICAgICBmbG9hdCBodWU7CkBAIC0yMjQsNyArMjMyLDcgQEAgRmxvYXRDb21wb25lbnRzIHNSR0JU
b0hTTChjb25zdCBGbG9hdENvbQogICAgICAgICBodWUsCiAgICAgICAgIHNhdHVyYXRpb24sCiAg
ICAgICAgIGxpZ2h0bmVzcywKLSAgICAgICAgc1JHQkNvbG9yLmNvbXBvbmVudHNbM10KKyAgICAg
ICAgYWxwaGEKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MTkyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw4ICsxODQsMTAgQEAgRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9u
ZW50cyhjbwogRmxvYXRDb21wb25lbnRzIHAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYp
OwogRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwogCi1G
bG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotRmxvYXRD
b21wb25lbnRzIGhzbFRvU1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKK1dFQkNPUkVfRVhQ
T1JUIEZsb2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb21wb25lbnRzJik7CitX
RUJDT1JFX0VYUE9SVCBGbG9hdENvbXBvbmVudHMgaHNsVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9u
ZW50cyYpOworCitXRUJDT1JFX0VYUE9SVCBmbG9hdCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21w
b25lbnRzJiBzUkdCQ29tcG9udGVudHMpOwogCiBmbG9hdCBsdW1pbmFuY2UoY29uc3QgRmxvYXRD
b21wb25lbnRzJiBzUkdCQ29tcG9udGVudHMpOwogZmxvYXQgY29udHJhc3RSYXRpbyhjb25zdCBG
bG9hdENvbXBvbmVudHMmLCBjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjE5MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9yOjpnZXRIU0woKSB3aXRoIHNSR0JUb0hTTCB0
byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29tZXdoYXQgc2Vuc2libGUgcmVzdWx0cyBmb3Ig
RXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVTY3JvbGxWaWV3QmFj
a2dyb3VuZF0pOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgV2ViQ29yZTo6bGlnaHRuZXNzKCku
CisKIDIwMjAtMDUtMjAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtNYWNdIFVJIHByb2Nlc3NlcyBzcGluIHdoZW4gY3JlYXRpbmcgdGhlICJTaGFyZSIgY29udGV4
dCBtZW51IGl0ZW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNjE5MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMyLDkgKzUz
Miw4IEBAIC0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3JvdW5kCiAgICAgW19zY3JvbGxW
aWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiAKICAgICAv
LyBVcGRhdGUgdGhlIGluZGljYXRvciBzdHlsZSBiYXNlZCBvbiB0aGUgbGlnaHRuZXNzL2Rhcmtu
ZXNzIG9mIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24s
IGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3Mp
OwotICAgIGlmIChsaWdodG5lc3MgPD0gLjUgJiYgY29sb3IuaXNWaXNpYmxlKCkpCisgICAgZmxv
YXQgbGlnaHRuZXNzID0gV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRz
TG9zc3koKSk7CisgICAgaWYgKGxpZ2h0bmVzcyA8PSAuNWYgJiYgY29sb3IuaXNWaXNpYmxlKCkp
CiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRJbmRpY2F0b3JTdHlsZTpVSVNjcm9sbFZpZXdJbmRp
Y2F0b3JTdHlsZVdoaXRlXTsKICAgICBlbHNlCiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRJbmRp
Y2F0b3JTdHlsZTpVSVNjcm9sbFZpZXdJbmRpY2F0b3JTdHlsZUJsYWNrXTsKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTky
NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDIwLTA1LTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBs
YWNlIENvbG9yOjpnZXRIU0woKSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3Qg
Z2l2ZXMgc29tZXdoYXQgc2Vuc2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJl
ZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBVcGRhdGUgdGVzdHMg
dG8gdXNlIHNSR0JUb0hTTCBpbnN0ZWFkIG9mIENvbG9yOjpnZXRIU0woKSBhbmQgYWRkIHRlc3Rp
bmcgb2YgV2ViQ29yZTo6bGlnaHRuZXNzKCkuCisKIDIwMjAtMDUtMjAgIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bV2ViRHJpdmVyXSBBbGxvdyBzdWJ2
aWV3cyB0byBjcmVhdGUgbmV3IHZpZXdzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNjE5MjUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclV0aWxpdGllcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzYsOTYgKzM3LDEwNCBAQCBURVNUKENvbG9yLCBS
R0JUb0hTTF9XaGl0ZSkKIHsKICAgICBDb2xvciBjb2xvciA9IENvbG9yOjp3aGl0ZTsKIAotICAg
IGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVl
LCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGln
aHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgp
KTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VR
KDAsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgbGlnaHRuZXNzKTsKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJh
dGlvbik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEsIGxpZ2h0bmVzcyk7CisgICAgCisgICAgRVhQ
RUNUX0ZMT0FUX0VRKFdlYkNvcmU6OmxpZ2h0bmVzcyhjb2xvci50b1NSR0JBQ29tcG9uZW50c0xv
c3N5KCkpLCBsaWdodG5lc3MpOwogfQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9CbGFjaykKIHsK
ICAgICBDb2xvciBjb2xvciA9IENvbG9yOjpibGFjazsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVy
YXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBz
UkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIAotICAgIEVYUEVDVF9E
T1VCTEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwot
ICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDAsIGxpZ2h0bmVzcyk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6
bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9
CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX1JlZCkKIHsKICAgICBDb2xvciBjb2xvcigyNTUsIDAs
IDApOwogCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9y
LmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1
cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9u
ZW50c0xvc3N5KCkpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIGh1ZSk7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDEsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGxpZ2h0
bmVzcyk7CiAKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJM
RV9FUSgxLCBzYXR1cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNSwgbGlnaHRuZXNz
KTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFD
b21wb25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNM
X0dyZWVuKQogewogICAgIENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7CiAKLSAgICBkb3VibGUgaHVl
LCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlv
biwgbGlnaHRuZXNzKTsKKyAgICBhdXRvIFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxw
aGFdID0gc1JHQlRvSFNMKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CisKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMiwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2F0dXJhdGlv
bik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9E
T1VCTEVfRVEoMiwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOwot
ICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41LCBsaWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9F
UShXZWJDb3JlOjpsaWdodG5lc3MoY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKSwgbGln
aHRuZXNzKTsKIH0KIAogVEVTVChDb2xvciwgUkdCVG9IU0xfQmx1ZSkKIHsKICAgICBDb2xvciBj
b2xvcigwLCAwLCAyNTUpOwogCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNz
OwotICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0
byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50
b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSg0LCBodWUp
OwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJM
RV9FUSgwLjUsIGxpZ2h0bmVzcyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQsIGh1ZSk7CisgICAg
RVhQRUNUX0ZMT0FUX0VRKDEsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUs
IGxpZ2h0bmVzcyk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNv
bG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29s
b3IsIFJHQlRvSFNMX0RhcmtHcmF5KQogewogICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmRhcmtH
cmF5OwogCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9y
LmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1
cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9u
ZW50c0xvc3N5KCkpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVD
VF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUwMTk2
MDc4NDMxMzcyNTQ4LCBsaWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MC41MDE5NjA3ODQzMTM3MjU0OCwgbGlnaHRuZXNzKTsKKyAgICAKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxp
Z2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyYXkpCiB7CiAgICAgQ29sb3Ig
Y29sb3IgPSBDb2xvcjo6Z3JheTsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAg
IGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29s
b3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBo
dWUpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxP
QVRfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VC
TEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwotICAg
IEVYUEVDVF9ET1VCTEVfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwgbGlnaHRuZXNzKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRz
TG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0xpZ2h0R3Jh
eSkKIHsKICAgICBDb2xvciBjb2xvciA9IENvbG9yOjpsaWdodEdyYXk7CiAKLSAgICBkb3VibGUg
aHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJh
dGlvbiwgbGlnaHRuZXNzKTsKKyAgICBhdXRvIFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywg
YWxwaGFdID0gc1JHQlRvSFNMKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CisKKyAg
ICBFWFBFQ1RfRkxPQVRfRVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJh
dGlvbik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIGxpZ2h0bmVz
cyk7CiAKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9F
USgwLCBzYXR1cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNzUyOTQxMTc2NDcwNTg4
MjIsIGxpZ2h0bmVzcyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKFdlYkNvcmU6OmxpZ2h0bmVzcyhj
b2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpLCBsaWdodG5lc3MpOwogfQogCiBURVNUKENv
bG9yLCBWYWxpZGl0eSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399847</attachid>
            <date>2020-05-20 09:45:54 -0700</date>
            <delta_ts>2020-05-20 15:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212143-20200520094553.patch</filename>
            <type>text/plain</type>
            <size>18183</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA1LTIwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9yOjpnZXRIU0wo
KSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29tZXdoYXQgc2Vu
c2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2RlIGR1cGxpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIx
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGVkIEFQSSB0ZXN0cyB0byB0ZXN0IHNSR0JUb0hTTCgpIHJhdGhlciB0aGFuIENvbG9yOjpnZXRI
U0woKS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2VzIENvbG9yOjpnZXRIU0woKSB3aXRoIHNS
R0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpIGFuZCBhZGRzCisgICAgICAg
IGFuIG9wdGltaXplZCB2YXJpYW50LCBsaWdodG5lc3MoLi4uKSB0aGF0IGp1c3QgZXh0cmFjdHMg
dGhlIGxpZ2h0bmVzcyBjb21wb25lbnQgZm9yIAorICAgICAgICBjYWxsZXJzIHRoYXQgb25seSBu
ZWVkZWQgdGhhdC4KKyAgICAgICAgCisgICAgICAgIEl0IGlzIG5vdyByZXF1aXJlZCB0byBleHBs
aWNpdGx5IHVzZSBjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkgdG8gaW5kaWNhdGUgdGhh
dAorICAgICAgICBmb3Igbm9uLVNSR0IgY29sb3JzLCB0aGlzIHdpbGwgYmUgYSBsb3NzeSB0cmFu
c2Zvcm1hdGlvbiBhbmQgZ2l2ZSB1cyBhbiBlYXN5IHdheSB0bworICAgICAgICBmaW5kIGFsbCB0
aGVzZSBzaXRlcyBpbiB0aGUgZnV0dXJlLCBpZiB3ZSB3YW50IHRvIG1ha2UgYSBiZXR0ZXIgY29u
dmVyc2lvbiBmb3Igb3RoZXIKKyAgICAgICAgY29sb3Igc3BhY2VzLiAKKworICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZnJh
Z21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQpOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgbGln
aHRuZXNzKCkuCisgICAgICAgIAorICAgICAgICBURVNUSU5HIFRPIERPIEJFRk9SRSBMQU5ESU5H
IC0gU2hvdWxkIHVwZGF0ZSBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9y
LWZpbHRlcmVkLmh0bWwgd2l0aCBleHRlbmRlZCBjb2xvcnMuCisKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9u
OjpkZXRlY3RDb250ZW50SW5SYW5nZSk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBzUkdCVG9I
U0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKS4KKworICAgICAgICBURVNUSU5HIFRP
IERPIEJFRk9SRSBMQU5ESU5HIC0gTm90IHN1cmUgaG93IHRvIHRlc3QgRGF0YURldGVjdGlvbi4K
KyAgICAgICAgCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAg
IFN3aXRjaCB0byB1c2luZyBsaWdodG5lc3MoKS4KKyAgICAgICAgCisgICAgICAgIFRFU1RJTkcg
VE8gRE8gQkVGT1JFIExBTkRJTkcgLSBGaW5kIG91dCBpZiB3ZSBkdW1wIHRoZSBvdmVybGF5IHNj
cm9sbGJhciBzdHlsZSBhbnl3aGVyZSBpbiB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmdldEhT
TCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoK
KyAgICAgICAgUmVtb3ZlIENvbG9yOjpnZXRIU0woKS4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGln
aHRuZXNzKToKKyAgICAgICAgQWRkZWQgb3B0aW1pemVkIHN1YnNldCBvZiBzUkdCVG9IU0wgd2hp
Y2gganVzdCBjb21wdXRlcyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBmb3IgY2FsbGVycworICAg
ICAgICB0aGF0IG9ubHkgbmVlZCB0aGF0LgorCisgICAgICAgIChXZWJDb3JlOjpzUkdCVG9IU0wp
OgorICAgICAgICBTaW1wbGlmeS9jbGVhbnVwIGNvZGUgYSBsaXR0bGUgdXNpbmcgaW5pdGlhbGl6
ZS1saXN0IGJhc2VkIHN0ZDo6bWF4L3N0ZDo6bWluIGFuZCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAg
RXhwb3J0IGZ1bmN0aW9ucyB0byBhbGxvdyB0ZXN0aW5nIHRoZW0gZGlyZWN0bHkuCisKIDIwMjAt
MDUtMjAgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0
YWJsZSBzaXppbmcgd2hlbiAnbWF4LXdpZHRoJyBpcyB1c2VkCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24g
MjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Nyw5ICs1NDcsNyBAQCBzdGF0aWMgYm9vbCBmcmFn
bWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lCiAgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9yLnZh
bHVlKCkuaXNWaXNpYmxlKCkgfHwgY29sb3IudmFsdWUoKS5pc1NlbWFudGljKCkpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0
bmVzczsKLSAgICAgICAgY29sb3IudmFsdWUoKS5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3MpOwotICAgICAgICByZXR1cm4gbGlnaHRuZXNzOworICAgICAgICByZXR1cm4gbGlnaHRu
ZXNzKGNvbG9yLnZhbHVlKCkudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKICAgICB9OwogCiAg
ICAgY29uc3QgZG91YmxlIGxpZ2h0bmVzc0RhcmtFbm91Z2hGb3JUZXh0ID0gMC40OwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkocmV2aXNp
b24gMjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTQgKzYxOSwxMyBAQCBOU0FycmF5ICpEYXRhRGV0
ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SCiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlclN0eWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dENvbG9yID0gcmVuZGVyU3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9
IHNSR0JUb0hTTCh0ZXh0Q29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIAogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdGhlIGxpZ2h0bmVzcyBvZiB0aGUgdW5kZXJsaW5l
IGNvbG9yIHRvIHRoZSBtaWRkbGUsIGFuZCBtdWx0aXBseSB0aGUgYWxwaGEgYnkgMzglLAogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhlIGNvbG9yIHdpbGwgYXBwZWFyIG9uIGxpZ2h0
IGFuZCBkYXJrIGJhY2tncm91bmRzLCBzaW5jZSBvbmx5IG9uZSBjb2xvciBjYW4gYmUgc3BlY2lm
aWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG92ZXJyaWRlTGlnaHRuZXNzID0g
MC41OwogICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG92ZXJyaWRlQWxwaGFNdWx0aXBs
aWVyID0gMC4zODsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdW5kZXJsaW5lQ29sb3Ig
PSBDb2xvcihtYWtlUkdCQUZyb21IU0xBKGh1ZSwgc2F0dXJhdGlvbiwgb3ZlcnJpZGVMaWdodG5l
c3MsIG92ZXJyaWRlQWxwaGFNdWx0aXBsaWVyICogdGV4dENvbG9yLmFscGhhQXNGbG9hdCgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHVuZGVybGluZUNvbG9yID0gQ29sb3IobWFr
ZVJHQkFGcm9tSFNMQShodWUsIHNhdHVyYXRpb24sIG92ZXJyaWRlTGlnaHRuZXNzLCBvdmVycmlk
ZUFscGhhTXVsdGlwbGllciAqIGFscGhhKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Y2hvckVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgQ1NT
VmFsdWVDdXJyZW50Y29sb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVu
dC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Is
IHVuZGVybGluZUNvbG9yLmNzc1RleHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAyNjE5MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw5ICszNjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVj
YWxjdWxhdGVTY3JvbGxiYXJPdmVyCiAgICAgICAgIC8vIFJlZHVjZSB0aGUgYmFja2dyb3VuZCBj
b2xvciBmcm9tIFJHQiB0byBhIGxpZ2h0bmVzcyB2YWx1ZQogICAgICAgICAvLyBhbmQgZGV0ZXJt
aW5lIHdoaWNoIHNjcm9sbGJhciBzdHlsZSB0byB1c2UgYmFzZWQgb24gYSBsaWdodG5lc3MKICAg
ICAgICAgLy8gaGV1cmlzdGljLgotICAgICAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdo
dG5lc3M7Ci0gICAgICAgIGJhY2tncm91bmRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3MpOwotICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41ICYmIGJhY2tncm91bmRDb2xv
ci5pc1Zpc2libGUoKSkKKyAgICAgICAgaWYgKGxpZ2h0bmVzcyhiYWNrZ3JvdW5kQ29sb3IudG9T
UkdCQUNvbXBvbmVudHNMb3NzeSgpKSA8PSAuNWYgJiYgYmFja2dyb3VuZENvbG9yLmlzVmlzaWJs
ZSgpKQogICAgICAgICAgICAgY29tcHV0ZWRPdmVybGF5U3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5
U3R5bGVMaWdodDsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tncm91bmRDb2xvci5pc1Zpc2libGUo
KSAmJiB1c2VEYXJrQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgY29tcHV0ZWRPdmVybGF5U3R5
bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI2MTkyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3
LDQzICs0NjcsNiBAQCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gRklYTUU6IFVzZSBzUkdCVG9IU0woKS4KLXZvaWQg
Q29sb3I6OmdldEhTTChkb3VibGUmIGh1ZSwgZG91YmxlJiBzYXR1cmF0aW9uLCBkb3VibGUmIGxp
Z2h0bmVzcykgY29uc3QKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hT
TF9jb2xvcl9zcGFjZS4gVGhpcyBpcyBhIGRpcmVjdCBjb3B5IG9mCi0gICAgLy8gdGhlIGFsZ29y
aXRobSB0aGVyZWluLCBhbHRob3VnaCBpdCdzIDM2MF5vIGJhc2VkIGFuZCB3ZSBlbmQgdXAgd2Fu
dGluZwotICAgIC8vIFswLi4uNikgYmFzZWQuIEl0J3MgY2xlYXJlciBpZiB3ZSBzdGljayB0byAz
NjBebyB1bnRpbCB0aGUgZW5kLgotICAgIGRvdWJsZSByID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihy
ZWQoKSkgLyAyNTUuMDsKLSAgICBkb3VibGUgZyA9IHN0YXRpY19jYXN0PGRvdWJsZT4oZ3JlZW4o
KSkgLyAyNTUuMDsKLSAgICBkb3VibGUgYiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oYmx1ZSgpKSAv
IDI1NS4wOwotICAgIGRvdWJsZSBtYXggPSBzdGQ6Om1heChzdGQ6Om1heChyLCBnKSwgYik7Ci0g
ICAgZG91YmxlIG1pbiA9IHN0ZDo6bWluKHN0ZDo6bWluKHIsIGcpLCBiKTsKLSAgICBkb3VibGUg
Y2hyb21hID0gbWF4IC0gbWluOwotCi0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIGh1ZSA9IDAu
MDsKLSAgICBlbHNlIGlmIChtYXggPT0gcikKLSAgICAgICAgaHVlID0gKDYwLjAgKiAoKGcgLSBi
KSAvIGNocm9tYSkpICsgMzYwLjA7Ci0gICAgZWxzZSBpZiAobWF4ID09IGcpCi0gICAgICAgIGh1
ZSA9ICg2MC4wICogKChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wOwotICAgIGVsc2UKLSAgICAg
ICAgaHVlID0gKDYwLjAgKiAoKHIgLSBnKSAvIGNocm9tYSkpICsgMjQwLjA7Ci0KLSAgICBpZiAo
aHVlID49IDM2MC4wKQotICAgICAgICBodWUgLT0gMzYwLjA7Ci0KLSAgICAvLyBtYWtlUkdCQUZy
b21IU0xBIGFzc3VtZXMgdGhhdCBodWUgaXMgaW4gWzAuLi42KS4KLSAgICBodWUgLz0gNjAuMDsK
LQotICAgIGxpZ2h0bmVzcyA9IDAuNSAqIChtYXggKyBtaW4pOwotICAgIGlmICghY2hyb21hKQot
ICAgICAgICBzYXR1cmF0aW9uID0gMC4wOwotICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAwLjUp
Ci0gICAgICAgIHNhdHVyYXRpb24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOwotICAgIGVsc2UK
LSAgICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEgLyAoMi4wIC0gKG1heCArIG1pbikpKTsKLX0K
LQogc3RkOjpwYWlyPENvbG9yU3BhY2UsIEZsb2F0Q29tcG9uZW50cz4gQ29sb3I6OmNvbG9yU3Bh
Y2VBbmRDb21wb25lbnRzKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MTky
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNywxMSArMjA3LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0OwogCi0gICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSB0aGVzZSBzaG91bGQgYmUg
cmVuYW1lZCAodG8gYmUgY2xlYXIgYWJvdXQgdGhlaXIgcGFyYW1ldGVyIHR5cGVzLCBvcgotICAg
IC8vIHJlcGxhY2VkIHdpdGggYWx0ZXJuYXRpdmUgYWNjZXNzb3JzLgotCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRIU0woZG91YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYgbCkgY29uc3Q7
Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgRmxvYXRDb21wb25l
bnRzPiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCiAgICAgLy8gVGhpcyB3aWxs
IGNvbnZlcnQgbm9uLXNSR0IgY29sb3JzcGFjZSBjb2xvcnMgaW50byBzUkdCLgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjYxOTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDE2IEBAIEZs
b2F0Q29tcG9uZW50cyBzUkdCVG9QMyhjb25zdCBGbG9hdENvbXAKICAgICByZXR1cm4gbGluZWFy
VG9SR0JDb21wb25lbnRzKGxpbmVhclAzKTsKIH0KIAorZmxvYXQgbGlnaHRuZXNzKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKQoreworICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gc1JHQkNvbXBvbnRlbnRzOworCisgICAgZmxvYXQgbWF4ID0gc3RkOjptYXgoeyByLCBnLCBi
IH0pOworICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwgZywgYiB9KTsKKworICAgIHJldHVy
biAwLjVmICogKG1heCArIG1pbik7Cit9CisKIC8vIFRoaXMgaXMgc2ltaWxhciB0byBzUkdCVG9M
aW5lYXJDb2xvckNvbXBvbmVudCBidXQgZm9yIHNvbWUgcmVhc29uCiAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZgog
Ly8gZG9lc24ndCB1c2UgdGhlIHN0YW5kYXJkIHNSR0IgLT4gbGluZWFyUkdCIHRocmVzaG9sZCBv
ZiAwLjA0MDQ1LgpAQCAtMTg1LDE1ICsxOTUsMTMgQEAgZmxvYXQgY29udHJhc3RSYXRpbyhjb25z
dCBGbG9hdENvbXBvbmVudAogICAgIHJldHVybiAobGlnaHRlckx1bWluYW5jZSArIDAuMDUpIC8g
KGRhcmtlckx1bWluYW5jZSArIDAuMDUpOwogfQogCi1GbG9hdENvbXBvbmVudHMgc1JHQlRvSFNM
KGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbG9yKQorRmxvYXRDb21wb25lbnRzIHNSR0JU
b0hTTChjb25zdCBGbG9hdENvbXBvbmVudHMmIHNSR0JDb21wb250ZW50cykKIHsKICAgICAvLyBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZS4KLSAgICBmbG9hdCBy
ID0gc1JHQkNvbG9yLmNvbXBvbmVudHNbMF07Ci0gICAgZmxvYXQgZyA9IHNSR0JDb2xvci5jb21w
b25lbnRzWzFdOwotICAgIGZsb2F0IGIgPSBzUkdCQ29sb3IuY29tcG9uZW50c1syXTsKKyAgICBh
dXRvIFtyLCBnLCBiLCBhbHBoYV0gPSBzUkdCQ29tcG9udGVudHM7CiAKLSAgICBmbG9hdCBtYXgg
PSBzdGQ6Om1heChzdGQ6Om1heChyLCBnKSwgYik7Ci0gICAgZmxvYXQgbWluID0gc3RkOjptaW4o
c3RkOjptaW4ociwgZyksIGIpOworICAgIGZsb2F0IG1heCA9IHN0ZDo6bWF4KHsgciwgZywgYiB9
KTsKKyAgICBmbG9hdCBtaW4gPSBzdGQ6Om1pbih7IHIsIGcsIGIgfSk7CiAgICAgZmxvYXQgY2hy
b21hID0gbWF4IC0gbWluOwogCiAgICAgZmxvYXQgaHVlOwpAQCAtMjI0LDcgKzIzMiw3IEBAIEZs
b2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb20KICAgICAgICAgaHVlLAogICAg
ICAgICBzYXR1cmF0aW9uLAogICAgICAgICBsaWdodG5lc3MsCi0gICAgICAgIHNSR0JDb2xvci5j
b21wb25lbnRzWzNdCisgICAgICAgIGFscGhhCiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCShyZXZpc2lv
biAyNjE5MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsOCArMTg0LDEwIEBAIEZsb2F0Q29tcG9uZW50
cyBsaW5lYXJUb1JHQkNvbXBvbmVudHMoY28KIEZsb2F0Q29tcG9uZW50cyBwM1RvU1JHQihjb25z
dCBGbG9hdENvbXBvbmVudHMmKTsKIEZsb2F0Q29tcG9uZW50cyBzUkdCVG9QMyhjb25zdCBGbG9h
dENvbXBvbmVudHMmKTsKIAotRmxvYXRDb21wb25lbnRzIHNSR0JUb0hTTChjb25zdCBGbG9hdENv
bXBvbmVudHMmKTsKLUZsb2F0Q29tcG9uZW50cyBoc2xUb1NSR0IoY29uc3QgRmxvYXRDb21wb25l
bnRzJik7CitXRUJDT1JFX0VYUE9SVCBGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZs
b2F0Q29tcG9uZW50cyYpOworV0VCQ09SRV9FWFBPUlQgRmxvYXRDb21wb25lbnRzIGhzbFRvU1JH
Qihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKKworV0VCQ09SRV9FWFBPUlQgZmxvYXQgbGlnaHRu
ZXNzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKIAogZmxvYXQgbHVt
aW5hbmNlKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKIGZsb2F0IGNv
bnRyYXN0UmF0aW8oY29uc3QgRmxvYXRDb21wb25lbnRzJiwgY29uc3QgRmxvYXRDb21wb25lbnRz
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxOTI1KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0yMCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBDb2xvcjo6Z2V0SFNM
KCkgd2l0aCBzUkdCVG9IU0wgdG8gZW5zdXJlIGl0IGF0IGxlYXN0IGdpdmVzIHNvbWV3aGF0IHNl
bnNpYmxlIHJlc3VsdHMgZm9yIEV4dGVuZGVkQ29sb3JzIGFuZCByZWR1Y2UgY29kZSBkdXBsaWNh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBf
dXBkYXRlU2Nyb2xsVmlld0JhY2tncm91bmRdKToKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIFdl
YkNvcmU6OmxpZ2h0bmVzcygpLgorCiAyMDIwLTA1LTIwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVSSBwcm9jZXNzZXMgc3BpbiB3aGVuIGNyZWF0aW5n
IHRoZSAiU2hhcmUiIGNvbnRleHQgbWVudSBpdGVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkocmV2aXNpb24gMjYxOTI1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUzMiw5ICs1MzIsNyBAQCAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3QmFja2dy
b3VuZAogICAgIFtfc2Nyb2xsVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6dWlCYWNrZ3JvdW5kQ29s
b3IuZ2V0KCldOwogCiAgICAgLy8gVXBkYXRlIHRoZSBpbmRpY2F0b3Igc3R5bGUgYmFzZWQgb24g
dGhlIGxpZ2h0bmVzcy9kYXJrbmVzcyBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci4KLSAgICBkb3Vi
bGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0
dXJhdGlvbiwgbGlnaHRuZXNzKTsKLSAgICBpZiAobGlnaHRuZXNzIDw9IC41ICYmIGNvbG9yLmlz
VmlzaWJsZSgpKQorICAgIGlmIChXZWJDb3JlOjpsaWdodG5lc3MoY29sb3IudG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpKSA8PSAuNWYgJiYgY29sb3IuaXNWaXNpYmxlKCkpCiAgICAgICAgIFtfc2Ny
b2xsVmlldyBzZXRJbmRpY2F0b3JTdHlsZTpVSVNjcm9sbFZpZXdJbmRpY2F0b3JTdHlsZVdoaXRl
XTsKICAgICBlbHNlCiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRJbmRpY2F0b3JTdHlsZTpVSVNj
cm9sbFZpZXdJbmRpY2F0b3JTdHlsZUJsYWNrXTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTkyNSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTIwICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9yOjpnZXRI
U0woKSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29tZXdoYXQg
c2Vuc2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2RlIGR1cGxp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBVcGRhdGUgdGVzdHMgdG8gdXNlIHNSR0JUb0hT
TCBpbnN0ZWFkIG9mIENvbG9yOjpnZXRIU0woKSBhbmQgYWRkIHRlc3Rpbmcgb2YgV2ViQ29yZTo6
bGlnaHRuZXNzKCkuCisKIDIwMjAtMDUtMjAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dQRV1bV2ViRHJpdmVyXSBBbGxvdyBzdWJ2aWV3cyB0byBjcmVhdGUg
bmV3IHZpZXdzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JU
ZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNjE5MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvclV0aWxpdGllcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtMzYsOTYgKzM3LDEwNCBAQCBURVNUKENvbG9yLCBSR0JUb0hTTF9XaGl0ZSkK
IHsKICAgICBDb2xvciBjb2xvciA9IENvbG9yOjp3aGl0ZTsKIAotICAgIGRvdWJsZSBodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0g
PSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIAotICAgIEVYUEVD
VF9ET1VCTEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24p
OwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMSwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDEsIGxpZ2h0bmVzcyk7CisgICAgCisgICAgRVhQRUNUX0ZMT0FUX0VRKFdl
YkNvcmU6OmxpZ2h0bmVzcyhjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpLCBsaWdodG5l
c3MpOwogfQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9CbGFjaykKIHsKICAgICBDb2xvciBjb2xv
ciA9IENvbG9yOjpibGFjazsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVz
czsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1
dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3Iu
dG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVl
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VC
TEVfRVEoMCwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgaHVlKTsKKyAgICBF
WFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIGxp
Z2h0bmVzcyk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9y
LnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3Is
IFJHQlRvSFNMX1JlZCkKIHsKICAgICBDb2xvciBjb2xvcigyNTUsIDAsIDApOwogCi0gICAgZG91
YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5l
c3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwor
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAsIGh1ZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDEsIHNh
dHVyYXRpb24pOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGxpZ2h0bmVzcyk7CiAKLSAgICBF
WFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzYXR1cmF0
aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNSwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1Rf
RkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3ko
KSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVuKQogewogICAg
IENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7CiAKLSAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsK
KyAgICBhdXRvIFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0gc1JHQlRvSFNM
KGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MiwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKDAuNSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMiwgaHVl
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VC
TEVfRVEoMC41LCBsaWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9FUShXZWJDb3JlOjpsaWdo
dG5lc3MoY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKSwgbGlnaHRuZXNzKTsKIH0KIAog
VEVTVChDb2xvciwgUkdCVG9IU0xfQmx1ZSkKIHsKICAgICBDb2xvciBjb2xvcigwLCAwLCAyNTUp
OwogCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdl
dEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0
aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50
c0xvc3N5KCkpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSg0LCBodWUpOwotICAgIEVYUEVDVF9E
T1VCTEVfRVEoMSwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUsIGxpZ2h0
bmVzcyk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKDQsIGh1ZSk7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDEsIHNhdHVyYXRpb24pOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLjUsIGxpZ2h0bmVzcyk7CisK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21w
b25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0Rh
cmtHcmF5KQogewogICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmRhcmtHcmF5OwogCi0gICAgZG91
YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5l
c3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwog
Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwg
c2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUwMTk2MDc4NDMxMzcyNTQ4LCBs
aWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVDVF9GTE9B
VF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41MDE5NjA3ODQzMTM3
MjU0OCwgbGlnaHRuZXNzKTsKKyAgICAKKyAgICBFWFBFQ1RfRkxPQVRfRVEoV2ViQ29yZTo6bGln
aHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxpZ2h0bmVzcyk7CiB9CiAK
IFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyYXkpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6
Z3JheTsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xv
ci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0
dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBv
bmVudHNMb3NzeSgpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVD
VF9GTE9BVF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC42Mjc0NTA5
ODAzOTIxNTY4NSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsK
LSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVf
RVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
V2ViQ29yZTo6bGlnaHRuZXNzKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSksIGxpZ2h0
bmVzcyk7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0xpZ2h0R3JheSkKIHsKICAgICBDb2xv
ciBjb2xvciA9IENvbG9yOjpsaWdodEdyYXk7CiAKLSAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9u
LCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNz
KTsKKyAgICBhdXRvIFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0gc1JHQlRv
SFNMKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgc2F0dXJhdGlvbik7CisgICAgRVhQ
RUNUX0ZMT0FUX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIGxpZ2h0bmVzcyk7CiAKLSAgICBFWFBF
Q1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBzYXR1cmF0aW9u
KTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNzUyOTQxMTc2NDcwNTg4MjIsIGxpZ2h0bmVzcyk7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKFdlYkNvcmU6OmxpZ2h0bmVzcyhjb2xvci50b1NSR0JBQ29t
cG9uZW50c0xvc3N5KCkpLCBsaWdodG5lc3MpOwogfQogCiBURVNUKENvbG9yLCBWYWxpZGl0eSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399897</attachid>
            <date>2020-05-20 15:09:52 -0700</date>
            <delta_ts>2020-05-20 15:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212143-20200520150951.patch</filename>
            <type>text/plain</type>
            <size>23707</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTk2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA1LTIwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9yOjpnZXRIU0wo
KSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29tZXdoYXQgc2Vu
c2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2RlIGR1cGxpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIx
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFVw
ZGF0ZWQgQVBJIHRlc3RzIHRvIHRlc3Qgc1JHQlRvSFNMKCkgcmF0aGVyIHRoYW4gQ29sb3I6Omdl
dEhTTCgpIGFuZCBleHRlbmRlZCB0aGUgdGVzdHMKKyAgICAgICAgICB0byBpbmNsdWRlIGxpZ2h0
bmVzcyB0ZXN0cyBhbmQgcm91bmQgdHJpcHBpbmcgdGVzdHMuCisgICAgICAgIC0gVXBkYXRlIGVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbCB3aXRo
IGV4dGVuZGVkIGNvbG9yIHRlc3QgY2FzZXMuCisKKyAgICAgICAgUmVwbGFjZXMgQ29sb3I6Omdl
dEhTTCgpIHdpdGggc1JHQlRvSFNMKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSkgYW5k
IGFkZHMKKyAgICAgICAgYW4gb3B0aW1pemVkIHZhcmlhbnQsIGxpZ2h0bmVzcyguLi4pIHRoYXQg
anVzdCBleHRyYWN0cyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBmb3IgCisgICAgICAgIGNhbGxl
cnMgdGhhdCBvbmx5IG5lZWRlZCB0aGF0LgorICAgICAgICAKKyAgICAgICAgSXQgaXMgbm93IHJl
cXVpcmVkIHRvIGV4cGxpY2l0bHkgdXNlIGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSB0
byBpbmRpY2F0ZSB0aGF0CisgICAgICAgIGZvciBub24tU1JHQiBjb2xvcnMsIHRoaXMgd2lsbCBi
ZSBhIGxvc3N5IHRyYW5zZm9ybWF0aW9uIGFuZCBnaXZlIHVzIGFuIGVhc3kgd2F5IHRvCisgICAg
ICAgIGZpbmQgYWxsIHRoZXNlIHNpdGVzIGluIHRoZSBmdXR1cmUsIGlmIHdlIHdhbnQgdG8gbWFr
ZSBhIGJldHRlciBjb252ZXJzaW9uIGZvciBvdGhlcgorICAgICAgICBjb2xvciBzcGFjZXMuIAor
CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmcmFnbWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lZCk6CisgICAgICAgIFN3aXRj
aCB0byB1c2luZyBsaWdodG5lc3MoKS4gVGhpcyB3YXMgcHJldmlvdXNseSBicm9rZW4gZm9yIGV4
dGVuZGVkIGNvbG9ycyBidXQgbm93IHdvcmtzICh0aG91Z2ggCisgICAgICAgIGluIGEgbG9zc3kg
d2F5IHRocm91Z2ggc1JHQikuIFVwZGF0ZSBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1t
b2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgd2l0aCBleHRlbmRlZCBjb2xvcnMuCisKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRh
RGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZSk6CisgICAgICAgIFN3aXRjaCB0byB1c2lu
ZyBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKS4KKyAgICAgICAgCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIFN3aXRjaCB0byB1
c2luZyBsaWdodG5lc3MoKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmdldEhTTCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgUmVtb3Zl
IENvbG9yOjpnZXRIU0woKS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGlnaHRuZXNzKToKKyAgICAg
ICAgQWRkZWQgb3B0aW1pemVkIHN1YnNldCBvZiBzUkdCVG9IU0wgd2hpY2gganVzdCBjb21wdXRl
cyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBmb3IgY2FsbGVycworICAgICAgICB0aGF0IG9ubHkg
bmVlZCB0aGF0LgorCisgICAgICAgIChXZWJDb3JlOjpzUkdCVG9IU0wpOgorICAgICAgICBTaW1w
bGlmeS9jbGVhbnVwIGNvZGUgYSBsaXR0bGUgdXNpbmcgaW5pdGlhbGl6ZS1saXN0IGJhc2VkIHN0
ZDo6bWF4L3N0ZDo6bWluIGFuZCBzdHJ1Y3R1cmVkIGJpbmRpbmdzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgRXhwb3J0IGZ1bmN0aW9u
cyB0byBhbGxvdyB0ZXN0aW5nIHRoZW0gZGlyZWN0bHkuCisKIDIwMjAtMDUtMjAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3RlbnRpYWwgY3Jhc2ggaW4g
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyOjpjYW5jZWxQb2ludGVyKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZp
c2lvbiAyNjE5NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDkgKzU0Nyw3IEBAIHN0YXRpYyBib29s
IGZyYWdtZW50TmVlZHNDb2xvclRyYW5zZm9ybWUKICAgICAgICAgaWYgKCFjb2xvciB8fCAhY29s
b3IudmFsdWUoKS5pc1Zpc2libGUoKSB8fCBjb2xvci52YWx1ZSgpLmlzU2VtYW50aWMoKSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwg
bGlnaHRuZXNzOwotICAgICAgICBjb2xvci52YWx1ZSgpLmdldEhTTChodWUsIHNhdHVyYXRpb24s
IGxpZ2h0bmVzcyk7Ci0gICAgICAgIHJldHVybiBsaWdodG5lc3M7CisgICAgICAgIHJldHVybiBj
b2xvci52YWx1ZSgpLmxpZ2h0bmVzcygpOwogICAgIH07CiAKICAgICBjb25zdCBkb3VibGUgbGln
aHRuZXNzRGFya0Vub3VnaEZvclRleHQgPSAwLjQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAyNjE5NjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTYxOSwxNCArNjE5LDEzIEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRl
bnRJblIKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyU3R5bGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byB0ZXh0Q29sb3IgPSByZW5kZXJTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGV4dENvbG9yLmlz
VmFsaWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlv
biwgbGlnaHRuZXNzOwotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yLmdldEhTTCho
dWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRv
IFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0gc1JHQlRvSFNMKHRleHRDb2xv
ci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGb3JjZSB0aGUgbGlnaHRuZXNzIG9mIHRoZSB1bmRlcmxpbmUgY29sb3IgdG8gdGhlIG1pZGRs
ZSwgYW5kIG11bHRpcGx5IHRoZSBhbHBoYSBieSAzOCUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzbyB0aGUgY29sb3Igd2lsbCBhcHBlYXIgb24gbGlnaHQgYW5kIGRhcmsgYmFja2dyb3Vu
ZHMsIHNpbmNlIG9ubHkgb25lIGNvbG9yIGNhbiBiZSBzcGVjaWZpZWQuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgb3ZlcnJpZGVMaWdodG5lc3MgPSAwLjU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgb3ZlcnJpZGVBbHBoYU11bHRpcGxpZXIgPSAwLjM4OwotICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byB1bmRlcmxpbmVDb2xvciA9IENvbG9yKG1ha2VSR0JBRnJv
bUhTTEEoaHVlLCBzYXR1cmF0aW9uLCBvdmVycmlkZUxpZ2h0bmVzcywgb3ZlcnJpZGVBbHBoYU11
bHRpcGxpZXIgKiB0ZXh0Q29sb3IuYWxwaGFBc0Zsb2F0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gdW5kZXJsaW5lQ29sb3IgPSBDb2xvcihtYWtlUkdCQUZyb21IU0xBKGh1ZSwg
c2F0dXJhdGlvbiwgb3ZlcnJpZGVMaWdodG5lc3MsIG92ZXJyaWRlQWxwaGFNdWx0aXBsaWVyICog
YWxwaGEpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBDU1NWYWx1ZUN1cnJlbnRjb2xvcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvciwgdW5kZXJsaW5lQ29sb3IuY3Nz
VGV4dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDI2MTk2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY1LDkgKzM2NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92
ZXIKICAgICAgICAgLy8gUmVkdWNlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUkdCIHRvIGEg
bGlnaHRuZXNzIHZhbHVlCiAgICAgICAgIC8vIGFuZCBkZXRlcm1pbmUgd2hpY2ggc2Nyb2xsYmFy
IHN0eWxlIHRvIHVzZSBiYXNlZCBvbiBhIGxpZ2h0bmVzcwogICAgICAgICAvLyBoZXVyaXN0aWMu
Ci0gICAgICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICAgICAgYmFj
a2dyb3VuZENvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0gICAgICAg
IGlmIChsaWdodG5lc3MgPD0gLjUgJiYgYmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQorICAg
ICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmxpZ2h0bmVzcygpIDw9IC41ZiAmJiBiYWNrZ3JvdW5k
Q29sb3IuaXNWaXNpYmxlKCkpCiAgICAgICAgICAgICBjb21wdXRlZE92ZXJsYXlTdHlsZSA9IFNj
cm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OwogICAgICAgICBlbHNlIGlmICghYmFja2dyb3VuZENv
bG9yLmlzVmlzaWJsZSgpICYmIHVzZURhcmtBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICBjb21w
dXRlZE92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24gMjYxOTYx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTQsNiArMzk0LDEyIEBAIGJvb2wgQ29sb3I6OmlzRGFyaygpIGNvbnN0CiAg
ICAgcmV0dXJuIGEgPiAwLjUgJiYgbGFyZ2VzdE5vbkFscGhhQ2hhbm5lbCA8IDAuNTsKIH0KIAor
ZmxvYXQgQ29sb3I6OmxpZ2h0bmVzcygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFRoaXMgY2Fu
IHByb2JhYmx5IGF2b2lkIGNvbnZlcnNpb24gdG8gc1JHQiBieSBoYXZpbmcgcGVyLWNvbG9yc3Bh
Y2UgYWxnb3JpdGhtcyBmb3IgSFNMLgorICAgIHJldHVybiBXZWJDb3JlOjpsaWdodG5lc3ModG9T
UkdCQUNvbXBvbmVudHNMb3NzeSgpKTsKK30KKwogc3RhdGljIGludCBibGVuZENvbXBvbmVudChp
bnQgYywgaW50IGEpCiB7CiAgICAgLy8gV2UgdXNlIHdoaXRlLgpAQCAtNDY3LDQzICs0NzMsNiBA
QCBDb2xvciBDb2xvcjo6Y29sb3JXaXRoQWxwaGEoZmxvYXQgYWxwaGEpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotLy8gRklYTUU6IFVzZSBzUkdCVG9IU0woKS4KLXZvaWQgQ29sb3I6OmdldEhT
TChkb3VibGUmIGh1ZSwgZG91YmxlJiBzYXR1cmF0aW9uLCBkb3VibGUmIGxpZ2h0bmVzcykgY29u
c3QKLXsKLSAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFj
ZS4gVGhpcyBpcyBhIGRpcmVjdCBjb3B5IG9mCi0gICAgLy8gdGhlIGFsZ29yaXRobSB0aGVyZWlu
LCBhbHRob3VnaCBpdCdzIDM2MF5vIGJhc2VkIGFuZCB3ZSBlbmQgdXAgd2FudGluZwotICAgIC8v
IFswLi4uNikgYmFzZWQuIEl0J3MgY2xlYXJlciBpZiB3ZSBzdGljayB0byAzNjBebyB1bnRpbCB0
aGUgZW5kLgotICAgIGRvdWJsZSByID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWQoKSkgLyAyNTUu
MDsKLSAgICBkb3VibGUgZyA9IHN0YXRpY19jYXN0PGRvdWJsZT4oZ3JlZW4oKSkgLyAyNTUuMDsK
LSAgICBkb3VibGUgYiA9IHN0YXRpY19jYXN0PGRvdWJsZT4oYmx1ZSgpKSAvIDI1NS4wOwotICAg
IGRvdWJsZSBtYXggPSBzdGQ6Om1heChzdGQ6Om1heChyLCBnKSwgYik7Ci0gICAgZG91YmxlIG1p
biA9IHN0ZDo6bWluKHN0ZDo6bWluKHIsIGcpLCBiKTsKLSAgICBkb3VibGUgY2hyb21hID0gbWF4
IC0gbWluOwotCi0gICAgaWYgKCFjaHJvbWEpCi0gICAgICAgIGh1ZSA9IDAuMDsKLSAgICBlbHNl
IGlmIChtYXggPT0gcikKLSAgICAgICAgaHVlID0gKDYwLjAgKiAoKGcgLSBiKSAvIGNocm9tYSkp
ICsgMzYwLjA7Ci0gICAgZWxzZSBpZiAobWF4ID09IGcpCi0gICAgICAgIGh1ZSA9ICg2MC4wICog
KChiIC0gcikgLyBjaHJvbWEpKSArIDEyMC4wOwotICAgIGVsc2UKLSAgICAgICAgaHVlID0gKDYw
LjAgKiAoKHIgLSBnKSAvIGNocm9tYSkpICsgMjQwLjA7Ci0KLSAgICBpZiAoaHVlID49IDM2MC4w
KQotICAgICAgICBodWUgLT0gMzYwLjA7Ci0KLSAgICAvLyBtYWtlUkdCQUZyb21IU0xBIGFzc3Vt
ZXMgdGhhdCBodWUgaXMgaW4gWzAuLi42KS4KLSAgICBodWUgLz0gNjAuMDsKLQotICAgIGxpZ2h0
bmVzcyA9IDAuNSAqIChtYXggKyBtaW4pOwotICAgIGlmICghY2hyb21hKQotICAgICAgICBzYXR1
cmF0aW9uID0gMC4wOwotICAgIGVsc2UgaWYgKGxpZ2h0bmVzcyA8PSAwLjUpCi0gICAgICAgIHNh
dHVyYXRpb24gPSAoY2hyb21hIC8gKG1heCArIG1pbikpOwotICAgIGVsc2UKLSAgICAgICAgc2F0
dXJhdGlvbiA9IChjaHJvbWEgLyAoMi4wIC0gKG1heCArIG1pbikpKTsKLX0KLQogc3RkOjpwYWly
PENvbG9yU3BhY2UsIEZsb2F0Q29tcG9uZW50cz4gQ29sb3I6OmNvbG9yU3BhY2VBbmRDb21wb25l
bnRzKCkgY29uc3QKIHsKICAgICBpZiAoaXNFeHRlbmRlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2MTk2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2
LDcgKzk2LDcgQEAgV0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQQogUkdC
QTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4g
b3ZlcnJpZGVBbHBoYSk7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQTMyRnJvbUZs
b2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKLVJHQkEzMiBtYWtlUkdC
QUZyb21IU0xBKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IGwsIGZsb2F0IGEpOworV0VCQ09SRV9F
WFBPUlQgUkdCQTMyIG1ha2VSR0JBRnJvbUhTTEEoZmxvYXQgaCwgZmxvYXQgcywgZmxvYXQgbCwg
ZmxvYXQgYSk7CiBSR0JBMzIgbWFrZVJHQkFGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxv
YXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hh
bm5lbChpbnQpOwpAQCAtMjA3LDExICsyMDcsNiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogRXh0ZW5kZWRDb2xvciAtIHRoZXNlIHNob3Vs
ZCBiZSByZW5hbWVkICh0byBiZSBjbGVhciBhYm91dCB0aGVpciBwYXJhbWV0ZXIgdHlwZXMsIG9y
Ci0gICAgLy8gcmVwbGFjZWQgd2l0aCBhbHRlcm5hdGl2ZSBhY2Nlc3NvcnMuCi0KLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEhTTChkb3VibGUmIGgsIGRvdWJsZSYgcywgZG91YmxlJiBsKSBj
b25zdDsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBGbG9hdENv
bXBvbmVudHM+IGNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCkgY29uc3Q7CiAKICAgICAvLyBUaGlz
IHdpbGwgY29udmVydCBub24tc1JHQiBjb2xvcnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCkBAIC0y
MjEsNiArMjE2LDggQEAgcHVibGljOgogICAgIENvbG9yIGRhcmsoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNEYXJrKCkgY29uc3Q7CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgbGlnaHRu
ZXNzKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIFBvcnRl
ci1EdWZmJ3MgInNvdXJjZS1vdmVyIiBlcXVhdGlvbgogICAgIENvbG9yIGJsZW5kKGNvbnN0IENv
bG9yJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
clV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjE5NjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw2ICsxNTMsMTYgQEAgRmxvYXRDb21wb25lbnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0
Q29tcAogICAgIHJldHVybiBsaW5lYXJUb1JHQkNvbXBvbmVudHMobGluZWFyUDMpOwogfQogCitm
bG9hdCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29tcG9udGVudHMpCit7
CisgICAgYXV0byBbciwgZywgYiwgYV0gPSBzUkdCQ29tcG9udGVudHM7CisKKyAgICBmbG9hdCBt
YXggPSBzdGQ6Om1heCh7IHIsIGcsIGIgfSk7CisgICAgZmxvYXQgbWluID0gc3RkOjptaW4oeyBy
LCBnLCBiIH0pOworCisgICAgcmV0dXJuIDAuNWYgKiAobWF4ICsgbWluKTsKK30KKwogLy8gVGhp
cyBpcyBzaW1pbGFyIHRvIHNSR0JUb0xpbmVhckNvbG9yQ29tcG9uZW50IGJ1dCBmb3Igc29tZSBy
ZWFzb24KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEv
I3JlbGF0aXZlbHVtaW5hbmNlZGVmCiAvLyBkb2Vzbid0IHVzZSB0aGUgc3RhbmRhcmQgc1JHQiAt
PiBsaW5lYXJSR0IgdGhyZXNob2xkIG9mIDAuMDQwNDUuCkBAIC0xODUsMTUgKzE5NSwxMyBAQCBm
bG9hdCBjb250cmFzdFJhdGlvKGNvbnN0IEZsb2F0Q29tcG9uZW50CiAgICAgcmV0dXJuIChsaWdo
dGVyTHVtaW5hbmNlICsgMC4wNSkgLyAoZGFya2VyTHVtaW5hbmNlICsgMC4wNSk7CiB9CiAKLUZs
b2F0Q29tcG9uZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29sb3Ip
CitGbG9hdENvbXBvbmVudHMgc1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNv
bXBvbnRlbnRzKQogewogICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2Nv
bG9yX3NwYWNlLgotICAgIGZsb2F0IHIgPSBzUkdCQ29sb3IuY29tcG9uZW50c1swXTsKLSAgICBm
bG9hdCBnID0gc1JHQkNvbG9yLmNvbXBvbmVudHNbMV07Ci0gICAgZmxvYXQgYiA9IHNSR0JDb2xv
ci5jb21wb25lbnRzWzJdOworICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IHNSR0JDb21wb250
ZW50czsKIAotICAgIGZsb2F0IG1heCA9IHN0ZDo6bWF4KHN0ZDo6bWF4KHIsIGcpLCBiKTsKLSAg
ICBmbG9hdCBtaW4gPSBzdGQ6Om1pbihzdGQ6Om1pbihyLCBnKSwgYik7CisgICAgZmxvYXQgbWF4
ID0gc3RkOjptYXgoeyByLCBnLCBiIH0pOworICAgIGZsb2F0IG1pbiA9IHN0ZDo6bWluKHsgciwg
ZywgYiB9KTsKICAgICBmbG9hdCBjaHJvbWEgPSBtYXggLSBtaW47CiAKICAgICBmbG9hdCBodWU7
CkBAIC0yMjQsNyArMjMyLDcgQEAgRmxvYXRDb21wb25lbnRzIHNSR0JUb0hTTChjb25zdCBGbG9h
dENvbQogICAgICAgICBodWUsCiAgICAgICAgIHNhdHVyYXRpb24sCiAgICAgICAgIGxpZ2h0bmVz
cywKLSAgICAgICAgc1JHQkNvbG9yLmNvbXBvbmVudHNbM10KKyAgICAgICAgYWxwaGEKICAgICB9
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2MTk2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw5ICsx
ODQsMTAgQEAgRmxvYXRDb21wb25lbnRzIGxpbmVhclRvUkdCQ29tcG9uZW50cyhjbwogRmxvYXRD
b21wb25lbnRzIHAzVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwogRmxvYXRDb21wb25l
bnRzIHNSR0JUb1AzKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwogCi1GbG9hdENvbXBvbmVudHMg
c1JHQlRvSFNMKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwotRmxvYXRDb21wb25lbnRzIGhzbFRv
U1JHQihjb25zdCBGbG9hdENvbXBvbmVudHMmKTsKK1dFQkNPUkVfRVhQT1JUIEZsb2F0Q29tcG9u
ZW50cyBzUkdCVG9IU0woY29uc3QgRmxvYXRDb21wb25lbnRzJik7CitXRUJDT1JFX0VYUE9SVCBG
bG9hdENvbXBvbmVudHMgaHNsVG9TUkdCKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYpOwogCitmbG9h
dCBsaWdodG5lc3MoY29uc3QgRmxvYXRDb21wb25lbnRzJiBzUkdCQ29tcG9udGVudHMpOwogZmxv
YXQgbHVtaW5hbmNlKGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbXBvbnRlbnRzKTsKIGZs
b2F0IGNvbnRyYXN0UmF0aW8oY29uc3QgRmxvYXRDb21wb25lbnRzJiwgY29uc3QgRmxvYXRDb21w
b25lbnRzJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE5NjEpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA1LTIw
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIENvbG9y
OjpnZXRIU0woKSB3aXRoIHNSR0JUb0hTTCB0byBlbnN1cmUgaXQgYXQgbGVhc3QgZ2l2ZXMgc29t
ZXdoYXQgc2Vuc2libGUgcmVzdWx0cyBmb3IgRXh0ZW5kZWRDb2xvcnMgYW5kIHJlZHVjZSBjb2Rl
IGR1cGxpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTIxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3VuZF0pOgorICAgICAgICBTd2l0Y2ggdG8g
dXNpbmcgQ29sb3I6OmxpZ2h0bmVzcygpLgorCiAyMDIwLTA1LTIwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRGVwcmVjYXRlIFdLQnVuZGxlUGFnZVNldFBvbGlj
eUNsaWVudCgpIEluamVjdGVkIGJ1bmRsZSBDIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI2MTk2MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MzIsOSArNTMyLDcgQEAgLSAodm9pZClfdXBkYXRlU2Nyb2xsVmlld0JhY2tn
cm91bmQKICAgICBbX3Njcm9sbFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOnVpQmFja2dyb3VuZENv
bG9yLmdldCgpXTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgaW5kaWNhdG9yIHN0eWxlIGJhc2VkIG9u
IHRoZSBsaWdodG5lc3MvZGFya25lc3Mgb2YgdGhlIGJhY2tncm91bmQgY29sb3IuCi0gICAgZG91
YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzcyk7Ci0gICAgaWYgKGxpZ2h0bmVzcyA8PSAuNSAmJiBjb2xvci5p
c1Zpc2libGUoKSkKKyAgICBpZiAoY29sb3IubGlnaHRuZXNzKCkgPD0gLjVmICYmIGNvbG9yLmlz
VmlzaWJsZSgpKQogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0SW5kaWNhdG9yU3R5bGU6VUlTY3Jv
bGxWaWV3SW5kaWNhdG9yU3R5bGVXaGl0ZV07CiAgICAgZWxzZQogICAgICAgICBbX3Njcm9sbFZp
ZXcgc2V0SW5kaWNhdG9yU3R5bGU6VUlTY3JvbGxWaWV3SW5kaWNhdG9yU3R5bGVCbGFja107Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjE5NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wNS0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBDb2xvcjo6Z2V0SFNMKCkgd2l0aCBzUkdCVG9IU0wgdG8gZW5zdXJlIGl0
IGF0IGxlYXN0IGdpdmVzIHNvbWV3aGF0IHNlbnNpYmxlIHJlc3VsdHMgZm9yIEV4dGVuZGVkQ29s
b3JzIGFuZCByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29s
b3JUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgVXBk
YXRlIHRlc3RzIHRvIHVzZSBzUkdCVG9IU0wgaW5zdGVhZCBvZiBDb2xvcjo6Z2V0SFNMKCkgYW5k
IGFkZCB0ZXN0aW5nIG9mIFdlYkNvcmU6OmxpZ2h0bmVzcygpIGFuZCAKKyAgICAgICAgcm91bmQg
dHJpcHBpbmcuIFVwZGF0ZSByZXN1bHRzIGZvciBodWUgdG8gYmUgMC0+MSByYXRoZXIgdGhhbiAw
LT42IHdoaWNoIGFsbG93cyB0aGUgcm91bmQgdHJpcHBpbmcgdG8gc3VjY2VlZC4KKwogMjAyMC0w
NS0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERlcHJlY2F0
ZSBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoKSBJbmplY3RlZCBidW5kbGUgQyBBUEkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5j
cHAJKHJldmlzaW9uIDI2MTk2MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiVGVzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yVXRpbGl0aWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0z
Niw5NiArMzcsMTI4IEBAIFRFU1QoQ29sb3IsIFJHQlRvSFNMX1doaXRlKQogewogICAgIENvbG9y
IGNvbG9yID0gQ29sb3I6OndoaXRlOwogCi0gICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGln
aHRuZXNzOwotICAgIGNvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7Cisg
ICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChj
b2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5KCkpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgw
LCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNU
X0RPVUJMRV9FUSgxLCBsaWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEo
MSwgbGlnaHRuZXNzKTsKKyAgICAKKyAgICBFWFBFQ1RfRkxPQVRfRVEoY29sb3IubGlnaHRuZXNz
KCksIGxpZ2h0bmVzcyk7CisgICAgCisgICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IENvbG9y
KG1ha2VSR0JBRnJvbUhTTEEoaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhKSk7Cisg
ICAgRVhQRUNUX0VRKGNvbG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKIFRFU1QoQ29sb3Is
IFJHQlRvSFNMX0JsYWNrKQogewogICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmJsYWNrOwogCi0g
ICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOwotICAgIGNvbG9yLmdldEhTTCho
dWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgYXV0byBbaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3MsIGFscGhhXSA9IHNSR0JUb0hTTChjb2xvci50b1NSR0JBQ29tcG9uZW50c0xvc3N5
KCkpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9ET1VCTEVf
RVEoMCwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBsaWdodG5lc3MpOwor
ICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBzYXR1
cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMCwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVD
VF9GTE9BVF9FUShjb2xvci5saWdodG5lc3MoKSwgbGlnaHRuZXNzKTsKKworICAgIGF1dG8gcm91
bmRUcmlwcGVkQ29sb3IgPSBDb2xvcihtYWtlUkdCQUZyb21IU0xBKGh1ZSwgc2F0dXJhdGlvbiwg
bGlnaHRuZXNzLCBhbHBoYSkpOworICAgIEVYUEVDVF9FUShjb2xvciwgcm91bmRUcmlwcGVkQ29s
b3IpOwogfQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9SZWQpCiB7CiAgICAgQ29sb3IgY29sb3Io
MjU1LCAwLCAwKTsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAg
ICBjb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1
ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdC
QUNvbXBvbmVudHNMb3NzeSgpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAg
IEVYUEVDVF9GTE9BVF9FUSgxLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41
LCBsaWdodG5lc3MpOworCisgICAgRVhQRUNUX0ZMT0FUX0VRKGNvbG9yLmxpZ2h0bmVzcygpLCBs
aWdodG5lc3MpOwogCi0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLCBodWUpOwotICAgIEVYUEVDVF9E
T1VCTEVfRVEoMSwgc2F0dXJhdGlvbik7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgwLjUsIGxpZ2h0
bmVzcyk7CisgICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IENvbG9yKG1ha2VSR0JBRnJvbUhT
TEEoaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhKSk7CisgICAgRVhQRUNUX0VRKGNv
bG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVu
KQogewogICAgIENvbG9yIGNvbG9yKDAsIDI1NSwgMCk7CiAKLSAgICBkb3VibGUgaHVlLCBzYXR1
cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29sb3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGln
aHRuZXNzKTsKKyAgICBhdXRvIFtodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0g
c1JHQlRvSFNMKGNvbG9yLnRvU1JHQkFDb21wb25lbnRzTG9zc3koKSk7CiAKLSAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDIsIGh1ZSk7Ci0gICAgRVhQRUNUX0RPVUJMRV9FUSgxLCBzYXR1cmF0aW9uKTsK
LSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNSwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRf
RVEoMC4zMzMzMzMzNCwgaHVlKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2F0dXJhdGlvbik7
CisgICAgRVhQRUNUX0ZMT0FUX0VRKDAuNSwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9GTE9B
VF9FUShjb2xvci5saWdodG5lc3MoKSwgbGlnaHRuZXNzKTsKKworICAgIGF1dG8gcm91bmRUcmlw
cGVkQ29sb3IgPSBDb2xvcihtYWtlUkdCQUZyb21IU0xBKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzLCBhbHBoYSkpOworICAgIEVYUEVDVF9FUShjb2xvciwgcm91bmRUcmlwcGVkQ29sb3IpOwog
fQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9CbHVlKQogewogICAgIENvbG9yIGNvbG9yKDAsIDAs
IDI1NSk7CiAKLSAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3M7Ci0gICAgY29s
b3IuZ2V0SFNMKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKyAgICBhdXRvIFtodWUsIHNh
dHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGFdID0gc1JHQlRvSFNMKGNvbG9yLnRvU1JHQkFDb21w
b25lbnRzTG9zc3koKSk7CisKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC42NjY2NjY2OSwgaHVlKTsK
KyAgICBFWFBFQ1RfRkxPQVRfRVEoMSwgc2F0dXJhdGlvbik7CisgICAgRVhQRUNUX0ZMT0FUX0VR
KDAuNSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoNCwgaHVlKTsKLSAgICBF
WFBFQ1RfRE9VQkxFX0VRKDEsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMC41
LCBsaWdodG5lc3MpOworICAgIEVYUEVDVF9GTE9BVF9FUShjb2xvci5saWdodG5lc3MoKSwgbGln
aHRuZXNzKTsKKworICAgIGF1dG8gcm91bmRUcmlwcGVkQ29sb3IgPSBDb2xvcihtYWtlUkdCQUZy
b21IU0xBKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYSkpOworICAgIEVYUEVDVF9F
UShjb2xvciwgcm91bmRUcmlwcGVkQ29sb3IpOwogfQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9E
YXJrR3JheSkKIHsKICAgICBDb2xvciBjb2xvciA9IENvbG9yOjpkYXJrR3JheTsKIAotICAgIGRv
dWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVlLCBz
YXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGlnaHRu
ZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpKTsK
KworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBz
YXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC41MDE5NjA3ODQzMTM3MjU0OCwgbGln
aHRuZXNzKTsKKyAgICAKKyAgICBFWFBFQ1RfRkxPQVRfRVEoY29sb3IubGlnaHRuZXNzKCksIGxp
Z2h0bmVzcyk7CiAKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAsIGh1ZSk7Ci0gICAgRVhQRUNUX0RP
VUJMRV9FUSgwLCBzYXR1cmF0aW9uKTsKLSAgICBFWFBFQ1RfRE9VQkxFX0VRKDAuNTAxOTYwNzg0
MzEzNzI1NDgsIGxpZ2h0bmVzcyk7CisgICAgYXV0byByb3VuZFRyaXBwZWRDb2xvciA9IENvbG9y
KG1ha2VSR0JBRnJvbUhTTEEoaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MsIGFscGhhKSk7Cisg
ICAgRVhQRUNUX0VRKGNvbG9yLCByb3VuZFRyaXBwZWRDb2xvcik7CiB9CiAKIFRFU1QoQ29sb3Is
IFJHQlRvSFNMX0dyYXkpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6Z3JheTsKIAotICAg
IGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5nZXRIU0woaHVl
LCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJhdGlvbiwgbGln
aHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVudHNMb3NzeSgp
KTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVDVF9GTE9BVF9FUSgw
LCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC42Mjc0NTA5ODAzOTIxNTY4NSwg
bGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKLSAgICBFWFBFQ1Rf
RE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMC42Mjc0NTA5
ODAzOTIxNTY4NSwgbGlnaHRuZXNzKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoY29sb3IubGlnaHRu
ZXNzKCksIGxpZ2h0bmVzcyk7CisKKyAgICBhdXRvIHJvdW5kVHJpcHBlZENvbG9yID0gQ29sb3Io
bWFrZVJHQkFGcm9tSFNMQShodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGEpKTsKKyAg
ICBFWFBFQ1RfRVEoY29sb3IsIHJvdW5kVHJpcHBlZENvbG9yKTsKIH0KIAogVEVTVChDb2xvciwg
UkdCVG9IU0xfTGlnaHRHcmF5KQogewogICAgIENvbG9yIGNvbG9yID0gQ29sb3I6OmxpZ2h0R3Jh
eTsKIAotICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKLSAgICBjb2xvci5n
ZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAgIGF1dG8gW2h1ZSwgc2F0dXJh
dGlvbiwgbGlnaHRuZXNzLCBhbHBoYV0gPSBzUkdCVG9IU0woY29sb3IudG9TUkdCQUNvbXBvbmVu
dHNMb3NzeSgpKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUSgwLCBodWUpOworICAgIEVYUEVDVF9G
TE9BVF9FUSgwLCBzYXR1cmF0aW9uKTsKKyAgICBFWFBFQ1RfRkxPQVRfRVEoMC43NTI5NDExNzY0
NzA1ODgyMiwgbGlnaHRuZXNzKTsKKworICAgIEVYUEVDVF9GTE9BVF9FUShjb2xvci5saWdodG5l
c3MoKSwgbGlnaHRuZXNzKTsKIAotICAgIEVYUEVDVF9ET1VCTEVfRVEoMCwgaHVlKTsKLSAgICBF
WFBFQ1RfRE9VQkxFX0VRKDAsIHNhdHVyYXRpb24pOwotICAgIEVYUEVDVF9ET1VCTEVfRVEoMC43
NTI5NDExNzY0NzA1ODgyMiwgbGlnaHRuZXNzKTsKKyAgICBhdXRvIHJvdW5kVHJpcHBlZENvbG9y
ID0gQ29sb3IobWFrZVJHQkFGcm9tSFNMQShodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxw
aGEpKTsKKyAgICBFWFBFQ1RfRVEoY29sb3IsIHJvdW5kVHJpcHBlZENvbG9yKTsKIH0KIAogVEVT
VChDb2xvciwgVmFsaWRpdHkpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE5NjEpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNS0y
MCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBDb2xv
cjo6Z2V0SFNMKCkgd2l0aCBzUkdCVG9IU0wgdG8gZW5zdXJlIGl0IGF0IGxlYXN0IGdpdmVzIHNv
bWV3aGF0IHNlbnNpYmxlIHJlc3VsdHMgZm9yIEV4dGVuZGVkQ29sb3JzIGFuZCByZWR1Y2UgY29k
ZSBkdXBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEyMTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVk
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1t
b2RlLWNvbG9yLWZpbHRlcmVkLmh0bWw6CisgICAgICAgIFVwZGF0ZSB0ZXN0IHRvIGluY2x1ZGUg
YSB0ZXN0IGNhc2UgdGhhdCB1c2VzIGV4dGVuZGVkIGNvbG9ycy4KKwogMjAyMC0wNS0yMCAgSmFj
b2IgVXBob2ZmICA8amFjb2JfdXBob2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVz
dCBtZWRpYS92aWRlby16b29tLWNvbnRyb2xzLmh0bWwgaXMgZmxha3kKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjE5
NjEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNv
bG9yLWZpbHRlcmVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAg
UEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjb2xvcgogUEFTUyBwYXN0ZWRNYXJr
dXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyBjb2xv
cjogcmdiKDEyNywgMTI4LCAxMjcpOyI+SGVsbG88L3NwYW4+JwogUEFTUyBwYXN0ZWRNYXJrdXAg
aXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDE3MCwgMTcwLCAxNzApOyBjb2xvcjog
cmdiKDE3MCwgMTcwLCAxNzApOyI+SGVsbG88L3NwYW4+JwogUEFTUyBwYXN0ZWRNYXJrdXAgaXMg
JzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBjb2xvcjogcmdi
KDE5MSwgMTkxLCAxOTEpOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxz
cGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDIyLCAyMiwgMjIpOyBjb2xvcjogcmdiKDIyLCAy
MiwgMjIpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bh
bj4nCiBQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxl
PSJjb2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1
NSk7Ij5IZWxsbzwvc3Bhbj48L2xpPjxsaT5JdGVtIDI8L2xpPicKIFBBU1MgcGFzdGVkTWFya3Vw
IGlzICc8bGk+SXRlbSAxPC9saT48bGkgc3R5bGU9ImNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJh
Y2tncm91bmQtY29sb3I6IHJnYigyMTMsIDIxMywgMjEzKTsiPkhlbGxvIDE8L2xpPjxsaT5IZWxs
byAyPC9saT48bGk+SXRlbSAyPC9saT4nCiBQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPGxpPkl0ZW0g
MTwvbGk+PGxpPkhlbGxvIDE8L2xpPjxsaSBzdHlsZT0iY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3
KTsiPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xpPicKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNv
bG9yLWZpbHRlcmVkLmh0bWwJKHJldmlzaW9uIDI2MTk2MSkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxl
PVwiY29sb3I6IHJnYigxNTMsIDE1MywgMTUzKVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHls
ZT1cImNhcmV0LWNvbG9yOiByZ2IoMTI3LCAxMjgsIDEyNyk7IGNvbG9yOiByZ2IoMTI3LCAxMjgs
IDEyNyk7XCI+SGVsbG88L3NwYW4+Iik7CiAgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9
XCJjb2xvcjogcmdiKDExOSwgMTE5LCAxMTkpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxl
PVwiY2FyZXQtY29sb3I6IHJnYigxNzAsIDE3MCwgMTcwKTsgY29sb3I6IHJnYigxNzAsIDE3MCwg
MTcwKTtcIj5IZWxsbzwvc3Bhbj4iKTsKICAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1c
ImNvbG9yOiByZ2IoMTAyLCAxMDIsIDEwMilcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9
XCJjYXJldC1jb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx
OTEpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwi
Y29sb3I6IGNvbG9yKGRpc3BsYXktcDMgMC45MyAwLjkzIDAuOTMpOyBiYWNrZ3JvdW5kLWNvbG9y
OiBjb2xvcihkaXNwbGF5LXAzIDAuMiAwLjIgMC4yKVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBz
dHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMjIsIDIyLCAyMik7IGNvbG9yOiByZ2IoMjIsIDIyLCAy
Mik7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcIj5IZWxsbzwvc3Bhbj4i
KTsKIAogICAgIC8vIFRyYW5zZm9ybWVkIGxpc3QgaXRlbXMgb24gcGFzdGUKICAgICB0ZXN0Q29w
eVBhc3RlKCI8bGk+PHNwYW4gc3R5bGU9XCJjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6
IGJsYWNrXCI+SGVsbG88L3NwYW4+PC9saT4iLCAiPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0
eWxlPVwiY29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1
LCAyNTUpO1wiPkhlbGxvPC9zcGFuPjwvbGk+PGxpPkl0ZW0gMjwvbGk+IiwgdHJ1ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>