<?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>236185</bug_id>
          
          <creation_ts>2022-02-05 16:19:32 -0800</creation_ts>
          <short_desc>[LBSE] Begin stub implementation of transform support for SVG layers</short_desc>
          <delta_ts>2022-02-11 00:05:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>
          
          <blocked>90738</blocked>
    
    <blocked>236194</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837813</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-05 16:19:32 -0800</bug_when>
    <thetext>Prepare RenderLayer/RenderLayerBacking for RenderSVGModelObject support:

Add stubs in all relevant places that deal with transformations in RenderLayer/RenderLayerBacking where RenderSVGModelObject support needs to be added. The actual implementation of the SVG transformation &lt;-&gt; RenderLayer integration belongs to a separated patch series, therefore this patch only contains the necessary stub implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837817</commentid>
    <comment_count>1</comment_count>
      <attachid>451010</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-05 16:27:16 -0800</bug_when>
    <thetext>Created attachment 451010
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838106</commentid>
    <comment_count>2</comment_count>
      <attachid>451010</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-07 06:32:29 -0800</bug_when>
    <thetext>Comment on attachment 451010
Patch, v1

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        that hooks in SVG transformations within layers will follow in seperated

separated.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1336
&gt; +                m_transform-&gt;makeIdentity();

Ditto.

&gt; Source/WebCore/rendering/RenderLayer.cpp:1340
&gt; +            return;

Is the logic as wanted? SVG always returns here now.

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:667
&gt; +                t.makeIdentity();

I am guessing TransformationMatrix is identity by default? If so this does not seem needed (even though I know it is temporary).

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:671
&gt; +            return;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838565</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-08 01:48:04 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #2)
&gt; Comment on attachment 451010 [details]
&gt; Patch, v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451010&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        that hooks in SVG transformations within layers will follow in seperated
&gt; 
&gt; separated.
Thanks.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1336
&gt; &gt; +                m_transform-&gt;makeIdentity();
&gt; 
&gt; Ditto.
Yeah, it&apos;s a hack to let me enclose the FIXME comment in braces, otherwise style check complains about the brace. Is there another preferred way to write this?

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1340
&gt; &gt; +            return;
&gt; 
&gt; Is the logic as wanted? SVG always returns here now.
No it&apos;s not, good catch, it&apos;s not supposed to return. It doesn&apos;t matter at the moment, as the transformation is identity anyhow, but it matters when we add transformations (next patch series).

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:667
&gt; &gt; +                t.makeIdentity();
&gt; 
&gt; I am guessing TransformationMatrix is identity by default? If so this does
&gt; not seem needed (even though I know it is temporary).
See above, only a hack. (void) t; would do as well, or UNUSED_PARAM(t), however none really feels right.
 
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:671
&gt; &gt; +            return;
&gt; 
&gt; Ditto.

Will fix as well, once we agree on avoiding makeIdentity() hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838580</commentid>
    <comment_count>4</comment_count>
      <attachid>451010</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-08 02:24:14 -0800</bug_when>
    <thetext>Comment on attachment 451010
Patch, v1

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:667
&gt;&gt;&gt; +                t.makeIdentity();
&gt;&gt; 
&gt;&gt; I am guessing TransformationMatrix is identity by default? If so this does not seem needed (even though I know it is temporary).
&gt; 
&gt; See above, only a hack. (void) t; would do as well, or UNUSED_PARAM(t), however none really feels right.

I think it is good enough if you add an extra FIXME to remove the makeIdentity call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838620</commentid>
    <comment_count>5</comment_count>
      <attachid>451237</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-08 04:43:46 -0800</bug_when>
    <thetext>Created attachment 451237
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838622</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-08 04:44:53 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #4)
&gt; I think it is good enough if you add an extra FIXME to remove the
&gt; makeIdentity call.

As discussed, this patch is a bit too thin, I could at least add the new &apos;applyTransform()&apos; helper methods, and add the // FIXME: Add support for SVG comments there, instead of adding more branches to updateTransform(), making it harder to read. See v2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838624</commentid>
    <comment_count>7</comment_count>
      <attachid>451237</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-08 04:49:54 -0800</bug_when>
    <thetext>Comment on attachment 451237
Patch, v2

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

&gt; Source/WebCore/rendering/RenderLayer.h:994
&gt; +#endif

Does this need an ASSERT_NOT_REACHED here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839090</commentid>
    <comment_count>8</comment_count>
      <attachid>451360</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-09 04:43:15 -0800</bug_when>
    <thetext>Created attachment 451360
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839091</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-09 04:43:28 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #7)
&gt; Comment on attachment 451237 [details]
&gt; Patch, v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.h:994
&gt; &gt; +#endif
&gt; 
&gt; Does this need an ASSERT_NOT_REACHED here?
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839582</commentid>
    <comment_count>10</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-10 03:38:20 -0800</bug_when>
    <thetext>Holding back commit until EWS is happy - investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839585</commentid>
    <comment_count>11</comment_count>
      <attachid>451360</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-10 03:41:59 -0800</bug_when>
    <thetext>Comment on attachment 451360
Patch, v3

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:-1334
&gt; -        m_transform-&gt;makeIdentity();

Bazinga, we&apos;re now accumulating transforms due to the accidental removal of this line while refactoring in the latest iteration of this patch :-) Good that we have EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839586</commentid>
    <comment_count>12</comment_count>
      <attachid>451511</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-10 03:47:10 -0800</bug_when>
    <thetext>Created attachment 451511
Patch, v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839617</commentid>
    <comment_count>13</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-10 06:00:19 -0800</bug_when>
    <thetext>Hehe, too much refactoring, new problems:

frame #2: 0x0000000284adb0f0 WebCore`WebCore::RenderLayer::rendererLocation(this=0x000000010753b7b0) const at RenderLayer.h:985:9
   982               return downcast&lt;RenderSVGModelObject&gt;(renderer()).layoutLocation();
   983   #endif
   984   
-&gt; 985           ASSERT_NOT_REACHED();
   986           return LayoutPoint();
   987       }
   988   
(lldb) p renderer().renderName()
(const char *) $0 = 0x0000000286a66d15 &quot;RenderInline&quot;

rendererLocation() is called for RenderInlines, just not for RenderSVGInlines -- therefore the ASSERT_NOT_REACHED() in rendererLocation() is wrong.

Previously we had: LayoutPoint renderBoxLocation() const { return is&lt;RenderBox&gt;(renderer()) ? downcast&lt;RenderBox&gt;(renderer()).location() : LayoutPoint(); }

For RenderInlines that create RenderLayers the renderBoxLocation() == rendererLocation() is defined to be LayoutPoint() -- will adapt the patch once again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839618</commentid>
    <comment_count>14</comment_count>
      <attachid>451523</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-10 06:00:55 -0800</bug_when>
    <thetext>Created attachment 451523
Patch, v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840237</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-02-11 00:04:21 -0800</bug_when>
    <thetext>Committed r289606 (247119@trunk): &lt;https://commits.webkit.org/247119@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840239</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-11 00:05:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88802071&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451010</attachid>
            <date>2022-02-05 16:27:16 -0800</date>
            <delta_ts>2022-02-08 04:43:41 -0800</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-236185-20220205162715.patch</filename>
            <type>text/plain</type>
            <size>7074</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFmMmM4N2U1N2M3MjNi
ZjQ2MzUxNGQ3YmI2OTQyNDc0ZWZkNWQyYi4uZTg5ZWU5MzVlZWJmNmM0ZWQ1NGRmNjNhZGVkMmY3
ZTVmYzkwMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAyLTA1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBTVkcg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgc3R1YnMgZm9yIGFsbCBwbGFjZXMgd2hlcmUgUmVuZGVyU1ZHTW9kZWxPYmplY3Qgc3VwcG9y
dCBuZWVkcyB0byBiZQorICAgICAgICBhZGRlZCBpbiBSZW5kZXJMYXllciAmIFJlbmRlckxheWVy
QmFja2luZy4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICB0aGF0IGhvb2tzIGlu
IFNWRyB0cmFuc2Zvcm1hdGlvbnMgd2l0aGluIGxheWVycyB3aWxsIGZvbGxvdyBpbiBzZXBlcmF0
ZWQKKyAgICAgICAgYXRvbWljIHBpZWNlcy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2luIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKToKKwogMjAyMi0wMi0wNSAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
TEJTRV0gSW50cm9kdWNlIFJlbmRlclNWR01vZGVsT2JqZWN0IGF3YXJlIGdlb21ldHJ5LXF1ZXJ5
IGhlbHBlcnMgaW4gUmVuZGVyTGF5ZXJCYWNraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAppbmRleCA3N2E4YTI3ODEyOTI1YTVhNDY3MmM2NWRmOThjZjdhZGIyOTZm
ZGU3Li4xODNjYjE1YTNmYzhkN2VhODhhZDg4N2VjNTBkNGU3NGZlMDliMWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChjKSAyMDIwIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAsIDIwMjEs
IDIwMjIgSWdhbGlhIFMuTC4KICAqCiAgKiBQb3J0aW9ucyBhcmUgQ29weXJpZ2h0IChDKSAxOTk4
IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgogICoKQEAgLTEwNiw2ICsxMDYs
NyBAQAogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRl
clJlcGxpY2EuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
Y3JvbGxiYXJQYXJ0LmgiCkBAIC0xMjkzLDcgKzEyOTQsOCBAQCBzdGF0aWMgaW5saW5lIExheW91
dFJlY3QgY29tcHV0ZVJlZmVyZW5jZUJveChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBD
U1NCbwogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkw
NDcKICAgICBpZiAoIXJlbmRlcmVyLmlzQm94KCkpCiAgICAgICAgIHJldHVybiByb290UmVsYXRp
dmVCb3VuZHM7Ci0gICAgCisKKyAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHRyYW5zZm9y
bSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwogICAg
IHJldHVybiBjb21wdXRlUmVmZXJlbmNlUmVjdEZyb21Cb3goZG93bmNhc3Q8UmVuZGVyQm94Pihy
ZW5kZXJlciksIGJveFR5cGUsIG9mZnNldEZyb21Sb290KTsKIH0KIApAQCAtMTMxNCw5ICsxMzE2
LDMwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgfQogICAgIAog
ICAgIGlmIChoYXNUcmFuc2Zvcm0pIHsKLSAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKTsKKyAgICAgICAgLy8gUmVuZGVyTGF5ZXIgY3JlYXRp
b24gaXMgb25seSBwb3NzaWJsZSBmb3IgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCBkZXJpdmVkIHJl
bmRlcmVyczogUmVuZGVyQm94LAorICAgICAgICAvLyBSZW5kZXJJbmxpbmUgYW5kIFJlbmRlckxp
bmVCcmVhay4gVGhlIGxhdHRlciBleHBsaWNpdGx5IHR1cm5zIG9mZiBsYXllciBjcmVhdGlvbiwg
YnkgcmV0dXJuaW5nCisgICAgICAgIC8vIGZhbHNlIGZyb20gcmVxdWlyZXNMYXllcigpLiBTcGVj
aWZ5aW5nIGEgQ1NTICd0cmFuc2Zvcm0nIHByb3BlcnR5IGRvZXMgbm90IGluZmx1ZW5jZSB0aGUg
bGF5ZXIKKyAgICAgICAgLy8gY3JlYXRpb24gZm9yIFJlbmRlcklubGluZSwgYXMgaXRzIHJlcXVp
cmVzTGF5ZXIoKSBtZXRob2QgZG9lcyBub3QgdGVzdCBpZiBDU1MgdHJhbnNmb3JtcyBhcmUKKyAg
ICAgICAgLy8gcHJlc2VudC4gVGhlcmVmb3JlIC0gd2hlbiBMQlNFIGlzIHR1cm5lZCBvZmYgLSBv
bmx5IFJlbmRlckJveCBkZXJpdmVkIHJlbmRlcmVycyBjYW4gZW5kIHVwIGhlcmUuCisgICAgICAg
IC8vCisgICAgICAgIC8vIFdoZW4gTEJTRSBpcyB0dXJuZWQgb24sIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IGRlcml2ZWQgcmVuZGVyZXJzIGNhbiBhbHNvIHBvdGVudGlhbGx5IGNyZWF0ZQorICAgICAg
ICAvLyB0cmFuc2Zvcm1hYmxlIGxheWVycyBhbmQgcmVhY2ggdGhpcyBjb2RlIHBhdGguCiAgICAg
ICAgIG1fdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKLSAgICAgICAgcmVuZGVyQm94LnN0eWxl
KCkuYXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJl
bmRlckJveC5yZWZlcmVuY2VCb3godHJhbnNmb3JtQm94VG9DU1NCb3hUeXBlKHJlbmRlckJveC5z
dHlsZSgpLnRyYW5zZm9ybUJveCgpKSksIHJlbmRlckJveC5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKKworICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkgewor
ICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cigpKTsKKyAgICAgICAgICAgIHJlbmRlckJveC5zdHlsZSgpLmFwcGx5VHJhbnNmb3JtKCptX3Ry
YW5zZm9ybSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZW5kZXJCb3gucmVmZXJlbmNlQm94KHRy
YW5zZm9ybUJveFRvQ1NTQm94VHlwZShyZW5kZXJCb3guc3R5bGUoKS50cmFuc2Zvcm1Cb3goKSkp
LCByZW5kZXJCb3guZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgICAgIH0g
ZWxzZSB7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgICAgICAgICBp
ZiAoaXM8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVy
U1ZHTW9kZWxPYmplY3QgZGVyaXZlZCByZW5kZXJlcnMKKyAgICAgICAgICAgICAgICBtX3RyYW5z
Zm9ybS0+bWFrZUlkZW50aXR5KCk7CisgICAgICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICBtYWtlTWF0cml4UmVuZGVyYWJsZSgqbV90cmFuc2Zvcm0sIGNhblJlbmRl
cjNEVHJhbnNmb3JtcygpKTsKICAgICB9CiAKQEAgLTEzMzIsNiArMTM1NSw3IEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmCiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAorICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9y
IFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCiAgICAgaWYgKCFpczxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xNzU4LDYgKzE3
ODIsNyBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKE9wdGlvblNldDxV
cGRhdGVMYXllclBvc2l0aW9uc0ZsYWc+KiBmbGFncwogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBS
ZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJS
ZWN0KSBjb25zdAogeworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1
cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCiAgICAgaWYg
KCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0x
NzkzLDYgKzE4MTgsMTAgQEAgRmxvYXRQb2ludCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmln
aW4oKSBjb25zdAogICAgIGlmICghcmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVy
dHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJl
YW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVu
ZGVyZXJzCisgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQorICAgICAgICByZXR1
cm4geyB9OworCiAgICAgYXV0byBib3JkZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRl
cmVyKCkpLmJvcmRlckJveFJlY3QoKTsKICAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigpLCBib3JkZXJCb3guc2l6
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggYTY1ZTJjNGI1ZmIyZjEyMjJlNzdlOWQxY2E5ZDM5MGZmNjgwODBjMC4uZDFl
YTM2NjIwM2I2MmM1MDVmNmIxMzRjYzI3NDQ1Yjg3NzVjM2Y2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTY1Nyw4ICs2NTcsMjAg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiAgICAgLy8gYmFrZWQgaW50byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhh
dC4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAgIGlmIChtX293bmluZ0xheWVyLmhh
c1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRl
ckJveD4ocmVuZGVyZXIoKSk7Ci0gICAgICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMocmVuZGVyQm94LmJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVG
YWN0b3IoKSksIFJlbmRlclN0eWxlOjppbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyk7Cisg
ICAgICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBhdXRv
JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpOworICAgICAgICAg
ICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZW5kZXJC
b3guYm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6Omlu
ZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKKyAgICAgICAgfSBlbHNlIHsKKyNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgICAgIGlmIChpczxSZW5kZXJTVkdN
b2RlbE9iamVjdD4ocmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBk
ZXJpdmVkIHJlbmRlcmVycworICAgICAgICAgICAgICAgIHQubWFrZUlkZW50aXR5KCk7CisgICAg
ICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBtYWtlTWF0cml4UmVu
ZGVyYWJsZSh0LCBjb21wb3NpdG9yKCkuY2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0K
ICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451237</attachid>
            <date>2022-02-08 04:43:46 -0800</date>
            <delta_ts>2022-02-09 04:43:09 -0800</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-236185-20220208044342.patch</filename>
            <type>text/plain</type>
            <size>21380</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVmMjU5MjViNzcxMjYy
OWJjYzM4ZGJhNDM4NDg0N2MzM2E3ZjczOC4uYmJmNGVhM2Q4NWI2NDU3YTU1MjczMzUzYzAzZGFi
ZTc3Nzg2MDE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTA4ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBTVkcg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5kZXJMYXllciAvIFJlbmRlckxheWVyQmFja2luZyB1c2UgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgdG8gY29tcHV0ZSBhIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb20g
dGhlIENTUyBUcmFuc2Zvcm0gcHJvcGVydGllcy4KKworICAgICAgICBUbyBob29rIGluIFNWRyB0
cmFuc2Zvcm0gc3VwcG9ydCwgd2hpY2ggZ29lcyBiZXlvbmQgcHVyZSBDU1MgcHJvcGVydGllcwor
ICAgICAgICB0aGF0IGluZmx1ZW5jZSB0aGUgImVmZmVjdGl2ZSB0cmFuc2Zvcm0iIGZvciBhIGNl
cnRhaW4gU1ZHIGVsZW1lbnQsCisgICAgICAgIFJlbmRlclN0eWxlIGlzIG5vdCB0aGUgcmlnaHQg
cGxhY2UgdG8gcGxhY2UgdGhlIGFwcGx5VHJhbnNmb3JtKCkKKyAgICAgICAgaW1wbGVtZW50YXRp
b24gZm9yIFNWRyBzcGVjaWZpYyByZXF1aXJlbWVudHMuCisKKyAgICAgICAgVGhlcmVmb3JlIGlu
dHJvZHVjZSBhIHZpcnR1YWwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0o
KQorICAgICAgICBmdW5jdGlvbiwgdGhhdCBpcyBpbXBsZW1lbnRlZCBpbiBSZW5kZXJCb3ggLyBS
ZW5kZXJTVkdNb2RlbE9iamVjdC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oKSBzdGF5cyBhIHN0dWIKKyAgICAgICAgYW5kIFJlbmRl
ckJveDo6YXBwbHlUcmFuc2Zvcm0oKSBzaW1wbHkgZm9yd2FyZHMgdG8gUmVuZGVyU3R5bGUsCisg
ICAgICAgIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBh
bGxvd3MgU1ZHIHRvIGFkZCBhZGRpdGlvbmFsIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdHJhbnNm
b3JtYXRpb24KKyAgICAgICAgc3RhY2ssIHdoaWNoIGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQgJ3Zp
ZXdCb3gnIHN1cHBvcnQgYW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXBwbHlU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFu
c2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZl
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlckJvcmRlckJveFJlY3QgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hv
clBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1h
dHJpeEZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisKIDIwMjItMDItMDggIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hIHJvdGF0aW9uIHNlc3Npb24gc2hvdWxkIG5vdCB1c2UgSU9TdXJmYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDgwMjRmNDU2NjJmYzE2ZjBhNGRm
OGJjNTBkMDcwZGM5YzU0NWY1MzAuLjA1OWY4NzBlYjVhN2JjYzFiNGUxMmU1MDBjMzQ4MDZkYjFk
YTU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02NjAsNiAr
NjYwLDExIEBAIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCiAgICAgICAg
IGxheWVyKCktPnVwZGF0ZVRyYW5zZm9ybSgpOwogfQogCit2b2lkIFJlbmRlckJveDo6YXBwbHlU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBv
cHRpb25zKSBjb25zdAoreworICAgIHN0eWxlKCkuYXBwbHlUcmFuc2Zvcm0odCwgYm91bmRpbmdC
b3gsIG9wdGlvbnMpOworfQorCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNh
bFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0IGF2YWlsYWJsZVdpZHRoLCBSZW5kZXJCbG9jayYgY2IsIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBmcmFnbWVudCwgQWxsb3dJbnRyaW5zaWMgYWxsb3dJbnRyaW5zaWMpIGNvbnN0CiB7CiAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDIwOWMzOTBkYTQzNzllMWQ3ZDQ3YzExNDJjOGE4MWE5
MjlmOTc5MzQuLmRhM2RkYmRiMDNhZGE5MTExZWY1MTNhN2I3OGJmZjJmZDc5MDQ3ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIxOSw2ICsyMTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkLCBj
b25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJhbnNmb3Jt
KCk7CisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUgY29udGVudFNpemUoKSBjb25zdCB7IHJl
dHVybiB7IGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkgfTsgfQogICAgIExheW91dFVu
aXQgY29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgoMF9sdSwgcGFkZGluZ0Jv
eFdpZHRoKCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1Mjhm
MDIyMDRhNjE4NmY5ODUxYTMyNGM1MGU5YjYxY2IyNTIwMzc0Li45MTVmYTY3YjQyNjBjZTQ0OTVh
MGI5NTliZDU3YmI0ZmM4YTA4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI3MjMsNCArMjcyMywxMSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0Ojpjb2xsZWN0QWJzb2x1dGVRdWFkc0ZvckNvbnRpbnVhdGlvbihW
ZWN0b3I8RmxvYXRRdWFkPgogICAgIH0KIH0KIAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmLCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4pIGNvbnN0Cit7
CisgICAgLy8gYXBwbHlUcmFuc2Zvcm0oKSBpcyBvbmx5IHVzZWQgdGhyb3VnaCBSZW5kZXJMYXll
ciosIHdoaWNoIG9ubHkgaW52b2tlcyB0aGlzIGZvciBSZW5kZXJCb3ggZGVyaXZlZCByZW5kZXJl
cnMsIHRodXMgbm90IGZvcgorICAgIC8vIFJlbmRlcklubGluZS9SZW5kZXJMaW5lQnJlYWsgLSB0
aGUgb3RoZXIgdHdvIHJlbmRlcmVycyB0aGF0IGluaGVyaXQgZnJvbSBSZW5kZXJCb3hNb2RlbE9i
amVjdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aAppbmRleCAyMjc2N2ViMmNmY2FiMzE0YTcxNTA0NmRhNjUwZTM0MDQzMjhlMGM5Li4yMmQ2YjJk
YmFiODJiZWFhNzBhMGExODE4ZDlkMWIyNzRlN2ZjZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFz
cyBCb3JkZXJFZGdlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21l
bnQ7CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CitjbGFzcyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIElubGluZUl0ZXJhdG9yIHsKIGNsYXNzIElu
bGluZUJveEl0ZXJhdG9yOwpAQCAtMjQ4LDYgKzI0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc092ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZvaWQg
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7
CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRG9jdW1l
bnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGZmYWRkMDFkZjRkMGNiNWM1MWE5YjIxNThhMzI5OGNm
MDU0YmQwMTMuLmIxYzU5NWMyZDViNDY1NTdhZWUwYjBhNTQ3MzgyOGYyMGIwYWU1ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWRvYmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoYykgMjAyMCwg
MjAyMSwgMjAyMiBJZ2FsaWEgUy5MLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMp
IDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCiAgKgpAQCAtMTMzMCw5
ICsxMzMwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgfQog
ICAgIAogICAgIGlmIChoYXNUcmFuc2Zvcm0pIHsKLSAgICAgICAgYXV0byYgcmVuZGVyQm94ID0g
ZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKTsKLSAgICAgICAgbV90cmFuc2Zvcm0tPm1h
a2VJZGVudGl0eSgpOwotICAgICAgICByZW5kZXJCb3guc3R5bGUoKS5hcHBseVRyYW5zZm9ybSgq
bV90cmFuc2Zvcm0sIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVuZGVyQm94LnJlZmVyZW5jZUJv
eCh0cmFuc2Zvcm1Cb3hUb0NTU0JveFR5cGUocmVuZGVyQm94LnN0eWxlKCkudHJhbnNmb3JtQm94
KCkpKSwgcmVuZGVyQm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgICAg
ICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHJlZmVyZW5jZSBib3ggY29tcHV0YXRpb24gZm9y
IFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCisgICAgICAgIEZsb2F0UmVj
dCByZWZlcmVuY2VCb3g7CisgICAgICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQor
ICAgICAgICAgICAgcmVmZXJlbmNlQm94ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhkb3duY2Fz
dDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLnJlZmVyZW5jZUJveCh0cmFuc2Zvcm1Cb3hUb0NTU0Jv
eFR5cGUocmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybUJveCgpKSksIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKworICAgICAgICByZW5kZXJlcigpLmFwcGx5
VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgcmVmZXJlbmNlQm94KTsKICAgICAgICAgbWFrZU1hdHJp
eFJlbmRlcmFibGUoKm1fdHJhbnNmb3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAg
fQogCkBAIC0xMzQ4LDYgKzEzNTEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXll
cjo6Y3VycmVudFRyYW5zZm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlm
ICghbV90cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiB7IH07CiAKKyAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBk
ZXJpdmVkIHJlbmRlcmVycwogICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTc4Nyw2ICsxNzkxLDcgQEAgYm9vbCBSZW5kZXJMYXll
cjo6dXBkYXRlTGF5ZXJQb3NpdGlvbihPcHRpb25TZXQ8VXBkYXRlTGF5ZXJQb3NpdGlvbnNGbGFn
PiogZmxhZ3MKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZl
VHJhbnNmb3JtKGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVjdCkgY29uc3QKIHsKKyAgICAvLyBG
SVhNRTogW0xCU0VdIFVwc3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2Rl
bE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwogICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJl
cigpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTgyMSw5ICsxODI2LDcgQEAgRmxvYXRQ
b2ludCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdAogewogICAgIGlmICgh
cmVuZGVyZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKLQotICAgIGF1dG8gYm9yZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cigpKS5ib3JkZXJCb3hSZWN0KCk7Ci0gICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2lu
dChyZW5kZXJlcigpLnN0eWxlKCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgYm9yZGVyQm94LnNpemUo
KSk7CisgICAgcmV0dXJuIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChyZW5kZXJlcigpLnN0eWxl
KCkucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkuc2l6ZSgpKTsK
IH0KIAogc3RhdGljIGlubGluZSBib29sIGlzQ29udGFpbmVyRm9yUG9zaXRpb25lZChSZW5kZXJM
YXllciYgbGF5ZXIsIFBvc2l0aW9uVHlwZSBwb3NpdGlvbiwgYm9vbCBlc3RhYmxpc2hlc1RvcExh
eWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBhYTI5ZmZlOTlk
MTQ2OTBjMzMxNjJmZDU0MmRlMTY0NTVkMmNjYjlhLi43MDEyYjA0MmI1ZmZjZjRhZjQ2ZTM4N2Zj
YTllNzBlNjQyMmJjZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApA
QCAtOTg0LDYgKzk4NCwxNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQo
KTsKICAgICB9CiAKKyAgICBMYXlvdXRSZWN0IHJlbmRlcmVyQm9yZGVyQm94UmVjdCgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3Qo
KTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgaWYgKGlzPFJl
bmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkuYm9yZGVyQm94UmVjdEVxdWl2
YWxlbnQoKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgIH0KKwog
ICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0Jiwg
Ym9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAKICAgICBzdGQ6OnBhaXI8UGF0aCwgV2luZFJ1bGU+
IGNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3Qg
TGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzRm9yTm9uQm94ZXMpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA5YWY1
ZmIwNWQxMzYxYmJlMzAxYmZhODI2YzIyMzlmYzUxYzc4MTFiLi45NzRhOTUyMWMwMmFkMjMyZDJm
ZjJhYjM3YzY1OTM1N2U5ZTQwNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjA0LDIwICs2MDQsNiBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6ZGVzdHJveUdyYXBoaWNzTGF5ZXJzKCkKICAgICBHcmFwaGljc0xheWVyOjp1
bnBhcmVudEFuZENsZWFyKG1fZ3JhcGhpY3NMYXllcik7CiB9CiAKLXN0YXRpYyBMYXlvdXRSZWN0
IHJlbmRlcmVyQm9yZGVyQm94UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5k
ZXJlcikKLXsKLSAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCi0gICAgICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKS5ib3JkZXJCb3hSZWN0KCk7Ci0KLSNpZiBF
TkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKLSAgICBpZiAoaXM8UmVuZGVyU1ZHTW9kZWxP
YmplY3Q+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR01vZGVs
T2JqZWN0PihyZW5kZXJlcikuYm9yZGVyQm94UmVjdEVxdWl2YWxlbnQoKTsKLSNlbmRpZgotCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExheW91dFJlY3QoKTsKLX0KLQog
c3RhdGljIExheW91dFJlY3Qgc2Nyb2xsQ29udGFpbmVyTGF5ZXJCb3goY29uc3QgUmVuZGVyQm94
JiByZW5kZXJCb3gpCiB7CiAgICAgcmV0dXJuIHJlbmRlckJveC5wYWRkaW5nQm94UmVjdCgpOwpA
QCAtNjUxLDE0ICs2MzcsMTMgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU9wYWNp
dHkoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T3Bh
Y2l0eShjb21wb3NpdGluZ09wYWNpdHkoc3R5bGUub3BhY2l0eSgpKSk7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJT
dHlsZSYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIG1fb3duaW5nTGF5ZXIudHJh
bnNmb3JtKCksIGJ1dCB0aGF0IGN1cnJlbnRseSBoYXMgdHJhbnNmb3JtLW9yaWdpbgogICAgIC8v
IGJha2VkIGludG8gaXQsIGFuZCB3ZSBkb24ndCB3YW50IHRoYXQuCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdDsKICAgICBpZiAobV9vd25pbmdMYXllci5oYXNUcmFuc2Zvcm0oKSkgewotICAg
ICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpOwot
ICAgICAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJl
bmRlckJveC5ib3JkZXJCb3hSZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5kZXJTdHls
ZTo6aW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMpOworICAgICAgICByZW5kZXJlcigpLmFw
cGx5VHJhbnNmb3JtKHQsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMobV9vd25pbmdMYXllci5yZW5k
ZXJlckJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxlOjpp
bmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyk7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJh
YmxlKHQsIGNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgfQogICAg
IApAQCAtNjgzLDcgKzY2OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGls
ZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExheW91dFJlY3QmCiAgICAgfQogCiAg
ICAgY29uc3QgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IHRoaXMtPmRldmljZVNjYWxlRmFjdG9y
KCk7Ci0gICAgYXV0byBib3JkZXJCb3hSZWN0ID0gcmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRl
cmVyKCkpOworICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IG1fb3duaW5nTGF5ZXIucmVuZGVyZXJC
b3JkZXJCb3hSZWN0KCk7CiAgICAgYXV0byB0cmFuc2Zvcm1PcmlnaW4gPSBjb21wdXRlVHJhbnNm
b3JtT3JpZ2luRm9yUGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7CiAgICAgYXV0byBsYXllck9mZnNl
dCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG9mZnNldEZyb21QYXJl
bnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGF1dG8gYW5jaG9yID0g
RmxvYXRQb2ludDNEIHsKQEAgLTEzOTYsNyArMTM4MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVHZW9tZXRyeShjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRlZEFuY2VzdG9y
KQogCiAgICAgICAgIGF1dG8gY29tcHV0ZU1hc2tzVG9Cb3VuZHNSZWN0ID0gWyZdIHsKICAgICAg
ICAgICAgIGlmICgocmVuZGVyZXIoKS5zdHlsZSgpLmNsaXBQYXRoKCkgfHwgcmVuZGVyZXIoKS5z
dHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSAmJiAhbV9jaGlsZENsaXBwaW5nTWFza0xheWVyKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50c0NsaXBwaW5nUmVjdCA9IEZsb2F0Um91bmRl
ZFJlY3QocmVuZGVyZXIoKS5zdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZW5kZXJl
ckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbnRl
bnRzQ2xpcHBpbmdSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChyZW5kZXJlcigpLnN0eWxlKCkuZ2V0
Um91bmRlZElubmVyQm9yZGVyRm9yKG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0
KCkpKTsKICAgICAgICAgICAgICAgICBjb250ZW50c0NsaXBwaW5nUmVjdC5tb3ZlKExheW91dFNp
emUoLWNsaXBMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29udGVudHNDbGlwcGluZ1JlY3Q7CiAgICAgICAgICAgICB9CkBAIC0zNzQwLDE2ICsz
NzI1LDE2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUg
dGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uJiBhbmltCiAKICAgICBib29sIGRpZEFuaW1hdGUg
PSBmYWxzZTsKIAotICAgIGlmIChoYXNSb3RhdGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24ocm90YXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3Qo
cmVuZGVyZXIoKSkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUo
KSwgdGltZU9mZnNldCkpCisgICAgaWYgKGhhc1JvdGF0ZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFk
ZEFuaW1hdGlvbihyb3RhdGVWZWN0b3IsIHNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIucmVu
ZGVyZXJCb3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1h
dGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCiAgICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwogCi0g
ICAgaWYgKGhhc1NjYWxlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHNjYWxlVmVj
dG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpLnNp
emUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkp
CisgICAgaWYgKGhhc1NjYWxlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHNjYWxl
VmVjdG9yLCBzbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVj
dCgpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVP
ZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlID0gdHJ1ZTsKIAotICAgIGlmIChoYXNUcmFuc2xh
dGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNsYXRlVmVjdG9yLCBzbmFw
cGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpLnNpemUoKSwgJmFu
aW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCisgICAgaWYg
KGhhc1RyYW5zbGF0ZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2xhdGVW
ZWN0b3IsIHNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0
KCkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9m
ZnNldCkpCiAgICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwogCi0gICAgaWYgKGhhc1RyYW5zZm9y
bSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHNuYXBw
ZWRJbnRSZWN0KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigpKSkuc2l6ZSgpLCAmYW5p
bWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKKyAgICBpZiAo
aGFzVHJhbnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZl
Y3Rvciwgc25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3Qo
KSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zm
c2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CiAKICAgICBpZiAoaGFzT3BhY2l0eSAm
JiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJbnRTaXplIHsg
fSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCkBA
IC0zOTg0LDcgKzM5NjksNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllckJhY2tp
bmc6OnRyYW5zZm9ybU1hdHJpeEZvclByb3BlcnR5KEFuaW1hdGVkUHJvcAogCiAgICAgYXV0byBh
cHBseVRyYW5zZm9ybU9wZXJhdGlvbiA9IFsmXShUcmFuc2Zvcm1PcGVyYXRpb24qIG9wZXJhdGlv
bikgewogICAgICAgICBpZiAob3BlcmF0aW9uKQotICAgICAgICAgICAgb3BlcmF0aW9uLT5hcHBs
eShtYXRyaXgsIHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigp
KSkuc2l6ZSgpKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbi0+YXBwbHkobWF0cml4LCBzbmFwcGVk
SW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCkpOwog
ICAgIH07CiAKICAgICBpZiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zbGF0ZSkK
QEAgLTM5OTQsNyArMzk3OSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyQmFj
a2luZzo6dHJhbnNmb3JtTWF0cml4Rm9yUHJvcGVydHkoQW5pbWF0ZWRQcm9wCiAgICAgZWxzZSBp
ZiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVJvdGF0ZSkKICAgICAgICAgYXBwbHlUcmFu
c2Zvcm1PcGVyYXRpb24ocmVuZGVyZXIoKS5zdHlsZSgpLnJvdGF0ZSgpKTsKICAgICBlbHNlIGlm
IChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKQotICAgICAgICByZW5kZXJl
cigpLnN0eWxlKCkudHJhbnNmb3JtKCkuYXBwbHkoc25hcHBlZEludFJlY3QocmVuZGVyZXJCb3Jk
ZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5zaXplKCksIG1hdHJpeCk7CisgICAgICAgIHJlbmRlcmVy
KCkuc3R5bGUoKS50cmFuc2Zvcm0oKS5hcHBseShzbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVy
LnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCksIG1hdHJpeCk7CiAgICAgZWxzZQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXggOWMzMTRhZmIxMGQ4YzVhNzAyYWZl
MjAyNjUzZmRhNzA0YmRmNjhiYi4uYzM1NGYzNzdmMjhlMWMyMjI2YTlhMWUyYzU0NmMzNjE4MjYx
NzNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcExvY2FsVG9T
VkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wq
IHdhc0ZpeGVkKSBjb25zdDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwg
T3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVy
U3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0ID0gMDsKKwogcHJvdGVjdGVkOgog
ICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VU
eXBlRmxhZ3MpOwogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1lbnQmLCBSZW5kZXJT
dHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5kZXggNzU1NDdiOGU2NGQ5ZDAwZDA2
ZWM1MTE3NThmOGE1NDI2MTBjNmE2My4uMTlhMWZmZDk2OWI0MGNkZjJmMGVhNmM5MGU4ZTRhOGEy
MDU4ZjY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTI3NiwxMCArMjc2LDkgQEAgYm9vbCBSZW5kZXJTVkdN
b2RlbE9iamVjdDo6Y2hlY2tFbmNsb3N1cmUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0
IEZsb2F0UmUKICAgICByZXR1cm4gcmVjdC5jb250YWlucyhjdG0ubWFwUmVjdChyZW5kZXJlci0+
cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwogfQogCi12b2lkIFJlbmRlclNWR01v
ZGVsT2JqZWN0OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwg
T3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zZm9ybSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0eWxlKTsKICAgICBVTlVTRURfUEFSQU0oYm91bmRpbmdCb3gpOwogICAgIFVOVVNFRF9QQVJB
TShvcHRpb25zKTsKICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR1JlbmRlclN1cHBv
cnQgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5oCmluZGV4IDdiMmUzMTE0MTczZDczOGM5ZThmYWJjMzU1MzBlZTYyN2I1
ZjRmYmEuLjkzZmM5ZmFlMmRlZTYyYWRiNmRkNTQ1YzlhOTNjYjM4MjY1ZmJlNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
QEAgLTU4LDggKzU4LDcgQEAgcHVibGljOgogCiAgICAgaW5saW5lIFNWR0VsZW1lbnQmIGVsZW1l
bnQoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gTWFyayBmaW5hbCwgYWRkIGFwcGx5
VHJhbnNmb3JtIHRvIFJlbmRlckxheWVyTW9kZWxPYmplY3QKLSAgICB2b2lkIGFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbj4pIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVy
U3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNm
b3JtT3BlcmF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBNaW1pYyB0aGUgUmVuZGVy
Qm94IGFjY2Vzc29ycyAtIGJ5IHNoYXJpbmcgdGhlIHNhbWUgdGVybWlub2xvZ3kgdGhlIHBhaW50
aW5nIC8gaGl0IHRlc3RpbmcgLyBsYXlvdXQgbG9naWMgaXMKICAgICAvLyBzaW1pbGFyIHRvIHJl
YWQgY29tcGFyZWQgdG8gbm9uLVNWRyByZW5kZXJlcnMgc3VjaCBhcyBSZW5kZXJCb3ggJiBmcmll
bmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
aW5kZXggNDg3ZjI2MzliZGU2YzJkYzc3YTdlYzFmYWE4YmIwMWNkYjczMWY3My4uMWJjY2Y5Y2Rl
Zjc0OTE0ZTQ4MDUzNDIyNDEyNDAyYmQ4NjU2NWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC02MDgsMTIgKzYwOCwxMCBAQCBMYXlv
dXRSZWN0IFJlbmRlclNWR1Jvb3Q6Om92ZXJmbG93Q2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQm
IGxvY2F0aW9uLCBSZW5kZXJGcgogICAgIHJldHVybiBjbGlwUmVjdDsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdSb290OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25T
ZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QK
IHsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmb3JtKTsKLSAgICBVTlVTRURfUEFSQU0oc3R5bGUp
OwotICAgIFVOVVNFRF9QQVJBTShib3VuZGluZ0JveCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9wdGlv
bnMpOworICAgIFJlbmRlclJlcGxhY2VkOjphcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5k
aW5nQm94LCBvcHRpb25zKTsKKwogICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHUmVu
ZGVyU3VwcG9ydCBjaGFuZ2VzCiAgICAgLy8gU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlUcmFuc2Zv
cm0oKnRoaXMsIHRyYW5zZm9ybSwgc3R5bGUsIGJvdW5kaW5nQm94LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgb3B0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCmluZGV4IDY2YmFiMDg4MWEzN2ZlNWYxMTBiNDY1ZmUwZDgzYjFmYWM3
ODY4YzQuLjQzYzEyZWE4MjZlMTljNzI2ZDlkYjk0MTE2MjQxMDE2NzhlNjUwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC02Niw4ICs2Niw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSBjb25zdDsK
IAotICAgIC8vIEZJWE1FOiBbTEJTRV0gTWFyayBmaW5hbCwgYWRkIGFwcGx5VHJhbnNmb3JtIHRv
IFJlbmRlckxheWVyTW9kZWxPYmplY3QKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4p
IGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9u
cykgY29uc3QgZmluYWw7CiAKICAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CiAgICAgRmxvYXRSZWN0IHN0
cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0Jv
eDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451360</attachid>
            <date>2022-02-09 04:43:15 -0800</date>
            <delta_ts>2022-02-10 03:47:05 -0800</delta_ts>
            <desc>Patch, v3</desc>
            <filename>bug-236185-20220209044311.patch</filename>
            <type>text/plain</type>
            <size>21561</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4N2Q0MDNmNWMzMTlk
ZTg4Y2UzOWRmNzY4ZWY3YTgyZDkxMjM2Yy4uZjM3MmUzYjc0MTVhODRmNTIxZmNkYzRhNzhiOTVl
ZDE1OTJjNDhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTA5ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBTVkcg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5kZXJMYXllciAvIFJlbmRlckxheWVyQmFja2luZyB1c2UgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgdG8gY29tcHV0ZSBhIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb20g
dGhlIENTUyBUcmFuc2Zvcm0gcHJvcGVydGllcy4KKworICAgICAgICBUbyBob29rIGluIFNWRyB0
cmFuc2Zvcm0gc3VwcG9ydCwgd2hpY2ggZ29lcyBiZXlvbmQgcHVyZSBDU1MgcHJvcGVydGllcwor
ICAgICAgICB0aGF0IGluZmx1ZW5jZSB0aGUgImVmZmVjdGl2ZSB0cmFuc2Zvcm0iIGZvciBhIGNl
cnRhaW4gU1ZHIGVsZW1lbnQsCisgICAgICAgIFJlbmRlclN0eWxlIGlzIG5vdCB0aGUgcmlnaHQg
cGxhY2UgdG8gcGxhY2UgdGhlIGFwcGx5VHJhbnNmb3JtKCkKKyAgICAgICAgaW1wbGVtZW50YXRp
b24gZm9yIFNWRyBzcGVjaWZpYyByZXF1aXJlbWVudHMuCisKKyAgICAgICAgVGhlcmVmb3JlIGlu
dHJvZHVjZSBhIHZpcnR1YWwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0o
KQorICAgICAgICBmdW5jdGlvbiwgdGhhdCBpcyBpbXBsZW1lbnRlZCBpbiBSZW5kZXJCb3ggLyBS
ZW5kZXJTVkdNb2RlbE9iamVjdC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oKSBzdGF5cyBhIHN0dWIKKyAgICAgICAgYW5kIFJlbmRl
ckJveDo6YXBwbHlUcmFuc2Zvcm0oKSBzaW1wbHkgZm9yd2FyZHMgdG8gUmVuZGVyU3R5bGUsCisg
ICAgICAgIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBh
bGxvd3MgU1ZHIHRvIGFkZCBhZGRpdGlvbmFsIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdHJhbnNm
b3JtYXRpb24KKyAgICAgICAgc3RhY2ssIHdoaWNoIGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQgJ3Zp
ZXdCb3gnIHN1cHBvcnQgYW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXBwbHlU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFu
c2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZl
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlckJvcmRlckJveFJlY3QgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hv
clBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1h
dHJpeEZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisKIDIwMjItMDItMDkgIFppcmFuIFN1biAg
PHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRm9ybXNdIEltcHJvdmluZyBhcHBseVN0ZXAo
KSB0byBiZSBpbiBsaW5lIHdpdGggc3BlY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggZDQ5M2JkNWQ1OGVkNDM5NWQ0ZWMxODZiNGFiMGU0OTg4ZjU3ZDU4NS4uMzI1
OGU4ZDNhNTI5ZjBlNDUzMDE0NzIxYzdhOTZmMzg0ZTM4OGFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTY2OSw2ICs2NjksMTEgQEAgdm9pZCBSZW5kZXJCb3g6
OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKICAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3Jt
KCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0
eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgc3R5
bGUoKS5hcHBseVRyYW5zZm9ybSh0LCBib3VuZGluZ0JveCwgb3B0aW9ucyk7Cit9CisKIExheW91
dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZyYWdtZW50QnlNaW5NYXgo
TGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIFJlbmRl
ckJsb2NrJiBjYiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBBbGxvd0ludHJp
bnNpYyBhbGxvd0ludHJpbnNpYykgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGVUb1VzZSA9IHN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXgg
MjA5YzM5MGRhNDM3OWUxZDdkNDdjMTE0MmM4YTgxYTkyOWY5NzkzNC4uZGEzZGRiZGIwM2FkYTkx
MTFlZjUxM2E3Yjc4YmZmMmZkNzkwNDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE92ZXJmbG93RnJv
bUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsK
IAogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB2b2lkIGFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwg
T3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVy
U3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5
b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRoKCksIGNv
bnRlbnRIZWlnaHQoKSB9OyB9CiAgICAgTGF5b3V0VW5pdCBjb250ZW50V2lkdGgoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om1heCgwX2x1LCBwYWRkaW5nQm94V2lkdGgoKSAtIHBhZGRpbmdMZWZ0KCkg
LSBwYWRkaW5nUmlnaHQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGI3YzYwMTZiZDRhOTAzYmIxMzAxOGI3NDM3ZTA0
NjQzNzBmNGM3NjMuLjRlMjZhN2Q3N2FhNDNjNWI5ZGUyMmU3YzRiMjhlODQwYjkzYzQ5NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cApAQCAtMjcyMSw0ICsyNzIxLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbGxl
Y3RBYnNvbHV0ZVF1YWRzRm9yQ29udGludWF0aW9uKFZlY3RvcjxGbG9hdFF1YWQ+CiAgICAgfQog
fQogCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJh
bnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3QKK3sKKyAgICAvLyBhcHBseVRyYW5zZm9ybSgp
IGlzIG9ubHkgdXNlZCB0aHJvdWdoIFJlbmRlckxheWVyKiwgd2hpY2ggb25seSBpbnZva2VzIHRo
aXMgZm9yIFJlbmRlckJveCBkZXJpdmVkIHJlbmRlcmVycywgdGh1cyBub3QgZm9yCisgICAgLy8g
UmVuZGVySW5saW5lL1JlbmRlckxpbmVCcmVhayAtIHRoZSBvdGhlciB0d28gcmVuZGVyZXJzIHRo
YXQgaW5oZXJpdCBmcm9tIFJlbmRlckJveE1vZGVsT2JqZWN0LgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDIyNzY3ZWIyY2ZjYWIzMTRh
NzE1MDQ2ZGE2NTBlMzQwNDMyOGUwYzkuLjIyZDZiMmRiYWI4MmJlYWE3MGEwYTE4MThkOWQxYjI3
NGU3ZmNlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIEJvcmRlckVkZ2U7CiBjbGFzcyBJbWFn
ZUJ1ZmZlcjsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIGNsYXNzIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czsKK2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1l
c3BhY2UgSW5saW5lSXRlcmF0b3IgewogY2xhc3MgSW5saW5lQm94SXRlcmF0b3I7CkBAIC0yNDgs
NiArMjQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFu
c2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsK
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJhc2VU
eXBlRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
ZmZhZGQwMWRmNGQwY2I1YzUxYTliMjE1OGEzMjk4Y2YwNTRiZDAxMy4uYjFjNTk1YzJkNWI0NjU1
N2FlZTBiMGE1NDczODI4ZjIwYjBhZTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
OSBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAyMCBJZ2Fs
aWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDIwLCAyMDIxLCAyMDIyIElnYWxpYSBTLkwuCiAg
KgogICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0
aW9ucyBDb3Jwb3JhdGlvbi4KICAqCkBAIC0xMzMwLDkgKzEzMzAsMTIgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICB9CiAgICAgCiAgICAgaWYgKGhhc1RyYW5zZm9y
bSkgewotICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRl
cmVyKCkpOwotICAgICAgICBtX3RyYW5zZm9ybS0+bWFrZUlkZW50aXR5KCk7Ci0gICAgICAgIHJl
bmRlckJveC5zdHlsZSgpLmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhyZW5kZXJCb3gucmVmZXJlbmNlQm94KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlw
ZShyZW5kZXJCb3guc3R5bGUoKS50cmFuc2Zvcm1Cb3goKSkpLCByZW5kZXJCb3guZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJl
YW0gcmVmZXJlbmNlIGJveCBjb21wdXRhdGlvbiBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVy
aXZlZCByZW5kZXJlcnMKKyAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveDsKKyAgICAgICAg
aWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCisgICAgICAgICAgICByZWZlcmVuY2VCb3gg
PSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSku
cmVmZXJlbmNlQm94KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShyZW5kZXJlcigpLnN0eWxlKCku
dHJhbnNmb3JtQm94KCkpKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpOworCisgICAgICAgIHJlbmRlcmVyKCkuYXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBy
ZWZlcmVuY2VCb3gpOwogICAgICAgICBtYWtlTWF0cml4UmVuZGVyYWJsZSgqbV90cmFuc2Zvcm0s
IGNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKICAgICB9CiAKQEAgLTEzNDgsNiArMTM1MSw3IEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKE9wdGlv
blNldDxSZW5kZXJTdHlsZTo6VHJhbnNmCiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAorICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1
cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCiAgICAgaWYg
KCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0x
Nzg3LDYgKzE3OTEsNyBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKE9w
dGlvblNldDxVcGRhdGVMYXllclBvc2l0aW9uc0ZsYWc+KiBmbGFncwogCiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJSZWN0KSBjb25zdAogeworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJh
bnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJz
CiAgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9
OwogCkBAIC0xODIxLDkgKzE4MjYsNyBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyOjpwZXJzcGVj
dGl2ZU9yaWdpbigpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSgpKQogICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBib3JkZXJC
b3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3QoKTsKLSAg
ICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJz
cGVjdGl2ZU9yaWdpbigpLCBib3JkZXJCb3guc2l6ZSgpKTsKKyAgICByZXR1cm4gZmxvYXRQb2lu
dEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigpLCBy
ZW5kZXJlckJvcmRlckJveFJlY3QoKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNDb250YWluZXJGb3JQb3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBl
IHBvc2l0aW9uLCBib29sIGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCmluZGV4IGFhMjlmZmU5OWQxNDY5MGMzMzE2MmZkNTQyZGUxNjQ1NWQy
Y2NiOWEuLjZlM2I3MDMyNDI3NGZjYWJkYzNlOGE4N2ZiM2QxYWQ5YTRjNTVjOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC05ODEsOSArOTgxLDI0IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmIChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVy
KCkpLmxheW91dExvY2F0aW9uKCk7CiAjZW5kaWYKKworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIExheW91dFBvaW50KCk7CiAgICAgfQogCisgICAgTGF5b3V0
UmVjdCByZW5kZXJlckJvcmRlckJveFJlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlz
PFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyQm94PihyZW5kZXJlcigpKS5ib3JkZXJCb3hSZWN0KCk7CisjaWYgRU5BQkxFKExBWUVSX0JB
U0VEX1NWR19FTkdJTkUpCisgICAgICAgIGlmIChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVu
ZGVyZXIoKSkpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3RFcXVpdmFsZW50KCk7CisjZW5kaWYKKworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsK
KyAgICB9CisKICAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNz
Q29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgc3RkOjpwYWlyPFBhdGgs
IFdpbmRSdWxlPiBjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJv
b3QsIGNvbnN0IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kc0Zvck5vbkJveGVzKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggOWFmNWZiMDVkMTM2MWJiZTMwMWJmYTgyNmMyMjM5ZmM1MWM3ODExYi4uOTc0YTk1MjFj
MDJhZDIzMmQyZmYyYWIzN2M2NTkzNTdlOWU0MDQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTYwNCwyMCArNjA0LDYgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OmRlc3Ryb3lHcmFwaGljc0xheWVycygpCiAgICAgR3JhcGhp
Y3NMYXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX2dyYXBoaWNzTGF5ZXIpOwogfQogCi1zdGF0aWMg
TGF5b3V0UmVjdCByZW5kZXJlckJvcmRlckJveFJlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYgcmVuZGVyZXIpCi17Ci0gICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikuYm9yZGVyQm94UmVjdCgp
OwotCi0jaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCi0gICAgaWYgKGlzPFJlbmRl
clNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIpLmJvcmRlckJveFJlY3RFcXVpdmFsZW50KCk7Ci0j
ZW5kaWYKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7Ci19Ci0KIHN0YXRpYyBMYXlvdXRSZWN0IHNjcm9sbENvbnRhaW5lckxheWVyQm94KGNvbnN0
IFJlbmRlckJveCYgcmVuZGVyQm94KQogewogICAgIHJldHVybiByZW5kZXJCb3gucGFkZGluZ0Jv
eFJlY3QoKTsKQEAgLTY1MSwxNCArNjM3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVPcGFjaXR5KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldE9wYWNpdHkoY29tcG9zaXRpbmdPcGFjaXR5KHN0eWxlLm9wYWNpdHkoKSkpOwogfQog
Ci12b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKK3ZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0oY29u
c3QgUmVuZGVyU3R5bGUmKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHVzZSBtX293bmlu
Z0xheWVyLnRyYW5zZm9ybSgpLCBidXQgdGhhdCBjdXJyZW50bHkgaGFzIHRyYW5zZm9ybS1vcmln
aW4KICAgICAvLyBiYWtlZCBpbnRvIGl0LCBhbmQgd2UgZG9uJ3Qgd2FudCB0aGF0LgogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgaWYgKG1fb3duaW5nTGF5ZXIuaGFzVHJhbnNmb3Jt
KCkpIHsKLSAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5k
ZXJlcigpKTsKLSAgICAgICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odCwgc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhyZW5kZXJCb3guYm9yZGVyQm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwg
UmVuZGVyU3R5bGU6OmluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zKTsKKyAgICAgICAgcmVu
ZGVyZXIoKS5hcHBseVRyYW5zZm9ybSh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKG1fb3duaW5n
TGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKCkpLCBSZW5k
ZXJTdHlsZTo6aW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMpOwogICAgICAgICBtYWtlTWF0
cml4UmVuZGVyYWJsZSh0LCBjb21wb3NpdG9yKCkuY2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwog
ICAgIH0KICAgICAKQEAgLTY4Myw3ICs2NjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm1BbmRBbmNob3JQb2ludChjb25zdCBMYXlvdXRSZWN0Jgog
ICAgIH0KIAogICAgIGNvbnN0IGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSB0aGlzLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwotICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IHJlbmRlcmVyQm9yZGVyQm94
UmVjdChyZW5kZXJlcigpKTsKKyAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBtX293bmluZ0xheWVy
LnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpOwogICAgIGF1dG8gdHJhbnNmb3JtT3JpZ2luID0gY29t
cHV0ZVRyYW5zZm9ybU9yaWdpbkZvclBhaW50aW5nKGJvcmRlckJveFJlY3QpOwogICAgIGF1dG8g
bGF5ZXJPZmZzZXQgPSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChvZmZz
ZXRGcm9tUGFyZW50R3JhcGhpY3NMYXllciksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBhdXRv
IGFuY2hvciA9IEZsb2F0UG9pbnQzRCB7CkBAIC0xMzk2LDcgKzEzODEsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0
ZWRBbmNlc3RvcikKIAogICAgICAgICBhdXRvIGNvbXB1dGVNYXNrc1RvQm91bmRzUmVjdCA9IFsm
XSB7CiAgICAgICAgICAgICBpZiAoKHJlbmRlcmVyKCkuc3R5bGUoKS5jbGlwUGF0aCgpIHx8IHJl
bmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgJiYgIW1fY2hpbGRDbGlwcGluZ01h
c2tMYXllcikgewotICAgICAgICAgICAgICAgIGF1dG8gY29udGVudHNDbGlwcGluZ1JlY3QgPSBG
bG9hdFJvdW5kZWRSZWN0KHJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJG
b3IocmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpKSk7CisgICAgICAgICAgICAgICAg
YXV0byBjb250ZW50c0NsaXBwaW5nUmVjdCA9IEZsb2F0Um91bmRlZFJlY3QocmVuZGVyZXIoKS5z
dHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihtX293bmluZ0xheWVyLnJlbmRlcmVyQm9y
ZGVyQm94UmVjdCgpKSk7CiAgICAgICAgICAgICAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92
ZShMYXlvdXRTaXplKC1jbGlwTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbnRlbnRzQ2xpcHBpbmdSZWN0OwogICAgICAgICAgICAgfQpAQCAt
Mzc0MCwxNiArMzcyNSwxNiBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRp
b24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogCiAgICAgYm9vbCBk
aWRBbmltYXRlID0gZmFsc2U7CiAKLSAgICBpZiAoaGFzUm90YXRlICYmIG1fZ3JhcGhpY3NMYXll
ci0+YWRkQW5pbWF0aW9uKHJvdGF0ZVZlY3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyZXJCb3Jk
ZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmlt
YXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQorICAgIGlmIChoYXNSb3RhdGUgJiYgbV9ncmFwaGlj
c0xheWVyLT5hZGRBbmltYXRpb24ocm90YXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChtX293bmlu
Z0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZy
YW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlID0g
dHJ1ZTsKIAotICAgIGlmIChoYXNTY2FsZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlv
bihzY2FsZVZlY3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRl
cmVyKCkpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRp
bWVPZmZzZXQpKQorICAgIGlmIChoYXNTY2FsZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1h
dGlvbihzY2FsZVZlY3Rvciwgc25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5yZW5kZXJlckJv
cmRlckJveFJlY3QoKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFt
ZSgpLCB0aW1lT2Zmc2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CiAKLSAgICBpZiAo
aGFzVHJhbnNsYXRlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zbGF0ZVZl
Y3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5z
aXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQp
KQorICAgIGlmIChoYXNUcmFuc2xhdGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dHJhbnNsYXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9y
ZGVyQm94UmVjdCgpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1l
KCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlID0gdHJ1ZTsKIAotICAgIGlmICho
YXNUcmFuc2Zvcm0gJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVj
dG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpLnNp
emUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkp
CisgICAgaWYgKGhhc1RyYW5zZm9ybSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0
cmFuc2Zvcm1WZWN0b3IsIHNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3Jk
ZXJCb3hSZWN0KCkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUo
KSwgdGltZU9mZnNldCkpCiAgICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwogCiAgICAgaWYgKGhh
c09wYWNpdHkgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3Rvciwg
SW50U2l6ZSB7IH0sICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVP
ZmZzZXQpKQpAQCAtMzk4NCw3ICszOTY5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVy
TGF5ZXJCYWNraW5nOjp0cmFuc2Zvcm1NYXRyaXhGb3JQcm9wZXJ0eShBbmltYXRlZFByb3AKIAog
ICAgIGF1dG8gYXBwbHlUcmFuc2Zvcm1PcGVyYXRpb24gPSBbJl0oVHJhbnNmb3JtT3BlcmF0aW9u
KiBvcGVyYXRpb24pIHsKICAgICAgICAgaWYgKG9wZXJhdGlvbikKLSAgICAgICAgICAgIG9wZXJh
dGlvbi0+YXBwbHkobWF0cml4LCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3Qo
cmVuZGVyZXIoKSkpLnNpemUoKSk7CisgICAgICAgICAgICBvcGVyYXRpb24tPmFwcGx5KG1hdHJp
eCwgc25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3QoKSku
c2l6ZSgpKTsKICAgICB9OwogCiAgICAgaWYgKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlU
cmFuc2xhdGUpCkBAIC0zOTk0LDcgKzM5NzksNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5k
ZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1hdHJpeEZvclByb3BlcnR5KEFuaW1hdGVkUHJvcAog
ICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlSb3RhdGUpCiAgICAgICAg
IGFwcGx5VHJhbnNmb3JtT3BlcmF0aW9uKHJlbmRlcmVyKCkuc3R5bGUoKS5yb3RhdGUoKSk7CiAg
ICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSkKLSAgICAg
ICAgcmVuZGVyZXIoKS5zdHlsZSgpLnRyYW5zZm9ybSgpLmFwcGx5KHNuYXBwZWRJbnRSZWN0KHJl
bmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigpKSkuc2l6ZSgpLCBtYXRyaXgpOworICAgICAg
ICByZW5kZXJlcigpLnN0eWxlKCkudHJhbnNmb3JtKCkuYXBwbHkoc25hcHBlZEludFJlY3QobV9v
d25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCBtYXRyaXgpOwogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCmluZGV4IDljMzE0YWZiMTBk
OGM1YTcwMmFmZTIwMjY1M2ZkYTcwNGJkZjY4YmIuLmMzNTRmMzc3ZjI4ZTFjMjIyNmE5YTFlMmM1
NDZjMzYxODI2MTczYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
YXBMb2NhbFRvU1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2Vz
dG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01v
ZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBh
cHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
PiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCA9IDA7CisKIHBy
b3RlY3RlZDoKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHls
ZSYmLCBCYXNlVHlwZUZsYWdzKTsKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDc1NTQ3Yjhl
NjRkOWQwMGQwNmVjNTExNzU4ZjhhNTQyNjEwYzZhNjMuLjE5YTFmZmQ5NjliNDBjZGYyZjBlYTZj
OTBlOGU0YThhMjA1OGY2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0yNzYsMTAgKzI3Niw5IEBAIGJvb2wg
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNoZWNrRW5jbG9zdXJlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFJlCiAgICAgcmV0dXJuIHJlY3QuY29udGFpbnMoY3RtLm1hcFJlY3Qo
cmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpKTsKIH0KIAotdm9pZCBS
ZW5kZXJTVkdNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gb3B0aW9ucykgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
PiBvcHRpb25zKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2Zvcm0pOwotICAgIFVO
VVNFRF9QQVJBTShzdHlsZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJvdW5kaW5nQm94KTsKICAgICBV
TlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdS
ZW5kZXJTdXBwb3J0IGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCA3YjJlMzExNDE3M2Q3MzhjOWU4ZmFiYzM1
NTMwZWU2MjdiNWY0ZmJhLi45M2ZjOWZhZTJkZWU2MmFkYjZkZDU0NWM5YTkzY2IzODI2NWZiZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oCkBAIC01OCw4ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSBTVkdFbGVt
ZW50JiBlbGVtZW50KCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIE1hcmsgZmluYWws
IGFkZCBhcHBseVRyYW5zZm9ybSB0byBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ci0gICAgdm9pZCBh
cHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb24+KSBjb25zdDsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9u
U2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6
OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gTWltaWMg
dGhlIFJlbmRlckJveCBhY2Nlc3NvcnMgLSBieSBzaGFyaW5nIHRoZSBzYW1lIHRlcm1pbm9sb2d5
IHRoZSBwYWludGluZyAvIGhpdCB0ZXN0aW5nIC8gbGF5b3V0IGxvZ2ljIGlzCiAgICAgLy8gc2lt
aWxhciB0byByZWFkIGNvbXBhcmVkIHRvIG5vbi1TVkcgcmVuZGVyZXJzIHN1Y2ggYXMgUmVuZGVy
Qm94ICYgZnJpZW5kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCmluZGV4IDQ4N2YyNjM5YmRlNmMyZGM3N2E3ZWMxZmFhOGJiMDFjZGI3MzFmNzMu
LjFiY2NmOWNkZWY3NDkxNGU0ODA1MzQyMjQxMjQwMmJkODY1NjVjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNjA4LDEyICs2MDgs
MTAgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdSb290OjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExh
eW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyRnIKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHUm9vdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gb3B0aW9ucykgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6YXBwbHlUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlv
bnMpIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zZm9ybSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0eWxlKTsKLSAgICBVTlVTRURfUEFSQU0oYm91bmRpbmdCb3gpOwotICAgIFVOVVNFRF9Q
QVJBTShvcHRpb25zKTsKKyAgICBSZW5kZXJSZXBsYWNlZDo6YXBwbHlUcmFuc2Zvcm0odHJhbnNm
b3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CisKICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3Ry
ZWFtIFNWR1JlbmRlclN1cHBvcnQgY2hhbmdlcwogICAgIC8vIFNWR1JlbmRlclN1cHBvcnQ6OmFw
cGx5VHJhbnNmb3JtKCp0aGlzLCB0cmFuc2Zvcm0sIHN0eWxlLCBib3VuZGluZ0JveCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCA2NmJhYjA4ODFhMzdmZTVmMTEwYjQ2NWZl
MGQ4M2IxZmFjNzg2OGM0Li40M2MxMmVhODI2ZTE5YzcyNmQ5ZGI5NDExNjI0MTAxNjc4ZTY1MDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAt
NjYsOCArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFwcGx5Vmlld3BvcnRDbGlw
KCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIE1hcmsgZmluYWwsIGFkZCBhcHBseVRy
YW5zZm9ybSB0byBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ci0gICAgdm9pZCBhcHBseVRyYW5zZm9y
bShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb24+KSBjb25zdDsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0
eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9y
bU9wZXJhdGlvbnMpIGNvbnN0IGZpbmFsOwogCiAgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5n
Qm94KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIEZs
b2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3Ryb2tl
Qm91bmRpbmdCb3g7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451511</attachid>
            <date>2022-02-10 03:47:10 -0800</date>
            <delta_ts>2022-02-10 06:00:50 -0800</delta_ts>
            <desc>Patch, v4</desc>
            <filename>bug-236185-20220210034708.patch</filename>
            <type>text/plain</type>
            <size>21572</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVmOGM3ZGRkNmNmMjI1
ZDc5OGJhYzFhOTRjZGFhYWQzZmNmOTE2Zi4uYzc4ZGY1MGJkOTBjZTE5ZDU2NGRlNjM4YTE0MTBm
NzYxYTBjZDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBTVkcg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5kZXJMYXllciAvIFJlbmRlckxheWVyQmFja2luZyB1c2UgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgdG8gY29tcHV0ZSBhIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb20g
dGhlIENTUyBUcmFuc2Zvcm0gcHJvcGVydGllcy4KKworICAgICAgICBUbyBob29rIGluIFNWRyB0
cmFuc2Zvcm0gc3VwcG9ydCwgd2hpY2ggZ29lcyBiZXlvbmQgcHVyZSBDU1MgcHJvcGVydGllcwor
ICAgICAgICB0aGF0IGluZmx1ZW5jZSB0aGUgImVmZmVjdGl2ZSB0cmFuc2Zvcm0iIGZvciBhIGNl
cnRhaW4gU1ZHIGVsZW1lbnQsCisgICAgICAgIFJlbmRlclN0eWxlIGlzIG5vdCB0aGUgcmlnaHQg
cGxhY2UgdG8gcGxhY2UgdGhlIGFwcGx5VHJhbnNmb3JtKCkKKyAgICAgICAgaW1wbGVtZW50YXRp
b24gZm9yIFNWRyBzcGVjaWZpYyByZXF1aXJlbWVudHMuCisKKyAgICAgICAgVGhlcmVmb3JlIGlu
dHJvZHVjZSBhIHZpcnR1YWwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0o
KQorICAgICAgICBmdW5jdGlvbiwgdGhhdCBpcyBpbXBsZW1lbnRlZCBpbiBSZW5kZXJCb3ggLyBS
ZW5kZXJTVkdNb2RlbE9iamVjdC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oKSBzdGF5cyBhIHN0dWIKKyAgICAgICAgYW5kIFJlbmRl
ckJveDo6YXBwbHlUcmFuc2Zvcm0oKSBzaW1wbHkgZm9yd2FyZHMgdG8gUmVuZGVyU3R5bGUsCisg
ICAgICAgIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBh
bGxvd3MgU1ZHIHRvIGFkZCBhZGRpdGlvbmFsIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdHJhbnNm
b3JtYXRpb24KKyAgICAgICAgc3RhY2ssIHdoaWNoIGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQgJ3Zp
ZXdCb3gnIHN1cHBvcnQgYW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXBwbHlU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFu
c2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZl
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlckJvcmRlckJveFJlY3QgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hv
clBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1h
dHJpeEZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisKIDIwMjItMDItMTAgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBO
dWxscHRyIGNyYXNoIHdpdGggbm9uLWZ1bmN0aW9uIDpoYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKaW5kZXggZDQ5M2JkNWQ1OGVkNDM5NWQ0ZWMxODZiNGFiMGU0OTg4ZjU3
ZDU4NS4uMzI1OGU4ZDNhNTI5ZjBlNDUzMDE0NzIxYzdhOTZmMzg0ZTM4OGFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTY2OSw2ICs2NjksMTEgQEAgdm9pZCBS
ZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKICAgICAgICAgbGF5ZXIoKS0+dXBkYXRl
VHJhbnNmb3JtKCk7CiB9CiAKK3ZvaWQgUmVuZGVyQm94OjphcHBseVRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit7
CisgICAgc3R5bGUoKS5hcHBseVRyYW5zZm9ybSh0LCBib3VuZGluZ0JveCwgb3B0aW9ucyk7Cit9
CisKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lkdGhJbkZyYWdtZW50
QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgsIFJlbmRlckJsb2NrJiBjYiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBB
bGxvd0ludHJpbnNpYyBhbGxvd0ludHJpbnNpYykgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKaW5kZXggMjA5YzM5MGRhNDM3OWUxZDdkNDdjMTE0MmM4YTgxYTkyOWY5NzkzNC4uZGEzZGRi
ZGIwM2FkYTkxMTFlZjUxM2E3Yjc4YmZmMmZkNzkwNDdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaApAQCAtMjE5LDYgKzIxOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE92
ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUm
IGRlbHRhKTsKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB2b2lkIGFw
cGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+
ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdp
ZHRoKCksIGNvbnRlbnRIZWlnaHQoKSB9OyB9CiAgICAgTGF5b3V0VW5pdCBjb250ZW50V2lkdGgo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om1heCgwX2x1LCBwYWRkaW5nQm94V2lkdGgoKSAtIHBhZGRp
bmdMZWZ0KCkgLSBwYWRkaW5nUmlnaHQoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGZmZjQ5ZGQyOTNiZmIwNGY0ODY1
MDRlMzNmMThlZDUwYjkzZWFhNzEuLmJkYzFlNjJhN2E1YTA2NTQ1NWY1MWMzN2U4MzU3MDllY2Yy
MjZkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtMjcyMSw0ICsyNzIxLDExIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yQ29udGludWF0aW9uKFZlY3RvcjxGbG9hdFF1YWQ+
CiAgICAgfQogfQogCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYsIE9wdGlvblNldDxSZW5kZXJT
dHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3QKK3sKKyAgICAvLyBhcHBseVRy
YW5zZm9ybSgpIGlzIG9ubHkgdXNlZCB0aHJvdWdoIFJlbmRlckxheWVyKiwgd2hpY2ggb25seSBp
bnZva2VzIHRoaXMgZm9yIFJlbmRlckJveCBkZXJpdmVkIHJlbmRlcmVycywgdGh1cyBub3QgZm9y
CisgICAgLy8gUmVuZGVySW5saW5lL1JlbmRlckxpbmVCcmVhayAtIHRoZSBvdGhlciB0d28gcmVu
ZGVyZXJzIHRoYXQgaW5oZXJpdCBmcm9tIFJlbmRlckJveE1vZGVsT2JqZWN0LgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IDIyNzY3ZWIy
Y2ZjYWIzMTRhNzE1MDQ2ZGE2NTBlMzQwNDMyOGUwYzkuLjIyZDZiMmRiYWI4MmJlYWE3MGEwYTE4
MThkOWQxYjI3NGU3ZmNlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIEJvcmRlckVkZ2U7CiBj
bGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIGNsYXNzIFN0aWNr
eVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKK2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCiBuYW1lc3BhY2UgSW5saW5lSXRlcmF0b3IgewogY2xhc3MgSW5saW5lQm94SXRlcmF0b3I7
CkBAIC0yNDgsNiArMjQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNPdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWln
aHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlv
blNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxl
OjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgog
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlw
ZUZsYWdzKTsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlbmRlclN0eWxl
JiYsIEJhc2VUeXBlRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggNjMwNzNlOWMxY2UzNWY3NzFmOTg0OWVjZGJiNTQ1OTZkMGVjODkwZi4uMzY3MDE1
ZmZkZjM0ZDc1YWM0ZWJiMTUxMmVjMWVmMmFlYTc1YzQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxOSBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoYykg
MjAyMCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChjKSAyMDIwLCAyMDIxLCAyMDIyIElnYWxp
YSBTLkwuCiAgKgogICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBD
b21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KICAqCkBAIC0xMzMwLDkgKzEzMzAsMTQgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICB9CiAgICAgCiAgICAgaWYgKGhh
c1RyYW5zZm9ybSkgewotICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJC
b3g+KHJlbmRlcmVyKCkpOwogICAgICAgICBtX3RyYW5zZm9ybS0+bWFrZUlkZW50aXR5KCk7Ci0g
ICAgICAgIHJlbmRlckJveC5zdHlsZSgpLmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgc25h
cFJlY3RUb0RldmljZVBpeGVscyhyZW5kZXJCb3gucmVmZXJlbmNlQm94KHRyYW5zZm9ybUJveFRv
Q1NTQm94VHlwZShyZW5kZXJCb3guc3R5bGUoKS50cmFuc2Zvcm1Cb3goKSkpLCByZW5kZXJCb3gu
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFtM
QlNFXSBVcHN0cmVhbSByZWZlcmVuY2UgYm94IGNvbXB1dGF0aW9uIGZvciBSZW5kZXJTVkdNb2Rl
bE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycworICAgICAgICBGbG9hdFJlY3QgcmVmZXJlbmNlQm94
OworICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJl
ZmVyZW5jZUJveCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZG93bmNhc3Q8UmVuZGVyQm94Pihy
ZW5kZXJlcigpKS5yZWZlcmVuY2VCb3godHJhbnNmb3JtQm94VG9DU1NCb3hUeXBlKHJlbmRlcmVy
KCkuc3R5bGUoKS50cmFuc2Zvcm1Cb3goKSkpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7CisKKyAgICAgICAgcmVuZGVyZXIoKS5hcHBseVRyYW5zZm9ybSgqbV90
cmFuc2Zvcm0sIHJlZmVyZW5jZUJveCk7CiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKCpt
X3RyYW5zZm9ybSwgY2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgIH0KIApAQCAtMTM0OCw2
ICsxMzUzLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFu
c2Zvcm0oT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2YKICAgICBpZiAoIW1fdHJhbnNmb3Jt
KQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSB0
cmFuc2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVyaXZlZCByZW5kZXJl
cnMKICAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKQEAgLTE3ODcsNiArMTc5Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVy
UG9zaXRpb24oT3B0aW9uU2V0PFVwZGF0ZUxheWVyUG9zaXRpb25zRmxhZz4qIGZsYWdzCiAKIFRy
YW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZVRyYW5zZm9ybShjb25z
dCBMYXlvdXRSZWN0JiBsYXllclJlY3QpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFtMQlNFXSBV
cHN0cmVhbSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVyaXZl
ZCByZW5kZXJlcnMKICAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKQEAgLTE4MjEsOSArMTgyOCw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyTGF5
ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBh
dXRvIGJvcmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkuYm9yZGVyQm94
UmVjdCgpOwotICAgIHJldHVybiBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQocmVuZGVyZXIoKS5z
dHlsZSgpLnBlcnNwZWN0aXZlT3JpZ2luKCksIGJvcmRlckJveC5zaXplKCkpOworICAgIHJldHVy
biBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQocmVuZGVyZXIoKS5zdHlsZSgpLnBlcnNwZWN0aXZl
T3JpZ2luKCksIHJlbmRlcmVyQm9yZGVyQm94UmVjdCgpLnNpemUoKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0NvbnRhaW5lckZvclBvc2l0aW9uZWQoUmVuZGVyTGF5ZXImIGxheWVyLCBQ
b3NpdGlvblR5cGUgcG9zaXRpb24sIGJvb2wgZXN0YWJsaXNoZXNUb3BMYXllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggYWEyOWZmZTk5ZDE0NjkwYzMzMTYyZmQ1
NDJkZTE2NDU1ZDJjY2I5YS4uNmUzYjcwMzI0Mjc0ZmNhYmRjM2U4YTg3ZmIzZDFhZDlhNGM1NWM4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTk4MSw5ICs5ODEs
MjQgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzPFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5k
ZXJlcigpKSkKICAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJTVkdNb2RlbE9iamVj
dD4ocmVuZGVyZXIoKSkubGF5b3V0TG9jYXRpb24oKTsKICNlbmRpZgorCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKICAgICB9CiAK
KyAgICBMYXlvdXRSZWN0IHJlbmRlcmVyQm9yZGVyQm94UmVjdCgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3QoKTsKKyNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR01vZGVs
T2JqZWN0PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJT
VkdNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkuYm9yZGVyQm94UmVjdEVxdWl2YWxlbnQoKTsKKyNl
bmRpZgorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOworICAgIH0KKwogICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRp
b24oR3JhcGhpY3NDb250ZXh0JiwgYm9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAKICAgICBzdGQ6
OnBhaXI8UGF0aCwgV2luZFJ1bGU+IGNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzRm9yTm9u
Qm94ZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAppbmRleCAyNTE0YzQ3ZGM3ODM3OTY3N2U5NzMzNzFjNTBkYmYzZWE0MmQxNmRm
Li4zYWEwZjg1ZWE4ZGY3NDg3M2ZhZGEyY2FjNmFkY2Y0NmYwMTgyNzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjA0LDIwICs2
MDQsNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6ZGVzdHJveUdyYXBoaWNzTGF5ZXJzKCkK
ICAgICBHcmFwaGljc0xheWVyOjp1bnBhcmVudEFuZENsZWFyKG1fZ3JhcGhpY3NMYXllcik7CiB9
CiAKLXN0YXRpYyBMYXlvdXRSZWN0IHJlbmRlcmVyQm9yZGVyQm94UmVjdChjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKLXsKLSAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5k
ZXJlcikpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKS5ib3Jk
ZXJCb3hSZWN0KCk7Ci0KLSNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKLSAgICBp
ZiAoaXM8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcikuYm9yZGVyQm94UmVjdEVxdWl2
YWxlbnQoKTsKLSNlbmRpZgotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IExheW91dFJlY3QoKTsKLX0KLQogc3RhdGljIExheW91dFJlY3Qgc2Nyb2xsQ29udGFpbmVyTGF5
ZXJCb3goY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gpCiB7CiAgICAgcmV0dXJuIHJlbmRlckJv
eC5wYWRkaW5nQm94UmVjdCgpOwpAQCAtNjUxLDE0ICs2MzcsMTMgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU9wYWNpdHkoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0T3BhY2l0eShjb21wb3NpdGluZ09wYWNpdHkoc3R5bGUub3BhY2l0
eSgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0oY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVRy
YW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQg
dXNlIG1fb3duaW5nTGF5ZXIudHJhbnNmb3JtKCksIGJ1dCB0aGF0IGN1cnJlbnRseSBoYXMgdHJh
bnNmb3JtLW9yaWdpbgogICAgIC8vIGJha2VkIGludG8gaXQsIGFuZCB3ZSBkb24ndCB3YW50IHRo
YXQuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICBpZiAobV9vd25pbmdMYXllci5o
YXNUcmFuc2Zvcm0oKSkgewotICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpOwotICAgICAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKHJlbmRlckJveC5ib3JkZXJCb3hSZWN0KCksIGRldmljZVNjYWxl
RmFjdG9yKCkpLCBSZW5kZXJTdHlsZTo6aW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMpOwor
ICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKHQsIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0
b3IoKSksIFJlbmRlclN0eWxlOjppbmRpdmlkdWFsVHJhbnNmb3JtT3BlcmF0aW9ucyk7CiAgICAg
ICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHQsIGNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5z
Zm9ybXMoKSk7CiAgICAgfQogICAgIApAQCAtNjgzLDcgKzY2OCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hvclBvaW50KGNvbnN0IExh
eW91dFJlY3QmCiAgICAgfQogCiAgICAgY29uc3QgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IHRo
aXMtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0byBib3JkZXJCb3hSZWN0ID0gcmVuZGVy
ZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpOworICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IG1f
b3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCk7CiAgICAgYXV0byB0cmFuc2Zvcm1P
cmlnaW4gPSBjb21wdXRlVHJhbnNmb3JtT3JpZ2luRm9yUGFpbnRpbmcoYm9yZGVyQm94UmVjdCk7
CiAgICAgYXV0byBsYXllck9mZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91
dFBvaW50KG9mZnNldEZyb21QYXJlbnRHcmFwaGljc0xheWVyKSwgZGV2aWNlU2NhbGVGYWN0b3Ip
OwogICAgIGF1dG8gYW5jaG9yID0gRmxvYXRQb2ludDNEIHsKQEAgLTEzOTYsNyArMTM4MSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeShjb25zdCBSZW5kZXJMYXll
ciogY29tcG9zaXRlZEFuY2VzdG9yKQogCiAgICAgICAgIGF1dG8gY29tcHV0ZU1hc2tzVG9Cb3Vu
ZHNSZWN0ID0gWyZdIHsKICAgICAgICAgICAgIGlmICgocmVuZGVyZXIoKS5zdHlsZSgpLmNsaXBQ
YXRoKCkgfHwgcmVuZGVyZXIoKS5zdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSAmJiAhbV9jaGls
ZENsaXBwaW5nTWFza0xheWVyKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50c0NsaXBw
aW5nUmVjdCA9IEZsb2F0Um91bmRlZFJlY3QocmVuZGVyZXIoKS5zdHlsZSgpLmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihyZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRzQ2xpcHBpbmdSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChy
ZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKG1fb3duaW5nTGF5ZXIu
cmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkpKTsKICAgICAgICAgICAgICAgICBjb250ZW50c0NsaXBw
aW5nUmVjdC5tb3ZlKExheW91dFNpemUoLWNsaXBMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudHNDbGlwcGluZ1JlY3Q7CiAgICAgICAg
ICAgICB9CkBAIC0zNzQ4LDE2ICszNzMzLDE2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpz
dGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uJiBhbmltCiAK
ICAgICBib29sIGRpZEFuaW1hdGUgPSBmYWxzZTsKIAotICAgIGlmIChoYXNSb3RhdGUgJiYgbV9n
cmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ocm90YXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChy
ZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5
ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCisgICAgaWYgKGhhc1JvdGF0ZSAm
JiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihyb3RhdGVWZWN0b3IsIHNuYXBwZWRJbnRS
ZWN0KG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgJmFuaW1h
dGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCiAgICAgICAgIGRp
ZEFuaW1hdGUgPSB0cnVlOwogCi0gICAgaWYgKGhhc1NjYWxlICYmIG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKHNjYWxlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJv
eFJlY3QocmVuZGVyZXIoKSkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlv
bk5hbWUoKSwgdGltZU9mZnNldCkpCisgICAgaWYgKGhhc1NjYWxlICYmIG1fZ3JhcGhpY3NMYXll
ci0+YWRkQW5pbWF0aW9uKHNjYWxlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVy
LnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCksICZhbmltYXRpb24sIGtleWZyYW1lcy5h
bmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlID0gdHJ1ZTsK
IAotICAgIGlmIChoYXNUcmFuc2xhdGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dHJhbnNsYXRlVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3QocmVu
ZGVyZXIoKSkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwg
dGltZU9mZnNldCkpCisgICAgaWYgKGhhc1RyYW5zbGF0ZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFk
ZEFuaW1hdGlvbih0cmFuc2xhdGVWZWN0b3IsIHNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIu
cmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFu
aW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCiAgICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwog
Ci0gICAgaWYgKGhhc1RyYW5zZm9ybSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0
cmFuc2Zvcm1WZWN0b3IsIHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5k
ZXJlcigpKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0
aW1lT2Zmc2V0KSkKKyAgICBpZiAoaGFzVHJhbnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRk
QW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5y
ZW5kZXJlckJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5p
bWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CiAK
ICAgICBpZiAoaGFzT3BhY2l0eSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFj
aXR5VmVjdG9yLCBJbnRTaXplIHsgfSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5h
bWUoKSwgdGltZU9mZnNldCkpCkBAIC0zOTkyLDcgKzM5NzcsNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1hdHJpeEZvclByb3BlcnR5KEFuaW1h
dGVkUHJvcAogCiAgICAgYXV0byBhcHBseVRyYW5zZm9ybU9wZXJhdGlvbiA9IFsmXShUcmFuc2Zv
cm1PcGVyYXRpb24qIG9wZXJhdGlvbikgewogICAgICAgICBpZiAob3BlcmF0aW9uKQotICAgICAg
ICAgICAgb3BlcmF0aW9uLT5hcHBseShtYXRyaXgsIHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyQm9y
ZGVyQm94UmVjdChyZW5kZXJlcigpKSkuc2l6ZSgpKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbi0+
YXBwbHkobWF0cml4LCBzbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCgpKS5zaXplKCkpOwogICAgIH07CiAKICAgICBpZiAocHJvcGVydHkgPT0gQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zbGF0ZSkKQEAgLTQwMDIsNyArMzk4Nyw3IEBAIFRyYW5zZm9ybWF0aW9u
TWF0cml4IFJlbmRlckxheWVyQmFja2luZzo6dHJhbnNmb3JtTWF0cml4Rm9yUHJvcGVydHkoQW5p
bWF0ZWRQcm9wCiAgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVJvdGF0
ZSkKICAgICAgICAgYXBwbHlUcmFuc2Zvcm1PcGVyYXRpb24ocmVuZGVyZXIoKS5zdHlsZSgpLnJv
dGF0ZSgpKTsKICAgICBlbHNlIGlmIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNm
b3JtKQotICAgICAgICByZW5kZXJlcigpLnN0eWxlKCkudHJhbnNmb3JtKCkuYXBwbHkoc25hcHBl
ZEludFJlY3QocmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5zaXplKCksIG1hdHJp
eCk7CisgICAgICAgIHJlbmRlcmVyKCkuc3R5bGUoKS50cmFuc2Zvcm0oKS5hcHBseShzbmFwcGVk
SW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCksIG1h
dHJpeCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXgg
OWMzMTRhZmIxMGQ4YzVhNzAyYWZlMjAyNjUzZmRhNzA0YmRmNjhiYi4uYzM1NGYzNzdmMjhlMWMy
MjI2YTlhMWUyYzU0NmMzNjE4MjYxNzNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENv
b3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKICNlbmRpZgogCisgICAgdmly
dHVhbCB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0
ID0gMDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MpOwogICAgIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggNzU1NDdiOGU2NGQ5ZDAwZDA2ZWM1MTE3NThmOGE1NDI2MTBjNmE2My4uMTlhMWZmZDk2OWI0
MGNkZjJmMGVhNmM5MGU4ZTRhOGEyMDU4ZjY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTI3NiwxMCArMjc2
LDkgQEAgYm9vbCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y2hlY2tFbmNsb3N1cmUoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmUKICAgICByZXR1cm4gcmVjdC5jb250YWlucyhj
dG0ubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwog
fQogCi12b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zZm9y
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0eWxlKTsKICAgICBVTlVTRURfUEFSQU0oYm91bmRpbmdC
b3gpOwogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFNWR1JlbmRlclN1cHBvcnQgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDdiMmUzMTE0MTczZDcz
OGM5ZThmYWJjMzU1MzBlZTYyN2I1ZjRmYmEuLjkzZmM5ZmFlMmRlZTYyYWRiNmRkNTQ1YzlhOTNj
YjM4MjY1ZmJlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU4LDggKzU4LDcgQEAgcHVibGljOgogCiAgICAgaW5s
aW5lIFNWR0VsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0g
TWFyayBmaW5hbCwgYWRkIGFwcGx5VHJhbnNmb3JtIHRvIFJlbmRlckxheWVyTW9kZWxPYmplY3QK
LSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVy
U3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4pIGNvbnN0OworICAgIHZvaWQgYXBwbHlU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBS
ZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICAvLyBNaW1pYyB0aGUgUmVuZGVyQm94IGFjY2Vzc29ycyAtIGJ5IHNoYXJpbmcgdGhlIHNhbWUg
dGVybWlub2xvZ3kgdGhlIHBhaW50aW5nIC8gaGl0IHRlc3RpbmcgLyBsYXlvdXQgbG9naWMgaXMK
ICAgICAvLyBzaW1pbGFyIHRvIHJlYWQgY29tcGFyZWQgdG8gbm9uLVNWRyByZW5kZXJlcnMgc3Vj
aCBhcyBSZW5kZXJCb3ggJiBmcmllbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggNDg3ZjI2MzliZGU2YzJkYzc3YTdlYzFmYWE4YmIw
MWNkYjczMWY3My4uMWJjY2Y5Y2RlZjc0OTE0ZTQ4MDUzNDIyNDEyNDAyYmQ4NjU2NWMwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC02
MDgsMTIgKzYwOCwxMCBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6Om92ZXJmbG93Q2xpcFJl
Y3QoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJGcgogICAgIHJldHVybiBjbGlw
UmVjdDsKIH0KIAotdm9pZCBSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAordm9pZCBSZW5kZXJTVkdSb290OjphcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4gb3B0aW9ucykgY29uc3QKIHsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmb3JtKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3R5bGUpOwotICAgIFVOVVNFRF9QQVJBTShib3VuZGluZ0JveCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOworICAgIFJlbmRlclJlcGxhY2VkOjphcHBseVRyYW5z
Zm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKwogICAgIC8vIEZJWE1FOiBb
TEJTRV0gVXBzdHJlYW0gU1ZHUmVuZGVyU3VwcG9ydCBjaGFuZ2VzCiAgICAgLy8gU1ZHUmVuZGVy
U3VwcG9ydDo6YXBwbHlUcmFuc2Zvcm0oKnRoaXMsIHRyYW5zZm9ybSwgc3R5bGUsIGJvdW5kaW5n
Qm94LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgb3B0aW9ucyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDY2YmFiMDg4MWEzN2Zl
NWYxMTBiNDY1ZmUwZDgzYjFmYWM3ODY4YzQuLjQzYzEyZWE4MjZlMTljNzI2ZDlkYjk0MTE2MjQx
MDE2NzhlNjUwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5oCkBAIC02Niw4ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQXBwbHlW
aWV3cG9ydENsaXAoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gTWFyayBmaW5hbCwg
YWRkIGFwcGx5VHJhbnNmb3JtIHRvIFJlbmRlckxheWVyTW9kZWxPYmplY3QKLSAgICB2b2lkIGFw
cGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4pIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25T
ZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6
YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKICAgICBGbG9hdFJlY3Qgb2Jq
ZWN0Qm91bmRpbmdCb3goKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94
OyB9CiAgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451523</attachid>
            <date>2022-02-10 06:00:55 -0800</date>
            <delta_ts>2022-02-10 07:52:37 -0800</delta_ts>
            <desc>Patch, v5</desc>
            <filename>bug-236185-20220210060054.patch</filename>
            <type>text/plain</type>
            <size>21541</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjgwZjZlMGE4MjAwZWRm
YmZlMDVlMTc5YWFhYTc4ZWE2ZGY1MTM1Yi4uYzE3NDFlYjFiZGUxYWUyODEyNjViYzQxN2JhODhm
ZjRiMjY1MDliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBTVkcg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5kZXJMYXllciAvIFJlbmRlckxheWVyQmFja2luZyB1c2UgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgdG8gY29tcHV0ZSBhIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb20g
dGhlIENTUyBUcmFuc2Zvcm0gcHJvcGVydGllcy4KKworICAgICAgICBUbyBob29rIGluIFNWRyB0
cmFuc2Zvcm0gc3VwcG9ydCwgd2hpY2ggZ29lcyBiZXlvbmQgcHVyZSBDU1MgcHJvcGVydGllcwor
ICAgICAgICB0aGF0IGluZmx1ZW5jZSB0aGUgImVmZmVjdGl2ZSB0cmFuc2Zvcm0iIGZvciBhIGNl
cnRhaW4gU1ZHIGVsZW1lbnQsCisgICAgICAgIFJlbmRlclN0eWxlIGlzIG5vdCB0aGUgcmlnaHQg
cGxhY2UgdG8gcGxhY2UgdGhlIGFwcGx5VHJhbnNmb3JtKCkKKyAgICAgICAgaW1wbGVtZW50YXRp
b24gZm9yIFNWRyBzcGVjaWZpYyByZXF1aXJlbWVudHMuCisKKyAgICAgICAgVGhlcmVmb3JlIGlu
dHJvZHVjZSBhIHZpcnR1YWwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0o
KQorICAgICAgICBmdW5jdGlvbiwgdGhhdCBpcyBpbXBsZW1lbnRlZCBpbiBSZW5kZXJCb3ggLyBS
ZW5kZXJTVkdNb2RlbE9iamVjdC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCBSZW5kZXJTVkdNb2Rl
bE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oKSBzdGF5cyBhIHN0dWIKKyAgICAgICAgYW5kIFJlbmRl
ckJveDo6YXBwbHlUcmFuc2Zvcm0oKSBzaW1wbHkgZm9yd2FyZHMgdG8gUmVuZGVyU3R5bGUsCisg
ICAgICAgIHByZXNlcnZpbmcgdGhlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBh
bGxvd3MgU1ZHIHRvIGFkZCBhZGRpdGlvbmFsIHRyYW5zZm9ybWF0aW9ucyB0byB0aGUgdHJhbnNm
b3JtYXRpb24KKyAgICAgICAgc3RhY2ssIHdoaWNoIGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQgJ3Zp
ZXdCb3gnIHN1cHBvcnQgYW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXBwbHlU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFu
c2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZl
T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW5kZXJlckJvcmRlckJveFJlY3QgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybUFuZEFuY2hv
clBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zZm9ybU1h
dHJpeEZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CisKIDIwMjItMDItMTAgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVm
YWN0b3IgdGhlIFhER0RCdXNQcm94eSBsYXVuY2hlciB0byBzaW1wbGlmeSBpdCBhbmQgZml4IHNv
bWUgaXNzdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGQ0OTNi
ZDVkNThlZDQzOTVkNGVjMTg2YjRhYjBlNDk4OGY1N2Q1ODUuLjMyNThlOGQzYTUyOWYwZTQ1MzAx
NDcyMWM3YTk2ZjM4NGUzODhhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC02NjksNiArNjY5LDExIEBAIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5z
Zm9ybSgpCiAgICAgICAgIGxheWVyKCktPnVwZGF0ZVRyYW5zZm9ybSgpOwogfQogCit2b2lkIFJl
bmRlckJveDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAoreworICAgIHN0eWxlKCkuYXBwbHlUcmFuc2Zv
cm0odCwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworfQorCiBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29uc3RyYWluTG9naWNhbFdpZHRoSW5GcmFnbWVudEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNh
bFdpZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBSZW5kZXJCbG9jayYgY2IsIFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCwgQWxsb3dJbnRyaW5zaWMgYWxsb3dJbnRyaW5z
aWMpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDIwOWMzOTBkYTQzNzllMWQ3
ZDQ3YzExNDJjOGE4MWE5MjlmOTc5MzQuLmRhM2RkYmRiMDNhZGE5MTExZWY1MTNhN2I3OGJmZjJm
ZDc5MDQ3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIxOSw2ICsy
MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5k
ZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKICAgICB2b2lkIHVwZGF0
ZUxheWVyVHJhbnNmb3JtKCk7CisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJT
dHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zv
cm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUgY29udGVudFNp
emUoKSBjb25zdCB7IHJldHVybiB7IGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkgfTsg
fQogICAgIExheW91dFVuaXQgY29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgo
MF9sdSwgcGFkZGluZ0JveFdpZHRoKCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAppbmRleCBmZmY0OWRkMjkzYmZiMDRmNDg2NTA0ZTMzZjE4ZWQ1MGI5M2VhYTcxLi5iZGMx
ZTYyYTdhNWEwNjU0NTVmNTFjMzdlODM1NzA5ZWNmMjI2ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI3MjEsNCArMjcy
MSwxMSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb2xsZWN0QWJzb2x1dGVRdWFkc0Zv
ckNvbnRpbnVhdGlvbihWZWN0b3I8RmxvYXRRdWFkPgogICAgIH0KIH0KIAordm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBGbG9hdFJlY3QmLCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4pIGNvbnN0Cit7CisgICAgLy8gYXBwbHlUcmFuc2Zvcm0oKSBpcyBvbmx5IHVzZWQgdGhy
b3VnaCBSZW5kZXJMYXllciosIHdoaWNoIG9ubHkgaW52b2tlcyB0aGlzIGZvciBSZW5kZXJCb3gg
ZGVyaXZlZCByZW5kZXJlcnMsIHRodXMgbm90IGZvcgorICAgIC8vIFJlbmRlcklubGluZS9SZW5k
ZXJMaW5lQnJlYWsgLSB0aGUgb3RoZXIgdHdvIHJlbmRlcmVycyB0aGF0IGluaGVyaXQgZnJvbSBS
ZW5kZXJCb3hNb2RlbE9iamVjdC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaAppbmRleCAyMjc2N2ViMmNmY2FiMzE0YTcxNTA0NmRhNjUwZTM0MDQz
MjhlMGM5Li4yMmQ2YjJkYmFiODJiZWFhNzBhMGExODE4ZDlkMWIyNzRlN2ZjZWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNjIs
NiArNjIsNyBAQCBjbGFzcyBCb3JkZXJFZGdlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBS
ZW5kZXJUZXh0RnJhZ21lbnQ7CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHM7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIElubGluZUl0ZXJh
dG9yIHsKIGNsYXNzIElubGluZUJveEl0ZXJhdG9yOwpAQCAtMjQ4LDYgKzI0OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc092ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykg
Y29uc3Qgb3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdChF
bGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QoRG9jdW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBCYXNlVHlwZUZsYWdzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDYzMDczZTljMWNlMzVmNzcx
Zjk4NDllY2RiYjU0NTk2ZDBlYzg5MGYuLjM2NzAxNWZmZGYzNGQ3NWFjNGViYjE1MTJlYzFlZjJh
ZWE3NWM0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWRvYmUuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoYykgMjAyMCwgMjAyMSwgMjAyMiBJZ2FsaWEgUy5MLgogICoKICAqIFBvcnRpb25zIGFy
ZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24u
CiAgKgpAQCAtMTMzMCw5ICsxMzMwLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5z
Zm9ybSgpCiAgICAgfQogICAgIAogICAgIGlmIChoYXNUcmFuc2Zvcm0pIHsKLSAgICAgICAgYXV0
byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKTsKICAgICAgICAg
bV90cmFuc2Zvcm0tPm1ha2VJZGVudGl0eSgpOwotICAgICAgICByZW5kZXJCb3guc3R5bGUoKS5h
cHBseVRyYW5zZm9ybSgqbV90cmFuc2Zvcm0sIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVuZGVy
Qm94LnJlZmVyZW5jZUJveCh0cmFuc2Zvcm1Cb3hUb0NTU0JveFR5cGUocmVuZGVyQm94LnN0eWxl
KCkudHJhbnNmb3JtQm94KCkpKSwgcmVuZGVyQm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSkpOworCisgICAgICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gcmVmZXJlbmNlIGJv
eCBjb21wdXRhdGlvbiBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVyaXZlZCByZW5kZXJlcnMK
KyAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveDsKKyAgICAgICAgaWYgKGlzPFJlbmRlckJv
eD4ocmVuZGVyZXIoKSkpCisgICAgICAgICAgICByZWZlcmVuY2VCb3ggPSBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkucmVmZXJlbmNlQm94KHRy
YW5zZm9ybUJveFRvQ1NTQm94VHlwZShyZW5kZXJlcigpLnN0eWxlKCkudHJhbnNmb3JtQm94KCkp
KSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworCisgICAgICAg
IHJlbmRlcmVyKCkuYXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCByZWZlcmVuY2VCb3gpOwog
ICAgICAgICBtYWtlTWF0cml4UmVuZGVyYWJsZSgqbV90cmFuc2Zvcm0sIGNhblJlbmRlcjNEVHJh
bnNmb3JtcygpKTsKICAgICB9CiAKQEAgLTEzNDgsNiArMTM1Myw3IEBAIFRyYW5zZm9ybWF0aW9u
TWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKE9wdGlvblNldDxSZW5kZXJTdHls
ZTo6VHJhbnNmCiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAor
ICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRl
clNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCiAgICAgaWYgKCFpczxSZW5kZXJCb3g+
KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xNzg3LDYgKzE3OTMsNyBA
QCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKE9wdGlvblNldDxVcGRhdGVM
YXllclBvc2l0aW9uc0ZsYWc+KiBmbGFncwogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJM
YXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZWN0KSBj
b25zdAogeworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQg
Zm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCiAgICAgaWYgKCFpczxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xODIxLDkg
KzE4MjgsNyBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpbigpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgp
KQogICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBib3JkZXJCb3ggPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3QoKTsKLSAgICByZXR1cm4gZmxvYXRQ
b2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigp
LCBib3JkZXJCb3guc2l6ZSgpKTsKKyAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50
KHJlbmRlcmVyKCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlckJvcmRlckJv
eFJlY3QoKS5zaXplKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDb250YWluZXJGb3JQ
b3NpdGlvbmVkKFJlbmRlckxheWVyJiBsYXllciwgUG9zaXRpb25UeXBlIHBvc2l0aW9uLCBib29s
IGVzdGFibGlzaGVzVG9wTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CmluZGV4IGFhMjlmZmU5OWQxNDY5MGMzMzE2MmZkNTQyZGUxNjQ1NWQyY2NiOWEuLmMxODc4ODNm
NTNjMGQ1MTg0MDllYmFiNGU4OWIxYzVmYjllZDNjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCkBAIC05ODEsOSArOTgxLDIyIEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJlbmRlcmVyKCkpLmxheW91dExvY2F0
aW9uKCk7CiAjZW5kaWYKKwogICAgICAgICByZXR1cm4gTGF5b3V0UG9pbnQoKTsKICAgICB9CiAK
KyAgICBMYXlvdXRSZWN0IHJlbmRlcmVyQm9yZGVyQm94UmVjdCgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmJvcmRlckJveFJlY3QoKTsKKyNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR01vZGVs
T2JqZWN0PihyZW5kZXJlcigpKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJT
VkdNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkuYm9yZGVyQm94UmVjdEVxdWl2YWxlbnQoKTsKKyNl
bmRpZgorCisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgfQorCiAgICAgYm9vbCBz
ZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQmLCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKTsKIAogICAgIHN0ZDo6cGFpcjxQYXRoLCBXaW5kUnVsZT4gY29tcHV0ZUNs
aXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBMYXlvdXRSZWN0
JiByb290UmVsYXRpdmVCb3VuZHNGb3JOb25Cb3hlcykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI1MTRjNDdkYzc4Mzc5
Njc3ZTk3MzM3MWM1MGRiZjNlYTQyZDE2ZGYuLjNhYTBmODVlYThkZjc0ODczZmFkYTJjYWM2YWRj
ZjQ2ZjAxODI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC02MDQsMjAgKzYwNCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
OjpkZXN0cm95R3JhcGhpY3NMYXllcnMoKQogICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5k
Q2xlYXIobV9ncmFwaGljc0xheWVyKTsKIH0KIAotc3RhdGljIExheW91dFJlY3QgcmVuZGVyZXJC
b3JkZXJCb3hSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKQotewot
ICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbmRlckJveD4ocmVuZGVyZXIpLmJvcmRlckJveFJlY3QoKTsKLQotI2lmIEVOQUJMRShMQVlF
Ul9CQVNFRF9TVkdfRU5HSU5FKQotICAgIGlmIChpczxSZW5kZXJTVkdNb2RlbE9iamVjdD4ocmVu
ZGVyZXIpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHTW9kZWxPYmplY3Q+KHJl
bmRlcmVyKS5ib3JkZXJCb3hSZWN0RXF1aXZhbGVudCgpOwotI2VuZGlmCi0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotfQotCiBzdGF0aWMgTGF5
b3V0UmVjdCBzY3JvbGxDb250YWluZXJMYXllckJveChjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJv
eCkKIHsKICAgICByZXR1cm4gcmVuZGVyQm94LnBhZGRpbmdCb3hSZWN0KCk7CkBAIC02NTEsMTQg
KzYzNywxMyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3BhY2l0eShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRPcGFjaXR5KGNvbXBv
c2l0aW5nT3BhY2l0eShzdHlsZS5vcGFjaXR5KCkpKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZVRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlVHJhbnNmb3JtKGNvbnN0IFJlbmRlclN0eWxlJikKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgbV9vd25pbmdMYXllci50cmFuc2Zvcm0oKSwg
YnV0IHRoYXQgY3VycmVudGx5IGhhcyB0cmFuc2Zvcm0tb3JpZ2luCiAgICAgLy8gYmFrZWQgaW50
byBpdCwgYW5kIHdlIGRvbid0IHdhbnQgdGhhdC4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
OwogICAgIGlmIChtX293bmluZ0xheWVyLmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIGF1dG8m
IHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSk7Ci0gICAgICAgIHN0
eWxlLmFwcGx5VHJhbnNmb3JtKHQsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVuZGVyQm94LmJv
cmRlckJveFJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IoKSksIFJlbmRlclN0eWxlOjppbmRpdmlk
dWFsVHJhbnNmb3JtT3BlcmF0aW9ucyk7CisgICAgICAgIHJlbmRlcmVyKCkuYXBwbHlUcmFuc2Zv
cm0odCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVy
Qm94UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpKSwgUmVuZGVyU3R5bGU6OmluZGl2aWR1YWxU
cmFuc2Zvcm1PcGVyYXRpb25zKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodCwgY29t
cG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKICAgICB9CiAgICAgCkBAIC02ODMs
NyArNjY4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtQW5kQW5jaG9yUG9pbnQoY29uc3QgTGF5b3V0UmVjdCYKICAgICB9CiAKICAgICBjb25zdCBh
dXRvIGRldmljZVNjYWxlRmFjdG9yID0gdGhpcy0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBh
dXRvIGJvcmRlckJveFJlY3QgPSByZW5kZXJlckJvcmRlckJveFJlY3QocmVuZGVyZXIoKSk7Cisg
ICAgYXV0byBib3JkZXJCb3hSZWN0ID0gbV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJl
Y3QoKTsKICAgICBhdXRvIHRyYW5zZm9ybU9yaWdpbiA9IGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW5G
b3JQYWludGluZyhib3JkZXJCb3hSZWN0KTsKICAgICBhdXRvIGxheWVyT2Zmc2V0ID0gcm91bmRQ
b2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQob2Zmc2V0RnJvbVBhcmVudEdyYXBoaWNz
TGF5ZXIpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgYXV0byBhbmNob3IgPSBGbG9hdFBvaW50
M0QgewpAQCAtMTM5Niw3ICsxMzgxLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGVkQW5jZXN0b3IpCiAKICAgICAg
ICAgYXV0byBjb21wdXRlTWFza3NUb0JvdW5kc1JlY3QgPSBbJl0gewogICAgICAgICAgICAgaWYg
KChyZW5kZXJlcigpLnN0eWxlKCkuY2xpcFBhdGgoKSB8fCByZW5kZXJlcigpLnN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpICYmICFtX2NoaWxkQ2xpcHBpbmdNYXNrTGF5ZXIpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGNvbnRlbnRzQ2xpcHBpbmdSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChyZW5k
ZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlbmRlcmVyQm9yZGVyQm94
UmVjdChyZW5kZXJlcigpKSkpOworICAgICAgICAgICAgICAgIGF1dG8gY29udGVudHNDbGlwcGlu
Z1JlY3QgPSBGbG9hdFJvdW5kZWRSZWN0KHJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5u
ZXJCb3JkZXJGb3IobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3QoKSkpOwogICAg
ICAgICAgICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0Lm1vdmUoTGF5b3V0U2l6ZSgtY2xpcExh
eWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb250
ZW50c0NsaXBwaW5nUmVjdDsKICAgICAgICAgICAgIH0KQEAgLTM3NDgsMTYgKzM3MzMsMTYgQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0
LCBjb25zdCBBbmltYXRpb24mIGFuaW0KIAogICAgIGJvb2wgZGlkQW5pbWF0ZSA9IGZhbHNlOwog
Ci0gICAgaWYgKGhhc1JvdGF0ZSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihyb3Rh
dGVWZWN0b3IsIHNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigp
KSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zm
c2V0KSkKKyAgICBpZiAoaGFzUm90YXRlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9u
KHJvdGF0ZVZlY3Rvciwgc25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRl
ckJveFJlY3QoKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgp
LCB0aW1lT2Zmc2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CiAKLSAgICBpZiAoaGFz
U2NhbGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oc2NhbGVWZWN0b3IsIHNuYXBw
ZWRJbnRSZWN0KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigpKSkuc2l6ZSgpLCAmYW5p
bWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKKyAgICBpZiAo
aGFzU2NhbGUgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oc2NhbGVWZWN0b3IsIHNu
YXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkpLnNpemUo
KSwgJmFuaW1hdGlvbiwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCiAg
ICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwogCi0gICAgaWYgKGhhc1RyYW5zbGF0ZSAmJiBtX2dy
YXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2xhdGVWZWN0b3IsIHNuYXBwZWRJbnRSZWN0
KHJlbmRlcmVyQm9yZGVyQm94UmVjdChyZW5kZXJlcigpKSkuc2l6ZSgpLCAmYW5pbWF0aW9uLCBr
ZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKKyAgICBpZiAoaGFzVHJhbnNs
YXRlICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zbGF0ZVZlY3Rvciwgc25h
cHBlZEludFJlY3QobV9vd25pbmdMYXllci5yZW5kZXJlckJvcmRlckJveFJlY3QoKSkuc2l6ZSgp
LCAmYW5pbWF0aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKICAg
ICAgICAgZGlkQW5pbWF0ZSA9IHRydWU7CiAKLSAgICBpZiAoaGFzVHJhbnNmb3JtICYmIG1fZ3Jh
cGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBlZEludFJlY3Qo
cmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5zaXplKCksICZhbmltYXRpb24sIGtl
eWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQorICAgIGlmIChoYXNUcmFuc2Zv
cm0gJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFw
cGVkSW50UmVjdChtX293bmluZ0xheWVyLnJlbmRlcmVyQm9yZGVyQm94UmVjdCgpKS5zaXplKCks
ICZhbmltYXRpb24sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAg
ICAgICBkaWRBbmltYXRlID0gdHJ1ZTsKIAogICAgIGlmIChoYXNPcGFjaXR5ICYmIG1fZ3JhcGhp
Y3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUgeyB9LCAmYW5pbWF0
aW9uLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkKQEAgLTM5OTIsNyAr
Mzk3Nyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyQmFja2luZzo6dHJhbnNm
b3JtTWF0cml4Rm9yUHJvcGVydHkoQW5pbWF0ZWRQcm9wCiAKICAgICBhdXRvIGFwcGx5VHJhbnNm
b3JtT3BlcmF0aW9uID0gWyZdKFRyYW5zZm9ybU9wZXJhdGlvbiogb3BlcmF0aW9uKSB7CiAgICAg
ICAgIGlmIChvcGVyYXRpb24pCi0gICAgICAgICAgICBvcGVyYXRpb24tPmFwcGx5KG1hdHJpeCwg
c25hcHBlZEludFJlY3QocmVuZGVyZXJCb3JkZXJCb3hSZWN0KHJlbmRlcmVyKCkpKS5zaXplKCkp
OworICAgICAgICAgICAgb3BlcmF0aW9uLT5hcHBseShtYXRyaXgsIHNuYXBwZWRJbnRSZWN0KG1f
b3duaW5nTGF5ZXIucmVuZGVyZXJCb3JkZXJCb3hSZWN0KCkpLnNpemUoKSk7CiAgICAgfTsKIAog
ICAgIGlmIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNsYXRlKQpAQCAtNDAwMiw3
ICszOTg3LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXJCYWNraW5nOjp0cmFu
c2Zvcm1NYXRyaXhGb3JQcm9wZXJ0eShBbmltYXRlZFByb3AKICAgICBlbHNlIGlmIChwcm9wZXJ0
eSA9PSBBbmltYXRlZFByb3BlcnR5Um90YXRlKQogICAgICAgICBhcHBseVRyYW5zZm9ybU9wZXJh
dGlvbihyZW5kZXJlcigpLnN0eWxlKCkucm90YXRlKCkpOwogICAgIGVsc2UgaWYgKHByb3BlcnR5
ID09IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pCi0gICAgICAgIHJlbmRlcmVyKCkuc3R5bGUo
KS50cmFuc2Zvcm0oKS5hcHBseShzbmFwcGVkSW50UmVjdChyZW5kZXJlckJvcmRlckJveFJlY3Qo
cmVuZGVyZXIoKSkpLnNpemUoKSwgbWF0cml4KTsKKyAgICAgICAgcmVuZGVyZXIoKS5zdHlsZSgp
LnRyYW5zZm9ybSgpLmFwcGx5KHNuYXBwZWRJbnRSZWN0KG1fb3duaW5nTGF5ZXIucmVuZGVyZXJC
b3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgbWF0cml4KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuaAppbmRleCA5YzMxNGFmYjEwZDhjNWE3MDJhZmUyMDI2NTNmZGE3
MDRiZGY2OGJiLi5jMzU0ZjM3N2YyOGUxYzIyMjZhOWExZTJjNTQ2YzM2MTgyNjE3M2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgK
QEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgbWFwTG9jYWxUb1NWR0NvbnRhaW5l
cihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7
CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIEJh
c2VUeXBlRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCA3NTU0N2I4ZTY0ZDlkMDBkMDZlYzUxMTc1OGY4
YTU0MjYxMGM2YTYzLi4xOWExZmZkOTY5YjQwY2RmMmYwZWE2YzkwZThlNGE4YTIwNThmNjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcApAQCAtMjc2LDEwICsyNzYsOSBAQCBib29sIFJlbmRlclNWR01vZGVsT2JqZWN0
OjpjaGVja0VuY2xvc3VyZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRSZQog
ICAgIHJldHVybiByZWN0LmNvbnRhaW5zKGN0bS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcygpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6
OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit2
b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0odHJhbnNmb3JtKTsKLSAgICBVTlVTRURfUEFSQU0oc3R5bGUpOwog
ICAgIFVOVVNFRF9QQVJBTShib3VuZGluZ0JveCk7CiAgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMp
OwogICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHUmVuZGVyU3VwcG9ydCBjaGFuZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgKaW5kZXggN2IyZTMxMTQxNzNkNzM4YzllOGZhYmMzNTUzMGVlNjI3YjVmNGZiYS4uOTNm
YzlmYWUyZGVlNjJhZGI2ZGQ1NDVjOWE5M2NiMzgyNjVmYmU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTgsOCAr
NTgsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgU1ZHRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0
OwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBNYXJrIGZpbmFsLCBhZGQgYXBwbHlUcmFuc2Zvcm0g
dG8gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
PikgY29uc3Q7CisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJh
bnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRp
b25zKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE1pbWljIHRoZSBSZW5kZXJCb3ggYWNjZXNz
b3JzIC0gYnkgc2hhcmluZyB0aGUgc2FtZSB0ZXJtaW5vbG9neSB0aGUgcGFpbnRpbmcgLyBoaXQg
dGVzdGluZyAvIGxheW91dCBsb2dpYyBpcwogICAgIC8vIHNpbWlsYXIgdG8gcmVhZCBjb21wYXJl
ZCB0byBub24tU1ZHIHJlbmRlcmVycyBzdWNoIGFzIFJlbmRlckJveCAmIGZyaWVuZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA0ODdm
MjYzOWJkZTZjMmRjNzdhN2VjMWZhYThiYjAxY2RiNzMxZjczLi4xYmNjZjljZGVmNzQ5MTRlNDgw
NTM0MjI0MTI0MDJiZDg2NTY1YzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTYwOCwxMiArNjA4LDEwIEBAIExheW91dFJlY3QgUmVu
ZGVyU1ZHUm9vdDo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24s
IFJlbmRlckZyCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQogCi12b2lkIFJlbmRlclNWR1Jvb3Q6
OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit2
b2lkIFJlbmRlclNWR1Jvb3Q6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJT
dHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIFVO
VVNFRF9QQVJBTSh0cmFuc2Zvcm0pOwotICAgIFVOVVNFRF9QQVJBTShzdHlsZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJvdW5kaW5nQm94KTsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CisgICAg
UmVuZGVyUmVwbGFjZWQ6OmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9w
dGlvbnMpOworCiAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdSZW5kZXJTdXBwb3J0
IGNoYW5nZXMKICAgICAvLyBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVRyYW5zZm9ybSgqdGhpcywg
dHJhbnNmb3JtLCBzdHlsZSwgYm91bmRpbmdCb3gsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBvcHRpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKaW5kZXggNjZiYWIwODgxYTM3ZmU1ZjExMGI0NjVmZTBkODNiMWZhYzc4NjhjNC4uNDNj
MTJlYTgyNmUxOWM3MjZkOWRiOTQxMTYyNDEwMTY3OGU2NTA1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTY2LDggKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzaG91bGRBcHBseVZpZXdwb3J0Q2xpcCgpIGNvbnN0OwogCi0gICAgLy8g
RklYTUU6IFtMQlNFXSBNYXJrIGZpbmFsLCBhZGQgYXBwbHlUcmFuc2Zvcm0gdG8gUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9w
dGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3Q7Cisg
ICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBm
aW5hbDsKIAogICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9Cg==
</data>
<flag name="review"
          id="478280"
          type_id="1"
          status="+"
          setter="rbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>