<?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>232369</bug_id>
          
          <creation_ts>2021-10-27 02:39:03 -0700</creation_ts>
          <short_desc>[GPU Process] [Filters 1/23] Remove non-platform code form the FEImage class</short_desc>
          <delta_ts>2021-11-29 21:32:37 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232972</see_also>
          <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>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809205</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-27 02:39:03 -0700</bug_when>
    <thetext>We need to make easy to encode and decode the FEImage members without having any DOM or rendering objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809208</commentid>
    <comment_count>1</comment_count>
      <attachid>442574</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-27 03:12:12 -0700</bug_when>
    <thetext>Created attachment 442574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809264</commentid>
    <comment_count>2</comment_count>
      <attachid>442594</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-27 08:28:25 -0700</bug_when>
    <thetext>Created attachment 442594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809325</commentid>
    <comment_count>3</comment_count>
      <attachid>442594</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-27 11:00:32 -0700</bug_when>
    <thetext>Comment on attachment 442594
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [GPU Process] Remove layering violations form FEImage class

This title make me think that I&apos;ll see removal of non-platform #includes in platform code, but I don&apos;t see any of that here, so maybe this is just a first step? If so, adjust the bug title.

Maybe the plan is to move FEImage down to platform code in future?

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:6
&gt;   * Copyright (C) 2018 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2018-2021 Apple Inc. All rights reserved.

Duplicate Apple lines.

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:193
&gt; +    // Calculate the absoluteTransform

Comment doesn&apos;t add anything.

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:200
&gt; +    auto imageRect = renderer-&gt;repaintRectInLocalCoordinates();

Not new, but using something called &quot;repaint rect&quot; for filter geometry sounds wrong.

&gt; Source/WebCore/svg/SVGFEImageElement.h:58
&gt; +    std::tuple&lt;RefPtr&lt;ImageBuffer&gt;, FloatRect&gt; imageBufferForEffect() const;

The problem with returning a tuple is that the rect doesn&apos;t have a name. Consider returning a struct instead.

&gt; Source/WebCore/svg/graphics/filters/SVGFEImage.h:40
&gt; +        Ref&lt;ImageBuffer&gt;,
&gt; +        RenderingResourceIdentifier

I&apos;m confused about the we use a raw RenderingResourceIdentifier rather than an ImageBuffer (which can be identified via a RenderingResourceIdentifier). If you don&apos;t use the RenderingResourceIdentifier in this patch, maybe add it later.

If the variant holds a ImageBuffer, does it have to be a concrete image buffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811425</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 02:39:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/84966765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812932</commentid>
    <comment_count>5</comment_count>
      <attachid>443633</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 17:13:30 -0800</bug_when>
    <thetext>Created attachment 443633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812940</commentid>
    <comment_count>6</comment_count>
      <attachid>442594</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 17:21:51 -0800</bug_when>
    <thetext>Comment on attachment 442594
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        [GPU Process] Remove layering violations form FEImage class
&gt; 
&gt; This title make me think that I&apos;ll see removal of non-platform #includes in platform code, but I don&apos;t see any of that here, so maybe this is just a first step? If so, adjust the bug title.
&gt; 
&gt; Maybe the plan is to move FEImage down to platform code in future?

Title was changed. And yes the plan should be to move FEImage down to platform/graphics/filters directory.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:6
&gt;&gt; + * Copyright (C) 2018-2021 Apple Inc. All rights reserved.
&gt; 
&gt; Duplicate Apple lines.

removed.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:193
&gt;&gt; +    // Calculate the absoluteTransform
&gt; 
&gt; Comment doesn&apos;t add anything.

removed.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.cpp:200
&gt;&gt; +    auto imageRect = renderer-&gt;repaintRectInLocalCoordinates();
&gt; 
&gt; Not new, but using something called &quot;repaint rect&quot; for filter geometry sounds wrong.

Yes. This name does not seem appropriate. It used by SVG renderers only. I will try to fix in a separate patch.

&gt;&gt; Source/WebCore/svg/SVGFEImageElement.h:58
&gt;&gt; +    std::tuple&lt;RefPtr&lt;ImageBuffer&gt;, FloatRect&gt; imageBufferForEffect() const;
&gt; 
&gt; The problem with returning a tuple is that the rect doesn&apos;t have a name. Consider returning a struct instead.

Yes you are right. Using the tuple does not make the return value clear in the prototype only. But the return value is clear in the implementation and when the function is called. I will clean this later.

&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFEImage.h:40
&gt;&gt; +        RenderingResourceIdentifier
&gt; 
&gt; I&apos;m confused about the we use a raw RenderingResourceIdentifier rather than an ImageBuffer (which can be identified via a RenderingResourceIdentifier). If you don&apos;t use the RenderingResourceIdentifier in this patch, maybe add it later.
&gt; 
&gt; If the variant holds a ImageBuffer, does it have to be a concrete image buffer?

Yes the RenderingResourceIdentifier was added for GPUProcess. The plan is to encode the RenderingResourceIdentifier of the Image or the ImageBuffer. When decoding the FEImage, this RenderingResourceIdentifier will be replaced with the appropriate resource. But since the RenderingResourceIdentifier is not used in this patch, I removed it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813002</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-08 23:39:27 -0800</bug_when>
    <thetext>Committed r285481 (244005@main): &lt;https://commits.webkit.org/244005@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443633.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442574</attachid>
            <date>2021-10-27 03:12:12 -0700</date>
            <delta_ts>2021-10-27 08:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232369-20211027031211.patch</filename>
            <type>text/plain</type>
            <size>25562</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIxNTA4ZWVkN2ExM2Rm
OWU0M2NiMDIwZDg0MzVkY2FmMGQ0YjY0Yi4uY2U2Njg3ZjkzZWIwYmYzZTllODE4ZWQxNDA4OWUx
YzdiNmZmMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEwLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIGxheWVyaW5nIHZpb2xhdGlvbnMgZm9ybSBGRUltYWdlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkdGRUltYWdlRWxlbWVudCBz
aG91bGQgY3JlYXRlIHRoZSBGRUltYWdlIHdpdGggZWl0aGVyIGFuIEltYWdlIG9yIGFuIAorICAg
ICAgICBJbWFnZUJ1ZmZlciBiYXNlZCBvbiB3aGV0aGVyIHRoZSAnaHJlZicgYXR0cmlidXRlIHBv
aW50cyB0byBhIHJlc291cmNlCisgICAgICAgIGltYWdlIG9yIGFuIFNWRyBlbGVtZW50LiBGb3Ig
dGhlIFNWRyBlbGVtZW50LCBhbiBJbWFnZUJ1ZmZlciB3aWxsIGJlIAorICAgICAgICBjcmVhdGVk
IGFuZCB0aGUgcmVuZGVyZXIgb2YgdGhpcyBlbGVtZW50IHdpbGwgYmUgZHJhd24gdG8gdGhpcyBp
dC4KKworICAgICAgICBJbnN0ZWFkIG9mIGhvbGRpbmcgYSBUcmVlU2NvcGUgYW5kIEltYWdlLCBG
RUltYWdlIGNhbiBob2xkIGEgdmFyaWFudCBvZgorICAgICAgICBJbWFnZSwgSW1hZ2VCdWZmZXIg
YW5kIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4gVGhlIGxhdGVyIG9wdGlvbiAKKyAgICAg
ICAgd2lsbCBiZSB1c2VkIHdoZW4gZW5jb2RpbmcgdGhlIEZFSW1hZ2UgdG8gR1BVIFByb2Nlc3Mu
CisKKyAgICAgICAgVGVzdHM6IHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtZWxlbWVudC1wcmltaXRpdmUt
c3VicmVnaW9uLWV4cGVjdGVkLnN2ZworICAgICAgICAgICAgICAgc3ZnL2ZpbHRlcnMvZmVJbWFn
ZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnCisgICAgICAgICAgICAgICBzdmcvZmls
dGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCisgICAg
ICAgICAgICAgICBzdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24u
c3ZnCisKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFn
ZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUlt
YWdlOjpjcmVhdGVXaXRoSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFn
ZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKwogMjAyMS0xMC0yNSAgWmlyYW4gU3Vu
ICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mtd3JpdGluZy1tb2Rlc10gRml4IHNp
emluZyBvZiBvcnRob2dvbmFsIGVsZW1lbnRzIHdpdGggcGVyY2VudGFnZSBtYXJnaW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlMTQ2ODhhNWViMTc2ZjAy
YTE2YzA1NTBmMDgxMTk1ZDNjMjdlYzRmLi40MTllMzk4YmVhNzQxYzgxNWU4ZTI2ZDEwY2IxOTI0
ZTRlYzI3ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAg
LTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE3NCwxNiArMTc2LDQ5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcGFyZW50UmVuZGVyZXIpOwogfQogCitzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZl
cj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0KCkg
Y29uc3QKK3sKKyAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7CisgICAgaWYgKCFpczxTVkdFbGVt
ZW50Pih0YXJnZXQuZWxlbWVudCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoaXNE
ZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YodGFyZ2V0LmVsZW1lbnQuZ2V0KCkpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjb250ZXh0Tm9kZSA9IHN0YXRpY19wb2ludGVy
X2Nhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpOworICAgIGF1dG8gcmVuZGVyZXIgPSBj
b250ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgLy8gQ2FsY3VsYXRlIHRoZSBhYnNvbHV0ZVRyYW5zZm9ybQorICAgIGF1
dG8gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFu
c2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqcmVuZGVyZXIpOworICAgIGlm
ICghYWJzb2x1dGVUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3Jt
KGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2Nh
bGUoKSwgMCwgMCk7CisKKyAgICBhdXRvIGltYWdlUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcygpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byYgY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAqcmVu
ZGVyZXIsIEFmZmluZVRyYW5zZm9ybSgpKTsKKworICAgIHJldHVybiB7IGltYWdlQnVmZmVyLCBp
bWFnZVJlY3QgfTsKK30KKwogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKICAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFn
ZShmaWx0ZXIsIG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIoKSksIHBy
ZXNlcnZlQXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoZmls
dGVyLCBSZWY8SW1hZ2U+IHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIAotICAgIGF1dG8gdGFyZ2V0ID0gU1ZH
VVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIHRyZWVTY29w
ZSgpKTsKLSAgICBpZiAoaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YodGFyZ2V0LmVs
ZW1lbnQuZ2V0KCkpKQorICAgIGF1dG8gW2ltYWdlQnVmZmVyLCBpbWFnZVJlY3RdID0gaW1hZ2VC
dWZmZXJGb3JFZmZlY3QoKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKGZp
bHRlciwgdHJlZVNjb3BlKCksIGhyZWYoKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICBy
ZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKGZpbHRlciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwo
KSwgaW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogfQogCiB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYg
dXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggZDkz
ZTBkMGRiOGI4ODY2NTQ4MGYyMTAxNWEyNTZiYWRhMTU0YzVjNy4uNjBjZTEwMmMwZjcyYWM4OGNh
OTAwMTAzNzNkNjY0YzY2MzJkNGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTU1LDYgKzU1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRmluaXNo
SW5zZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwogCisgICAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VC
dWZmZXI+LCBGbG9hdFJlY3Q+IGltYWdlQnVmZmVyRm9yRWZmZWN0KCkgY29uc3Q7CisKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmlu
ZGV4IDM4NWFmMjkwODQ4YTNkMGI4M2YxMmFjOTYxOWU2YmY5NmM5ZjIzOTYuLmFjMGE0ODllODEw
ODZjNWE1YmJjODBmNmNlYTM5NzNjNGQ3YmFhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0zLDYgKzMsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMyw3NiArMjQsNjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
VkdGRUltYWdlLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJG
aWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgotI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiU1ZH
VVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0
cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2Vy
dmVBc3BlY3RSYXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkltYWdlKQot
ICAgICwgbV9pbWFnZShpbWFnZSkKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQotewotfQotCi1GRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBU
cmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpJbWFnZSkKLSAgICAsIG1fdHJlZVNjb3BlKCZ0cmVlU2NvcGUpCi0g
ICAgLCBtX2hyZWYoaHJlZikKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwg
UmVmPEltYWdlPiYmIGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCiB7CisgICAgYXV0byBpbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7
IH0sIGltYWdlLT5zaXplKCkgfTsKKyAgICByZXR1cm4gY3JlYXRlKGZpbHRlciwgV1RGTW92ZShp
bWFnZSksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKLVJlZjxGRUltYWdl
PiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4g
aW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RS
YXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFNvdXJj
ZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIGltYWdlLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIs
IFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0
aW8pKTsKIH0KIAotUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVuY2Uo
RmlsdGVyJiBmaWx0ZXIsIFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykK
K0ZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFNvdXJjZUltYWdlJiYgc291cmNlSW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBUeXBlOjpJbWFnZSkKKyAgICAsIG1fc291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJ
bWFnZSkpCisgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAgLCBt
X3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwgdHJlZVNjb3BlLCBocmVmLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKQogewotICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5z
Zm9ybSgpLm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkpOwotICAgIEZsb2F0UmVj
dCBzcmNSZWN0OwotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIHNyY1JlY3Quc2V0U2l6ZSht
X2ltYWdlLT5zaXplKCkpOwotICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3Jt
UmVjdChwYWludFJlY3QsIHNyY1JlY3QpOwotICAgIH0gZWxzZSBpZiAoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIgPSByZWZlcmVuY2VkUmVuZGVyZXIoKSkKLSAgICAgICAgc3JjUmVjdCA9IGZpbHRl
cigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKSk7CisgICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24gPSBmaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oKTsKKworICAgIGF1dG8gaW1hZ2VSZWN0ID0gV1RGOjpzd2l0Y2hP
bihtX3NvdXJjZUltYWdlLAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mKSB7CisgICAg
ICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgICAg
IGF1dG8gc3JjUmVjdCA9IG1fc291cmNlSW1hZ2VSZWN0OworICAgICAgICAgICAgbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBpbWFnZVJlY3Q7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVm
PEltYWdlQnVmZmVyPiYpIHsKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVTdWJyZWdpb247
CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpbWFnZVJlY3QgPSBmaWx0ZXIo
KS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKIAogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCi0gICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKKyAgICAgICAgaW1hZ2VSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAgIGVs
c2UKLSAgICAgICAgcGFpbnRSZWN0LnVuaXRlKG1heEVmZmVjdFJlY3QoKSk7Ci0gICAgc2V0QWJz
b2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKLX0KLQotUmVuZGVy
RWxlbWVudCogRkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fdHJlZVNjb3BlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHRhcmdldCA9
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcobV9ocmVmLCAqbV90
cmVlU2NvcGUpOwotICAgIGlmICghaXM8U1ZHRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdGFyZ2V0LmVsZW1lbnQtPnJlbmRlcmVy
KCk7CisgICAgICAgIGltYWdlUmVjdC51bml0ZShtYXhFZmZlY3RSZWN0KCkpOworICAgIHNldEFi
c29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoaW1hZ2VSZWN0KSk7CiB9CiAKIHZvaWQg
RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpOwotICAgIGlmICghbV9pbWFnZSAmJiAhcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3
YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCiAgICAgc2V0UmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKQEAgLTEwMCw1NCArODcsMzYg
QEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGZpbHRl
cigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
KSk7Ci0KLSAgICBGbG9hdFJlY3Qgc3JjUmVjdDsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAg
IHNyY1JlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QocmVuZGVyZXIt
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwotICAgIGVsc2UgewotICAgICAgICBz
cmNSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9pbWFnZS0+c2l6ZSgpKTsKLSAgICAg
ICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3Qp
OwotICAgIH0KLQotICAgIEludFBvaW50IHBhaW50TG9jYXRpb24gPSBhYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCk7Ci0gICAgZGVzdFJlY3QubW92ZSgtcGFpbnRMb2NhdGlvbi54KCksIC1w
YWludExvY2F0aW9uLnkoKSk7Ci0KKyAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9IGZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIGF1dG8mIGNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgp
OwotICAgICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0KLSAgICAg
ICAgUmVmUHRyIGNvbnRleHROb2RlID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVs
ZW1lbnQoKSk7Ci0gICAgICAgIGlmIChjb250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkp
IHsKLSAgICAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0Tm9k
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwotCi0gICAgICAg
ICAgICAvLyBJZiB3ZSdyZSByZWZlcmVuY2luZyBhbiBlbGVtZW50IHdpdGggcGVyY2VudGFnZSB1
bml0cywgZWcuIDxyZWN0IHdpdGg9IjMwJSI+IHRob3NlIHZhbHVlcyB3ZXJlIHJlc29sdmVkIGFn
YWluc3QgdGhlIHZpZXdwb3J0LgotICAgICAgICAgICAgLy8gQnVpbGQgdXAgYSB0cmFuc2Zvcm1h
dGlvbiB0aGF0IG1hcHMgZnJvbSB0aGUgdmlld3BvcnQgc3BhY2UgdG8gdGhlIGZpbHRlciBwcmlt
aXRpdmUgc3VicmVnaW9uLgotICAgICAgICAgICAgaWYgKGxlbmd0aENvbnRleHQuZGV0ZXJtaW5l
Vmlld3BvcnQodmlld3BvcnRTaXplKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LmNvbmNhdENU
TShtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6
ZSksIGRlc3RSZWN0KSk7CisgICAgV1RGOjpzd2l0Y2hPbihtX3NvdXJjZUltYWdlLAorICAgICAg
ICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mIGltYWdlKSB7CisgICAgICAgICAgICBhdXRvIGltYWdl
UmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1f
c291cmNlSW1hZ2VSZWN0OworICAgICAgICAgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5z
Zm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdCA9IGZp
bHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChpbWFnZVJlY3QpOworICAgICAgICAg
ICAgaW1hZ2VSZWN0ID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVj
dCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc3Jj
UmVjdCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3Vi
cmVnaW9uOworICAgICAgICAgICAgaW1hZ2VSZWN0Lm1vdmVCeShtX3NvdXJjZUltYWdlUmVjdC5s
b2NhdGlvbigpKTsKKyAgICAgICAgICAgIGltYWdlUmVjdCA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkubWFwUmVjdChpbWFnZVJlY3QpOworICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVjdCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGltYWdlUmVjdC5sb2NhdGlvbigp
KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0KLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKLSAgICAgICAgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAqcmVuZGVyZXIs
IGNvbnRlbnRUcmFuc2Zvcm1hdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
b250ZXh0LmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICk7CiB9
CiAKIFRleHRTdHJlYW0mIEZFSW1hZ2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKLSAgICBG
bG9hdFNpemUgaW1hZ2VTaXplOwotICAgIGlmIChtX2ltYWdlKQotICAgICAgICBpbWFnZVNpemUg
PSBtX2ltYWdlLT5zaXplKCk7Ci0gICAgZWxzZSBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHJlZmVyZW5jZWRSZW5kZXJlcigpKQotICAgICAgICBpbWFnZVNpemUgPSBlbmNsb3NpbmdJbnRS
ZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKS5zaXplKCk7CiAg
ICAgdHMgPDwgaW5kZW50IDw8ICJbZmVJbWFnZSI7CiAgICAgRmlsdGVyRWZmZWN0OjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRhdGlvbik7Ci0gICAgdHMgPDwgIiBpbWFnZS1z
aXplPVwiIiA8PCBpbWFnZVNpemUud2lkdGgoKSA8PCAieCIgPDwgaW1hZ2VTaXplLmhlaWdodCgp
IDw8ICJcIl1cbiI7CisgICAgdHMgPDwgIiBpbWFnZS1zaXplPVwiIiA8PCBtX3NvdXJjZUltYWdl
UmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBtX3NvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSA8PCAiXCJd
XG4iOwogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyBkdW1wIGFsc28gb2JqZWN0IHJldHVybmVk
IGJ5IFNWR0ZFSW1hZ2U6OmltYWdlKCkgPwogICAgIHJldHVybiB0czsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCBhYzE2MGVk
Y2U3YzBlMGEwNjdiZGVmYmQ3MDdmMmFiZTU1OTA4MWI2Li44Nzk2MzFjNjhhY2JiMmJhNGNiMDlj
ZDQ0MmU1NDE5YTE5ZDYzNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw0MCAr
MjQsMzkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5j
bHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBJbWFnZTsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFzcyBUcmVlU2Nv
cGU7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRkVJbWFnZSBmaW5hbCA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0
aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5j
ZShGaWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmKTsKKyAgICB1c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6dmFyaWFudDwK
KyAgICAgICAgUmVmPEltYWdlPiwKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPiwKKyAgICAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgPjsKIAotcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIH5GRUltYWdlKCkgPSBkZWZhdWx0OwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgUmVmUHRyPElt
YWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAgRkVJbWFnZShG
aWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShGaWx0ZXImLCBS
ZWY8SW1hZ2U+JiYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0
YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKEZpbHRlciYsIFNvdXJjZUltYWdlJiYsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUmKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiRkVJbWFnZSI7IH0KKyAgICBTb3VyY2VJbWFnZSYgc291cmNlSW1hZ2UoKSB7IHJldHVybiBt
X3NvdXJjZUltYWdlOyB9CisgICAgdm9pZCBzZXRJbWFnZVNvdXJjZShTb3VyY2VJbWFnZSYmIHNv
dXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogCi0g
ICAgRmlsdGVyRWZmZWN0VHlwZSBmaWx0ZXJFZmZlY3RUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gRmlsdGVyRWZmZWN0VHlwZUltYWdlOyB9Citwcml2YXRlOgorICAgIEZFSW1hZ2UoRmlsdGVy
JiwgU291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCi0gICAgUmVuZGVyRWxlbWVudCogcmVm
ZXJlbmNlZFJlbmRlcmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJGRUltYWdlIjsgfQogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSBmaW5hbDsKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkg
ZmluYWw7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQ
dHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICAvLyBtX3RyZWVTY29wZSB3aWxsIG5ldmVyIGJlIGEg
ZGFuZ2xpbmcgcmVmZXJlbmNlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5MjQzCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZSB7IG51bGxwdHIgfTsKLSAg
ICBTdHJpbmcgbV9ocmVmOworICAgIFNvdXJjZUltYWdlIG1fc291cmNlSW1hZ2U7CisgICAgRmxv
YXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzJlMGE4ZjI5YzBjODA5NjA5
ZTMzYmU4NWRhNzc0ZjcwZmNhZGQwNy4uY2ZmMjc2YWYyMzVkMWNiODIzYTQ1NGZhMWEyY2FmNmM1
YjVjMzBhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEwLTI3ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIGxh
eWVyaW5nIHZpb2xhdGlvbnMgZm9ybSBGRUltYWdlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtY2hhbmdl
LXRhcmdldC1pZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVJbWFnZS1l
bGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtaW1hZ2UtcHJpbWl0aXZlLXN1YnJl
Z2lvbi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2Ut
aW1hZ2UtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0
ZXJzL2ZlSW1hZ2UtcmVtb3ZlLXRhcmdldC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTAtMjUgIFRp
bSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL2ZvY3VzLXZpc2libGUtMDA5Lmh0bWwgZmxh
a3kgZmFpbHVyZSBvbiBtYWNPUyB3azEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9maWx0
ZXJzL2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9mZUltYWdlLWNoYW5nZS10YXJnZXQtaWQtZXhwZWN0ZWQudHh0CmluZGV4IGE3
MWU0NjVhNjk4NGNiZmZjOTUzYWNmYmE5YjIxZTJmYzgwYTY3MjkuLmEyZWVlZGY5MTZlODg4NmMx
MjRlYTcyNTRlMWEzMGJhYmEyMmIxZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9maWx0
ZXJzL2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1jaGFuZ2UtdGFyZ2V0LWlkLWV4cGVjdGVkLnR4dApAQCAt
NSw2ICs1LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyU1ZHUmVj
dCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDgwMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD0xMDAu
MDBdCiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImZpbHRlciJd
IFtmaWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFj
ZU9uVXNlXQotICAgICAgICBbZmVJbWFnZSBpbWFnZS1zaXplPSIwLjAweDAuMDAiXQogICAgIFJl
bmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMTExeDExMSBbZmlsbD17W3R5cGU9U09M
SURdIFtjb2xvcj0jMDAwMDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFto
ZWlnaHQ9MTAwLjAwXQogICAgICAgW2ZpbHRlcj0iZmlsdGVyIl0gUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIge2ZpbHRlcn0gYXQgKC0xMCwtMTApIHNpemUgMTIweDEyMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24t
ZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXBy
aW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhM2ViZjgwNDFjYTQy
YzkzNDlkZGVjOTQzNzYzODBmY2E3NWI3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi1leHBlY3Rl
ZC5zdmcKQEAgLTAsMCArMSwyMyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0icmVkLXJlY3RhbmdsZSIgeD0i
LTEwMCIgeT0iLTEwMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9InJlZCIvPgorICAg
ICAgICA8cGF0aCBpZD0iZ3JlZW4tdHJpYW5nbGUiIGQ9Ik0gMCAwIEwgMTUwIDAgTCAxNTAgMTUw
IHoiIGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDxwYXRoIGlkPSJibHVlLXRyaWFuZ2xlIiAgZD0i
TSAwIDAgTCAwIDE1MCBMIDE1MCAwIHoiIGZpbGw9ImJsdWUiLz4KKyAgICAgICAgPGNsaXBQYXRo
IGlkPSJzcXVhcmUtY2xpcCI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCIvPgorICAgICAgICA8L2NsaXBQYXRoPgorICAgIDwvZGVmcz4KKyAgICA8Zz4KKyAgICAg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAsIDUwKSI+CisgICAgICAgICAgICA8dXNlIGNs
aXAtcGF0aD0idXJsKCNzcXVhcmUtY2xpcCkiIGhyZWY9IiNyZWQtcmVjdGFuZ2xlIiAvPgorICAg
ICAgICA8L2c+CisKKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAwLCA1MCkiPgor
ICAgICAgICAgICAgPHVzZSBjbGlwLXBhdGg9InVybCgjc3F1YXJlLWNsaXApIiBocmVmPSIjZ3Jl
ZW4tdHJpYW5nbGUiIC8+CisgICAgICAgIDwvZz4KKworICAgICAgICA8ZyB0cmFuc2Zvcm09InRy
YW5zbGF0ZSgzNTAsIDUwKSI+CisgICAgICAgICAgICA8dXNlIGNsaXAtcGF0aD0idXJsKCNzcXVh
cmUtY2xpcCkiIGhyZWY9IiNibHVlLXRyaWFuZ2xlIiAvPgorICAgICAgICA8L2c+CisgICAgPC9n
PgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWVs
ZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9m
ZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlYmIy
OTlkMWJmYTE5MTIxODk5ODM4YTI5MjgwY2FjODI5ZGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtZWxlbWVudC1wcmltaXRpdmUtc3VicmVnaW9u
LnN2ZwpAQCAtMCwwICsxLDMxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxyZWN0IGlkPSJyZWQtcmVjdGFuZ2xlIiB4PSIt
MTAwIiB5PSItMTAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0icmVkIi8+CisgICAg
ICAgIDxwYXRoIGlkPSJncmVlbi10cmlhbmdsZSIgZD0iTSAwIDAgTCAxNTAgMCBMIDE1MCAxNTAg
eiIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPHBhdGggaWQ9ImJsdWUtdHJpYW5nbGUiICBkPSJN
IDAgMCBMIDAgMTUwIEwgMTUwIDAgeiIgZmlsbD0iYmx1ZSIvPgorCisgICAgICAgIDxmaWx0ZXIg
aWQ9InJlZC1yZWN0YW5nbGUtZmlsdGVyIiB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIx
Ij4KKyAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9IiNyZWQtcmVjdGFuZ2xlIi8+CisgICAgICAg
IDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImdyZWVuLXRyaWFuZ2xlLWZpbHRlciIg
eD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+CisgICAgICAgICAgICA8ZmVJbWFnZSBo
cmVmPSIjZ3JlZW4tdHJpYW5nbGUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZp
bHRlciBpZD0iYmx1ZS10cmlhbmdsZS1maWx0ZXIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWln
aHQ9IjEiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0iI2JsdWUtdHJpYW5nbGUiLz4KKyAg
ICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorICAgIDxnPgorICAgICAgICA8ZyB0cmFuc2Zv
cm09InRyYW5zbGF0ZSg1MCwgNTApIj4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiBzdHlsZT0iZmlsdGVyOnVybCgjcmVkLXJlY3RhbmdsZS1maWx0ZXIpIi8+Cisg
ICAgICAgIDwvZz4KKworICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDAsIDUwKSI+
CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZpbHRl
cjp1cmwoI2dyZWVuLXRyaWFuZ2xlLWZpbHRlcikiLz4KKyAgICAgICAgPC9nPgorICAgICAgICA8
ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTAsIDUwKSI+CisgICAgICAgICAgICA8cmVjdCB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZpbHRlcjp1cmwoI2JsdWUtdHJpYW5nbGUtZmls
dGVyKSIvPgorICAgICAgICA8L2c+CisgICAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24tZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRp
dmUtc3VicmVnaW9uLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmEwNTc5YWY3YzE4OWMwMDI3
YjVkYTRlOWIzZDFhYjhmNThhMmJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Zn
L2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLWV4cGVjdGVkLnN2ZwpA
QCAtMCwwICsxLDEwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+
CisgICAgPGc+CisgICAgICAgIDxpbWFnZSB4PSI0MCIgeT0iNjUiIHdpZHRoPSIxMjAiIGhlaWdo
dD0iMTIwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIi8+CisgICAgICAgIDxyZWN0IHg9IjUw
IiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3Jl
ZW4iLz4KKyAgICAgICAgPGltYWdlIHg9IjI1MCIgeT0iMjUiIHdpZHRoPSIxMDAiIGhlaWdodD0i
MjAwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25l
Ii8+CisgICAgICAgIDxyZWN0IHg9IjI1MCIgeT0iMjUiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAw
IiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIi8+CisgICAgICAgIDxpbWFnZSB4PSI1MDAiIHk9
IjY1IiB3aWR0aD0iNjAiIGhlaWdodD0iMTIwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiBw
cmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIi8+CisgICAgICAgIDxyZWN0IHg9IjQ1MCIgeT0iMjUi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIi8+Cisg
ICAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUlt
YWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRl
cnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTFi
MzJmMGE5ZDAzMjIzMTM2YmQ5M2JkMDhmM2IxZTIwZTY0ZTc4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9u
LnN2ZwpAQCAtMCwwICsxLDIxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxmaWx0ZXIgaWQ9IkRlZmF1bHQiPgorICAgICAg
ICAgICAgPGZlSW1hZ2UgaHJlZj0icmVzb3VyY2VzL2dyZWVuLnBuZyIgLz4KKyAgICAgICAgPC9m
aWx0ZXI+CisgICAgICAgIDxmaWx0ZXIgaWQ9IkZpdHRlZCIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9InJlc291cmNlcy9ncmVl
bi5wbmciIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHByZXNlcnZlQXNw
ZWN0UmF0aW89Im5vbmUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgICAgIDxmaWx0ZXIgaWQ9
IlNoaWZ0ZWQiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0icmVzb3VyY2VzL2dyZWVuLnBu
ZyIgeD0iNTAwIiB5PSI1Ii8+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKyAgICA8
Zz4KKyAgICAgICAgPHJlY3QgeD0iNTAiICB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAi
IGZpbHRlcj0idXJsKCNEZWZhdWx0KSIvPgorICAgICAgICA8cmVjdCB4PSI1MCIgIHk9IjI1IiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIvPgorICAg
ICAgICA8cmVjdCB4PSIyNTAiIHk9IjI1IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsdGVy
PSJ1cmwoI0ZpdHRlZCkiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUwIiB5PSIyNSIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JlZW4iLz4KKyAgICAgICAgPHJl
Y3QgeD0iNDUwIiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbHRlcj0idXJsKCNT
aGlmdGVkKSIvPgorICAgICAgICA8cmVjdCB4PSI0NTAiIHk9IjI1IiB3aWR0aD0iMTAwIiBoZWln
aHQ9IjIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIvPgorICAgIDwvZz4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1yZW1vdmUtdGFyZ2V0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtcmVtb3ZlLXRh
cmdldC1leHBlY3RlZC50eHQKaW5kZXggZjAzNGExNmY2YjBkODA4Mzg1YTcwMjZkODBkYzdlZjE3
OTNjOTk5OC4uNzg2YmI5Mjk1NmJmMDAzNzMzMWVjOTQ4NzZiN2M4OTEzYmQ5NjYzMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1yZW1vdmUtdGFyZ2V0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLXJlbW92ZS10YXJn
ZXQtZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKICAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCwwKSBzaXplIDExMXgxMTEKICAgICBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImZpbHRlciJdIFtmaWx0ZXJVbml0cz1v
YmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQotICAgICAg
ICBbZmVJbWFnZSBpbWFnZS1zaXplPSIwLjAweDAuMDAiXQogICAgIFJlbmRlclNWR1JlY3Qge3Jl
Y3R9IGF0ICgwLDApIHNpemUgMTExeDExMSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAw
MDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWlnaHQ9MTAwLjAwXQog
ICAgICAgW2ZpbHRlcj0iZmlsdGVyIl0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0g
YXQgKC0xMCwtMTApIHNpemUgMTIweDEyMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442594</attachid>
            <date>2021-10-27 08:28:25 -0700</date>
            <delta_ts>2021-10-27 14:23:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232369-20211027082824.patch</filename>
            <type>text/plain</type>
            <size>27155</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIxNTA4ZWVkN2ExM2Rm
OWU0M2NiMDIwZDg0MzVkY2FmMGQ0YjY0Yi4uY2U2Njg3ZjkzZWIwYmYzZTllODE4ZWQxNDA4OWUx
YzdiNmZmMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEwLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIGxheWVyaW5nIHZpb2xhdGlvbnMgZm9ybSBGRUltYWdlIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzNjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkdGRUltYWdlRWxlbWVudCBz
aG91bGQgY3JlYXRlIHRoZSBGRUltYWdlIHdpdGggZWl0aGVyIGFuIEltYWdlIG9yIGFuIAorICAg
ICAgICBJbWFnZUJ1ZmZlciBiYXNlZCBvbiB3aGV0aGVyIHRoZSAnaHJlZicgYXR0cmlidXRlIHBv
aW50cyB0byBhIHJlc291cmNlCisgICAgICAgIGltYWdlIG9yIGFuIFNWRyBlbGVtZW50LiBGb3Ig
dGhlIFNWRyBlbGVtZW50LCBhbiBJbWFnZUJ1ZmZlciB3aWxsIGJlIAorICAgICAgICBjcmVhdGVk
IGFuZCB0aGUgcmVuZGVyZXIgb2YgdGhpcyBlbGVtZW50IHdpbGwgYmUgZHJhd24gdG8gdGhpcyBp
dC4KKworICAgICAgICBJbnN0ZWFkIG9mIGhvbGRpbmcgYSBUcmVlU2NvcGUgYW5kIEltYWdlLCBG
RUltYWdlIGNhbiBob2xkIGEgdmFyaWFudCBvZgorICAgICAgICBJbWFnZSwgSW1hZ2VCdWZmZXIg
YW5kIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4gVGhlIGxhdGVyIG9wdGlvbiAKKyAgICAg
ICAgd2lsbCBiZSB1c2VkIHdoZW4gZW5jb2RpbmcgdGhlIEZFSW1hZ2UgdG8gR1BVIFByb2Nlc3Mu
CisKKyAgICAgICAgVGVzdHM6IHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtZWxlbWVudC1wcmltaXRpdmUt
c3VicmVnaW9uLWV4cGVjdGVkLnN2ZworICAgICAgICAgICAgICAgc3ZnL2ZpbHRlcnMvZmVJbWFn
ZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnCisgICAgICAgICAgICAgICBzdmcvZmls
dGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCisgICAg
ICAgICAgICAgICBzdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24u
c3ZnCisKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFn
ZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUlt
YWdlOjpjcmVhdGVXaXRoSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFn
ZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
RUltYWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKwogMjAyMS0xMC0yNSAgWmlyYW4gU3Vu
ICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mtd3JpdGluZy1tb2Rlc10gRml4IHNp
emluZyBvZiBvcnRob2dvbmFsIGVsZW1lbnRzIHdpdGggcGVyY2VudGFnZSBtYXJnaW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBlMTQ2ODhhNWViMTc2ZjAy
YTE2YzA1NTBmMDgxMTk1ZDNjMjdlYzRmLi40MTllMzk4YmVhNzQxYzgxNWU4ZTI2ZDEwY2IxOTI0
ZTRlYzI3ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAg
LTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE3NCwxNiArMTc2LDQ5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcGFyZW50UmVuZGVyZXIpOwogfQogCitzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZl
cj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0KCkg
Y29uc3QKK3sKKyAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7CisgICAgaWYgKCFpczxTVkdFbGVt
ZW50Pih0YXJnZXQuZWxlbWVudCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoaXNE
ZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YodGFyZ2V0LmVsZW1lbnQuZ2V0KCkpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjb250ZXh0Tm9kZSA9IHN0YXRpY19wb2ludGVy
X2Nhc3Q8U1ZHRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpOworICAgIGF1dG8gcmVuZGVyZXIgPSBj
b250ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgLy8gQ2FsY3VsYXRlIHRoZSBhYnNvbHV0ZVRyYW5zZm9ybQorICAgIGF1
dG8gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFu
c2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqcmVuZGVyZXIpOworICAgIGlm
ICghYWJzb2x1dGVUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3Jt
KGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2Nh
bGUoKSwgMCwgMCk7CisKKyAgICBhdXRvIGltYWdlUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcygpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byYgY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAqcmVu
ZGVyZXIsIEFmZmluZVRyYW5zZm9ybSgpKTsKKworICAgIHJldHVybiB7IGltYWdlQnVmZmVyLCBp
bWFnZVJlY3QgfTsKK30KKwogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKICAgICBp
ZiAobV9jYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFn
ZShmaWx0ZXIsIG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIoKSksIHBy
ZXNlcnZlQXNwZWN0UmF0aW8oKSk7CisgICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGUoZmls
dGVyLCBSZWY8SW1hZ2U+IHsgKm1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIoKSkgfSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIAotICAgIGF1dG8gdGFyZ2V0ID0gU1ZH
VVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIHRyZWVTY29w
ZSgpKTsKLSAgICBpZiAoaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YodGFyZ2V0LmVs
ZW1lbnQuZ2V0KCkpKQorICAgIGF1dG8gW2ltYWdlQnVmZmVyLCBpbWFnZVJlY3RdID0gaW1hZ2VC
dWZmZXJGb3JFZmZlY3QoKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKGZp
bHRlciwgdHJlZVNjb3BlKCksIGhyZWYoKSwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKKyAgICBy
ZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKGZpbHRlciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwo
KSwgaW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogfQogCiB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYg
dXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggZDkz
ZTBkMGRiOGI4ODY2NTQ4MGYyMTAxNWEyNTZiYWRhMTU0YzVjNy4uNjBjZTEwMmMwZjcyYWM4OGNh
OTAwMTAzNzNkNjY0YzY2MzJkNGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTU1LDYgKzU1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRmluaXNo
SW5zZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwogCisgICAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VC
dWZmZXI+LCBGbG9hdFJlY3Q+IGltYWdlQnVmZmVyRm9yRWZmZWN0KCkgY29uc3Q7CisKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmlu
ZGV4IDM4NWFmMjkwODQ4YTNkMGI4M2YxMmFjOTYxOWU2YmY5NmM5ZjIzOTYuLmFjMGE0ODllODEw
ODZjNWE1YmJjODBmNmNlYTM5NzNjNGQ3YmFhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0zLDYgKzMsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMyw3NiArMjQsNjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
VkdGRUltYWdlLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJG
aWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgotI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiU1ZH
VVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0
cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2Vy
dmVBc3BlY3RSYXRpbykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkltYWdlKQot
ICAgICwgbV9pbWFnZShpbWFnZSkKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQotewotfQotCi1GRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBU
cmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpJbWFnZSkKLSAgICAsIG1fdHJlZVNjb3BlKCZ0cmVlU2NvcGUpCi0g
ICAgLCBtX2hyZWYoaHJlZikKLSAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwg
UmVmPEltYWdlPiYmIGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCiB7CisgICAgYXV0byBpbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7
IH0sIGltYWdlLT5zaXplKCkgfTsKKyAgICByZXR1cm4gY3JlYXRlKGZpbHRlciwgV1RGTW92ZShp
bWFnZSksIGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKLVJlZjxGRUltYWdl
PiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4g
aW1hZ2UsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RS
YXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFNvdXJj
ZUltYWdlJiYgc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIGltYWdlLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIs
IFdURk1vdmUoc291cmNlSW1hZ2UpLCBzb3VyY2VJbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0
aW8pKTsKIH0KIAotUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVuY2Uo
RmlsdGVyJiBmaWx0ZXIsIFRyZWVTY29wZSYgdHJlZVNjb3BlLCBjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykK
K0ZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFNvdXJjZUltYWdlJiYgc291cmNlSW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBUeXBlOjpJbWFnZSkKKyAgICAsIG1fc291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJ
bWFnZSkpCisgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAgLCBt
X3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwgdHJlZVNjb3BlLCBocmVmLCBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKSk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKQogewotICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5z
Zm9ybSgpLm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkpOwotICAgIEZsb2F0UmVj
dCBzcmNSZWN0OwotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIHNyY1JlY3Quc2V0U2l6ZSht
X2ltYWdlLT5zaXplKCkpOwotICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3Jt
UmVjdChwYWludFJlY3QsIHNyY1JlY3QpOwotICAgIH0gZWxzZSBpZiAoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIgPSByZWZlcmVuY2VkUmVuZGVyZXIoKSkKLSAgICAgICAgc3JjUmVjdCA9IGZpbHRl
cigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXMoKSk7CisgICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24gPSBmaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oKTsKKworICAgIGF1dG8gaW1hZ2VSZWN0ID0gV1RGOjpzd2l0Y2hP
bihtX3NvdXJjZUltYWdlLAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mKSB7CisgICAg
ICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgICAg
IGF1dG8gc3JjUmVjdCA9IG1fc291cmNlSW1hZ2VSZWN0OworICAgICAgICAgICAgbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBpbWFnZVJlY3Q7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVm
PEltYWdlQnVmZmVyPiYpIHsKKyAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVTdWJyZWdpb247
CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKKyAgICAgICAgfQorICAgICk7CisKKyAgICBpbWFnZVJlY3QgPSBmaWx0ZXIo
KS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKIAogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCi0gICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKKyAgICAgICAgaW1hZ2VSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAgIGVs
c2UKLSAgICAgICAgcGFpbnRSZWN0LnVuaXRlKG1heEVmZmVjdFJlY3QoKSk7Ci0gICAgc2V0QWJz
b2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKLX0KLQotUmVuZGVy
RWxlbWVudCogRkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fdHJlZVNjb3BlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHRhcmdldCA9
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcobV9ocmVmLCAqbV90
cmVlU2NvcGUpOwotICAgIGlmICghaXM8U1ZHRWxlbWVudD4odGFyZ2V0LmVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdGFyZ2V0LmVsZW1lbnQtPnJlbmRlcmVy
KCk7CisgICAgICAgIGltYWdlUmVjdC51bml0ZShtYXhFZmZlY3RSZWN0KCkpOworICAgIHNldEFi
c29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoaW1hZ2VSZWN0KSk7CiB9CiAKIHZvaWQg
RkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpOwotICAgIGlmICghbV9pbWFnZSAmJiAhcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3
YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCiAgICAgc2V0UmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKQEAgLTEwMCw1NCArODcsMzYg
QEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGZpbHRl
cigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
KSk7Ci0KLSAgICBGbG9hdFJlY3Qgc3JjUmVjdDsKLSAgICBpZiAocmVuZGVyZXIpCi0gICAgICAg
IHNyY1JlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QocmVuZGVyZXIt
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkpOwotICAgIGVsc2UgewotICAgICAgICBz
cmNSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9pbWFnZS0+c2l6ZSgpKTsKLSAgICAg
ICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3Qp
OwotICAgIH0KLQotICAgIEludFBvaW50IHBhaW50TG9jYXRpb24gPSBhYnNvbHV0ZVBhaW50UmVj
dCgpLmxvY2F0aW9uKCk7Ci0gICAgZGVzdFJlY3QubW92ZSgtcGFpbnRMb2NhdGlvbi54KCksIC1w
YWludExvY2F0aW9uLnkoKSk7Ci0KKyAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9IGZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIGF1dG8mIGNvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgp
OwotICAgICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0KLSAgICAg
ICAgUmVmUHRyIGNvbnRleHROb2RlID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4ocmVuZGVyZXItPmVs
ZW1lbnQoKSk7Ci0gICAgICAgIGlmIChjb250ZXh0Tm9kZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkp
IHsKLSAgICAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0Tm9k
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwotCi0gICAgICAg
ICAgICAvLyBJZiB3ZSdyZSByZWZlcmVuY2luZyBhbiBlbGVtZW50IHdpdGggcGVyY2VudGFnZSB1
bml0cywgZWcuIDxyZWN0IHdpdGg9IjMwJSI+IHRob3NlIHZhbHVlcyB3ZXJlIHJlc29sdmVkIGFn
YWluc3QgdGhlIHZpZXdwb3J0LgotICAgICAgICAgICAgLy8gQnVpbGQgdXAgYSB0cmFuc2Zvcm1h
dGlvbiB0aGF0IG1hcHMgZnJvbSB0aGUgdmlld3BvcnQgc3BhY2UgdG8gdGhlIGZpbHRlciBwcmlt
aXRpdmUgc3VicmVnaW9uLgotICAgICAgICAgICAgaWYgKGxlbmd0aENvbnRleHQuZGV0ZXJtaW5l
Vmlld3BvcnQodmlld3BvcnRTaXplKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LmNvbmNhdENU
TShtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6
ZSksIGRlc3RSZWN0KSk7CisgICAgV1RGOjpzd2l0Y2hPbihtX3NvdXJjZUltYWdlLAorICAgICAg
ICBbJl0gKGNvbnN0IFJlZjxJbWFnZT4mIGltYWdlKSB7CisgICAgICAgICAgICBhdXRvIGltYWdl
UmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKKyAgICAgICAgICAgIGF1dG8gc3JjUmVjdCA9IG1f
c291cmNlSW1hZ2VSZWN0OworICAgICAgICAgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5z
Zm9ybVJlY3QoaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdCA9IGZp
bHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChpbWFnZVJlY3QpOworICAgICAgICAg
ICAgaW1hZ2VSZWN0ID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVj
dCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwgc3Jj
UmVjdCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgUmVmPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZlU3Vi
cmVnaW9uOworICAgICAgICAgICAgaW1hZ2VSZWN0Lm1vdmVCeShtX3NvdXJjZUltYWdlUmVjdC5s
b2NhdGlvbigpKTsKKyAgICAgICAgICAgIGltYWdlUmVjdCA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkubWFwUmVjdChpbWFnZVJlY3QpOworICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShJbnRSZWN0KGltYWdlUmVjdCkpOworICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGltYWdlUmVjdC5sb2NhdGlvbigp
KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0KLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKLSAgICAgICAgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAqcmVuZGVyZXIs
IGNvbnRlbnRUcmFuc2Zvcm1hdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
b250ZXh0LmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICk7CiB9
CiAKIFRleHRTdHJlYW0mIEZFSW1hZ2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QKIHsKLSAgICBG
bG9hdFNpemUgaW1hZ2VTaXplOwotICAgIGlmIChtX2ltYWdlKQotICAgICAgICBpbWFnZVNpemUg
PSBtX2ltYWdlLT5zaXplKCk7Ci0gICAgZWxzZSBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHJlZmVyZW5jZWRSZW5kZXJlcigpKQotICAgICAgICBpbWFnZVNpemUgPSBlbmNsb3NpbmdJbnRS
ZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKS5zaXplKCk7CiAg
ICAgdHMgPDwgaW5kZW50IDw8ICJbZmVJbWFnZSI7CiAgICAgRmlsdGVyRWZmZWN0OjpleHRlcm5h
bFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRhdGlvbik7Ci0gICAgdHMgPDwgIiBpbWFnZS1z
aXplPVwiIiA8PCBpbWFnZVNpemUud2lkdGgoKSA8PCAieCIgPDwgaW1hZ2VTaXplLmhlaWdodCgp
IDw8ICJcIl1cbiI7CisgICAgdHMgPDwgIiBpbWFnZS1zaXplPVwiIiA8PCBtX3NvdXJjZUltYWdl
UmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBtX3NvdXJjZUltYWdlUmVjdC5oZWlnaHQoKSA8PCAiXCJd
XG4iOwogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyBkdW1wIGFsc28gb2JqZWN0IHJldHVybmVk
IGJ5IFNWR0ZFSW1hZ2U6OmltYWdlKCkgPwogICAgIHJldHVybiB0czsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCBhYzE2MGVk
Y2U3YzBlMGEwNjdiZGVmYmQ3MDdmMmFiZTU1OTA4MWI2Li44Nzk2MzFjNjhhY2JiMmJhNGNiMDlj
ZDQ0MmU1NDE5YTE5ZDYzNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw0MCAr
MjQsMzkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5j
bHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBJbWFnZTsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFzcyBUcmVlU2Nv
cGU7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRkVJbWFnZSBmaW5hbCA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0
aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5j
ZShGaWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmKTsKKyAgICB1c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6dmFyaWFudDwK
KyAgICAgICAgUmVmPEltYWdlPiwKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPiwKKyAgICAgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCisgICAgPjsKIAotcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIH5GRUltYWdlKCkgPSBkZWZhdWx0OwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgUmVmUHRyPElt
YWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7Ci0gICAgRkVJbWFnZShG
aWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShGaWx0ZXImLCBS
ZWY8SW1hZ2U+JiYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0
YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlKEZpbHRlciYsIFNvdXJjZUltYWdlJiYsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUmKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiRkVJbWFnZSI7IH0KKyAgICBTb3VyY2VJbWFnZSYgc291cmNlSW1hZ2UoKSB7IHJldHVybiBt
X3NvdXJjZUltYWdlOyB9CisgICAgdm9pZCBzZXRJbWFnZVNvdXJjZShTb3VyY2VJbWFnZSYmIHNv
dXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogCi0g
ICAgRmlsdGVyRWZmZWN0VHlwZSBmaWx0ZXJFZmZlY3RUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gRmlsdGVyRWZmZWN0VHlwZUltYWdlOyB9Citwcml2YXRlOgorICAgIEZFSW1hZ2UoRmlsdGVy
JiwgU291cmNlSW1hZ2UmJiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCi0gICAgUmVuZGVyRWxlbWVudCogcmVm
ZXJlbmNlZFJlbmRlcmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJGRUltYWdlIjsgfQogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSBmaW5hbDsKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkg
ZmluYWw7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3QgZmluYWw7CiAKLSAgICBSZWZQ
dHI8SW1hZ2U+IG1faW1hZ2U7Ci0KLSAgICAvLyBtX3RyZWVTY29wZSB3aWxsIG5ldmVyIGJlIGEg
ZGFuZ2xpbmcgcmVmZXJlbmNlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk5MjQzCi0gICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZSB7IG51bGxwdHIgfTsKLSAg
ICBTdHJpbmcgbV9ocmVmOworICAgIFNvdXJjZUltYWdlIG1fc291cmNlSW1hZ2U7CisgICAgRmxv
YXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzJlMGE4ZjI5YzBjODA5NjA5
ZTMzYmU4NWRhNzc0ZjcwZmNhZGQwNy4uMzYxZjM0Y2EzZDZkZjdjODA3OWM1YzQyOWZjMWM4NTQy
MTJlZjJhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTI3ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIGxh
eWVyaW5nIHZpb2xhdGlvbnMgZm9ybSBGRUltYWdlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzNjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zdmctZmVpbWFn
ZS1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWw6CisgICAgICAgIFRoZSBkZWZhdWx0IHByaW1pdGl2
ZSBzdWJyZWdpb24gb2YgPGZlSW1hZ2U+IGlzIHsgLTEwJSwgLTEwJSwgMTIwJSwgMTIwJSB9Cisg
ICAgICAgIG9mIHRoZSBib3VuZGluZyBib3guIFNvIHRoZSBmaWx0ZXIgcmVzdWx0IHdpbGwgYmUg
c2hpZnRlZCAoLTEwLCAtMTApIG9mCisgICAgICAgIHRoaXMgdGVzdCBjYXNlIGlmIHdlIGRvIG5v
dCBzcGVjaWZ5IHRoZSAneCcgYW5kIHRoZW4gJ3knIGF0dHJpYnV0ZXMuCisgICAgICAgIFVubGlr
ZSB0aGUgSW1hZ2UgYmFzZWQgZmVJbWFnZSwgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gZGlz
cGxheSB0aGUKKyAgICAgICAgSW1hZ2VCdWZmZXIgb2YgdGhlIGVsZW1lbnQgd2l0aCBpdHMgbG9n
aWNhbCBzaXplIG90aGVyd2lzZSB0aGUgZHJhd2luZworICAgICAgICB3aWxsIGJlIHBpeGVsYXRl
ZCBpZiB3ZSB0cnkgdG8gZmlsbCB0aGUgd2hvbGUgcHJpbWl0aXZlIHN1YnJlZ2lvbi4gVG8KKyAg
ICAgICAgbWFrZSB0aGlzIHRlc3QgcGFnZSBtYXRjaGVzIGl0cyBleHBlY3RlZCBwYWdlLCB3ZSBu
ZWVkIHRvIHNwZWNpZnkgdGhlICd4JworICAgICAgICBhbmQgdGhlICd5JyBhdHRyaWJ1dGVzIG9m
IHRoZSA8ZmVJbWFnZT4gdG8gYmUgemVyb3MuCisKKyAgICAgICAgV2l0aCBhbmQgd2l0aG91dCBz
cGVjaWZ5aW5nIHRoZSAneCcgYW5kIHRoZSAneScgYXR0cmlidXRlcywgdGhlIGRyYXdpbmcKKyAg
ICAgICAgd2l0aCB0aGlzIHBhdGNoIG1hdGNoZXMgdGhlIGRyYXdpbmcgb2YgdGhpcyB0ZXN0IHBh
Z2UgaW4gb3RoZXIgYnJvd3NlcnMuCisKKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUltYWdlLWNo
YW5nZS10YXJnZXQtaWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1h
Z2UtZWxlbWVudC1wcmltaXRpdmUtc3VicmVnaW9uLWV4cGVjdGVkLnN2ZzogQWRkZWQuCisgICAg
ICAgICogc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24uc3Zn
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1z
dWJyZWdpb24tZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUlt
YWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcv
ZmlsdGVycy9mZUltYWdlLXJlbW92ZS10YXJnZXQtZXhwZWN0ZWQudHh0OgorCiAyMDIxLTEwLTI1
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9mb2N1cy12aXNpYmxlLTAwOS5odG1s
IGZsYWt5IGZhaWx1cmUgb24gbWFjT1Mgd2sxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1mZWltYWdlLWhyZWYtaW4tc2hhZG93LXRyZWUuaHRt
bAppbmRleCBjZTQzMDE4ZDNjZGNlNGE0ZTY3MTBkNWM1NzM2NDA3MDBiZWI5YWQ2Li5mYjI3OGIz
NmM3NWVmYWUyMDIxNzdiZGY3NjVkOGIyMjQ0ZjgwMTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1pbi1zaGFkb3ctdHJlZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmctZmVpbWFnZS1ocmVmLWluLXNoYWRv
dy10cmVlLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgPGRlZnM+CiAgICAgICAgICAg
ICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIiAv
PgogICAgICAgICAgICAgPGZpbHRlciBpZD0iaW1hZ2UiPgotICAgICAgICAgICAgICAgIDxmZUlt
YWdlIGhyZWY9IiNyZWN0IiAvPgorICAgICAgICAgICAgICAgIDxmZUltYWdlIHg9IjAiIHk9IjAi
IGhyZWY9IiNyZWN0IiAvPgogICAgICAgICAgICAgPC9maWx0ZXI+CiAgICAgICAgIDwvZGVmcz4K
ICAgICAgICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBzdHlsZT0i
ZmlsdGVyOnVybCgjaW1hZ2UpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJz
L2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcv
ZmlsdGVycy9mZUltYWdlLWNoYW5nZS10YXJnZXQtaWQtZXhwZWN0ZWQudHh0CmluZGV4IGE3MWU0
NjVhNjk4NGNiZmZjOTUzYWNmYmE5YjIxZTJmYzgwYTY3MjkuLmEyZWVlZGY5MTZlODg4NmMxMjRl
YTcyNTRlMWEzMGJhYmEyMmIxZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJz
L2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2ZpbHRlcnMvZmVJbWFnZS1jaGFuZ2UtdGFyZ2V0LWlkLWV4cGVjdGVkLnR4dApAQCAtNSw2
ICs1LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyU1ZHUmVjdCB7
cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMw
MDgwMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD0xMDAuMDBd
CiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImZpbHRlciJdIFtm
aWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9u
VXNlXQotICAgICAgICBbZmVJbWFnZSBpbWFnZS1zaXplPSIwLjAweDAuMDAiXQogICAgIFJlbmRl
clNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMTExeDExMSBbZmlsbD17W3R5cGU9U09MSURd
IFtjb2xvcj0jMDAwMDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWln
aHQ9MTAwLjAwXQogICAgICAgW2ZpbHRlcj0iZmlsdGVyIl0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIge2ZpbHRlcn0gYXQgKC0xMCwtMTApIHNpemUgMTIweDEyMApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24tZXhw
ZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXByaW1p
dGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhM2ViZjgwNDFjYTQyYzkz
NDlkZGVjOTQzNzYzODBmY2E3NWI3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi1leHBlY3RlZC5z
dmcKQEAgLTAsMCArMSwyMyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0icmVkLXJlY3RhbmdsZSIgeD0iLTEw
MCIgeT0iLTEwMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9InJlZCIvPgorICAgICAg
ICA8cGF0aCBpZD0iZ3JlZW4tdHJpYW5nbGUiIGQ9Ik0gMCAwIEwgMTUwIDAgTCAxNTAgMTUwIHoi
IGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDxwYXRoIGlkPSJibHVlLXRyaWFuZ2xlIiAgZD0iTSAw
IDAgTCAwIDE1MCBMIDE1MCAwIHoiIGZpbGw9ImJsdWUiLz4KKyAgICAgICAgPGNsaXBQYXRoIGlk
PSJzcXVhcmUtY2xpcCI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIvPgorICAgICAgICA8L2NsaXBQYXRoPgorICAgIDwvZGVmcz4KKyAgICA8Zz4KKyAgICAgICAg
PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAsIDUwKSI+CisgICAgICAgICAgICA8dXNlIGNsaXAt
cGF0aD0idXJsKCNzcXVhcmUtY2xpcCkiIGhyZWY9IiNyZWQtcmVjdGFuZ2xlIiAvPgorICAgICAg
ICA8L2c+CisKKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAwLCA1MCkiPgorICAg
ICAgICAgICAgPHVzZSBjbGlwLXBhdGg9InVybCgjc3F1YXJlLWNsaXApIiBocmVmPSIjZ3JlZW4t
dHJpYW5nbGUiIC8+CisgICAgICAgIDwvZz4KKworICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgzNTAsIDUwKSI+CisgICAgICAgICAgICA8dXNlIGNsaXAtcGF0aD0idXJsKCNzcXVhcmUt
Y2xpcCkiIGhyZWY9IiNibHVlLXRyaWFuZ2xlIiAvPgorICAgICAgICA8L2c+CisgICAgPC9nPgor
PC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWVsZW1l
bnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUlt
YWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVlYmIyOTlk
MWJmYTE5MTIxODk5ODM4YTI5MjgwY2FjODI5ZGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtZWxlbWVudC1wcmltaXRpdmUtc3VicmVnaW9uLnN2
ZwpAQCAtMCwwICsxLDMxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxyZWN0IGlkPSJyZWQtcmVjdGFuZ2xlIiB4PSItMTAw
IiB5PSItMTAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0icmVkIi8+CisgICAgICAg
IDxwYXRoIGlkPSJncmVlbi10cmlhbmdsZSIgZD0iTSAwIDAgTCAxNTAgMCBMIDE1MCAxNTAgeiIg
ZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPHBhdGggaWQ9ImJsdWUtdHJpYW5nbGUiICBkPSJNIDAg
MCBMIDAgMTUwIEwgMTUwIDAgeiIgZmlsbD0iYmx1ZSIvPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9
InJlZC1yZWN0YW5nbGUtZmlsdGVyIiB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4K
KyAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9IiNyZWQtcmVjdGFuZ2xlIi8+CisgICAgICAgIDwv
ZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImdyZWVuLXRyaWFuZ2xlLWZpbHRlciIgeD0i
MCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+CisgICAgICAgICAgICA8ZmVJbWFnZSBocmVm
PSIjZ3JlZW4tdHJpYW5nbGUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRl
ciBpZD0iYmx1ZS10cmlhbmdsZS1maWx0ZXIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9
IjEiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0iI2JsdWUtdHJpYW5nbGUiLz4KKyAgICAg
ICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorICAgIDxnPgorICAgICAgICA8ZyB0cmFuc2Zvcm09
InRyYW5zbGF0ZSg1MCwgNTApIj4KKyAgICAgICAgICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiBzdHlsZT0iZmlsdGVyOnVybCgjcmVkLXJlY3RhbmdsZS1maWx0ZXIpIi8+CisgICAg
ICAgIDwvZz4KKworICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDAsIDUwKSI+Cisg
ICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZpbHRlcjp1
cmwoI2dyZWVuLXRyaWFuZ2xlLWZpbHRlcikiLz4KKyAgICAgICAgPC9nPgorICAgICAgICA8ZyB0
cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTAsIDUwKSI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZpbHRlcjp1cmwoI2JsdWUtdHJpYW5nbGUtZmlsdGVy
KSIvPgorICAgICAgICA8L2c+CisgICAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0
ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUt
c3VicmVnaW9uLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmEwNTc5YWY3YzE4OWMwMDI3YjVk
YTRlOWIzZDFhYjhmNThhMmJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Zp
bHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLWV4cGVjdGVkLnN2ZwpAQCAt
MCwwICsxLDEwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cisg
ICAgPGc+CisgICAgICAgIDxpbWFnZSB4PSI0MCIgeT0iNjUiIHdpZHRoPSIxMjAiIGhlaWdodD0i
MTIwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIi8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5
PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JlZW4i
Lz4KKyAgICAgICAgPGltYWdlIHg9IjI1MCIgeT0iMjUiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAw
IiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIi8+
CisgICAgICAgIDxyZWN0IHg9IjI1MCIgeT0iMjUiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIiBm
aWxsPSJub25lIiBzdHJva2U9ImdyZWVuIi8+CisgICAgICAgIDxpbWFnZSB4PSI1MDAiIHk9IjY1
IiB3aWR0aD0iNjAiIGhlaWdodD0iMTIwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvPSJub25lIi8+CisgICAgICAgIDxyZWN0IHg9IjQ1MCIgeT0iMjUiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIi8+CisgICAg
PC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdl
LWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMv
ZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTFiMzJm
MGE5ZDAzMjIzMTM2YmQ5M2JkMDhmM2IxZTIwZTY0ZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLnN2
ZwpAQCAtMCwwICsxLDIxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxmaWx0ZXIgaWQ9IkRlZmF1bHQiPgorICAgICAgICAg
ICAgPGZlSW1hZ2UgaHJlZj0icmVzb3VyY2VzL2dyZWVuLnBuZyIgLz4KKyAgICAgICAgPC9maWx0
ZXI+CisgICAgICAgIDxmaWx0ZXIgaWQ9IkZpdHRlZCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJv
dW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9InJlc291cmNlcy9ncmVlbi5w
bmciIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHByZXNlcnZlQXNwZWN0
UmF0aW89Im5vbmUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgICAgIDxmaWx0ZXIgaWQ9IlNo
aWZ0ZWQiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0icmVzb3VyY2VzL2dyZWVuLnBuZyIg
eD0iNTAwIiB5PSI1Ii8+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKyAgICA8Zz4K
KyAgICAgICAgPHJlY3QgeD0iNTAiICB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZp
bHRlcj0idXJsKCNEZWZhdWx0KSIvPgorICAgICAgICA8cmVjdCB4PSI1MCIgIHk9IjI1IiB3aWR0
aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIvPgorICAgICAg
ICA8cmVjdCB4PSIyNTAiIHk9IjI1IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsdGVyPSJ1
cmwoI0ZpdHRlZCkiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUwIiB5PSIyNSIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JlZW4iLz4KKyAgICAgICAgPHJlY3Qg
eD0iNDUwIiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbHRlcj0idXJsKCNTaGlm
dGVkKSIvPgorICAgICAgICA8cmVjdCB4PSI0NTAiIHk9IjI1IiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIvPgorICAgIDwvZz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1yZW1vdmUtdGFyZ2V0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtcmVtb3ZlLXRhcmdl
dC1leHBlY3RlZC50eHQKaW5kZXggZjAzNGExNmY2YjBkODA4Mzg1YTcwMjZkODBkYzdlZjE3OTNj
OTk5OC4uNzg2YmI5Mjk1NmJmMDAzNzMzMWVjOTQ4NzZiN2M4OTEzYmQ5NjYzMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1yZW1vdmUtdGFyZ2V0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLXJlbW92ZS10YXJnZXQt
ZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
ICAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCwwKSBzaXplIDExMXgxMTEKICAgICBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImZpbHRlciJdIFtmaWx0ZXJVbml0cz1vYmpl
Y3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQotICAgICAgICBb
ZmVJbWFnZSBpbWFnZS1zaXplPSIwLjAweDAuMDAiXQogICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9
IGF0ICgwLDApIHNpemUgMTExeDExMSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAw
XX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWlnaHQ9MTAwLjAwXQogICAg
ICAgW2ZpbHRlcj0iZmlsdGVyIl0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0gYXQg
KC0xMCwtMTApIHNpemUgMTIweDEyMAo=
</data>
<flag name="review"
          id="467124"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="467170"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443633</attachid>
            <date>2021-11-08 17:13:30 -0800</date>
            <delta_ts>2021-11-08 23:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232369-20211108171329.patch</filename>
            <type>text/plain</type>
            <size>26891</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUyM2IyYzMwZmU5Njlm
MmM1NzZhNWE5ODc2MjkzOTMxNzJjZWVlMC4uN2E0MWVmM2Q3Y2I2MDI4ZWExZmQ1ZWVkMzQ0YjQw
YmEyNjUxNmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTExLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIG5vbi1wbGF0Zm9ybSBjb2RlIGZvcm0gdGhlIEZFSW1hZ2UgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM2OQorICAgICAgICBy
ZGFyOi8vODQ5NjY3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgU1ZHRkVJbWFnZUVsZW1lbnQgc2hvdWxkIGNyZWF0ZSB0aGUgRkVJbWFnZSB3aXRoIGVp
dGhlciBhbiBJbWFnZSBvciBhbiAKKyAgICAgICAgSW1hZ2VCdWZmZXIgYmFzZWQgb24gd2hldGhl
ciB0aGUgJ2hyZWYnIGF0dHJpYnV0ZSBwb2ludHMgdG8gYSByZXNvdXJjZQorICAgICAgICBpbWFn
ZSBvciBhbiBTVkcgZWxlbWVudC4gRm9yIHRoZSBTVkcgZWxlbWVudCwgYW4gSW1hZ2VCdWZmZXIg
d2lsbCBiZSAKKyAgICAgICAgY3JlYXRlZCBhbmQgdGhlIHJlbmRlcmVyIG9mIHRoaXMgZWxlbWVu
dCB3aWxsIGJlIGRyYXduIHRvIGl0LgorCisgICAgICAgIEluc3RlYWQgb2YgaG9sZGluZyBhIFRy
ZWVTY29wZSBhbmQgSW1hZ2UsIEZFSW1hZ2UgY2FuIGhvbGQgYSB2YXJpYW50IG9mCisgICAgICAg
IEltYWdlIGFuZCBJbWFnZUJ1ZmZlci4KKworICAgICAgICBUZXN0czogc3ZnL2ZpbHRlcnMvZmVJ
bWFnZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCisgICAgICAgICAg
ICAgICBzdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcK
KyAgICAgICAgICAgICAgIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtaW1hZ2UtcHJpbWl0aXZlLXN1YnJl
Z2lvbi1leHBlY3RlZC5zdmcKKyAgICAgICAgICAgICAgIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtaW1h
Z2UtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcKKworICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZm
ZXJGb3JFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnJlZmVyZW5jZWRSZW5kZXJlciBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgor
CiAyMDIxLTExLTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gQ29ubmVjdCBKUyBiaW5kaW5ncyBjb2RlIHRvIGludGVybmFsIFdl
YkdQVSBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IGRkY2VkMmVkOWU5ZmUzZjY0MzMxOGRjNTk1ODBlZjFjMzM2NjYxYjAuLjdmODc4NWEyMWZm
MDJiZGY4NjU2YjQ4ZjlhOTk4Njk2ODAzMzJmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDEwIERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTc1LDE2ICsx
NzYsNDggQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5kZXJl
cik7CiB9CiAKK3N0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdG
RUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlY3QoKSBjb25zdAoreworICAgIGF1dG8g
dGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVm
KCksIHRyZWVTY29wZSgpKTsKKyAgICBpZiAoIWlzPFNWR0VsZW1lbnQ+KHRhcmdldC5lbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChpc0Rlc2NlbmRhbnRPclNoYWRvd0Rl
c2NlbmRhbnRPZih0YXJnZXQuZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGNvbnRleHROb2RlID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdFbGVtZW50Pih0
YXJnZXQuZWxlbWVudCk7CisgICAgYXV0byByZW5kZXJlciA9IGNvbnRleHROb2RlLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnJlbmRlcmVyKTsKKyAgICBpZiAo
IWFic29sdXRlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybShh
YnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgMCwgMCwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxl
KCksIDAsIDApOworCisgICAgYXV0byBpbWFnZVJlY3QgPSByZW5kZXJlci0+cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZVJlY3QsIHNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8mIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0NvbnRleHQoY29udGV4dCwgKnJlbmRl
cmVyLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisKKyAgICByZXR1cm4geyBpbWFnZUJ1ZmZlciwgaW1h
Z2VSZWN0IH07Cit9CisKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgaWYg
KG1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJldHVybiBGRUltYWdlOjpjcmVhdGVXaXRoSW1hZ2Uo
ZmlsdGVyLCBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpLCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCkpOworICAgICAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlKGZpbHRl
ciwgUmVmPEltYWdlPiB7ICptX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVy
KCkpIH0sIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CiAKLSAgICBhdXRvIHRhcmdldCA9IFNWR1VS
SVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUo
KSk7Ci0gICAgaWYgKGlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKHRhcmdldC5lbGVt
ZW50LmdldCgpKSkKKyAgICBhdXRvIFtpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0XSA9IGltYWdlQnVm
ZmVyRm9yRWZmZWN0KCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gRkVJbWFnZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShmaWx0
ZXIsIHRyZWVTY29wZSgpLCBocmVmKCksIHByZXNlcnZlQXNwZWN0UmF0aW8oKSk7CisgICAgcmV0
dXJuIEZFSW1hZ2U6OmNyZWF0ZShmaWx0ZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IGltYWdlUmVjdCwgcHJlc2VydmVBc3BlY3RSYXRpbygpKTsKIH0KIAogdm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVy
bHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IGQ5M2Uw
ZDBkYjhiODg2NjU0ODBmMjEwMTVhMjU2YmFkYTE1NGM1YzcuLjYwY2UxMDJjMGY3MmFjODhjYTkw
MDEwMzczZDY2NGM2NjMyZDRiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC01NSw2ICs1NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEZpbmlzaElu
c2VydGluZ05vZGUoKSBvdmVycmlkZTsKIAorICAgIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVm
ZmVyPiwgRmxvYXRSZWN0PiBpbWFnZUJ1ZmZlckZvckVmZmVjdCgpIGNvbnN0OworCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRl
eCAzODVhZjI5MDg0OGEzZDBiODNmMTJhYzk2MTllNmJmOTZjOWYyMzk2Li44MDQ5YjgyYTlhYjY1
NDQxMjgyNDk4ZjRiYzFmYjc2ZTE5MzEwYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjMsNzYgKzI0LDU4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZH
RkVJbWFnZS5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmls
dGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVuZGVyRWxl
bWVudC5oIgotI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKLSNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlNWR1VS
SVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1GRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8
SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZl
QXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpJbWFnZSkKLSAg
ICAsIG1faW1hZ2UoaW1hZ2UpCi0gICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVB
c3BlY3RSYXRpbykKLXsKLX0KLQotRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgVHJl
ZVNjb3BlJiB0cmVlU2NvcGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQotICAgIDogRmlsdGVyRWZmZWN0
KGZpbHRlciwgVHlwZTo6SW1hZ2UpCi0gICAgLCBtX3RyZWVTY29wZSgmdHJlZVNjb3BlKQotICAg
ICwgbV9ocmVmKGhyZWYpCi0gICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3Bl
Y3RSYXRpbykKK1JlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIFJl
ZjxJbWFnZT4mJiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKQogeworICAgIGF1dG8gaW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9
LCBpbWFnZS0+c2l6ZSgpIH07CisgICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXIsIFdURk1vdmUoaW1h
Z2UpLCBpbWFnZVJlY3QsIHByZXNlcnZlQXNwZWN0UmF0aW8pOwogfQogCi1SZWY8RkVJbWFnZT4g
RkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGlt
YWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0
aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBTb3VyY2VJ
bWFnZSYmIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwgcHJlc2VydmVB
c3BlY3RSYXRpbykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBX
VEZNb3ZlKHNvdXJjZUltYWdlKSwgc291cmNlSW1hZ2VSZWN0LCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KSk7CiB9CiAKLVJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZp
bHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8pCitG
RUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBTb3VyY2VJbWFnZSYmIHNvdXJjZUltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorICAgIDogRmlsdGVyRWZmZWN0KGZp
bHRlciwgVHlwZTo6SW1hZ2UpCisgICAgLCBtX3NvdXJjZUltYWdlKFdURk1vdmUoc291cmNlSW1h
Z2UpKQorICAgICwgbV9zb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICwgbV9w
cmVzZXJ2ZUFzcGVjdFJhdGlvKHByZXNlcnZlQXNwZWN0UmF0aW8pCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRkVJbWFnZShmaWx0ZXIsIHRyZWVTY29wZSwgaHJlZiwgcHJlc2VydmVBc3Bl
Y3RSYXRpbykpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KCkKIHsKLSAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zv
cm0oKS5tYXBSZWN0KGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpKTsKLSAgICBGbG9hdFJlY3Qg
c3JjUmVjdDsKLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBzcmNSZWN0LnNldFNpemUobV9p
bWFnZS0+c2l6ZSgpKTsKLSAgICAgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLnRyYW5zZm9ybVJl
Y3QocGFpbnRSZWN0LCBzcmNSZWN0KTsKLSAgICB9IGVsc2UgaWYgKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyID0gcmVmZXJlbmNlZFJlbmRlcmVyKCkpCi0gICAgICAgIHNyY1JlY3QgPSBmaWx0ZXIo
KS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QocmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkpOworICAgIGF1dG8gcHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKCk7CisKKyAgICBhdXRvIGltYWdlUmVjdCA9IFdURjo6c3dpdGNoT24o
bV9zb3VyY2VJbWFnZSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2U+JikgeworICAgICAg
ICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVTdWJyZWdpb247CisgICAgICAgICAgICBh
dXRvIHNyY1JlY3QgPSBtX3NvdXJjZUltYWdlUmVjdDsKKyAgICAgICAgICAgIG1fcHJlc2VydmVB
c3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KGltYWdlUmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2VSZWN0OworICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZjxJ
bWFnZUJ1ZmZlcj4mKSB7CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlU3VicmVnaW9uOwor
ICAgICAgICB9CisgICAgKTsKKworICAgIGltYWdlUmVjdCA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkubWFwUmVjdChpbWFnZVJlY3QpOwogCiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkK
LSAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOworICAgICAgICBp
bWFnZVJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxzZQotICAgICAgICBw
YWludFJlY3QudW5pdGUobWF4RWZmZWN0UmVjdCgpKTsKLSAgICBzZXRBYnNvbHV0ZVBhaW50UmVj
dChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwotfQotCi1SZW5kZXJFbGVtZW50KiBGRUlt
YWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIoKSBjb25zdAotewotICAgIGlmICghbV90cmVlU2NvcGUp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJl
bmNlOjp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhtX2hyZWYsICptX3RyZWVTY29wZSk7Ci0g
ICAgaWYgKCFpczxTVkdFbGVtZW50Pih0YXJnZXQuZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiB0YXJnZXQuZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICAgICAg
aW1hZ2VSZWN0LnVuaXRlKG1heEVmZmVjdFJlY3QoKSk7CisgICAgc2V0QWJzb2x1dGVQYWludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChpbWFnZVJlY3QpKTsKIH0KIAogdm9pZCBGRUltYWdlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogewotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVm
ZXJlbmNlZFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkKICAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIApAQCAtMTAwLDU0ICs4MywzMyBAQCB2b2lkIEZFSW1h
Z2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVU
cmFuc2Zvcm0oKS5tYXBSZWN0KGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpKTsKLQotICAgIEZs
b2F0UmVjdCBzcmNSZWN0OwotICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgc3JjUmVjdCA9IGZp
bHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChyZW5kZXJlci0+cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNyY1JlY3QgPSBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBtX2ltYWdlLT5zaXplKCkpOwotICAgICAgICBtX3ByZXNlcnZl
QXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgfQotCi0g
ICAgSW50UG9pbnQgcGFpbnRMb2NhdGlvbiA9IGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24o
KTsKLSAgICBkZXN0UmVjdC5tb3ZlKC1wYWludExvY2F0aW9uLngoKSwgLXBhaW50TG9jYXRpb24u
eSgpKTsKLQorICAgIGF1dG8gcHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCk7CiAgICAgYXV0byYgY29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAK
LSAgICBpZiAocmVuZGVyZXIpIHsKLSAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNv
bHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgIGNv
bnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKLQotICAgICAgICBSZWZQdHIgY29u
dGV4dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJlci0+ZWxlbWVudCgpKTsKLSAg
ICAgICAgaWYgKGNvbnRleHROb2RlLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKSkgewotICAgICAgICAg
ICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHROb2RlLmdldCgpKTsKLSAg
ICAgICAgICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7Ci0KLSAgICAgICAgICAgIC8vIElmIHdl
J3JlIHJlZmVyZW5jaW5nIGFuIGVsZW1lbnQgd2l0aCBwZXJjZW50YWdlIHVuaXRzLCBlZy4gPHJl
Y3Qgd2l0aD0iMzAlIj4gdGhvc2UgdmFsdWVzIHdlcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgdmll
d3BvcnQuCi0gICAgICAgICAgICAvLyBCdWlsZCB1cCBhIHRyYW5zZm9ybWF0aW9uIHRoYXQgbWFw
cyBmcm9tIHRoZSB2aWV3cG9ydCBzcGFjZSB0byB0aGUgZmlsdGVyIHByaW1pdGl2ZSBzdWJyZWdp
b24uCi0gICAgICAgICAgICBpZiAobGVuZ3RoQ29udGV4dC5kZXRlcm1pbmVWaWV3cG9ydCh2aWV3
cG9ydFNpemUpKQotICAgICAgICAgICAgICAgIGNvbnRleHQuY29uY2F0Q1RNKG1ha2VNYXBCZXR3
ZWVuUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgZGVzdFJlY3Qp
KTsKKyAgICBXVEY6OnN3aXRjaE9uKG1fc291cmNlSW1hZ2UsCisgICAgICAgIFsmXSAoY29uc3Qg
UmVmPEltYWdlPiYgaW1hZ2UpIHsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0
aXZlU3VicmVnaW9uOworICAgICAgICAgICAgYXV0byBzcmNSZWN0ID0gbV9zb3VyY2VJbWFnZVJl
Y3Q7CisgICAgICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChpbWFn
ZVJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZmlsdGVyKCkuYWJzb2x1
dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KGltYWdlUmVjdCk7CisgICAgICAgICAgICBpbWFnZVJlY3Qg
PSBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKEludFJlY3QoaW1hZ2VSZWN0KSk7CisgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzcmNSZWN0KTsKKyAgICAg
ICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWY8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikg
eworICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBwcmltaXRpdmVTdWJyZWdpb247CisgICAg
ICAgICAgICBpbWFnZVJlY3QubW92ZUJ5KG1fc291cmNlSW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwor
ICAgICAgICAgICAgaW1hZ2VSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGltYWdlUmVjdCk7CisgICAgICAgICAgICBpbWFnZVJlY3QgPSBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKEludFJlY3QoaW1hZ2VSZWN0KSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICB9
Ci0KLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKLSAgICAg
ICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAq
cmVuZGVyZXIsIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9pbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwor
ICAgICk7CiB9CiAKIFRleHRTdHJlYW0mIEZFSW1hZ2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMsIFJlcHJlc2VudGF0aW9uVHlwZSByZXByZXNlbnRhdGlvbikgY29uc3QK
IHsKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwotICAgIGlmIChtX2ltYWdlKQotICAgICAgICBp
bWFnZVNpemUgPSBtX2ltYWdlLT5zaXplKCk7Ci0gICAgZWxzZSBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpKQotICAgICAgICBpbWFnZVNpemUgPSBlbmNs
b3NpbmdJbnRSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKS5z
aXplKCk7CiAgICAgdHMgPDwgaW5kZW50IDw8ICJbZmVJbWFnZSI7CiAgICAgRmlsdGVyRWZmZWN0
OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRhdGlvbik7Ci0gICAgdHMgPDwg
IiBpbWFnZS1zaXplPVwiIiA8PCBpbWFnZVNpemUud2lkdGgoKSA8PCAieCIgPDwgaW1hZ2VTaXpl
LmhlaWdodCgpIDw8ICJcIl1cbiI7CisgICAgdHMgPDwgIiBpbWFnZS1zaXplPVwiIiA8PCBtX3Nv
dXJjZUltYWdlUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBtX3NvdXJjZUltYWdlUmVjdC5oZWlnaHQo
KSA8PCAiXCJdXG4iOwogICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyBkdW1wIGFsc28gb2JqZWN0
IHJldHVybmVkIGJ5IFNWR0ZFSW1hZ2U6OmltYWdlKCkgPwogICAgIHJldHVybiB0czsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRl
eCBhYzE2MGVkY2U3YzBlMGEwNjdiZGVmYmQ3MDdmMmFiZTU1OTA4MWI2Li4yZjI3NzQxYzA2MGZj
MjY0NWU1MTdmMTM1ODYyMmYxMWQ3ZmFhZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yMyw0MCArMjQsMzggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBJbWFnZTsKLWNsYXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFz
cyBUcmVlU2NvcGU7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRkVJbWFnZSBmaW5hbCA6
IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4g
Y3JlYXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aElS
SVJlZmVyZW5jZShGaWx0ZXImLCBUcmVlU2NvcGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICB1c2luZyBTb3VyY2VJbWFnZSA9IHN0ZDo6
dmFyaWFudDwKKyAgICAgICAgUmVmPEltYWdlPiwKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPgor
ICAgID47CiAKLXByaXZhdGU6Ci0gICAgdmlydHVhbCB+RkVJbWFnZSgpID0gZGVmYXVsdDsKLSAg
ICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSYpOwotICAgIEZFSW1hZ2UoRmlsdGVyJiwgVHJlZVNjb3BlJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CisgICAgc3RhdGljIFJl
ZjxGRUltYWdlPiBjcmVhdGUoRmlsdGVyJiwgUmVmPEltYWdlPiYmLCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZShGaWx0
ZXImLCBTb3VyY2VJbWFnZSYmLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJik7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0
ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFSW1hZ2UiOyB9CisgICAgU291cmNlSW1h
Z2UmIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZTsgfQorICAgIHZvaWQgc2V0
SW1hZ2VTb3VyY2UoU291cmNlSW1hZ2UmJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0g
V1RGTW92ZShzb3VyY2VJbWFnZSk7IH0KIAotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZm
ZWN0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVJbWFnZTsgfQor
cHJpdmF0ZToKKyAgICBGRUltYWdlKEZpbHRlciYsIFNvdXJjZUltYWdlJiYsIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUm
KTsKIAotICAgIFJlbmRlckVsZW1lbnQqIHJlZmVyZW5jZWRSZW5kZXJlcigpIGNvbnN0OworICAg
IGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVJbWFnZSI7
IH0KIAogICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgZmluYWw7CiAgICAgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIGZpbmFsOwogICAgIFdURjo6VGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5
cGUpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwotCi0gICAgLy8g
bV90cmVlU2NvcGUgd2lsbCBuZXZlciBiZSBhIGRhbmdsaW5nIHJlZmVyZW5jZS4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTI0MwotICAgIFRyZWVTY29wZSog
bV90cmVlU2NvcGUgeyBudWxscHRyIH07Ci0gICAgU3RyaW5nIG1faHJlZjsKKyAgICBTb3VyY2VJ
bWFnZSBtX3NvdXJjZUltYWdlOworICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKICAg
ICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOwogfTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDQwM2U3ZTc2YjlhZDMyZDljNDUwZTNiN2UxOWU5YTc1MzIwOWY1ODkuLjczMjYy
MWM1OGU0MTc5OTZhOTI3MDI4ZTlmNGU5MGEyY2YxYTUyNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBA
QAorMjAyMS0xMS0wOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBub24tcGxhdGZvcm0gY29kZSBmb3JtIHRoZSBGRUlt
YWdlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzIzNjkKKyAgICAgICAgcmRhcjovLzg0OTY2NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3N2Zy1mZWltYWdlLWhy
ZWYtaW4tc2hhZG93LXRyZWUuaHRtbDoKKyAgICAgICAgVGhlIGRlZmF1bHQgcHJpbWl0aXZlIHN1
YnJlZ2lvbiBvZiA8ZmVJbWFnZT4gaXMgeyAtMTAlLCAtMTAlLCAxMjAlLCAxMjAlIH0KKyAgICAg
ICAgb2YgdGhlIGJvdW5kaW5nIGJveC4gU28gdGhlIGZpbHRlciByZXN1bHQgd2lsbCBiZSBzaGlm
dGVkICgtMTAsIC0xMCkgb2YKKyAgICAgICAgdGhpcyB0ZXN0IGNhc2UgaWYgd2UgZG8gbm90IHNw
ZWNpZnkgdGhlICd4JyBhbmQgdGhlbiAneScgYXR0cmlidXRlcy4KKyAgICAgICAgVW5saWtlIHRo
ZSBJbWFnZSBiYXNlZCBmZUltYWdlLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBkaXNwbGF5
IHRoZQorICAgICAgICBJbWFnZUJ1ZmZlciBvZiB0aGUgZWxlbWVudCB3aXRoIGl0cyBsb2dpY2Fs
IHNpemUgb3RoZXJ3aXNlIHRoZSBkcmF3aW5nCisgICAgICAgIHdpbGwgYmUgcGl4ZWxhdGVkIGlm
IHdlIHRyeSB0byBmaWxsIHRoZSB3aG9sZSBwcmltaXRpdmUgc3VicmVnaW9uLiBUbworICAgICAg
ICBtYWtlIHRoaXMgdGVzdCBwYWdlIG1hdGNoZXMgaXRzIGV4cGVjdGVkIHBhZ2UsIHdlIG5lZWQg
dG8gc3BlY2lmeSB0aGUgJ3gnCisgICAgICAgIGFuZCB0aGUgJ3knIGF0dHJpYnV0ZXMgb2YgdGhl
IDxmZUltYWdlPiB0byBiZSB6ZXJvcy4KKworICAgICAgICBXaXRoIGFuZCB3aXRob3V0IHNwZWNp
ZnlpbmcgdGhlICd4JyBhbmQgdGhlICd5JyBhdHRyaWJ1dGVzLCB0aGUgZHJhd2luZworICAgICAg
ICB3aXRoIHRoaXMgcGF0Y2ggbWF0Y2hlcyB0aGUgZHJhd2luZyBvZiB0aGlzIHRlc3QgcGFnZSBp
biBvdGhlciBicm93c2Vycy4KKworICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtY2hhbmdl
LXRhcmdldC1pZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVJbWFnZS1l
bGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2UtaW1hZ2UtcHJpbWl0aXZlLXN1YnJl
Z2lvbi1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlSW1hZ2Ut
aW1hZ2UtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0
ZXJzL2ZlSW1hZ2UtcmVtb3ZlLXRhcmdldC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTEtMDggIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBz
b21lIHRlc3RzIHRoYXQgdXNlIGV2ZW50U2VuZGVyLmV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygpIHRvIHNlbmRFdmVudFN0cmVhbSgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1pbi1zaGFk
b3ctdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N2Zy1mZWltYWdlLWhy
ZWYtaW4tc2hhZG93LXRyZWUuaHRtbAppbmRleCBjZTQzMDE4ZDNjZGNlNGE0ZTY3MTBkNWM1NzM2
NDA3MDBiZWI5YWQ2Li5mYjI3OGIzNmM3NWVmYWUyMDIxNzdiZGY3NjVkOGIyMjQ0ZjgwMTY3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3ZnLWZlaW1hZ2UtaHJlZi1p
bi1zaGFkb3ctdHJlZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdmct
ZmVpbWFnZS1ocmVmLWluLXNoYWRvdy10cmVlLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAg
ICAgPGRlZnM+CiAgICAgICAgICAgICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjEwMCIgaGVpZ2h0
PSIxMDAiIGZpbGw9ImdyZWVuIiAvPgogICAgICAgICAgICAgPGZpbHRlciBpZD0iaW1hZ2UiPgot
ICAgICAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9IiNyZWN0IiAvPgorICAgICAgICAgICAgICAg
IDxmZUltYWdlIHg9IjAiIHk9IjAiIGhyZWY9IiNyZWN0IiAvPgogICAgICAgICAgICAgPC9maWx0
ZXI+CiAgICAgICAgIDwvZGVmcz4KICAgICAgICAgPHJlY3QgaWQ9InJlY3QiIHdpZHRoPSIxMDAi
IGhlaWdodD0iMTAwIiBzdHlsZT0iZmlsdGVyOnVybCgjaW1hZ2UpIj4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWNoYW5nZS10YXJnZXQtaWQtZXhw
ZWN0ZWQudHh0CmluZGV4IGE3MWU0NjVhNjk4NGNiZmZjOTUzYWNmYmE5YjIxZTJmYzgwYTY3Mjku
LmEyZWVlZGY5MTZlODg4NmMxMjRlYTcyNTRlMWEzMGJhYmEyMmIxZjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtY2hhbmdlLXRhcmdldC1pZC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1jaGFuZ2UtdGFyZ2V0LWlk
LWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAog
ICAgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtb
dHlwZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEw
MC4wMF0gW2hlaWdodD0xMDAuMDBdCiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7Zmls
dGVyfSBbaWQ9ImZpbHRlciJdIFtmaWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1p
dGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQotICAgICAgICBbZmVJbWFnZSBpbWFnZS1zaXplPSIw
LjAweDAuMDAiXQogICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMTExeDEx
MSBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBd
IFt3aWR0aD0xMDAuMDBdIFtoZWlnaHQ9MTAwLjAwXQogICAgICAgW2ZpbHRlcj0iZmlsdGVyIl0g
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0gYXQgKC0xMCwtMTApIHNpemUgMTIweDEy
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1lbGVtZW50LXBy
aW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMv
ZmVJbWFnZS1lbGVtZW50LXByaW1pdGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhM2ViZjgwNDFjYTQyYzkzNDlkZGVjOTQzNzYzODBmY2E3NWI3NzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZl
LXN1YnJlZ2lvbi1leHBlY3RlZC5zdmcKQEAgLTAsMCArMSwyMyBAQAorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxkZWZzPgorICAgICAgICA8cmVjdCBpZD0i
cmVkLXJlY3RhbmdsZSIgeD0iLTEwMCIgeT0iLTEwMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAi
IGZpbGw9InJlZCIvPgorICAgICAgICA8cGF0aCBpZD0iZ3JlZW4tdHJpYW5nbGUiIGQ9Ik0gMCAw
IEwgMTUwIDAgTCAxNTAgMTUwIHoiIGZpbGw9ImdyZWVuIi8+CisgICAgICAgIDxwYXRoIGlkPSJi
bHVlLXRyaWFuZ2xlIiAgZD0iTSAwIDAgTCAwIDE1MCBMIDE1MCAwIHoiIGZpbGw9ImJsdWUiLz4K
KyAgICAgICAgPGNsaXBQYXRoIGlkPSJzcXVhcmUtY2xpcCI+CisgICAgICAgICAgICA8cmVjdCB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIvPgorICAgICAgICA8L2NsaXBQYXRoPgorICAgIDwvZGVm
cz4KKyAgICA8Zz4KKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAsIDUwKSI+Cisg
ICAgICAgICAgICA8dXNlIGNsaXAtcGF0aD0idXJsKCNzcXVhcmUtY2xpcCkiIGhyZWY9IiNyZWQt
cmVjdGFuZ2xlIiAvPgorICAgICAgICA8L2c+CisKKyAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoMjAwLCA1MCkiPgorICAgICAgICAgICAgPHVzZSBjbGlwLXBhdGg9InVybCgjc3F1YXJl
LWNsaXApIiBocmVmPSIjZ3JlZW4tdHJpYW5nbGUiIC8+CisgICAgICAgIDwvZz4KKworICAgICAg
ICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTAsIDUwKSI+CisgICAgICAgICAgICA8dXNlIGNs
aXAtcGF0aD0idXJsKCNzcXVhcmUtY2xpcCkiIGhyZWY9IiNibHVlLXRyaWFuZ2xlIiAvPgorICAg
ICAgICA8L2c+CisgICAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
ZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcgYi9MYXlvdXRU
ZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWVsZW1lbnQtcHJpbWl0aXZlLXN1YnJlZ2lvbi5zdmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDVlYmIyOTlkMWJmYTE5MTIxODk5ODM4YTI5MjgwY2FjODI5ZGI5NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlSW1hZ2UtZWxlbWVudC1w
cmltaXRpdmUtc3VicmVnaW9uLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxyZWN0IGlkPSJy
ZWQtcmVjdGFuZ2xlIiB4PSItMTAwIiB5PSItMTAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIg
ZmlsbD0icmVkIi8+CisgICAgICAgIDxwYXRoIGlkPSJncmVlbi10cmlhbmdsZSIgZD0iTSAwIDAg
TCAxNTAgMCBMIDE1MCAxNTAgeiIgZmlsbD0iZ3JlZW4iLz4KKyAgICAgICAgPHBhdGggaWQ9ImJs
dWUtdHJpYW5nbGUiICBkPSJNIDAgMCBMIDAgMTUwIEwgMTUwIDAgeiIgZmlsbD0iYmx1ZSIvPgor
CisgICAgICAgIDxmaWx0ZXIgaWQ9InJlZC1yZWN0YW5nbGUtZmlsdGVyIiB4PSIwIiB5PSIwIiB3
aWR0aD0iMSIgaGVpZ2h0PSIxIj4KKyAgICAgICAgICAgIDxmZUltYWdlIGhyZWY9IiNyZWQtcmVj
dGFuZ2xlIi8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImdyZWVu
LXRyaWFuZ2xlLWZpbHRlciIgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+CisgICAg
ICAgICAgICA8ZmVJbWFnZSBocmVmPSIjZ3JlZW4tdHJpYW5nbGUiLz4KKyAgICAgICAgPC9maWx0
ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iYmx1ZS10cmlhbmdsZS1maWx0ZXIiIHg9IjAiIHk9
IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0iI2Js
dWUtdHJpYW5nbGUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorICAgIDxnPgor
ICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCwgNTApIj4KKyAgICAgICAgICAgIDxy
ZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBzdHlsZT0iZmlsdGVyOnVybCgjcmVkLXJlY3Rh
bmdsZS1maWx0ZXIpIi8+CisgICAgICAgIDwvZz4KKworICAgICAgICA8ZyB0cmFuc2Zvcm09InRy
YW5zbGF0ZSgyMDAsIDUwKSI+CisgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCIgc3R5bGU9ImZpbHRlcjp1cmwoI2dyZWVuLXRyaWFuZ2xlLWZpbHRlcikiLz4KKyAgICAg
ICAgPC9nPgorICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNTAsIDUwKSI+CisgICAg
ICAgICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZpbHRlcjp1cmwo
I2JsdWUtdHJpYW5nbGUtZmlsdGVyKSIvPgorICAgICAgICA8L2c+CisgICAgPC9nPgorPC9zdmc+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1p
dGl2ZS1zdWJyZWdpb24tZXhwZWN0ZWQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJ
bWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLWV4cGVjdGVkLnN2ZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NmEwNTc5YWY3YzE4OWMwMDI3YjVkYTRlOWIzZDFhYjhmNThhMmJiCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVn
aW9uLWV4cGVjdGVkLnN2ZwpAQCAtMCwwICsxLDEwIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGc+CisgICAgICAgIDxpbWFnZSB4PSI0MCIgeT0iNjUi
IHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIi8+Cisg
ICAgICAgIDxyZWN0IHg9IjUwIiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9
Im5vbmUiIHN0cm9rZT0iZ3JlZW4iLz4KKyAgICAgICAgPGltYWdlIHg9IjI1MCIgeT0iMjUiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMjAwIiBocmVmPSJyZXNvdXJjZXMvZ3JlZW4ucG5nIiBwcmVzZXJ2
ZUFzcGVjdFJhdGlvPSJub25lIi8+CisgICAgICAgIDxyZWN0IHg9IjI1MCIgeT0iMjUiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJub25lIiBzdHJva2U9ImdyZWVuIi8+CisgICAgICAg
IDxpbWFnZSB4PSI1MDAiIHk9IjY1IiB3aWR0aD0iNjAiIGhlaWdodD0iMTIwIiBocmVmPSJyZXNv
dXJjZXMvZ3JlZW4ucG5nIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIi8+CisgICAgICAgIDxy
ZWN0IHg9IjQ1MCIgeT0iMjUiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJub25lIiBz
dHJva2U9ImdyZWVuIi8+CisgICAgPC9nPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9mZUltYWdlLWltYWdlLXByaW1pdGl2ZS1zdWJyZWdpb24uc3ZnIGIvTGF5
b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1wcmltaXRpdmUtc3VicmVnaW9uLnN2
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NTFiMzJmMGE5ZDAzMjIzMTM2YmQ5M2JkMDhmM2IxZTIwZTY0ZTc4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1pbWFnZS1w
cmltaXRpdmUtc3VicmVnaW9uLnN2ZwpAQCAtMCwwICsxLDIxIEBACis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGRlZnM+CisgICAgICAgIDxmaWx0ZXIgaWQ9
IkRlZmF1bHQiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0icmVzb3VyY2VzL2dyZWVuLnBu
ZyIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgICAgIDxmaWx0ZXIgaWQ9IkZpdHRlZCIgcHJp
bWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZUltYWdlIGhy
ZWY9InJlc291cmNlcy9ncmVlbi5wbmciIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9
IjEwMCUiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiLz4KKyAgICAgICAgPC9maWx0ZXI+Cisg
ICAgICAgIDxmaWx0ZXIgaWQ9IlNoaWZ0ZWQiPgorICAgICAgICAgICAgPGZlSW1hZ2UgaHJlZj0i
cmVzb3VyY2VzL2dyZWVuLnBuZyIgeD0iNTAwIiB5PSI1Ii8+CisgICAgICAgIDwvZmlsdGVyPgor
ICAgIDwvZGVmcz4KKyAgICA8Zz4KKyAgICAgICAgPHJlY3QgeD0iNTAiICB5PSIyNSIgd2lkdGg9
IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbHRlcj0idXJsKCNEZWZhdWx0KSIvPgorICAgICAgICA8cmVj
dCB4PSI1MCIgIHk9IjI1IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJncmVlbiIvPgorICAgICAgICA8cmVjdCB4PSIyNTAiIHk9IjI1IiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjIwMCIgZmlsdGVyPSJ1cmwoI0ZpdHRlZCkiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUw
IiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3Jl
ZW4iLz4KKyAgICAgICAgPHJlY3QgeD0iNDUwIiB5PSIyNSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIy
MDAiIGZpbHRlcj0idXJsKCNTaGlmdGVkKSIvPgorICAgICAgICA8cmVjdCB4PSI0NTAiIHk9IjI1
IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmVlbiIvPgor
ICAgIDwvZz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJ
bWFnZS1yZW1vdmUtdGFyZ2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9maWx0ZXJz
L2ZlSW1hZ2UtcmVtb3ZlLXRhcmdldC1leHBlY3RlZC50eHQKaW5kZXggZjAzNGExNmY2YjBkODA4
Mzg1YTcwMjZkODBkYzdlZjE3OTNjOTk5OC4uNzg2YmI5Mjk1NmJmMDAzNzMzMWVjOTQ4NzZiN2M4
OTEzYmQ5NjYzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVJbWFnZS1y
ZW1vdmUtdGFyZ2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9m
ZUltYWdlLXJlbW92ZS10YXJnZXQtZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNSBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCwwKSBzaXpl
IDExMXgxMTEKICAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNp
emUgMHgwCiAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImZpbHRl
ciJdIFtmaWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJT
cGFjZU9uVXNlXQotICAgICAgICBbZmVJbWFnZSBpbWFnZS1zaXplPSIwLjAweDAuMDAiXQogICAg
IFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgwLDApIHNpemUgMTExeDExMSBbZmlsbD17W3R5cGU9
U09MSURdIFtjb2xvcj0jMDAwMDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBd
IFtoZWlnaHQ9MTAwLjAwXQogICAgICAgW2ZpbHRlcj0iZmlsdGVyIl0gUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIge2ZpbHRlcn0gYXQgKC0xMCwtMTApIHNpemUgMTIweDEyMAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>