<?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>232831</bug_id>
          
          <creation_ts>2021-11-08 12:22:38 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 13/23] Implement FilterEffect CoreImage appliers</short_desc>
          <delta_ts>2022-01-19 12:49:12 -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=235376</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>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</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>1812755</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 12:22:38 -0800</bug_when>
    <thetext>This will eliminate the branching we do in CSSFilter::apply(). This will also remove the classes FilterEffectRenderer and FilterEffectRendererCoreImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815172</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 12:23:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85424049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818017</commentid>
    <comment_count>2</comment_count>
      <attachid>445211</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-26 21:53:34 -0800</bug_when>
    <thetext>Created attachment 445211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818049</commentid>
    <comment_count>3</comment_count>
      <attachid>445211</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-11-27 14:03:57 -0800</bug_when>
    <thetext>Comment on attachment 445211
Patch

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

&gt; Source/WebCore/platform/graphics/coreimage/FEColorMatrixCoreImageApplier.mm:3
&gt; +/*
&gt; +* Copyright (C) 2020-2021 Apple Inc. All rights reserved.
&gt; +*

This (and in the other added files in this patch) is copied from another file, but the asterisks are misaligned.

&gt; Source/WebCore/svg/graphics/filters/SVGFilter.cpp:91
&gt; +bool SVGFilter::supportsCoreImageRendering() const
&gt; +{

I notice that this and CSSFIlter::supportsCoreImageRendering() are very similar, and that CSSFilter::m_functions and SVGFilter::m_expression are almost the same type. Should we have a common implementation of supportsCoreImageRendering() on Filter (or maybe you will move some CSSFilter and SVGFilter commonality up to Filter in a later patch in your queue)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818057</commentid>
    <comment_count>4</comment_count>
      <attachid>445229</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 19:26:54 -0800</bug_when>
    <thetext>Created attachment 445229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818058</commentid>
    <comment_count>5</comment_count>
      <attachid>445211</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 19:28:39 -0800</bug_when>
    <thetext>Comment on attachment 445211
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/coreimage/FEColorMatrixCoreImageApplier.mm:3
&gt;&gt; +*
&gt; 
&gt; This (and in the other added files in this patch) is copied from another file, but the asterisks are misaligned.

Fixed.

&gt;&gt; Source/WebCore/svg/graphics/filters/SVGFilter.cpp:91
&gt;&gt; +{
&gt; 
&gt; I notice that this and CSSFIlter::supportsCoreImageRendering() are very similar, and that CSSFilter::m_functions and SVGFilter::m_expression are almost the same type. Should we have a common implementation of supportsCoreImageRendering() on Filter (or maybe you will move some CSSFilter and SVGFilter commonality up to Filter in a later patch in your queue)?

Yes this similarities in CSSFilter and SVGFilter should be removed once the result FilterImage is removed from FilterEffect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818059</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-27 20:28:19 -0800</bug_when>
    <thetext>Committed r286193 (244575@main): &lt;https://commits.webkit.org/244575@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445229.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445211</attachid>
            <date>2021-11-26 21:53:34 -0800</date>
            <delta_ts>2021-11-27 14:03:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232831-20211126215333.patch</filename>
            <type>text/plain</type>
            <size>87562</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwZmQ3OWZhZGFjM2Vm
ZTUwM2YzM2Y1NjYxYzM3ZTg4YWY0YmIyNC4uMGM4MDUwMjhhYTc5MzBiNmM2ZDE2ZGEwMGYwZTNl
ZjQ3YmQ2MDQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTExLTI2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IEZpbHRlckVmZmVjdCBDb3JlSW1hZ2UgYXBwbGllcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjgzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBhcHBseWlu
ZyB0aGUgQ29yZUltYWdlIGZpbHRlcnMgdGhyb3VnaCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkuCisg
ICAgICAgIEl0IHdpbGwgYWxzbyBhbGxvdyBwYXNzaW5nIEZpbHRlckltYWdlcyB0byB0aGUgRmls
dGVyRWZmZWN0IENvcmVJbWFnZQorICAgICAgICBhcHBsaWVycy4gVGhpcyB3aWxsIHJlcXVpcmUg
YWRkaW5nIGEgQ0lJbWFnZSBhcyBhIHBvc3NpYmxlIHJlc3VsdCB0bworICAgICAgICBGaWx0ZXJJ
bWFnZS4KKworICAgICAgICBJZiB0aGUgQ29yZUltYWdlIGZpbHRlcnMgYXJlIGVuYWJsZWQsIHRo
ZSBGaWx0ZXIgd2lsbCBjaGVjayBpZiBhbGwgdGhlIAorICAgICAgICBGaWx0ZXJFZmZlY3RzIHN1
cHBvcnRzIENvcmVJbWFnZSByZW5kZXJpbmcuIEFuZCBpZiBvbmUgaWYgdGhlbSBkb2VzIG5vdAor
ICAgICAgICBzdXBwb3J0IGl0LCB0aGUgcmVuZGVyaW5nTW9kZSB3aWxsIGJlIHN3aXRjaGVkIHRv
IFVuYWNjZWxlcmF0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb2xvck1hdHJpeENv
cmVJbWFnZUFwcGxpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyOjpG
RUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9y
TWF0cml4Q29yZUltYWdlQXBwbGllcjo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXI6OmFwcGx5IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFu
c2ZlckNvcmVJbWFnZUFwcGxpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFw
cGxpZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2ZlckNv
cmVJbWFnZUFwcGxpZXI6OkZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyOjpzdXBw
b3J0c0NvcmVJbWFnZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRy
YW5zZmVyQ29yZUltYWdlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVySW1hZ2VDb3JlSW1hZ2UubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkQ0lDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpz
ZXRDSUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZlckZy
b21DSUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNl
R3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBs
aWVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljQ29yZUltYWdlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0
cml4OjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbG9yTWF0cml4OjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlQXBwbGllciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVy
aW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXJGcm9tUGl4ZWxCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpjaUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6Y3JlYXRlQXBwbGllciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAqIHJlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpDU1NGaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlU1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRG
aWx0ZXJGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6c3VwcG9y
dHNDb3JlSW1hZ2VSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVy
OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9D
U1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZH
RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c3VwcG9ydHNDb3JlSW1hZ2VS
ZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5oOgorCiAyMDIxLTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJFZmZlY3RzIGNyZWF0ZSBGaWx0ZXJF
ZmZlY3RBcHBsaWVycyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgRmlsdGVyRWZmZWN0OjphcHBseSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGI2ZWMxNDQ5YTg0OWNkYjRmOWIxNjY3MTc4NzYyYzc4NDhiZjEy
NDYuLjExNGFkMTA1MTVmMzIzOWI0OTFmM2M0N2I3YmMyNGNmN2UwODJlODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yMTAxLDcgKzIxMDEsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3Bl
Y3VsYXJMaWdodGluZy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckZ1bmN0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggZDJkMWI1NjVkMWQwOWI4ZGQxMmE5ZjUyMTlmNjlmMjdlMDY2NGMw
MS4uMmQwMzEyNDIwYTkzY2MyOGJjY2RhNzVlOTkyOTQ5ODk1MjBjMjU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC00MDIsNyArNDAyLDEwIEBAIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0NW
VXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCitwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdl
QXBwbGllci5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckltYWdlQ29yZUlt
YWdlLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNlR3JhcGhpY0NvcmVJbWFn
ZUFwcGxpZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcmV3YXJtaW5nTWV0
YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzM1NGViYWJkYzQ2OWY4MTM5
YjlmY2M2MDI4ZmRhNTVlMjg1NzExOC4uM2M0MTc0ZWYzZTk1ODM3OTA3MDA0NTJhZTI2YTNhNzFk
NmFiNGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNDg4LDcgKzQ4OCw2IEBACiAJCTFBNDk0RURGMEExMjNGNEMwMEZEQUZD
MSAvKiBKU0RvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBNDk0RUREMEExMjNGNEMwMEZEQUZDMSAvKiBKU0RvY3VtZW50RnJh
Z21lbnQuaCAqLzsgfTsKIAkJMUE0QTJERjAwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFuY2hv
ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNEEyREVDMEExQjg1MkEwMEM4MDdGOCAvKiBKU0hUTUxBbmNob3JFbGVtZW50LmggKi87IH07
CiAJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEE5NTRDMEI0RURDQ0IwMDJE
OEMzQyAvKiBTaGFyZWRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk1MUZBMkVERjI3NTA2RkRFMDAxMUMxNUQgLyogU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRkEyRUQ2Mjc0Rjc4MzcwMDExQzE1RCAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNERB
NDIyMUNERDNBODMwMEY0NDczQyAvKiBMaW5rSWNvbkNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0REE0MjAxQ0REM0E4MzAwRjQ0NzND
IC8qIExpbmtJY29uQ29sbGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUE1NjlEMTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0Uz
MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLmggKi87IH07CiAJCTFBNTY5RDEzMEQ3RTJC
ODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE1NjlDRTQwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3Mu
bW0gKi87IH07CkBAIC03NjksOCArNzY4LDYgQEAKIAkJMkFFRjZGREQyNkU3RUNDRjAwMzI2RDAy
IC8qIENTU051bWVyaWNUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUVGNkZDRTI2RTcxRjJEMDAzMjZEMDIgLyogQ1NTTnVtZXJpY1R5cGUuaCAq
LzsgfTsKIAkJMkIzNjVDODQxNTI1MTE5RTAwOTFEMjdCIC8qIFJlbmRlclNWR0VsbGlwc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCNDIzNUEwMTUy
NTBGNjAwMERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi87IH07CiAJCTJCRThFMkM3MTJB
NTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCRThFMkM2MTJBNTg5RUMwMEZBRDU1MCAv
KiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCAqLzsgfTsKLQkJMkM4NTY1MzQyNEMwRjczQzAwQTM3
NjczIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQzg1NjUzMzI0QzBGNzNDMDBBMzc2NzMgLyogRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuaCAqLzsgfTsKLQkJMkNBQTRBM0EyNEJFMThCNzAwOURFRTcwIC8qIEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQ0FBNEEzOTI0QkUxOEI3MDA5REVFNzAgLyogRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UuaCAqLzsgfTsKIAkJMkQwNjIxNDQxREE2MzlCNjAwQTdGQjI2IC8q
IFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDYyMTQyMURBNjM5ODgwMEE3RkIyNiAvKiBXZWJLaXRN
ZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CiAJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIy
NiAvKiBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQwNjIxNDMxREE2Mzk4ODAwQTdGQjI2IC8qIFdlYktp
dE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTJEMDYyMTREMURBNjNBOEIwMEE3RkIy
NiAvKiBXZWJLaXRNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQwNjIxNDkxREE2M0E3OTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5
cy5jcHAgKi87IH07CkBAIC0xNjg5LDYgKzE2ODYsNyBAQAogCQk1MUY3OThGMDFCRTg4MEU3MDA4
QUU0OTEgLyogSURCSW5kZXhJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUY3OThFQzFCRTg4MEQzMDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGODg2
QzAxRjMyOTIzMTAwQzE5M0VGIC8qIEpTTmF2aWdhdG9yU2VydmljZVdvcmtlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGODg2QkYxRjMyOTIwNzAw
QzE5M0VGIC8qIEpTTmF2aWdhdG9yU2VydmljZVdvcmtlci5oICovOyB9OwogCQk1MUZBMkQ3ODE1
MjEzMkIzMDBDMUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyog
RE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTFGQTJFREYyNzUwNkZERTAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUZBMkVENjI3NEY3ODM3MDAxMUMxNUQgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUZCNTUw
NDExM0UzRTkxMDA4MjExNzYgLyogSlNDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZCNTUwMjExM0UzRTkxMDA4MjExNzYgLyogSlND
bG9zZUV2ZW50LmggKi87IH07CiAJCTUxRkI2N0RDMUFFNkI4MkYwMEQwNkM1QSAvKiBDb250ZW50
RXh0ZW5zaW9uU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25T
dHlsZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTI3M0NDNzcyNTYxMDNDRjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3M0NDNzUyNTYxMDND
RjAwODUwMDA3IC8qIFBsYXRmb3JtWFJDb2NvYS5oICovOyB9OwpAQCAtNzY1OSwxMCArNzY1Nyw2
IEBACiAJCTJCNDIzNUEwMTUyNTBGNjAwMERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0VsbGlwc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxN
ZXRhQ2hhcnNldFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
TWV0YUNoYXJzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkJFOEUy
QzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyQzg1NjUzMzI0QzBGNzNDMDBBMzc2NzMgLyog
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkM4NTY1MzgyNEMxMEIwQjAwQTM3
NjczIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkNBQTRB
MzcyNEJFMThBMTAwOURFRTcwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJDQUE0QTM5MjRCRTE4QjcwMDlERUU3MCAvKiBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDA2
MjE0MjFEQTYzOTg4MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0TWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDA2MjE0MzFEQTYzOTg4
MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwNjIxNDcxREE2M0E3OTAwQTdGQjI2IC8qIFdlYktpdE1l
ZGlhS2V5TmVlZGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDkzNSw2ICsxMDkyOSwxMyBAQAogCQk3MkI0RUY3NDI3NEUyMzMzMDAyOTNDMkYg
LyogRkVCbGVuZFNvZnR3YXJlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGRUJsZW5kU29mdHdh
cmVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjRFRjc1Mjc0RTIz
MzQwMDI5M0MyRiAvKiBGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkI0RUY3QzI3NEVFMzdGMDAyOTNDMkYgLyogRmlsdGVySW1hZ2VWZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmlsdGVySW1hZ2VWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzJCOEIwMTQyNzUxMDg0RDAwRjc1MkFBIC8qIFNvdXJjZUdyYXBoaWNDb3JlSW1hZ2VB
cHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU291cmNl
R3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyQjhCMDE2Mjc1MTA4NkEwMEY3NTJBQSAvKiBTb3VyY2VHcmFwaGljQ29yZUltYWdlQXBwbGll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VHcmFwaGljQ29yZUltYWdlQXBwbGllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkI4QjAxQjI3NTFCNkJDMDBGNzUyQUEgLyogRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBGRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzJCOEIwMUQyNzUxQjgyQjAwRjc1MkFBIC8qIEZFQ29tcG9uZW50VHJh
bnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXJDb3JlSW1hZ2VBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjhC
MDFFMjc1MUI5MTAwMEY3NTJBQSAvKiBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkI4QjAxRjI3NTFCOTI4MDBGNzUyQUEgLyog
RkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVDb2xvck1h
dHJpeENvcmVJbWFnZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJC
OEIwMjAyNzUxQzRCNzAwRjc1MkFBIC8qIEZpbHRlckltYWdlQ29yZUltYWdlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRmlsdGVySW1hZ2VDb3JlSW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMy
ODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyMTQsOCArMjAyMTUsMTMgQEAKIAkJMkNF
MTE4OTgyNEMyNDAyQzAwMzc3MEU5IC8qIGNvcmVpbWFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMkNBQTRBMzkyNEJFMThCNzAwOURFRTcwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggKi8sCi0JCQkJMkNBQTRBMzcyNEJFMThBMTAw
OURFRTcwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tICovLAorCQkJCTcyQjhC
MDFGMjc1MUI5MjgwMEY3NTJBQSAvKiBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5oICov
LAorCQkJCTcyQjhCMDFFMjc1MUI5MTAwMEY3NTJBQSAvKiBGRUNvbG9yTWF0cml4Q29yZUltYWdl
QXBwbGllci5tbSAqLywKKwkJCQk3MkI4QjAxRDI3NTFCODJCMDBGNzUyQUEgLyogRkVDb21wb25l
bnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaCAqLywKKwkJCQk3MkI4QjAxQjI3NTFCNkJDMDBG
NzUyQUEgLyogRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0gKi8sCisJCQkJ
NzJCOEIwMjAyNzUxQzRCNzAwRjc1MkFBIC8qIEZpbHRlckltYWdlQ29yZUltYWdlLm1tICovLAor
CQkJCTcyQjhCMDE2Mjc1MTA4NkEwMEY3NTJBQSAvKiBTb3VyY2VHcmFwaGljQ29yZUltYWdlQXBw
bGllci5oICovLAorCQkJCTcyQjhCMDE0Mjc1MTA4NEQwMEY3NTJBQSAvKiBTb3VyY2VHcmFwaGlj
Q29yZUltYWdlQXBwbGllci5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29yZWltYWdlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2MDI2LDggKzI2MDMyLDYgQEAKIAkJCQkwOEM5
MjUxNzBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmNwcCAqLywKIAkJCQkwOEM5MjUx
ODBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggKi8sCiAJCQkJNzJBMTNBOUYyNzRD
NUNDNzAwRTJBODhFIC8qIEZpbHRlckVmZmVjdEFwcGxpZXIuaCAqLywKLQkJCQkyQzg1NjUzODI0
QzEwQjBCMDBBMzc2NzMgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwICovLAotCQkJCTJDODU2
NTMzMjRDMEY3M0MwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oICovLAogCQkJCTcy
MTRCOUI3Mjc0NDU4RkEwMDNCRTZERiAvKiBGaWx0ZXJFZmZlY3RWZWN0b3IuaCAqLywKIAkJCQk3
MjYyRDc1NzI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTcy
NjJENzU2MjcyQTE3NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovLApAQCAtMzM1NjYs
OCArMzM1NzAsNiBAQAogCQkJCTcxMkJFNDgzMUZFODY1REQwMDIwMzFDQyAvKiBGaWxsTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVm
ZmVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkM4NTY1MzQyNEMwRjczQzAwQTM3NjczIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkyQ0FBNEEzQTI0QkUxOEI3
MDA5REVFNzAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5RUNFQjZFMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5RUNFQjcwMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzJDMDBEOTEyOTYxOUY4MDA1Qzk1NzUgLyogRmlu
ZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb2xvck1hdHJp
eENvcmVJbWFnZUFwcGxpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDUzY2NkODEwNzc3ODgyODg2NTFiOTcw
MDM0ZTlmOTM1ODRkYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBt
ZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQor
CisjaW1wb3J0ICJGaWx0ZXJFZmZlY3RBcHBsaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRkVDb2xvck1hdHJpeDsKKworY2xhc3MgRkVDb2xvck1hdHJpeENvcmVJbWFnZUFw
cGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29sb3JNYXRyaXg+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB1c2luZyBCYXNlID0gRmlsdGVy
RWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29sb3JNYXRyaXg+OworCitwdWJsaWM6CisgICAgRkVD
b2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIoY29uc3QgRkVDb2xvck1hdHJpeCYpOworCisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoY29uc3QgRkVDb2xvck1hdHJp
eCYpOworCisgICAgYm9vbCBhcHBseShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZl
Y3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbG9yTWF0cml4
Q29yZUltYWdlQXBwbGllci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmVhYmVhM2I5MjIxZDQ1MGQ4MDE2M2Fj
MDgzOTNlNzVjNWQ1ZmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLm1tCkBA
IC0wLDAgKzEsMTE0IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJl
IG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5oIgorCisjaWYg
VVNFKENPUkVfSU1BR0UpCisKKyNpbXBvcnQgIkZFQ29sb3JNYXRyaXguaCIKKyNpbXBvcnQgIkZp
bHRlckltYWdlLmgiCisjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CisjaW1wb3J0IDxD
b3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcjo6RkVD
b2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIoY29uc3QgRkVDb2xvck1hdHJpeCYgZWZmZWN0KQor
ICAgIDogQmFzZShlZmZlY3QpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGUgcmVzdCBv
ZiBGRUNvbG9yTWF0cml4IHR5cGVzCisgICAgQVNTRVJUKHN1cHBvcnRzQ29yZUltYWdlUmVuZGVy
aW5nKGVmZmVjdCkpOworfQorCitib29sIEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyOjpz
dXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QpCit7
CisgICAgcmV0dXJuIGVmZmVjdC50eXBlKCkgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRF
CisgICAgICAgIHx8IGVmZmVjdC50eXBlKCkgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFU
RQorICAgICAgICB8fCBlZmZlY3QudHlwZSgpID09IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg7
Cit9CisKK2Jvb2wgRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZp
bHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1
bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlucHV0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byYg
aW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CisKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5j
aUltYWdlKCk7CisgICAgaWYgKCFpbnB1dEltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIHZhbHVlcyA9IEZFQ29sb3JNYXRyaXg6Om5vcm1hbGl6ZWRGbG9hdHMobV9lZmZl
Y3QudmFsdWVzKCkpOworICAgIGZsb2F0IGNvbXBvbmVudHNbOV07CisKKyAgICBzd2l0Y2ggKG1f
ZWZmZWN0LnR5cGUoKSkgeworICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFOgor
ICAgICAgICBGRUNvbG9yTWF0cml4OjpjYWxjdWxhdGVTYXR1cmF0ZUNvbXBvbmVudHMoY29tcG9u
ZW50cywgdmFsdWVzWzBdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEU6CisgICAgICAgIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZUh1ZVJv
dGF0ZUNvbXBvbmVudHMoY29tcG9uZW50cywgdmFsdWVzWzBdKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKKyAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOiAvLyBGSVhNRTogQWRkIEx1bWluYW5jZSB0byBBbHBo
YSBJbXBsZW1lbnRhdGlvbgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBh
dXRvICpjb2xvck1hdHJpeEZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29s
b3JNYXRyaXgiXTsKKyAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZS5n
ZXQoKSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07CisKKyAgICBzd2l0Y2ggKG1fZWZmZWN0LnR5
cGUoKSkgeworICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFOgorICAgIGNhc2Ug
RkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURToKKyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVy
IHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDpjb21wb25lbnRzWzBdIFk6Y29tcG9uZW50
c1sxXSBaOmNvbXBvbmVudHNbMl0gVzowXSBmb3JLZXk6QCJpbnB1dFJWZWN0b3IiXTsKKyAgICAg
ICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDpjb21w
b25lbnRzWzNdIFk6Y29tcG9uZW50c1s0XSBaOmNvbXBvbmVudHNbNV0gVzowXSBmb3JLZXk6QCJp
bnB1dEdWZWN0b3IiXTsKKyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltDSVZl
Y3RvciB2ZWN0b3JXaXRoWDpjb21wb25lbnRzWzZdIFk6Y29tcG9uZW50c1s3XSBaOmNvbXBvbmVu
dHNbOF0gVzowXSBmb3JLZXk6QCJpbnB1dEJWZWN0b3IiXTsKKyAgICAgICAgW2NvbG9yTWF0cml4
RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDowICAgICAgICAgICAgIFk6MCAg
ICAgICAgICAgICBaOjAgICAgICAgICAgICAgVzoxXSBmb3JLZXk6QCJpbnB1dEFWZWN0b3IiXTsK
KyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRo
WDowICAgICAgICAgICAgIFk6MCAgICAgICAgICAgICBaOjAgICAgICAgICAgICAgVzowXSBmb3JL
ZXk6QCJpbnB1dEJpYXNWZWN0b3IiXTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZFQ09M
T1JNQVRSSVhfVFlQRV9NQVRSSVg6CisgICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1
ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzBdICBZOnZhbHVlc1sxXSAgWjp2YWx1ZXNb
Ml0gIFc6dmFsdWVzWzNdXSAgZm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07CisgICAgICAgIFtjb2xv
ck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzVdICBZ
OnZhbHVlc1s2XSAgWjp2YWx1ZXNbN10gIFc6dmFsdWVzWzhdXSAgZm9yS2V5OkAiaW5wdXRHVmVj
dG9yIl07CisgICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVj
dG9yV2l0aFg6dmFsdWVzWzEwXSBZOnZhbHVlc1sxMV0gWjp2YWx1ZXNbMTJdIFc6dmFsdWVzWzEz
XV0gZm9yS2V5OkAiaW5wdXRCVmVjdG9yIl07CisgICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBz
ZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzE1XSBZOnZhbHVlc1sxNl0gWjp2
YWx1ZXNbMTddIFc6dmFsdWVzWzE4XV0gZm9yS2V5OkAiaW5wdXRBVmVjdG9yIl07CisgICAgICAg
IFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVz
WzRdICBZOnZhbHVlc1s5XSAgWjp2YWx1ZXNbMTRdIFc6dmFsdWVzWzE5XV0gZm9yS2V5OkAiaW5w
dXRCaWFzVmVjdG9yIl07CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBGRUNPTE9STUFUUklY
X1RZUEVfTFVNSU5BTkNFVE9BTFBIQToKKyAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktO
T1dOOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXN1bHQuc2V0Q0lJ
bWFnZShjb2xvck1hdHJpeEZpbHRlci5vdXRwdXRJbWFnZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDT1JFX0lNQUdFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZF
Q29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MzNhNDk3MmQzMWU5ZDdiNjIzZjc2MGM5NDY1NGQ1MzNmZDE0Yjhk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmgKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0
ICJGaWx0ZXJFZmZlY3RBcHBsaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RkVDb21wb25lbnRUcmFuc2ZlcjsKKworY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFn
ZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29tcG9uZW50
VHJhbnNmZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB1c2luZyBCYXNl
ID0gRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29tcG9uZW50VHJhbnNmZXI+OworCitw
dWJsaWM6CisgICAgRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIoY29uc3QgRkVD
b21wb25lbnRUcmFuc2ZlciYpOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VS
ZW5kZXJpbmcoY29uc3QgRkVDb21wb25lbnRUcmFuc2ZlciYpOworCisgICAgYm9vbCBhcHBseShj
b25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFn
ZSYgcmVzdWx0KSBjb25zdCBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
RUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBw
bGllci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xZjNmMmZjNzgyM2U1NjY3MDBlNDhhMjIzMTg3OTE4NWFlZDVk
YmM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0wLDAg
KzEsODMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmgiCisKKyNpZiBV
U0UoQ09SRV9JTUFHRSkKKworI2ltcG9ydCAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyOjpG
RUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllcihjb25zdCBGRUNvbXBvbmVudFRyYW5z
ZmVyJiBlZmZlY3QpCisgICAgOiBCYXNlKGVmZmVjdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoZSByZXN0IG9mIEZFQ29tcG9uZW50VHJhbnNmZXIgZnVuY3Rpb25zCisgICAgQVNTRVJU
KHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKGVmZmVjdCkpOworfQorCitib29sIEZFQ29tcG9u
ZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhj
b25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlZmZlY3QpCit7CisgICAgYXV0byBpc051bGxPckxp
bmVhciA9IFtdIChjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jdGlvbikgewor
ICAgICAgICByZXR1cm4gZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVf
VU5LTk9XTgorICAgICAgICAgICAgfHwgZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfTElORUFSOworICAgIH07CisKKyAgICByZXR1cm4gaXNOdWxsT3JMaW5lYXIoZWZm
ZWN0LnJlZEZ1bmN0aW9uKCkpCisgICAgICAgICYmIGlzTnVsbE9yTGluZWFyKGVmZmVjdC5ncmVl
bkZ1bmN0aW9uKCkpCisgICAgICAgICYmIGlzTnVsbE9yTGluZWFyKGVmZmVjdC5ibHVlRnVuY3Rp
b24oKSkKKyAgICAgICAgJiYgaXNOdWxsT3JMaW5lYXIoZWZmZWN0LmFscGhhRnVuY3Rpb24oKSk7
Cit9CisKK2Jvb2wgRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXI6OmFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdl
JiByZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlucHV0cy5zaXplKCkgPT0gMSk7CisgICAg
YXV0byYgaW5wdXQgPSBpbnB1dHNbMF0uZ2V0KCk7CisKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBp
bnB1dC5jaUltYWdlKCk7CisgICAgaWYgKCFpbnB1dEltYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvIGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiQ0lDb2xvclBvbHlub21pYWwiXTsKKyAgICBbY29tcG9uZW50VHJhbnNmZXJG
aWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZS5nZXQoKSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07
CisKKyAgICBhdXRvIHNldENvZWZmaWNpZW50cyA9IFsmXSAoTlNTdHJpbmcgKmtleSwgY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGZ1bmN0
aW9uLnR5cGUgPT0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUikKKyAgICAgICAgICAg
IFtjb21wb25lbnRUcmFuc2ZlckZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6
ZnVuY3Rpb24uaW50ZXJjZXB0IFk6ZnVuY3Rpb24uc2xvcGUgWjowIFc6MF0gZm9yS2V5OmtleV07
CisgICAgfTsKKworICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0UmVkQ29lZmZpY2llbnRzIiwg
bV9lZmZlY3QucmVkRnVuY3Rpb24oKSk7CisgICAgc2V0Q29lZmZpY2llbnRzKEAiaW5wdXRHcmVl
bkNvZWZmaWNpZW50cyIsIG1fZWZmZWN0LmdyZWVuRnVuY3Rpb24oKSk7CisgICAgc2V0Q29lZmZp
Y2llbnRzKEAiaW5wdXRCbHVlQ29lZmZpY2llbnRzIiwgbV9lZmZlY3QuYmx1ZUZ1bmN0aW9uKCkp
OworICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0QWxwaGFDb2VmZmljaWVudHMiLCBtX2VmZmVj
dC5hbHBoYUZ1bmN0aW9uKCkpOworCisgICAgcmVzdWx0LnNldENJSW1hZ2UoY29tcG9uZW50VHJh
bnNmZXJGaWx0ZXIub3V0cHV0SW1hZ2UpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ09SRV9JTUFHRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU3YmM4NTMyNzJhYjRkYWY3YzliODUwMTg2Y2M5OWE5NzQ0ZjkzNWYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNFKENPUkVfSU1BR0UpCi0KLSNpbXBvcnQgIkZpbHRl
ckVmZmVjdFJlbmRlcmVyLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCi0jaW1w
b3J0IDx3dGYvVmVjdG9yLmg+Ci0KLU9CSkNfQ0xBU1MgQ0lJbWFnZTsKLU9CSkNfQ0xBU1MgQ0lG
aWx0ZXI7Ci1PQkpDX0NMQVNTIENJQ29udGV4dDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGRUNvbG9yTWF0cml4OwotY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlcjsKLWNsYXNzIFNv
dXJjZUdyYXBoaWM7Ci0KLWNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVi
bGljIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICAKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlPiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7Ci0gICAgUmV0YWluUHRy
PENJQ29udGV4dD4gc2hhcmVkQ0lDb250ZXh0KCk7Ci0gICAgdm9pZCBhcHBseUVmZmVjdHMoY29u
c3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0JikgZmluYWw7Ci0gICAgYm9vbCBoYXNSZXN1bHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX291dHB1dEltYWdlOyB9Ci0gICAgSW1hZ2VCdWZmZXIqIG91
dHB1dCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJF
ZmZlY3QmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGNsZWFyUmVzdWx0KCkgZmluYWw7Ci0gICAg
RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgUmV0
YWluUHRyPENJSW1hZ2U+IGNvbm5lY3RDSUZpbHRlcnMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZm
ZWN0Jik7Ci0gICAgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFs
OwotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVj
dCYpOwotICAgIHN0YXRpYyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVj
dCYpOwotICAgIAotICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMo
Y29uc3QgRmlsdGVyJik7Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1h
dHJpeChjb25zdCBGRUNvbG9yTWF0cml4JiwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdl
Pj4mKTsKLSAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVy
KGNvbnN0IEZFQ29tcG9uZW50VHJhbnNmZXImLCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYp
OwotICAgIAotICAgIFJlZlB0cjxJT1N1cmZhY2VJbWFnZUJ1ZmZlcj4gbV9vdXRwdXRJbWFnZUJ1
ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gbV9vdXRwdXRJbWFnZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5
NjE1ZmRlODNlZWQ0MzBmZTFlNWMxNTc4YzA2OWIyMzY2MzczNTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMjczICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgi
Ci0KLSNpZiBVU0UoQ09SRV9JTUFHRSkKLQotI2ltcG9ydCAiRkVDb2xvck1hdHJpeC5oIgotI2lt
cG9ydCAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgotI2ltcG9ydCAiRmlsdGVyLmgiCi0jaW1wb3J0
ICJGaWx0ZXJFZmZlY3QuaCIKLSNpbXBvcnQgIkZpbHRlck9wZXJhdGlvbi5oIgotI2ltcG9ydCAi
RmxvYXRDb252ZXJzaW9uLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2ltcG9y
dCAiSW1hZ2VCdWZmZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlNvdXJjZUdy
YXBoaWMuaCIKLSNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KLSNpbXBvcnQgPENvcmVJ
bWFnZS9DSUZpbHRlci5oPgotI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgotI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29j
b2EuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjp0cnlD
cmVhdGUoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQotewotICAgIGlmIChjYW5SZW5kZXJVc2lu
Z0NJRmlsdGVycyhsYXN0RWZmZWN0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U+KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJl
dGFpblB0cjxDSUNvbnRleHQ+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzaGFyZWRD
SUNvbnRleHQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0lDb250
ZXh0Pj4gY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0V2l0aE9wdGlvbnM6QHsga0NJQ29u
dGV4dFdvcmtpbmdDb2xvclNwYWNlOiBicmlkZ2VfaWRfY2FzdChhZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSkpLmdldCgpIH1dOwotICAgIHJldHVy
biBjaUNvbnRleHQ7Ci19Ci0KLXN0YXRpYyBib29sIGlzTnVsbE9yTGluZWFyQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlZmZlY3QpCi17Ci0gICAg
YXV0byBpc051bGxPckxpbmVhciA9IFtdIChjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
JiBmdW5jdGlvbikgewotICAgICAgICByZXR1cm4gZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVO
VFRSQU5TRkVSX1RZUEVfVU5LTk9XTgotICAgICAgICAgICAgfHwgZnVuY3Rpb24udHlwZSA9PSBG
RUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSOwotICAgIH07Ci0gICAgcmV0dXJuIGlzTnVs
bE9yTGluZWFyKGVmZmVjdC5yZWRGdW5jdGlvbigpKSAmJiBpc051bGxPckxpbmVhcihlZmZlY3Qu
Z3JlZW5GdW5jdGlvbigpKQotICAgICAgICAmJiBpc051bGxPckxpbmVhcihlZmZlY3QuYmx1ZUZ1
bmN0aW9uKCkpICYmIGlzTnVsbE9yTGluZWFyKGVmZmVjdC5hbHBoYUZ1bmN0aW9uKCkpOwotfQot
Ci1ib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJl
bmRlcmluZyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKLXsKLSAgICAvLyBGSVhNRTogY2hhbmdlIHJl
dHVybiB2YWx1ZSB0byB0cnVlIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQKLSAgICBzd2l0Y2gg
KGVmZmVjdC5maWx0ZXJUeXBlKCkpIHsKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291
cmNlR3JhcGhpYzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJpeDogewotICAgICAgICBzd2l0Y2ggKGRv
d25jYXN0PEZFQ29sb3JNYXRyaXg+KGVmZmVjdCkudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgRkVD
T0xPUk1BVFJJWF9UWVBFX1VOS05PV046Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBF
X0xVTUlOQU5DRVRPQUxQSEE6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNh
c2UgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKLSAgICAgICAgY2FzZSBGRUNPTE9STUFUUklY
X1RZUEVfU0FUVVJBVEU6Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFU
RToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2Fz
ZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNmZXI6Ci0gICAgICAgIHJldHVy
biBpc051bGxPckxpbmVhckNvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oZG93bmNhc3Q8RkVDb21w
b25lbnRUcmFuc2Zlcj4oZWZmZWN0KSk7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0
ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCi17Ci0gICAgbV9vdXRwdXRJbWFnZSA9IGNvbm5lY3RDSUZp
bHRlcnMoZmlsdGVyLCBsYXN0RWZmZWN0KTsKLSAgICBpZiAoIW1fb3V0cHV0SW1hZ2UpCi0gICAg
ICAgIHJldHVybjsKLSAgICByZW5kZXJUb0ltYWdlQnVmZmVyKGxhc3RFZmZlY3QpOwotfQotCi1S
ZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RD
SUZpbHRlcnMoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIEZpbHRlckVmZmVjdCYgZWZmZWN0KQotewot
ICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+IGlucHV0SW1hZ2VzOwotICAgIAotICAgIGZv
ciAoYXV0byBpbiA6IGVmZmVjdC5pbnB1dEVmZmVjdHMoKSkgewotICAgICAgICBhdXRvIGlucHV0
SW1hZ2UgPSBjb25uZWN0Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKLSAgICAgICAgaWYgKCFpbnB1
dEltYWdlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlucHV0SW1hZ2Vz
LmFwcGVuZChpbnB1dEltYWdlKTsKLSAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KGZpbHRlcik7Ci0gICAgCi0gICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVj
dCgpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFi
c29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Ci0gICAgc3dpdGNoIChlZmZlY3QuZmlsdGVyVHlwZSgpKSB7Ci0gICAgY2FzZSBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWM6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvclNvdXJjZUdy
YXBoaWMoZmlsdGVyKTsKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJp
eDoKLSAgICAgICAgcmV0dXJuIGltYWdlRm9yRkVDb2xvck1hdHJpeChkb3duY2FzdDxGRUNvbG9y
TWF0cml4PihlZmZlY3QpLCBpbnB1dEltYWdlcyk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5
cGU6OkZFQ29tcG9uZW50VHJhbnNmZXI6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29tcG9u
ZW50VHJhbnNmZXIoZG93bmNhc3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4oZWZmZWN0KSwgaW5wdXRJ
bWFnZXMpOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi1SZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhjb25zdCBGaWx0ZXImIGZp
bHRlcikKLXsKLSAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBmaWx0ZXIuc291cmNlSW1h
Z2UoKTsKLSAgICBpZiAoIXNvdXJjZUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAKLSAgICBpZiAoaXM8SU9TdXJmYWNlSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkpCi0gICAg
ICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhJT1N1cmZhY2U6ZG93bmNhc3Q8SU9TdXJmYWNl
SW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2UoKV07Ci0gICAgCi0g
ICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRp
dmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwotfQotCi1SZXRhaW5QdHI8Q0lJbWFn
ZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJpeChj
b25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFn
ZT4+JiBpbnB1dEltYWdlcykKLXsKLSAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dEltYWdlcy5h
dCgwKTsKLQotICAgIGF1dG8gdmFsdWVzID0gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0
cyhlZmZlY3QudmFsdWVzKCkpOwotICAgIGZsb2F0IGNvbXBvbmVudHNbOV07Ci0gICAgCi0gICAg
c3dpdGNoIChlZmZlY3QudHlwZSgpKSB7Ci0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FU
VVJBVEU6Ci0gICAgICAgIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVNhdHVyYXRlQ29tcG9uZW50
cyhjb21wb25lbnRzLCB2YWx1ZXNbMF0pOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNl
IEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIEZFQ29sb3JNYXRyaXg6OmNh
bGN1bGF0ZUh1ZVJvdGF0ZUNvbXBvbmVudHMoY29tcG9uZW50cywgdmFsdWVzWzBdKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgCi0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgotICAg
ICAgICBicmVhazsKLSAgICAgICAgCi0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9X
TjoKLSAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOiAvLyBGSVhN
RTogQWRkIEx1bWluYW5jZSB0byBBbHBoYSBJbXBsZW1lbnRhdGlvbgotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byAqY29sb3JNYXRyaXhGaWx0ZXIgPSBbQ0lG
aWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yTWF0cml4Il07Ci0gICAgW2NvbG9yTWF0cml4
RmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UuZ2V0KCkgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXld
OwotICAgIAotICAgIHN3aXRjaCAoZWZmZWN0LnR5cGUoKSkgewotICAgIGNhc2UgRkVDT0xPUk1B
VFJJWF9UWVBFX1NBVFVSQVRFOgotICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFU
RTogewotICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3Rv
cldpdGhYOmNvbXBvbmVudHNbMF0gWTpjb21wb25lbnRzWzFdIFo6Y29tcG9uZW50c1syXSBXOjBd
IGZvcktleTpAImlucHV0UlZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0
VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVudHNbM10gWTpjb21wb25lbnRzWzRd
IFo6Y29tcG9uZW50c1s1XSBXOjBdIGZvcktleTpAImlucHV0R1ZlY3RvciJdOwotICAgICAgICBb
Y29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVu
dHNbNl0gWTpjb21wb25lbnRzWzddIFo6Y29tcG9uZW50c1s4XSBXOjBdIGZvcktleTpAImlucHV0
QlZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9y
IHZlY3RvcldpdGhYOjAgICAgICAgICAgICAgWTowICAgICAgICAgICAgIFo6MCAgICAgICAgICAg
ICBXOjFdIGZvcktleTpAImlucHV0QVZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0
ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAgICAgICAgICAgICAgWTowICAgICAg
ICAgICAgIFo6MCAgICAgICAgICAgICBXOjBdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklY
OiB7Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9y
V2l0aFg6dmFsdWVzWzBdICBZOnZhbHVlc1sxXSAgWjp2YWx1ZXNbMl0gIFc6dmFsdWVzWzNdXSAg
Zm9yS2V5OkAiaW5wdXRSVmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRW
YWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzVdICBZOnZhbHVlc1s2XSAgWjp2YWx1
ZXNbN10gIFc6dmFsdWVzWzhdXSAgZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgICAgIFtj
b2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzEw
XSBZOnZhbHVlc1sxMV0gWjp2YWx1ZXNbMTJdIFc6dmFsdWVzWzEzXV0gZm9yS2V5OkAiaW5wdXRC
VmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3Ig
dmVjdG9yV2l0aFg6dmFsdWVzWzE1XSBZOnZhbHVlc1sxNl0gWjp2YWx1ZXNbMTddIFc6dmFsdWVz
WzE4XV0gZm9yS2V5OkAiaW5wdXRBVmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRl
ciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzRdICBZOnZhbHVlc1s5XSAg
Wjp2YWx1ZXNbMTRdIFc6dmFsdWVzWzE5XV0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFO
Q0VUT0FMUEhBOgotICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gY29sb3JNYXRyaXhGaWx0ZXIub3V0
cHV0SW1hZ2U7Ci19Ci0KLVJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6aW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9uZW50VHJh
bnNmZXImIGVmZmVjdCwgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQot
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIHJlc3Qgb2YgRkVDb21wb25lbnRUcmFuc2Zl
ciBmdW5jdGlvbnMKLSAgICBBU1NFUlQoaXNOdWxsT3JMaW5lYXJDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uKGVmZmVjdCkpOwotCi0gICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXRJbWFnZXMuYXQo
MCk7Ci0gICAgYXV0byBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9y
UG9seW5vbWlhbCJdOwotICAgIAotICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZS5nZXQo
KSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07Ci0gICAgCi0gICAgYXV0byBzZXRDb2VmZmljaWVu
dHMgPSBbJl0gKE5TU3RyaW5nICprZXksIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGZ1bmN0aW9uKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvbi50eXBlID09IEZFQ09NUE9ORU5UVFJB
TlNGRVJfVFlQRV9MSU5FQVIpCi0gICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3Rv
ciB2ZWN0b3JXaXRoWDpmdW5jdGlvbi5pbnRlcmNlcHQgWTpmdW5jdGlvbi5zbG9wZSBaOjAgVzow
XSBmb3JLZXk6a2V5XTsKLSAgICB9OwotICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0UmVkQ29l
ZmZpY2llbnRzIiwgZWZmZWN0LnJlZEZ1bmN0aW9uKCkpOwotICAgIHNldENvZWZmaWNpZW50cyhA
ImlucHV0R3JlZW5Db2VmZmljaWVudHMiLCBlZmZlY3QuZ3JlZW5GdW5jdGlvbigpKTsKLSAgICBz
ZXRDb2VmZmljaWVudHMoQCJpbnB1dEJsdWVDb2VmZmljaWVudHMiLCBlZmZlY3QuYmx1ZUZ1bmN0
aW9uKCkpOwotICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0QWxwaGFDb2VmZmljaWVudHMiLCBl
ZmZlY3QuYWxwaGFGdW5jdGlvbigpKTsKLSAgICAKLSAgICByZXR1cm4gZmlsdGVyLm91dHB1dElt
YWdlOwotfQotCi1ib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjYW5SZW5kZXJV
c2luZ0NJRmlsdGVycyhGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKLXsKLSAgICBpZiAoIXN1cHBvcnRz
Q29yZUltYWdlUmVuZGVyaW5nKGVmZmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBmb3IgKGF1dG8gaW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgaWYg
KCFzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygqaW4pIHx8ICFjYW5SZW5kZXJVc2luZ0NJRmls
dGVycygqaW4pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpv
dXRwdXQoKSBjb25zdAotewotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwg
IlJlbmRlcmluZyAiIDw8IHRoaXMgPDwgIiB1c2luZyBDb3JlSW1hZ2VcbiIpOwotICAgIHJldHVy
biBtX291dHB1dEltYWdlQnVmZmVyLmdldCgpOwotfQotICAgIAotdm9pZCBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RF
ZmZlY3QpCi17Ci0gICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRTaXplKGxhc3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIG1fb3V0
cHV0SW1hZ2VCdWZmZXIgPSBJT1N1cmZhY2VJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXpl
LCAxLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
LSAgICBpZiAoIW1fb3V0cHV0SW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgY2xlYXJSZXN1bHQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSBy
ZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IG1fb3V0cHV0SW1hZ2VCdWZm
ZXItPnN1cmZhY2UoKS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9y
U3BhY2U6bGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCld
OwotfQotICAgIAotRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0
UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0Ci17Ci0gICAgSW50U2l6
ZSBkZXN0U2l6ZSA9IGxhc3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAg
RmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwot
ICAgIHJldHVybiBkZXN0UmVjdDsKLX0KLQotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6Y2xlYXJSZXN1bHQoKQotewotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBudWxscHRy
OwotICAgIG1fb3V0cHV0SW1hZ2UgPSBudWxscHRyOwotfQotCi1GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UoKQotICAgIDogRmlsdGVy
RWZmZWN0UmVuZGVyZXIoKQotewotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTgy
NGFlY2ZkZmE1Njk2M2Q5YmQxYjU3MmM3Y2MyODEzYmQ0MjExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckltYWdlQ29y
ZUltYWdlLm1tCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJGaWx0ZXJJbWFnZS5oIgorCisjaWYgVVNFKENPUkVfSU1B
R0UpCisKKyNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgPENvcmVJbWFn
ZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4KKyNpbXBvcnQg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29h
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFJldGFpblB0cjxDSUNvbnRleHQ+
IHNoYXJlZENJQ29udGV4dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDSUNvbnRleHQ+PiBjaUNvbnRleHQgPSBbQ0lDb250ZXh0IGNvbnRleHRXaXRoT3B0aW9uczpA
eyBrQ0lDb250ZXh0V29ya2luZ0NvbG9yU3BhY2U6IGJyaWRnZV9pZF9jYXN0KGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKSkuZ2V0KCkgfV07Cisg
ICAgcmV0dXJuIGNpQ29udGV4dDsKK30KKwordm9pZCBGaWx0ZXJJbWFnZTo6c2V0Q0lJbWFnZShS
ZXRhaW5QdHI8Q0lJbWFnZT4mJiBjaUltYWdlKQoreworICAgIEFTU0VSVChjaUltYWdlKTsKKyAg
ICBtX2NpSW1hZ2UgPSBXVEZNb3ZlKGNpSW1hZ2UpOworfQorCitJbWFnZUJ1ZmZlciogRmlsdGVy
SW1hZ2U6OmltYWdlQnVmZmVyRnJvbUNJSW1hZ2UoKQoreworICAgIEFTU0VSVChtX2NpSW1hZ2Up
OworCisgICAgaWYgKG1faW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVy
LmdldCgpOworCisgICAgbV9pbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVh
dGUobV9hYnNvbHV0ZUltYWdlUmVjdC5zaXplKCksIDEsIG1fY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBkZXN0UmVjdCA9IEZsb2F0UmVjdCB7IEZsb2F0UG9pbnQoKSwgbV9h
YnNvbHV0ZUltYWdlUmVjdC5zaXplKCkgfTsKKyAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkg
cmVuZGVyOiBtX2NpSW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IGRvd25jYXN0PElPU3VyZmFjZUlt
YWdlQnVmZmVyPigqbV9pbWFnZUJ1ZmZlcikuc3VyZmFjZSgpLnN1cmZhY2UoKSBib3VuZHM6ZGVz
dFJlY3QgY29sb3JTcGFjZTptX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCldOworCisg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShDT1JFX0lNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBs
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNl
R3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzAxYjAzMTU4MDc5ZTY5MzQw
ZDMwNmZkYjgxZDg0MGM4MmI0ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVy
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisq
IGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNwcmFnbWEg
b25jZQorCisjaW1wb3J0ICJGaWx0ZXJFZmZlY3RBcHBsaWVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU291cmNlR3JhcGhpYzsKKworY2xhc3MgU291cmNlR3JhcGhpY0NvcmVJ
bWFnZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPFNvdXJjZUdy
YXBoaWM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB1c2luZyBCYXNlID0g
RmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPFNvdXJjZUdyYXBoaWM+OworCitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29u
c3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3Qg
b3ZlcnJpZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNlR3JhcGhpY0NvcmVJ
bWFnZUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvU291cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVhOTJjODZk
Y2ExODMxNzdlZmJiMmI2Nzg3MzM4ZDY0NDFmY2QyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9Tb3VyY2VHcmFwaGljQ29yZUlt
YWdlQXBwbGllci5tbQpAQCAtMCwwICsxLDU4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VHcmFwaGljQ29yZUltYWdlQXBw
bGllci5oIgorCisjaWYgVVNFKENPUkVfSU1BR0UpCisKKyNpbXBvcnQgIkZpbHRlci5oIgorI2lt
cG9ydCAiRmlsdGVySW1hZ2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFNvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVy
OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBG
aWx0ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAoreworICAgIGF1dG8gc291cmNlSW1hZ2UgPSBmaWx0
ZXIuc291cmNlSW1hZ2UoKTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2U7CisgICAgaWYgKGlzPElPU3Vy
ZmFjZUltYWdlQnVmZmVyPigqc291cmNlSW1hZ2UpKQorICAgICAgICBpbWFnZSA9IFtDSUltYWdl
IGltYWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxJT1N1cmZhY2VJbWFnZUJ1ZmZlcj4oKnNvdXJj
ZUltYWdlKS5zdXJmYWNlKCkuc3VyZmFjZSgpXTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlID0g
W0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCkt
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CisKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXN1bHQuc2V0Q0lJbWFnZShXVEZNb3ZlKGltYWdlKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShDT1JFX0lNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9DVlV0aWxpdGllcy5tbQppbmRleCA0MDcyNzA0M2ZkMTJkNjJhNGNiZDdkYmI1OWU0MTE2MGEy
OGRkZjIyLi5hY2Y5NmZkMGQ1NDBhYjg2ZTc3MGQ0NjEzYzE5MGEyMjgzYjcwNWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGll
cy5oIgogCisjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
CmluZGV4IDYzMDU5OWY2ZDdkM2RkMzk1YmJhOWVlNWMwMjM2YWI4N2JmMDgxMzguLjIwMTkxM2Ez
MzUxOWMwNTQ1MGQ3Y2VlZWI1MTllNGYwNjFlYjI2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApA
QCAtMjgsNiArMjgsMTAgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyNpbmNsdWRlICJGRUNvbG9y
TWF0cml4Q29yZUltYWdlQXBwbGllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVmPEZFQ29sb3JNYXRyaXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShDb2xvck1hdHJpeFR5
cGUgdHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKQEAgLTk0LDYgKzk4LDEzIEBAIFZlY3Rv
cjxmbG9hdD4gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8Zmxv
YXQ+JiB2YWx1ZXMpCiAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZXM7CiB9CiAKKyNpZiBVU0Uo
Q09SRV9JTUFHRSkKK2Jvb2wgRkVDb2xvck1hdHJpeDo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcjo6
c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKnRoaXMpOworfQorI2VuZGlmCisKIGJvb2wgRkVD
b2xvck1hdHJpeDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
eXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOwpAQCAtMTAyLDkgKzEx
Myw4IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKIHN0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUNvbG9yTWF0cml4OjpjcmVhdGVB
cHBsaWVyKGNvbnN0IEZpbHRlciYgZmlsdGVyKSBjb25zdAogewogI2lmIFVTRShDT1JFX0lNQUdF
KQotICAgIC8vIEZJWE1FOiByZXR1cm4gRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIuCiAg
ICAgaWYgKGZpbHRlci5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gRmlsdGVyRWZmZWN0
QXBwbGllcjo6Y3JlYXRlPEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyPigqdGhpcyk7CiAj
ZW5kaWYKICAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFQ29sb3JNYXRy
aXhTb2Z0d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMDRmNTdm
MWRlMzg5MTMwNzdjNWQ4ZTQwMTBmMjNjZDY2ZGRlZjI0YS4uM2QwNzA0ZTdmOWE5Yjg2NWIyZDE0
ZWIxOGU4YTg0YzlkNWY3MmFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTUyLDYgKzUyLDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVDb2xvck1hdHJpeChDb2xvck1hdHJpeFR5cGUsIFZl
Y3RvcjxmbG9hdD4mJik7CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRz
Q29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKyAgICAKICAgICBi
b29sIHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCBlYWZh
NmIzODNkMTViMWQ1NDJhYTcxNzRkMWJiM2E3NTRlNjVkMjY5Li44MjNlM2RhNjgxZWZmODRhNTAw
ZjRlYTg4Njc0NDlmZjBkZGJmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAK
QEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKENPUkVfSU1BR0UpCisjaW5jbHVkZSAiRkVDb21w
b25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpj
cmVhdGUoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sIGNvbnN0
IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgYWxwaGFGdW5jdGlvbikKQEAgLTQ1LDEyICs0OSwxOCBAQCBGRUNvbXBvbmVudFRy
YW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIHJlZEZ1bgogewogfQogCisjaWYgVVNFKENPUkVfSU1BR0UpCitib29sIEZFQ29tcG9uZW50
VHJhbnNmZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXI6OnN1cHBvcnRzQ29yZUltYWdl
UmVuZGVyaW5nKCp0aGlzKTsKK30KKyNlbmRpZgorCiBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0QXBwbGllcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0
ZXImIGZpbHRlcikgY29uc3QKIHsKICNpZiBVU0UoQ09SRV9JTUFHRSkKLSAgICAvLyBGSVhNRTog
cmV0dXJuIEZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLgogICAgIGlmIChmaWx0
ZXIucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNy
ZWF0ZTxGRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllcj4oKnRoaXMpOwogI2VuZGlm
CiAgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZTxGRUNvbXBvbmVudFRyYW5z
ZmVyU29mdHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5o
CmluZGV4IDU5Yzk3YjY3Y2IxYTExNTI2NzBhYmFkMDU5YjNiNzgxOWVlNjc4YjkuLmNjYWY0NTli
MDNlM2YwZTRlNjA5YmFmMzkyNzQxMTA3NTVhZmEyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFQ29tcG9u
ZW50VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29u
c3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
biYgYWxwaGFGdW5jKTsKIAorI2lmIFVTRShDT1JFX0lNQUdFKQorICAgIGJvb2wgc3VwcG9ydHND
b3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVy
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5oCmluZGV4IDg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMxN2JmMjk4YzBlNDEuLjJi
MDZiZmJiNjRlMjU0MTllNGFmNTliMTFjMTU5MGQ5MGQzYzhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNTQsMTQgKzU0
LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAogcHJv
dGVjdGVkOgotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSkKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkK
ICAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICAgICAsIG1fcmVuZGVy
aW5nTW9kZShyZW5kZXJpbmdNb2RlKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFn
ZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQorICAgIEZpbHRlcihGaWx0ZXI6
OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCiAgICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmls
dGVyVHlwZSkKKyAgICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKICAgICAg
ICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQogICAgICAgICAsIG1fc291cmNlSW1hZ2VS
ZWN0KHNvdXJjZUltYWdlUmVjdCkKICAgICAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdp
b24pCkBAIC02OSwxMiArNzEsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKKyAg
ICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKKwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRl
clNjYWxlOwogICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKICAgICBGbG9hdFJlY3Qg
bV9maWx0ZXJSZWdpb247CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7
Ci0gICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGUgeyBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGE4NTVj
ZGI5NjMxN2I4MmRlMzU2N2ZjMzFlNWI5ZTlhOWVjNjA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKLQotI2lmIFVTRShDT1JFX0lNQUdFKQotI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgiCi0jZW5kaWYKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IEZp
bHRlckVmZmVjdFJlbmRlcmVyOjp0cnlDcmVhdGUoYm9vbCBhY2NlbGVyYXRlZEZpbHRlclJlbmRl
cmluZ0VuYWJsZWQsIEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkKLXsKLSNpZiBVU0UoQ09SRV9J
TUFHRSkKLSAgICBpZiAoYWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJpbmdFbmFibGVkKQotICAgICAg
ICByZXR1cm4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnRyeUNyZWF0ZShsYXN0RWZm
ZWN0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFjY2VsZXJhdGVkRmlsdGVyUmVuZGVyaW5n
RW5hYmxlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxhc3RFZmZlY3QpOwotI2VuZGlmCi0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLQotfSAvLyBuYW1zcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Y2Y3ZGZlMzQz
NjExZmIxYTZmMjY1MmY2NjBiNmMwYjgxOTA1N2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBA
QAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgCi1wdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZp
bHRlckVmZmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVy
JiwgRmlsdGVyRWZmZWN0JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHQoKSA9IDA7Ci0gICAgCi0gICAgdmlydHVh
bCB+RmlsdGVyRWZmZWN0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0g
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCmluZGV4IGFiNGE3MDVlMGQzMmU0ZjVkNTBjNmM5
MTFkMDY5M2YwZDE3NTM0ODcuLmQyOWEzYTYwN2FhNjhmZDVmZDhhODdkZTE5NGRmNmE1NmI1YWY0
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmgKQEAgLTg0LDYgKzg0LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQXRvbVN0cmluZyBzb3VyY2VHcmFwaGljTmFtZSgpIHsgcmV0dXJuIGZpbHRlck5hbWUo
VHlwZTo6U291cmNlR3JhcGhpYyk7IH0KICAgICBBdG9tU3RyaW5nIGZpbHRlck5hbWUoKSBjb25z
dCB7IHJldHVybiBmaWx0ZXJOYW1lKG1fZmlsdGVyVHlwZSk7IH0KIAorI2lmIFVTRShDT1JFX0lN
QUdFKQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBhcHBseShjb25z
dCBGaWx0ZXImKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgSW50T3V0c2V0cyBvdXRz
ZXRzKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUmVzdWx0
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVySW1hZ2UuY3BwCmluZGV4IDA1NWRkODU1NzA1YmM1YjM3YzczNzk5MjJmMDJj
NjY0MGQzN2ZkYmIuLjNhNGZlOTA1M2Q2ZDcwNTkwNjAxYTc4YzUwMmY3YmRkMTE0NWZhOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVySW1hZ2UuY3BwCkBAIC02NCw2ICs2NCwxNSBAQCBJbnRSZWN0IEZpbHRlckltYWdlOjph
YnNvbHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8oY29uc3QgRmlsdGVySW1hZ2UmIG9yaWdpbikgY29u
cwogfQogCiBJbWFnZUJ1ZmZlciogRmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyKCkKK3sKKyNpZiBV
U0UoQ09SRV9JTUFHRSkKKyAgICBpZiAobV9jaUltYWdlKQorICAgICAgICByZXR1cm4gaW1hZ2VC
dWZmZXJGcm9tQ0lJbWFnZSgpOworI2VuZGlmCisgICAgcmV0dXJuIGltYWdlQnVmZmVyRnJvbVBp
eGVsQnVmZmVyKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXJG
cm9tUGl4ZWxCdWZmZXIoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAppbmRleCAxMGMzOWQ5YzhkYzBkMTY3
YjY3ODA2Yjg1YTcyNjkxMWE1NTliZWZjLi4yMzVhM2U4MTg1YmI5YjY4NzE3YjUyYWM3MThjNjVl
Y2M4ZjQ5ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgVVNFKENPUkVf
SU1BR0UpCitPQkpDX0NMQVNTIENJSW1hZ2U7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGaWx0ZXI7CkBAIC02MSwxMSArNjUsMjIgQEAgcHVibGljOgogICAgIHZvaWQg
Y29ycmVjdFByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlcigpOwogICAgIHZvaWQgdHJhbnNmb3JtVG9D
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCisjaWYgVVNFKENPUkVf
SU1BR0UpCisgICAgUmV0YWluUHRyPENJSW1hZ2U+IGNpSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X2NpSW1hZ2U7IH0KKyAgICB2b2lkIHNldENJSW1hZ2UoUmV0YWluUHRyPENJSW1hZ2U+JiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgRmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBwcmlt
aXRpdmVTdWJyZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlz
QWxwaGFJbWFnZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgcGl4ZWxCdWZmZXJTbG90KEFscGhh
UHJlbXVsdGlwbGljYXRpb24pOwogCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyRnJvbVBp
eGVsQnVmZmVyKCk7CisKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBJbWFnZUJ1ZmZlciogaW1h
Z2VCdWZmZXJGcm9tQ0lJbWFnZSgpOworI2VuZGlmCisKICAgICBib29sIHJlcXVpcmVzUGl4ZWxC
dWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4pIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IG1fcHJpbWl0aXZlU3VicmVnaW9uOwpAQCAt
NzgsNiArOTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VC
dWZmZXI7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gbV91bnByZW11bHRpcGxpZWRQ
aXhlbEJ1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBtX3ByZW11bHRpcGxp
ZWRQaXhlbEJ1ZmZlcjsKKworI2lmIFVTRShDT1JFX0lNQUdFKQorICAgIFJldGFpblB0cjxDSUlt
YWdlPiBtX2NpSW1hZ2U7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuY3BwCmluZGV4IGY3YjE2ZTZkOWVlODAyMDYzM2JkOWIzYWI0MThkOGZlMmQx
YmRkZWQuLmE4ZTcxNjY5OWU1MzhlZDc5YjllYTRhZjZhM2ZmYWFhY2JlMGMyYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlICJTb3VyY2VHcmFwaGlj
U29mdHdhcmVBcHBsaWVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisj
aWYgVVNFKENPUkVfSU1BR0UpCisjaW5jbHVkZSAiU291cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxp
ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxTb3VyY2VHcmFwaGlj
PiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKQpAQCAtNDgsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RmlsdGVyRWZmZWN0QXBwbGllcj4gU291cmNlR3JhcGhpYzo6Y3JlYXRlQXBwbGllcihjb25z
dCBGaWx0ZXImCiAjaWYgVVNFKENPUkVfSU1BR0UpCiAgICAgLy8gRklYTUU6IHJldHVybiBTb3Vy
Y2VHcmFwaGljQ29yZUltYWdlQXBwbGllci4KICAgICBpZiAoZmlsdGVyLnJlbmRlcmluZ01vZGUo
KSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8U291cmNlR3JhcGhp
Y0NvcmVJbWFnZUFwcGxpZXI+KCp0aGlzKTsKICNlbmRpZgogICAgIHJldHVybiBGaWx0ZXJFZmZl
Y3RBcHBsaWVyOjpjcmVhdGU8U291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllcj4oKnRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaAppbmRleCBlNDJiZTZjNDU0ZmM4ZjE2MWE5ZGFmZDU5NTY2MDdmZDdk
ZGU4NGU0Li4wMzc0OGExNzYwNGZkMWVlYTA4ZThjMDE5MGE2YmY1YmUyN2ZlMjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuaApAQCAtMzQsNiArMzQsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTb3Vy
Y2VHcmFwaGljKCk7CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRzQ29y
ZUltYWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlm
CisKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92
ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0
ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0K
aW5kZXggMTM2MDA1OTUzY2Q3MzYxYTBhZGE4YzIwNDc0YmM5NTIzNzlhYmUxYS4uYTkzZGRkM2U5
MjMzOTFmOTkzNjBiZDA5YmU1NzQxYTNmZjliYmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAt
MzAsNiArMzAsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJT
Y3JvbGxBbmltYXRpb25SdWJiZXJCYW5kLmgiCiAjaW1wb3J0ICJTY3JvbGxFeHRlbnRzLmgiCisj
aW1wb3J0ICJTY3JvbGxhYmxlQXJlYS5oIgogI2ltcG9ydCAiV2hlZWxFdmVudERlbHRhRmlsdGVy
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1Njcm9sbFZpZXdTUEkuaD4KICNpbXBvcnQgPHN5
cy9zeXNjdGwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggMGFj
Njg5OWMzOWFmZDJjMzM3ZDQzYTlmMDI0YmQ5NTQ3NzVjYzI5Ny4uMTdhOTNkM2Q0MjkwYWZlODQz
MTkxZWRjMGMwYzcxMDA5ZmRlYWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNs
dWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRlICJG
aWx0ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIK
QEAgLTU1LDE0ICs1NCwxMSBAQCBSZWZQdHI8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBSZW5kZXJpbgogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5
T3JpZ2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1
cml0eU9yaWdpbigpOwogCi0gICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IENTU0ZpbHRl
cihoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0
ZWRCeVNlY3VyaXR5T3JpZ2luLCBzY2FsZUZhY3RvcikpOwotCi0gICAgZmlsdGVyLT5zZXRSZW5k
ZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwotICAgIHJldHVybiBmaWx0ZXI7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRlcmluZ01vZGUsIHNjYWxlRmFjdG9yLCBoYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luKSk7CiB9CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKGJvb2wgaGFzRmlsdGVy
VGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luLCBmbG9hdCBzY2FsZUZhY3RvcikKLSAgICA6IEZpbHRlcihGaWx0ZXI6OlR5
cGU6OkNTU0ZpbHRlciwgRmxvYXRTaXplIHsgc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yIH0pCitD
U1NGaWx0ZXI6OkNTU0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHNj
YWxlRmFjdG9yLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJU
aGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikKKyAgICA6IEZpbHRlcihGaWx0
ZXI6OlR5cGU6OkNTU0ZpbHRlciwgcmVuZGVyaW5nTW9kZSwgRmxvYXRTaXplIHsgc2NhbGVGYWN0
b3IsIHNjYWxlRmFjdG9yIH0pCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyhoYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHMpCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3Ry
aWN0ZWRCeVNlY3VyaXR5T3JpZ2luKGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luKQogewpAQCAtMjI1LDcgKzIyMSw3IEBAIHN0YXRpYyBSZWZQdHI8U1ZHRmls
dGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZp
bHRlCiAgICAgfQogCiAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgIHJldHVybiBT
VkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLmZpbHRlclNj
YWxlKCksIGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKSwgZmlsdGVyLmZpbHRlclJlZ2lvbigpLCBw
cmV2aW91c0VmZmVjdCk7CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVt
ZW50LCBidWlsZGVyLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUo
KSwgZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpLCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCksIHByZXZp
b3VzRWZmZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBMYXN0RWZmZWN0UHJvcGVydGllcyhG
aWx0ZXJFZmZlY3QmIGVmZmVjdCwgRmlsdGVyQ29uc3VtZXIgY29uc3VtZXIpCkBAIC0zMjksOSAr
MzI1LDEwIEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgbV9mdW5jdGlvbnMuc2hyaW5r
VG9GaXQoKTsKIAogI2lmIFVTRShDT1JFX0lNQUdFKQotICAgIGlmICghbV9maWx0ZXJSZW5kZXJl
cikKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjp0cnlD
cmVhdGUocmVuZGVyZXIuc2V0dGluZ3MoKS5jb3JlSW1hZ2VBY2NlbGVyYXRlZEZpbHRlclJlbmRl
ckVuYWJsZWQoKSwgKmxhc3RFZmZlY3QoKSk7CisgICAgaWYgKCFzdXBwb3J0c0NvcmVJbWFnZVJl
bmRlcmluZygpKQorICAgICAgICBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY3LDggKzM2
NCw3IEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4CiAgICAgICAgIHNldFNvdXJjZUltYWdlKElt
YWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENv
bnRleHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKLSAgICAg
ICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2Vu
ZGlmCiAgICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlclNjYWxlKCkpOwpAQCAtMzg5LDYgKzM4NSwyMSBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6Omxhc3RFZmZlY3QoKQogICAgIHJldHVybiBk
b3duY2FzdDxGaWx0ZXJFZmZlY3Q+KGZ1bmN0aW9uLnB0cigpKTsKIH0KIAorI2lmIFVTRShDT1JF
X0lNQUdFKQorYm9vbCBDU1NGaWx0ZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byYgZnVuY3Rpb24g
OiBtX2Z1bmN0aW9ucykgeworICAgICAgICBpZiAoIWZ1bmN0aW9uLT5zdXBwb3J0c0NvcmVJbWFn
ZVJlbmRlcmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oKQogewogICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwpA
QCAtNDEwLDIxICs0MjEsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVz
dWx0cygpCiAKIGJvb2wgQ1NTRmlsdGVyOjphcHBseSgpCiB7Ci0gICAgYXV0byBlZmZlY3QgPSBs
YXN0RWZmZWN0KCk7Ci0gICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9maWx0
ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKCp0aGlzLCAqZWZmZWN0KTsKLSAgICAgICAgaWYgKG1f
ZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBlZmZlY3QtPnRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKICAgICAgICAgaWYgKCFmdW5jdGlvbi0+YXBwbHko
KnRoaXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGVmZmVjdC0+
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgbGFzdEVmZmVjdCgpLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQwLDkgKzQ0
Miw2IEBAIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGly
dHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlCiAKIEltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6
Om91dHB1dCgpCiB7Ci0gICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJl
ci0+aGFzUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiBtX2ZpbHRlclJlbmRlcmVyLT5vdXRwdXQo
KTsKLQogICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsKIApAQCAtNDcxLDggKzQ3MCw4
IEBAIEludFJlY3QgQ1NTRmlsdGVyOjpvdXRwdXRSZWN0KCkKIHsKICAgICBhdXRvIGVmZmVjdCA9
IGxhc3RFZmZlY3QoKTsKIAotICAgIGlmIChlZmZlY3QtPmhhc1Jlc3VsdCgpIHx8IChtX2ZpbHRl
clJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSkKLSAgICAgICAgcmV0
dXJuIGVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSAtIEludFBvaW50KGZpbHRlclJlZ2lvbigp
LmxvY2F0aW9uKCkpOworICAgIGlmIChhdXRvIHJlc3VsdCA9IGVmZmVjdC0+ZmlsdGVySW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+YWJzb2x1dGVJbWFnZVJlY3QoKSAtIEludFBvaW50
KGZpbHRlclJlZ2lvbigpLmxvY2F0aW9uKCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCBjMzQwODcxYjI3M2UyMjkxYzY4MDJkNTFm
OTU4Mjg0ZDlhMDEzYWQzLi4wZWJhNDdkZmNiYjA1MmI1ZjQ3Zjc4OTMyMDUxNzhmZTQ3ZDU1MjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0zMyw3ICszMyw2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlckVmZmVjdDsKLWNsYXNzIEZpbHRlckVm
ZmVjdFJlbmRlcmVyOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjsKQEAgLTcxLDcgKzcwLDExIEBA
IHB1YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0KTsKIAogcHJpdmF0ZToKLSAgICBDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlP
cmlnaW4sIGZsb2F0IHNjYWxlRmFjdG9yKTsKKyAgICBDU1NGaWx0ZXIoUmVuZGVyaW5nTW9kZSwg
ZmxvYXQgc2NhbGVGYWN0b3IsIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKKworI2lmIFVT
RShDT1JFX0lNQUdFKQorICAgIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25z
dCBvdmVycmlkZTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9
OwpAQCAtODAsOCArODMsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8RmlsdGVyRnVuY3Rp
b24+PiBtX2Z1bmN0aW9uczsKIAogICAgIG11dGFibGUgSW50T3V0c2V0cyBtX291dHNldHM7Ci0K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IG1fZmlsdGVyUmVuZGVy
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDkz
NGZjODNhNjQyN2MzY2YxNDVjYWZhNDcyZTgwNWEyZmRkNWJmMWUuLjgyY2NlYjRjMDZkZGJjMWE1
NjhhOTBjMmIwZmJkNTVjYzgyNjkzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMjYsOSArMTI2
LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgYWJzb2x1dGVEcmF3aW5nUmVnaW9u
LnNjYWxlKGZpbHRlclNjYWxlKTsKICAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpOwogCisgICAgLy8gU2V0
IHRoZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCisgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFi
bGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQ7CisKICAgICAvLyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCiAgICAgZmls
dGVyRGF0YS0+YnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oKTsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpm
aWx0ZXJEYXRhLT5idWlsZGVyLCBmaWx0ZXJTY2FsZSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBm
aWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7CisgICAgZmlsdGVyRGF0
YS0+ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAqZmlsdGVyRGF0
YS0+YnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGFic29sdXRlRHJhd2luZ1Jl
Z2lvbiwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gpOwogICAgIGlm
ICghZmlsdGVyRGF0YS0+ZmlsdGVyKSB7CiAgICAgICAgIG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFw
LnJlbW92ZSgmcmVuZGVyZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjAsMjIgKzE2
MywxOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIC8vIENoYW5nZSB0aGUgY29vcmRp
bmF0ZSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJl
ZmxlY3QgdGhlIHJlc29sdXRpb24gb2YgdGhlIGZpbHRlci4KICAgICBBZmZpbmVUcmFuc2Zvcm0g
ZWZmZWN0aXZlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGZpbHRlclNjYWxlLndpZHRoKCks
IDAsIDAsIGZpbHRlclNjYWxlLmhlaWdodCgpLCAwLCAwKTsKIAotICAgIGF1dG8gcmVuZGVyaW5n
TW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKICAgICBh
dXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNl
bHNlCiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiAjZW5kaWYKLSAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFu
c2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOworICAgIGF1dG8gc291
cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRl
ckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgZmls
dGVyRGF0YS0+ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIGNvbnRleHQpOwogICAgIGlmICghc291
cmNlR3JhcGhpYykgewogICAgICAgICBBU1NFUlQobV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29u
dGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNv
bnRleHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgLy8gU2V0IHRo
ZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCi0gICAgZmlsdGVyRGF0
YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwotCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQo
KTsKICAgCiAgICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IFdURk1vdmUoc291
cmNlR3JhcGhpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBjNWI3MTA2NmQ0ODk1OTE4MGNlYmQ0ODZlMGU3YzVm
OTFjY2JjYzc5Li40OTY2YTBhNjM2YjMzNTM5OTkwZGE4Nzk2M2FjZTliMmEzM2E4NGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogICAgICAg
ICBGbG9hdFJlY3QgZHVtbXlSZWN0OwogICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAx
KTsKICAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGR1bW15
RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRl
ciwgZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCk7CisgICAgICAg
IGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVu
dCgpLCBidWlsZGVyLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkdW1teVNjYWxlLCBk
dW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0KTsKICAgICAgICAgaWYgKGR1bW15RmlsdGVy
KSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwCmluZGV4IGRmNzM3NDk5MzFmZGRkY2IzMWRkZWRhYzc0NjAxZDBjZmU4NzRkYjYuLjg3Mjcw
OTY5ZDMwYjhhN2Q2M2VkZWJhZDA4ODU3MDJiMjhkMmJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjgsMjEgKzI4LDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVy
OjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRl
ciYgYnVpbGRlciwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBGaWx0ZXJF
ZmZlY3QmIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVh
dGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVp
bGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1h
Z2VSZWN0LCBmaWx0ZXJSZWdpb24sIGZpbHRlclJlZ2lvbiwgJnByZXZpb3VzRWZmZWN0KTsKKyAg
ICByZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZp
bHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgZmlsdGVyUmVnaW9uLCAm
cHJldmlvdXNFZmZlY3QpOwogfQogCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0
ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0
ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWls
ZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVy
U2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlclNjYWxlLCBzb3Vy
Y2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOwor
ICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwg
ZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgbnVsbHB0cik7CiB9CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxk
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKK1JlZlB0
cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVs
ZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0KQogewog
ICAgIGJvb2wgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlID0gZmlsdGVyRWxlbWVudC5wcmltaXRp
dmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WDsKIAotICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgcHJp
bWl0aXZlQm91bmRpbmdCb3hNb2RlKSk7CisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3
IFNWR0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBm
aWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUp
KTsKIAogICAgIGlmICghcHJldmlvdXNFZmZlY3QpCiAgICAgICAgIGJ1aWxkZXIuc2V0dXBCdWls
dGluRWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7CkBAIC02MiwxMSArNjIsMTcgQEAg
UmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmls
dGVyRWxlbWVudCwgU1ZHRmlsdGVyQnUKIAogICAgIEFTU0VSVCghZXhwcmVzc2lvbi5pc0VtcHR5
KCkpOwogICAgIGZpbHRlci0+c2V0RXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJlc3Npb24pKTsKKyAg
ICAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBpZiAoIWZpbHRlci0+c3VwcG9ydHNDb3JlSW1h
Z2VSZW5kZXJpbmcoKSkKKyAgICAgICAgZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOworI2VuZGlmCisKICAgICByZXR1cm4gZmlsdGVyOwogfQog
Ci1TVkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGJvb2wgZWZmZWN0QkJveE1v
ZGUpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIGZpbHRlclNjYWxlLCBz
b3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBib29sIGVmZmVjdEJCb3hN
b2RlKQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6U1ZHRmlsdGVyLCByZW5kZXJpbmdNb2Rl
LCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24pCiAgICAgLCBtX3Rh
cmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KQogICAgICwgbV9lZmZlY3RCQm94TW9k
ZShlZmZlY3RCQm94TW9kZSkKIHsKQEAgLTgwLDYgKzg2LDIyIEBAIEZsb2F0U2l6ZSBTVkdGaWx0
ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0CiAgICAgcmV0dXJu
IEZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZShzaXplKTsKIH0KIAorI2lmIFVTRShDT1JFX0lN
QUdFKQorYm9vbCBTVkdGaWx0ZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QK
K3sKKyAgICBpZiAocmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVCghbV9leHByZXNzaW9uLmlz
RW1wdHkoKSk7CisgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2V4cHJlc3Npb24pIHsKKyAgICAg
ICAgaWYgKCFlZmZlY3QtPnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwog
Ym9vbCBTVkdGaWx0ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIHNldFNv
dXJjZUltYWdlKHsgZmlsdGVyLnNvdXJjZUltYWdlKCkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDg5NmZiYjI2MzdlMmI1YzYz
NWE0OTMyODc4OGQ3NTkxMDQ2YjFhNjkuLjQ5YjU1NTNjNTYyYTcxNTMxMTc3NTMwMTlmZDgzMjRl
YWU3YjQ4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oCkBAIC0zMyw5ICszMyw5IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNs
YXNzIFNWR0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1
aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVmZmVj
dCYgcHJldmlvdXNFZmZlY3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUo
U1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNW
R0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNF
ZmZlY3QpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxl
bWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUm
IGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOworICAg
IHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0Zp
bHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxl
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0
ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIHN0YXRp
YyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1
aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJl
dmlvdXNFZmZlY3QpOwogCiAgICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRT
aXplKSBjb25zdCBmaW5hbDsKIApAQCAtNDYsNyArNDYsMTEgQEAgcHVibGljOgogICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiAhbV9leHByZXNzaW9u
LmlzRW1wdHkoKSA/IG1fZXhwcmVzc2lvbi5sYXN0KCkgOiBudWxscHRyOyB9CiAKIHByaXZhdGU6
Ci0gICAgU1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9kZSk7Cisg
ICAgU1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RC
Qm94TW9kZSk7CisKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRzQ29yZUlt
YWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIGJvb2wgYXBwbHko
Y29uc3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qg
b3ZlcnJpZGU7Cg==
</data>
<flag name="review"
          id="470350"
          type_id="1"
          status="+"
          setter="heycam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445229</attachid>
            <date>2021-11-27 19:26:54 -0800</date>
            <delta_ts>2021-11-27 20:28:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232831-20211127192654.patch</filename>
            <type>text/plain</type>
            <size>87673</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQyOGIwNWRmYTc5YTM0
NGZhZjI4ZTU2ZWE2NWQyNjI5YzIyNWUwNC4uMGIyNjY3NzkxNzkyNDJiYzVlNTVhNjlkMzAxYWE0
YzQ1NjU5ZjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTExLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IEZpbHRlckVmZmVjdCBDb3JlSW1hZ2UgYXBwbGllcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjgzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IENhbWVyb24gTWNDb3JtYWNrLgorCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBhcHBs
eWluZyB0aGUgQ29yZUltYWdlIGZpbHRlcnMgdGhyb3VnaCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCku
CisgICAgICAgIEl0IHdpbGwgYWxzbyBhbGxvdyBwYXNzaW5nIEZpbHRlckltYWdlcyB0byB0aGUg
RmlsdGVyRWZmZWN0IENvcmVJbWFnZQorICAgICAgICBhcHBsaWVycy4gVGhpcyB3aWxsIHJlcXVp
cmUgYWRkaW5nIGEgQ0lJbWFnZSBhcyBhIHBvc3NpYmxlIHJlc3VsdCB0bworICAgICAgICBGaWx0
ZXJJbWFnZS4KKworICAgICAgICBJZiB0aGUgQ29yZUltYWdlIGZpbHRlcnMgYXJlIGVuYWJsZWQs
IHRoZSBGaWx0ZXIgd2lsbCBjaGVjayBpZiBhbGwgdGhlIAorICAgICAgICBGaWx0ZXJFZmZlY3Rz
IHN1cHBvcnRzIENvcmVJbWFnZSByZW5kZXJpbmcuIEFuZCBpZiBvbmUgaWYgdGhlbSBkb2VzIG5v
dAorICAgICAgICBzdXBwb3J0IGl0LCB0aGUgcmVuZGVyaW5nTW9kZSB3aWxsIGJlIHN3aXRjaGVk
IHRvIFVuYWNjZWxlcmF0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb2xvck1hdHJp
eENvcmVJbWFnZUFwcGxpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVy
OjpGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcik6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bG9yTWF0cml4Q29yZUltYWdlQXBwbGllcjo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXI6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRU
cmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFn
ZUFwcGxpZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zl
ckNvcmVJbWFnZUFwcGxpZXI6OkZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyOjpz
dXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVySW1hZ2VDb3JlSW1hZ2UubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkQ0lDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdl
OjpzZXRDSUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZl
ckZyb21DSUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291
cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VB
cHBsaWVyLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VHcmFwaGljQ29yZUltYWdlQXBwbGllcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9y
TWF0cml4OjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbG9yTWF0cml4OjpjcmVhdGVBcHBsaWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlQXBwbGll
ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OnN1cHBvcnRzQ29yZUltYWdlUmVu
ZGVyaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXJGcm9tUGl4ZWxCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpjaUltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlR3JhcGhpYzo6Y3JlYXRlQXBwbGllciBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAqIHJlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpDU1NGaWx0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVp
bGRGaWx0ZXJGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6c3Vw
cG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dFJlY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6
U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c3VwcG9ydHNDb3JlSW1h
Z2VSZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlci5oOgorCiAyMDIxLTExLTI3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ1NTIENvbG9yIDRdIEFkZCBzdXBwb3J0IGZvciBva2xhYigpIGFuZCBva2xjaCgp
IGNvbG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiNmVjMTQ0OWE4NDljZGI0ZjliMTY2NzE3ODc2MmM3
ODQ4YmYxMjQ2Li4xMTRhZDEwNTE1ZjMyMzliNDkxZjNjNDdiN2JjMjRjZjdlMDgyZTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMjEwMSw3ICsyMTAxLDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJGdW5jdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQyZDFiNTY1ZDFkMDliOGRkMTJhOWY1MjE5ZjY5ZjI3
ZTA2NjRjMDEuLjJkMDMxMjQyMGE5M2NjMjhiY2NkYTc1ZTk5Mjk0OTg5NTIwYzI1NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNDAyLDcgKzQwMiwxMCBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNl
c3Npb25WVC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKLXBs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBs
aWVyLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNv
cmVJbWFnZUFwcGxpZXIubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJJbWFn
ZUNvcmVJbWFnZS5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWND
b3JlSW1hZ2VBcHBsaWVyLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJld2Fy
bWluZ01ldGFsLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
SU9TLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDczNTRlYmFiZGM0
NjlmODEzOWI5ZmNjNjAyOGZkYTU1ZTI4NTcxMTguLjNjNDE3NGVmM2U5NTgzNzkwNzAwNDUyYWUy
NmEzYTcxZDZhYjRjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4OCw3ICs0ODgsNiBAQAogCQkxQTQ5NEVERjBBMTIzRjRD
MDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ5NEVERDBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1
bWVudEZyYWdtZW50LmggKi87IH07CiAJCTFBNEEyREYwMEExQjg1MkEwMEM4MDdGOCAvKiBKU0hU
TUxBbmNob3JFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTRBMkRFQzBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5o
ICovOyB9OwogCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOTU0QzBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFGQTJFREYyNzUwNkZERTAwMTFDMTVEIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUZBMkVENjI3NEY3ODM3MDAxMUMxNUQgLyogU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTREQTQyMjFDREQzQTgzMDBGNDQ3M0MgLyogTGlua0ljb25Db2xsZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNERBNDIwMUNERDNBODMw
MEY0NDczQyAvKiBMaW5rSWNvbkNvbGxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNTY5RDEyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTU2OUNFMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5oICovOyB9OwogCQkxQTU2OUQx
MzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0U0MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tICovOyB9OwpAQCAtNzY5LDggKzc2OCw2IEBACiAJCTJBRUY2RkREMjZFN0VDQ0Yw
MDMyNkQwMiAvKiBDU1NOdW1lcmljVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkFFRjZGQ0UyNkU3MUYyRDAwMzI2RDAyIC8qIENTU051bWVyaWNU
eXBlLmggKi87IH07CiAJCTJCMzY1Qzg0MTUyNTExOUUwMDkxRDI3QiAvKiBSZW5kZXJTVkdFbGxp
cHNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQjQy
MzVBMDE1MjUwRjYwMDBEQkJDRDggLyogUmVuZGVyU1ZHRWxsaXBzZS5oICovOyB9OwogCQkyQkU4
RTJDNzEyQTU4OUVDMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQkU4RTJDNjEyQTU4OUVDMDBG
QUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggKi87IH07Ci0JCTJDODU2NTM0MjRDMEY3
M0MwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkM4NTY1MzMyNEMwRjczQzAwQTM3NjczIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyLmggKi87IH07Ci0JCTJDQUE0QTNBMjRCRTE4QjcwMDlERUU3MCAv
KiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNBQTRBMzkyNEJFMThCNzAwOURFRTcwIC8qIEZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggKi87IH07CiAJCTJEMDYyMTQ0MURBNjM5QjYwMEE3
RkIyNiAvKiBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDA2MjE0MjFEQTYzOTg4MDBBN0ZCMjYgLyog
V2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuY3BwICovOyB9OwogCQkyRDA2MjE0NTFEQTYzOUJB
MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDYyMTQzMURBNjM5ODgwMEE3RkIyNiAv
KiBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQkyRDA2MjE0RDFEQTYzQThC
MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMDYyMTQ5MURBNjNBNzkwMEE3RkIyNiAvKiBXZWJLaXRN
ZWRpYUtleXMuY3BwICovOyB9OwpAQCAtMTY4OSw2ICsxNjg2LDcgQEAKIAkJNTFGNzk4RjAxQkU4
ODBFNzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNzk4RUMxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxRjg4NkMwMUYzMjkyMzEwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjg4NkJGMUYz
MjkyMDcwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTFG
QTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RkJBMTgxNTFBQTcxQjAwQjU3
OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTUxRkEyRURGMjc1MDZGREUwMDExQzE1RCAvKiBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAwODIxMTc2
IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNjdEQzFBRTZCODJGMDBEMDZDNUEgLyog
Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0
ZW5zaW9uU3R5bGVTaGVldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUyNzNDQzc3MjU2MTAzQ0YwMDg1MDAwNyAvKiBQbGF0Zm9ybVhSQ29jb2Eu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQzc1
MjU2MTAzQ0YwMDg1MDAwNyAvKiBQbGF0Zm9ybVhSQ29jb2EuaCAqLzsgfTsKQEAgLTc2NTksMTAg
Kzc2NTcsNiBAQAogCQkyQjQyMzVBMDE1MjUwRjYwMDBEQkJDRDggLyogUmVuZGVyU1ZHRWxsaXBz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdFbGxpcHNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJCRThFMkM2MTJBNTg5RUMwMEZBRDU1MCAv
KiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJCRThFMkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkM4NTY1MzMyNEMwRjczQzAwQTM3
NjczIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVj
dFJlbmRlcmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJDODU2NTM4MjRDMTBC
MEIwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTJDQUE0QTM3MjRCRTE4QTEwMDlERUU3MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyQ0FBNEEzOTI0QkUxOEI3MDA5REVF
NzAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQwNjIxNDIxREE2Mzk4ODAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdE1lZGlhS2V5
TWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQwNjIxNDMx
REE2Mzk4ODAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMDYyMTQ3MURBNjNBNzkwMEE3RkIyNiAvKiBX
ZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTA5MzUsNiArMTA5MjksMTMgQEAKIAkJNzJCNEVGNzQyNzRFMjMzMzAw
MjkzQzJGIC8qIEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVCbGVu
ZFNvZnR3YXJlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkI0RUY3
NTI3NEUyMzM0MDAyOTNDMkYgLyogRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdlVmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckltYWdlVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyQjhCMDE0Mjc1MTA4NEQwMEY3NTJBQSAvKiBTb3VyY2VHcmFwaGljQ29y
ZUltYWdlQXBwbGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkI4QjAxNjI3NTEwODZBMDBGNzUyQUEgLyogU291cmNlR3JhcGhpY0NvcmVJbWFn
ZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCOEIwMUIyNzUxQjZCQzAwRjc1MkFB
IC8qIEZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjhCMDFEMjc1MUI4MkIwMEY3NTJBQSAvKiBGRUNvbXBv
bmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGRUNvbXBvbmVu
dFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkI4QjAxRTI3NTFCOTEwMDBGNzUyQUEgLyogRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxp
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCOEIwMUYyNzUxQjkyODAwRjc1
MkFBIC8qIEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZF
Q29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyQjhCMDIwMjc1MUM0QjcwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbHRlckltYWdlQ29yZUltYWdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
QnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E1
MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMjE0LDggKzIwMjE1LDEzIEBA
CiAJCTJDRTExODk4MjRDMjQwMkMwMDM3NzBFOSAvKiBjb3JlaW1hZ2UgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTJDQUE0QTM5MjRCRTE4QjcwMDlERUU3
MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oICovLAotCQkJCTJDQUE0QTM3MjRC
RTE4QTEwMDlERUU3MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSAqLywKKwkJ
CQk3MkI4QjAxRjI3NTFCOTI4MDBGNzUyQUEgLyogRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxp
ZXIuaCAqLywKKwkJCQk3MkI4QjAxRTI3NTFCOTEwMDBGNzUyQUEgLyogRkVDb2xvck1hdHJpeENv
cmVJbWFnZUFwcGxpZXIubW0gKi8sCisJCQkJNzJCOEIwMUQyNzUxQjgyQjAwRjc1MkFBIC8qIEZF
Q29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmggKi8sCisJCQkJNzJCOEIwMUIyNzUx
QjZCQzAwRjc1MkFBIC8qIEZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLm1tICov
LAorCQkJCTcyQjhCMDIwMjc1MUM0QjcwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZUNvcmVJbWFnZS5t
bSAqLywKKwkJCQk3MkI4QjAxNjI3NTEwODZBMDBGNzUyQUEgLyogU291cmNlR3JhcGhpY0NvcmVJ
bWFnZUFwcGxpZXIuaCAqLywKKwkJCQk3MkI4QjAxNDI3NTEwODREMDBGNzUyQUEgLyogU291cmNl
R3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvcmVpbWFn
ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjAyNiw4ICsyNjAzMiw2IEBACiAJ
CQkJMDhDOTI1MTcwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJ
MDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovLAogCQkJCTcyQTEz
QTlGMjc0QzVDQzcwMEUyQTg4RSAvKiBGaWx0ZXJFZmZlY3RBcHBsaWVyLmggKi8sCi0JCQkJMkM4
NTY1MzgyNEMxMEIwQjAwQTM3NjczIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCAqLywKLQkJ
CQkyQzg1NjUzMzI0QzBGNzNDMDBBMzc2NzMgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCAqLywK
IAkJCQk3MjE0QjlCNzI3NDQ1OEZBMDAzQkU2REYgLyogRmlsdGVyRWZmZWN0VmVjdG9yLmggKi8s
CiAJCQkJNzI2MkQ3NTcyNzJBMTc0MTAwQzU2QTA5IC8qIEZpbHRlckZ1bmN0aW9uLmNwcCAqLywK
IAkJCQk3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24uaCAqLywKQEAg
LTMzNTY2LDggKzMzNTcwLDYgQEAKIAkJCQk3MTJCRTQ4MzFGRTg2NUREMDAyMDMxQ0MgLyogRmls
bE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTJDODU2NTM0MjRDMEY3M0MwMEEzNzY3
MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkNBQTRBM0Ey
NEJFMThCNzAwOURFRTcwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUVDRUI2RTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVy
T3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1
IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbG9yTWF0cml4Q29yZUltYWdlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29s
b3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAyZTZlYmEzNjJjN2Y3OGJk
NTdiY2I2ZDM2MjFmY2EzMjc3N2QzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGll
ci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJGaWx0ZXJFZmZlY3RBcHBs
aWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRkVDb2xvck1hdHJpeDsKKwor
Y2xhc3MgRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
Q29uY3JldGVBcHBsaWVyPEZFQ29sb3JNYXRyaXg+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICB1c2luZyBCYXNlID0gRmlsdGVyRWZmZWN0Q29uY3JldGVBcHBsaWVyPEZFQ29s
b3JNYXRyaXg+OworCitwdWJsaWM6CisgICAgRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIo
Y29uc3QgRkVDb2xvck1hdHJpeCYpOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb3JlSW1h
Z2VSZW5kZXJpbmcoY29uc3QgRkVDb2xvck1hdHJpeCYpOworCisgICAgYm9vbCBhcHBseShjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBGaWx0ZXJJbWFnZSYg
cmVzdWx0KSBjb25zdCBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNv
bG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YWNkNDA5MWU0ZmEyNTllNDkwZDU5OTU5ZjUxNzBiNmYwNDBhMjg0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZFQ29s
b3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLm1tCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmgiCisKKyNpZiBVU0Uo
Q09SRV9JTUFHRSkKKworI2ltcG9ydCAiRkVDb2xvck1hdHJpeC5oIgorI2ltcG9ydCAiRmlsdGVy
SW1hZ2UuaCIKKyNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPENvcmVJ
bWFnZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0ZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyOjpGRUNvbG9y
TWF0cml4Q29yZUltYWdlQXBwbGllcihjb25zdCBGRUNvbG9yTWF0cml4JiBlZmZlY3QpCisgICAg
OiBCYXNlKGVmZmVjdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSByZXN0IG9mIEZF
Q29sb3JNYXRyaXggdHlwZXMKKyAgICBBU1NFUlQoc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmco
ZWZmZWN0KSk7Cit9CisKK2Jvb2wgRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXI6OnN1cHBv
cnRzQ29yZUltYWdlUmVuZGVyaW5nKGNvbnN0IEZFQ29sb3JNYXRyaXgmIGVmZmVjdCkKK3sKKyAg
ICByZXR1cm4gZWZmZWN0LnR5cGUoKSA9PSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUKKyAg
ICAgICAgfHwgZWZmZWN0LnR5cGUoKSA9PSBGRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFCisg
ICAgICAgIHx8IGVmZmVjdC50eXBlKCkgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDsKK30K
KworYm9vbCBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcjo6YXBwbHkoY29uc3QgRmlsdGVy
JiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaW5wdXRzLnNpemUoKSA9PSAxKTsKKyAgICBhdXRvJiBpbnB1
dCA9IGlucHV0c1swXS5nZXQoKTsKKworICAgIGF1dG8gaW5wdXRJbWFnZSA9IGlucHV0LmNpSW1h
Z2UoKTsKKyAgICBpZiAoIWlucHV0SW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8gdmFsdWVzID0gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0cyhtX2VmZmVjdC52
YWx1ZXMoKSk7CisgICAgZmxvYXQgY29tcG9uZW50c1s5XTsKKworICAgIHN3aXRjaCAobV9lZmZl
Y3QudHlwZSgpKSB7CisgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6CisgICAg
ICAgIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVNhdHVyYXRlQ29tcG9uZW50cyhjb21wb25lbnRz
LCB2YWx1ZXNbMF0pOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9U
WVBFX0hVRVJPVEFURToKKyAgICAgICAgRkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlSHVlUm90YXRl
Q29tcG9uZW50cyhjb21wb25lbnRzLCB2YWx1ZXNbMF0pOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgorICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9U
WVBFX0xVTUlOQU5DRVRPQUxQSEE6IC8vIEZJWE1FOiBBZGQgTHVtaW5hbmNlIHRvIEFscGhhIElt
cGxlbWVudGF0aW9uCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
KmNvbG9yTWF0cml4RmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1h
dHJpeCJdOworICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdlLmdldCgp
IGZvcktleTprQ0lJbnB1dEltYWdlS2V5XTsKKworICAgIHN3aXRjaCAobV9lZmZlY3QudHlwZSgp
KSB7CisgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6CisgICAgY2FzZSBGRUNP
TE9STUFUUklYX1RZUEVfSFVFUk9UQVRFOgorICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0
VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVudHNbMF0gWTpjb21wb25lbnRzWzFd
IFo6Y29tcG9uZW50c1syXSBXOjBdIGZvcktleTpAImlucHV0UlZlY3RvciJdOworICAgICAgICBb
Y29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVu
dHNbM10gWTpjb21wb25lbnRzWzRdIFo6Y29tcG9uZW50c1s1XSBXOjBdIGZvcktleTpAImlucHV0
R1ZlY3RvciJdOworICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9y
IHZlY3RvcldpdGhYOmNvbXBvbmVudHNbNl0gWTpjb21wb25lbnRzWzddIFo6Y29tcG9uZW50c1s4
XSBXOjBdIGZvcktleTpAImlucHV0QlZlY3RvciJdOworICAgICAgICBbY29sb3JNYXRyaXhGaWx0
ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAgICAgICAgICAgICAgWTowICAgICAg
ICAgICAgIFo6MCAgICAgICAgICAgICBXOjFdIGZvcktleTpAImlucHV0QVZlY3RvciJdOworICAg
ICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAg
ICAgICAgICAgICAgWTowICAgICAgICAgICAgIFo6MCAgICAgICAgICAgICBXOjBdIGZvcktleTpA
ImlucHV0Qmlhc1ZlY3RvciJdOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRkVDT0xPUk1B
VFJJWF9UWVBFX01BVFJJWDoKKyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltD
SVZlY3RvciB2ZWN0b3JXaXRoWDp2YWx1ZXNbMF0gIFk6dmFsdWVzWzFdICBaOnZhbHVlc1syXSAg
Vzp2YWx1ZXNbM11dICBmb3JLZXk6QCJpbnB1dFJWZWN0b3IiXTsKKyAgICAgICAgW2NvbG9yTWF0
cml4RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDp2YWx1ZXNbNV0gIFk6dmFs
dWVzWzZdICBaOnZhbHVlc1s3XSAgVzp2YWx1ZXNbOF1dICBmb3JLZXk6QCJpbnB1dEdWZWN0b3Ii
XTsKKyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JX
aXRoWDp2YWx1ZXNbMTBdIFk6dmFsdWVzWzExXSBaOnZhbHVlc1sxMl0gVzp2YWx1ZXNbMTNdXSBm
b3JLZXk6QCJpbnB1dEJWZWN0b3IiXTsKKyAgICAgICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZh
bHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDp2YWx1ZXNbMTVdIFk6dmFsdWVzWzE2XSBaOnZhbHVl
c1sxN10gVzp2YWx1ZXNbMThdXSBmb3JLZXk6QCJpbnB1dEFWZWN0b3IiXTsKKyAgICAgICAgW2Nv
bG9yTWF0cml4RmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDp2YWx1ZXNbNF0g
IFk6dmFsdWVzWzldICBaOnZhbHVlc1sxNF0gVzp2YWx1ZXNbMTldXSBmb3JLZXk6QCJpbnB1dEJp
YXNWZWN0b3IiXTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQ
RV9MVU1JTkFOQ0VUT0FMUEhBOgorICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJlc3VsdC5zZXRDSUltYWdl
KGNvbG9yTWF0cml4RmlsdGVyLm91dHB1dEltYWdlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENPUkVfSU1BR0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21w
b25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk5Yzc0NmY1ZmM0OGU5NjM5ZjI3NWU0NGY1N2U4ZThmYTRmNTNlOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2ltcG9ydCAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEZFQ29tcG9uZW50VHJhbnNmZXI7CisKK2NsYXNzIEZFQ29tcG9u
ZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyIDogcHVibGljIEZpbHRlckVmZmVjdENvbmNyZXRl
QXBwbGllcjxGRUNvbXBvbmVudFRyYW5zZmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGllcjxGRUNvbXBv
bmVudFRyYW5zZmVyPjsKKworcHVibGljOgorICAgIEZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1h
Z2VBcHBsaWVyKGNvbnN0IEZFQ29tcG9uZW50VHJhbnNmZXImKTsKKworICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKGNvbnN0IEZFQ29tcG9uZW50VHJhbnNmZXImKTsK
KworICAgIGJvb2wgYXBwbHkoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3Qgb3ZlcnJpZGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRkVDb21wb25lbnRU
cmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIwNGUyMDY1NmY1YmJhN2Jm
ZmUwMTNhOGQ2YmQ5ZDE1NGU2MGM0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdl
QXBwbGllci5tbQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZFQ29t
cG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLmgiCisKKyNpZiBVU0UoQ09SRV9JTUFHRSkK
KworI2ltcG9ydCAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0ZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyOjpGRUNvbXBvbmVudFRyYW5z
ZmVyQ29yZUltYWdlQXBwbGllcihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlZmZlY3QpCisg
ICAgOiBCYXNlKGVmZmVjdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSByZXN0IG9m
IEZFQ29tcG9uZW50VHJhbnNmZXIgZnVuY3Rpb25zCisgICAgQVNTRVJUKHN1cHBvcnRzQ29yZUlt
YWdlUmVuZGVyaW5nKGVmZmVjdCkpOworfQorCitib29sIEZFQ29tcG9uZW50VHJhbnNmZXJDb3Jl
SW1hZ2VBcHBsaWVyOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhjb25zdCBGRUNvbXBvbmVu
dFRyYW5zZmVyJiBlZmZlY3QpCit7CisgICAgYXV0byBpc051bGxPckxpbmVhciA9IFtdIChjb25z
dCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jdGlvbikgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTgorICAgICAg
ICAgICAgfHwgZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFS
OworICAgIH07CisKKyAgICByZXR1cm4gaXNOdWxsT3JMaW5lYXIoZWZmZWN0LnJlZEZ1bmN0aW9u
KCkpCisgICAgICAgICYmIGlzTnVsbE9yTGluZWFyKGVmZmVjdC5ncmVlbkZ1bmN0aW9uKCkpCisg
ICAgICAgICYmIGlzTnVsbE9yTGluZWFyKGVmZmVjdC5ibHVlRnVuY3Rpb24oKSkKKyAgICAgICAg
JiYgaXNOdWxsT3JMaW5lYXIoZWZmZWN0LmFscGhhRnVuY3Rpb24oKSk7Cit9CisKK2Jvb2wgRkVD
b21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlucHV0cy5zaXplKCkgPT0gMSk7CisgICAgYXV0byYgaW5wdXQgPSBp
bnB1dHNbMF0uZ2V0KCk7CisKKyAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dC5jaUltYWdlKCk7
CisgICAgaWYgKCFpbnB1dEltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lD
b2xvclBvbHlub21pYWwiXTsKKyAgICBbY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgc2V0VmFsdWU6
aW5wdXRJbWFnZS5nZXQoKSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07CisKKyAgICBhdXRvIHNl
dENvZWZmaWNpZW50cyA9IFsmXSAoTlNTdHJpbmcgKmtleSwgY29uc3QgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgZnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLnR5cGUgPT0gRkVD
T01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUikKKyAgICAgICAgICAgIFtjb21wb25lbnRUcmFu
c2ZlckZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6ZnVuY3Rpb24uaW50ZXJj
ZXB0IFk6ZnVuY3Rpb24uc2xvcGUgWjowIFc6MF0gZm9yS2V5OmtleV07CisgICAgfTsKKworICAg
IHNldENvZWZmaWNpZW50cyhAImlucHV0UmVkQ29lZmZpY2llbnRzIiwgbV9lZmZlY3QucmVkRnVu
Y3Rpb24oKSk7CisgICAgc2V0Q29lZmZpY2llbnRzKEAiaW5wdXRHcmVlbkNvZWZmaWNpZW50cyIs
IG1fZWZmZWN0LmdyZWVuRnVuY3Rpb24oKSk7CisgICAgc2V0Q29lZmZpY2llbnRzKEAiaW5wdXRC
bHVlQ29lZmZpY2llbnRzIiwgbV9lZmZlY3QuYmx1ZUZ1bmN0aW9uKCkpOworICAgIHNldENvZWZm
aWNpZW50cyhAImlucHV0QWxwaGFDb2VmZmljaWVudHMiLCBtX2VmZmVjdC5hbHBoYUZ1bmN0aW9u
KCkpOworCisgICAgcmVzdWx0LnNldENJSW1hZ2UoY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIub3V0
cHV0SW1hZ2UpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBVU0UoQ09SRV9JTUFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3
YmM4NTMyNzJhYjRkYWY3YzliODUwMTg2Y2M5OWE5NzQ0ZjkzNWYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFy
ZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0q
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0qIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0qIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgVVNFKENPUkVfSU1BR0UpCi0KLSNpbXBvcnQgIkZpbHRlckVmZmVjdFJlbmRlcmVy
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCi0jaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+Ci0KLU9CSkNfQ0xBU1MgQ0lJbWFnZTsKLU9CSkNfQ0xBU1MgQ0lGaWx0ZXI7Ci1PQkpDX0NM
QVNTIENJQ29udGV4dDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGRUNvbG9yTWF0
cml4OwotY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlcjsKLWNsYXNzIFNvdXJjZUdyYXBoaWM7Ci0K
LWNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVj
dFJlbmRlcmVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAKLXB1YmxpYzoK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
PiB0cnlDcmVhdGUoRmlsdGVyRWZmZWN0Jik7Ci0gICAgUmV0YWluUHRyPENJQ29udGV4dD4gc2hh
cmVkQ0lDb250ZXh0KCk7Ci0gICAgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwgRmls
dGVyRWZmZWN0JikgZmluYWw7Ci0gICAgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX291dHB1dEltYWdlOyB9Ci0gICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IGZp
bmFsOwotICAgIEZsb2F0UmVjdCBkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIGNsZWFyUmVzdWx0KCkgZmluYWw7Ci0gICAgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+
IGNvbm5lY3RDSUZpbHRlcnMoY29uc3QgRmlsdGVyJiwgRmlsdGVyRWZmZWN0Jik7Ci0gICAgdm9p
ZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpIGZpbmFsOwotICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwotICAgIHN0YXRp
YyBib29sIGNhblJlbmRlclVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwotICAgIAotICAg
IFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoY29uc3QgRmlsdGVyJik7
Ci0gICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNv
bG9yTWF0cml4JiwgY29uc3QgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mKTsKLSAgICBSZXRh
aW5QdHI8Q0lJbWFnZT4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9u
ZW50VHJhbnNmZXImLCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYpOwotICAgIAotICAgIFJl
ZlB0cjxJT1N1cmZhY2VJbWFnZUJ1ZmZlcj4gbV9vdXRwdXRJbWFnZUJ1ZmZlcjsKLSAgICBSZXRh
aW5QdHI8Q0lJbWFnZT4gbV9vdXRwdXRJbWFnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NjE1ZmRlODNlZWQ0MzBm
ZTFlNWMxNTc4YzA2OWIyMzY2MzczNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjcz
ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0Ogot
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgiCi0KLSNpZiBVU0UoQ09S
RV9JTUFHRSkKLQotI2ltcG9ydCAiRkVDb2xvck1hdHJpeC5oIgotI2ltcG9ydCAiRkVDb21wb25l
bnRUcmFuc2Zlci5oIgotI2ltcG9ydCAiRmlsdGVyLmgiCi0jaW1wb3J0ICJGaWx0ZXJFZmZlY3Qu
aCIKLSNpbXBvcnQgIkZpbHRlck9wZXJhdGlvbi5oIgotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9u
LmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2ltcG9ydCAiSW1hZ2VCdWZmZXIu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKLSNpbXBv
cnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KLSNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5o
PgotI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgotI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjp0cnlDcmVhdGUoRmlsdGVyRWZm
ZWN0JiBsYXN0RWZmZWN0KQotewotICAgIGlmIChjYW5SZW5kZXJVc2luZ0NJRmlsdGVycyhsYXN0
RWZmZWN0KSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U+KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVJldGFpblB0cjxDSUNvbnRl
eHQ+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzaGFyZWRDSUNvbnRleHQoKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0lDb250ZXh0Pj4gY2lDb250ZXh0
ID0gW0NJQ29udGV4dCBjb250ZXh0V2l0aE9wdGlvbnM6QHsga0NJQ29udGV4dFdvcmtpbmdDb2xv
clNwYWNlOiBicmlkZ2VfaWRfY2FzdChhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKSkpLmdldCgpIH1dOwotICAgIHJldHVybiBjaUNvbnRleHQ7Ci19
Ci0KLXN0YXRpYyBib29sIGlzTnVsbE9yTGluZWFyQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbihj
b25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiBlZmZlY3QpCi17Ci0gICAgYXV0byBpc051bGxPckxp
bmVhciA9IFtdIChjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jdGlvbikgewot
ICAgICAgICByZXR1cm4gZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVf
VU5LTk9XTgotICAgICAgICAgICAgfHwgZnVuY3Rpb24udHlwZSA9PSBGRUNPTVBPTkVOVFRSQU5T
RkVSX1RZUEVfTElORUFSOwotICAgIH07Ci0gICAgcmV0dXJuIGlzTnVsbE9yTGluZWFyKGVmZmVj
dC5yZWRGdW5jdGlvbigpKSAmJiBpc051bGxPckxpbmVhcihlZmZlY3QuZ3JlZW5GdW5jdGlvbigp
KQotICAgICAgICAmJiBpc051bGxPckxpbmVhcihlZmZlY3QuYmx1ZUZ1bmN0aW9uKCkpICYmIGlz
TnVsbE9yTGluZWFyKGVmZmVjdC5hbHBoYUZ1bmN0aW9uKCkpOwotfQotCi1ib29sIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyhGaWx0ZXJF
ZmZlY3QmIGVmZmVjdCkKLXsKLSAgICAvLyBGSVhNRTogY2hhbmdlIHJldHVybiB2YWx1ZSB0byB0
cnVlIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQKLSAgICBzd2l0Y2ggKGVmZmVjdC5maWx0ZXJU
eXBlKCkpIHsKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlR3JhcGhpYzoKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6
VHlwZTo6RkVDb2xvck1hdHJpeDogewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PEZFQ29sb3JN
YXRyaXg+KGVmZmVjdCkudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBF
X1VOS05PV046Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0xVTUlOQU5DRVRPQUxQ
SEE6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJ
WF9UWVBFX01BVFJJWDoKLSAgICAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6
Ci0gICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURToKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkZFQ29tcG9uZW50VHJhbnNmZXI6Ci0gICAgICAgIHJldHVybiBpc051bGxPckxpbmVh
ckNvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oZG93bmNhc3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4o
ZWZmZWN0KSk7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6YXBwbHlFZmZlY3RzKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJFZmZlY3QmIGxhc3RF
ZmZlY3QpCi17Ci0gICAgbV9vdXRwdXRJbWFnZSA9IGNvbm5lY3RDSUZpbHRlcnMoZmlsdGVyLCBs
YXN0RWZmZWN0KTsKLSAgICBpZiAoIW1fb3V0cHV0SW1hZ2UpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZW5kZXJUb0ltYWdlQnVmZmVyKGxhc3RFZmZlY3QpOwotfQotCi1SZXRhaW5QdHI8Q0lJbWFn
ZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRlcnMoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIEZpbHRlckVmZmVjdCYgZWZmZWN0KQotewotICAgIFZlY3RvcjxSZXRh
aW5QdHI8Q0lJbWFnZT4+IGlucHV0SW1hZ2VzOwotICAgIAotICAgIGZvciAoYXV0byBpbiA6IGVm
ZmVjdC5pbnB1dEVmZmVjdHMoKSkgewotICAgICAgICBhdXRvIGlucHV0SW1hZ2UgPSBjb25uZWN0
Q0lGaWx0ZXJzKGZpbHRlciwgKmluKTsKLSAgICAgICAgaWYgKCFpbnB1dEltYWdlKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlucHV0SW1hZ2VzLmFwcGVuZChpbnB1dElt
YWdlKTsKLSAgICB9Ci0gICAgZWZmZWN0LmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRl
cik7Ci0gICAgCi0gICAgaWYgKGVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLmlzRW1wdHkoKSB8
fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0
KCkuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgc3dpdGNoIChl
ZmZlY3QuZmlsdGVyVHlwZSgpKSB7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJj
ZUdyYXBoaWM6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvclNvdXJjZUdyYXBoaWMoZmlsdGVyKTsK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJpeDoKLSAgICAgICAgcmV0
dXJuIGltYWdlRm9yRkVDb2xvck1hdHJpeChkb3duY2FzdDxGRUNvbG9yTWF0cml4PihlZmZlY3Qp
LCBpbnB1dEltYWdlcyk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29tcG9uZW50
VHJhbnNmZXI6Ci0gICAgICAgIHJldHVybiBpbWFnZUZvckZFQ29tcG9uZW50VHJhbnNmZXIoZG93
bmNhc3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4oZWZmZWN0KSwgaW5wdXRJbWFnZXMpOwotCi0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi1SZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2U6OmltYWdlRm9yU291cmNlR3JhcGhpYyhjb25zdCBGaWx0ZXImIGZpbHRlcikKLXsKLSAgICBJ
bWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBmaWx0ZXIuc291cmNlSW1hZ2UoKTsKLSAgICBpZiAo
IXNvdXJjZUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAoaXM8
SU9TdXJmYWNlSW1hZ2VCdWZmZXI+KCpzb3VyY2VJbWFnZSkpCi0gICAgICAgIHJldHVybiBbQ0lJ
bWFnZSBpbWFnZVdpdGhJT1N1cmZhY2U6ZG93bmNhc3Q8SU9TdXJmYWNlSW1hZ2VCdWZmZXI+KCpz
b3VyY2VJbWFnZSkuc3VyZmFjZSgpLnN1cmZhY2UoKV07Ci0gICAgCi0gICAgcmV0dXJuIFtDSUlt
YWdlIGltYWdlV2l0aENHSW1hZ2U6c291cmNlSW1hZ2UtPmNvcHlOYXRpdmVJbWFnZSgpLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCldOwotfQotCi1SZXRhaW5QdHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2U6OmltYWdlRm9yRkVDb2xvck1hdHJpeChjb25zdCBGRUNvbG9yTWF0
cml4JiBlZmZlY3QsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFnZT4+JiBpbnB1dEltYWdl
cykKLXsKLSAgICBhdXRvIGlucHV0SW1hZ2UgPSBpbnB1dEltYWdlcy5hdCgwKTsKLQotICAgIGF1
dG8gdmFsdWVzID0gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0cyhlZmZlY3QudmFsdWVz
KCkpOwotICAgIGZsb2F0IGNvbXBvbmVudHNbOV07Ci0gICAgCi0gICAgc3dpdGNoIChlZmZlY3Qu
dHlwZSgpKSB7Ci0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6Ci0gICAgICAg
IEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVNhdHVyYXRlQ29tcG9uZW50cyhjb21wb25lbnRzLCB2
YWx1ZXNbMF0pOwotICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEZFQ09MT1JNQVRSSVhf
VFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZUh1ZVJvdGF0
ZUNvbXBvbmVudHMoY29tcG9uZW50cywgdmFsdWVzWzBdKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Ci0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgotICAgICAgICBicmVhazsKLSAg
ICAgICAgCi0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKLSAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOiAvLyBGSVhNRTogQWRkIEx1bWluYW5j
ZSB0byBBbHBoYSBJbXBsZW1lbnRhdGlvbgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0gICAgCi0gICAgYXV0byAqY29sb3JNYXRyaXhGaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0
aE5hbWU6QCJDSUNvbG9yTWF0cml4Il07Ci0gICAgW2NvbG9yTWF0cml4RmlsdGVyIHNldFZhbHVl
OmlucHV0SW1hZ2UuZ2V0KCkgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOwotICAgIAotICAgIHN3
aXRjaCAoZWZmZWN0LnR5cGUoKSkgewotICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1NBVFVS
QVRFOgotICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURTogewotICAgICAgICBb
Y29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVu
dHNbMF0gWTpjb21wb25lbnRzWzFdIFo6Y29tcG9uZW50c1syXSBXOjBdIGZvcktleTpAImlucHV0
UlZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9y
IHZlY3RvcldpdGhYOmNvbXBvbmVudHNbM10gWTpjb21wb25lbnRzWzRdIFo6Y29tcG9uZW50c1s1
XSBXOjBdIGZvcktleTpAImlucHV0R1ZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0
ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOmNvbXBvbmVudHNbNl0gWTpjb21wb25l
bnRzWzddIFo6Y29tcG9uZW50c1s4XSBXOjBdIGZvcktleTpAImlucHV0QlZlY3RvciJdOwotICAg
ICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAg
ICAgICAgICAgICAgWTowICAgICAgICAgICAgIFo6MCAgICAgICAgICAgICBXOjFdIGZvcktleTpA
ImlucHV0QVZlY3RvciJdOwotICAgICAgICBbY29sb3JNYXRyaXhGaWx0ZXIgc2V0VmFsdWU6W0NJ
VmVjdG9yIHZlY3RvcldpdGhYOjAgICAgICAgICAgICAgWTowICAgICAgICAgICAgIFo6MCAgICAg
ICAgICAgICBXOjBdIGZvcktleTpAImlucHV0Qmlhc1ZlY3RvciJdOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYOiB7Ci0gICAgICAgIFtj
b2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzBd
ICBZOnZhbHVlc1sxXSAgWjp2YWx1ZXNbMl0gIFc6dmFsdWVzWzNdXSAgZm9yS2V5OkAiaW5wdXRS
VmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3Ig
dmVjdG9yV2l0aFg6dmFsdWVzWzVdICBZOnZhbHVlc1s2XSAgWjp2YWx1ZXNbN10gIFc6dmFsdWVz
WzhdXSAgZm9yS2V5OkAiaW5wdXRHVmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRl
ciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzEwXSBZOnZhbHVlc1sxMV0g
Wjp2YWx1ZXNbMTJdIFc6dmFsdWVzWzEzXV0gZm9yS2V5OkAiaW5wdXRCVmVjdG9yIl07Ci0gICAg
ICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6dmFs
dWVzWzE1XSBZOnZhbHVlc1sxNl0gWjp2YWx1ZXNbMTddIFc6dmFsdWVzWzE4XV0gZm9yS2V5OkAi
aW5wdXRBVmVjdG9yIl07Ci0gICAgICAgIFtjb2xvck1hdHJpeEZpbHRlciBzZXRWYWx1ZTpbQ0lW
ZWN0b3IgdmVjdG9yV2l0aFg6dmFsdWVzWzRdICBZOnZhbHVlc1s5XSAgWjp2YWx1ZXNbMTRdIFc6
dmFsdWVzWzE5XV0gZm9yS2V5OkAiaW5wdXRCaWFzVmVjdG9yIl07Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgotICAg
IGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV046Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLSAgICByZXR1cm4gY29sb3JNYXRyaXhGaWx0ZXIub3V0cHV0SW1hZ2U7Ci19Ci0K
LVJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VG
b3JGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IEZFQ29tcG9uZW50VHJhbnNmZXImIGVmZmVjdCwg
VmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4mIGlucHV0SW1hZ2VzKQotewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhlIHJlc3Qgb2YgRkVDb21wb25lbnRUcmFuc2ZlciBmdW5jdGlvbnMKLSAg
ICBBU1NFUlQoaXNOdWxsT3JMaW5lYXJDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uKGVmZmVjdCkp
OwotCi0gICAgYXV0byBpbnB1dEltYWdlID0gaW5wdXRJbWFnZXMuYXQoMCk7Ci0gICAgYXV0byBm
aWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yUG9seW5vbWlhbCJdOwot
ICAgIAotICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZS5nZXQoKSBmb3JLZXk6a0NJSW5w
dXRJbWFnZUtleV07Ci0gICAgCi0gICAgYXV0byBzZXRDb2VmZmljaWVudHMgPSBbJl0gKE5TU3Ry
aW5nICprZXksIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmN0aW9uKSB7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbi50eXBlID09IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5F
QVIpCi0gICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDpm
dW5jdGlvbi5pbnRlcmNlcHQgWTpmdW5jdGlvbi5zbG9wZSBaOjAgVzowXSBmb3JLZXk6a2V5XTsK
LSAgICB9OwotICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0UmVkQ29lZmZpY2llbnRzIiwgZWZm
ZWN0LnJlZEZ1bmN0aW9uKCkpOwotICAgIHNldENvZWZmaWNpZW50cyhAImlucHV0R3JlZW5Db2Vm
ZmljaWVudHMiLCBlZmZlY3QuZ3JlZW5GdW5jdGlvbigpKTsKLSAgICBzZXRDb2VmZmljaWVudHMo
QCJpbnB1dEJsdWVDb2VmZmljaWVudHMiLCBlZmZlY3QuYmx1ZUZ1bmN0aW9uKCkpOwotICAgIHNl
dENvZWZmaWNpZW50cyhAImlucHV0QWxwaGFDb2VmZmljaWVudHMiLCBlZmZlY3QuYWxwaGFGdW5j
dGlvbigpKTsKLSAgICAKLSAgICByZXR1cm4gZmlsdGVyLm91dHB1dEltYWdlOwotfQotCi1ib29s
IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjYW5SZW5kZXJVc2luZ0NJRmlsdGVycyhG
aWx0ZXJFZmZlY3QmIGVmZmVjdCkKLXsKLSAgICBpZiAoIXN1cHBvcnRzQ29yZUltYWdlUmVuZGVy
aW5nKGVmZmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBmb3IgKGF1dG8g
aW4gOiBlZmZlY3QuaW5wdXRFZmZlY3RzKCkpIHsKLSAgICAgICAgaWYgKCFzdXBwb3J0c0NvcmVJ
bWFnZVJlbmRlcmluZygqaW4pIHx8ICFjYW5SZW5kZXJVc2luZ0NJRmlsdGVycygqaW4pKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotSW1h
Z2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpvdXRwdXQoKSBjb25zdAot
ewotICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIlJlbmRlcmluZyAiIDw8
IHRoaXMgPDwgIiB1c2luZyBDb3JlSW1hZ2VcbiIpOwotICAgIHJldHVybiBtX291dHB1dEltYWdl
QnVmZmVyLmdldCgpOwotfQotICAgIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCi17Ci0gICAg
RmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxhc3RFZmZl
Y3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIg
PSBJT1N1cmZhY2VJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCAxLCBsYXN0RWZmZWN0
LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAgICBpZiAoIW1fb3V0
cHV0SW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgY2xlYXJSZXN1bHQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0
SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IG1fb3V0cHV0SW1hZ2VCdWZmZXItPnN1cmZhY2UoKS5z
dXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVj
dC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwotfQotICAgIAotRmxv
YXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0
ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBkZXN0U2l6ZSA9IGxh
c3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgRmxvYXRSZWN0IGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwotICAgIHJldHVybiBkZXN0
UmVjdDsKLX0KLQotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y2xlYXJSZXN1
bHQoKQotewotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgIG1fb3V0cHV0
SW1hZ2UgPSBudWxscHRyOwotfQotCi1GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Rmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UoKQotICAgIDogRmlsdGVyRWZmZWN0UmVuZGVyZXIo
KQotewotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJJbWFn
ZUNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjUxMGQ5NjY2MDdlOGEwY2Jm
Y2EzYjE3ODk0NTExOGQ4ZWZlNDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckltYWdlQ29yZUltYWdlLm1tCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZpbHRlckltYWdlLmgiCisKKyNpZiBVU0Uo
Q09SRV9JTUFHRSkKKworI2ltcG9ydCAiUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCA8
Q29yZUltYWdlL0NJQ29udGV4dC5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVHlwZUNh
c3RzQ29jb2EuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmV0YWluUHRyPENJ
Q29udGV4dD4gc2hhcmVkQ0lDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPENJQ29udGV4dD4+IGNpQ29udGV4dCA9IFtDSUNvbnRleHQgY29udGV4dFdpdGhP
cHRpb25zOkB7IGtDSUNvbnRleHRXb3JraW5nQ29sb3JTcGFjZTogYnJpZGdlX2lkX2Nhc3QoYWRv
cHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpKS5nZXQo
KSB9XTsKKyAgICByZXR1cm4gY2lDb250ZXh0OworfQorCit2b2lkIEZpbHRlckltYWdlOjpzZXRD
SUltYWdlKFJldGFpblB0cjxDSUltYWdlPiYmIGNpSW1hZ2UpCit7CisgICAgQVNTRVJUKGNpSW1h
Z2UpOworICAgIG1fY2lJbWFnZSA9IFdURk1vdmUoY2lJbWFnZSk7Cit9CisKK0ltYWdlQnVmZmVy
KiBGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXJGcm9tQ0lJbWFnZSgpCit7CisgICAgQVNTRVJUKG1f
Y2lJbWFnZSk7CisKKyAgICBpZiAobV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXIuZ2V0KCk7CisKKyAgICBtX2ltYWdlQnVmZmVyID0gSU9TdXJmYWNlSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSwgMSwgbV9jb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGRlc3RSZWN0ID0gRmxvYXRSZWN0IHsgRmxvYXRQb2lu
dCgpLCBtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSB9OworICAgIFtzaGFyZWRDSUNvbnRleHQo
KS5nZXQoKSByZW5kZXI6IG1fY2lJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogZG93bmNhc3Q8SU9T
dXJmYWNlSW1hZ2VCdWZmZXI+KCptX2ltYWdlQnVmZmVyKS5zdXJmYWNlKCkuc3VyZmFjZSgpIGJv
dW5kczpkZXN0UmVjdCBjb2xvclNwYWNlOm1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KV07CisKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENPUkVfSU1BR0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNlR3JhcGhpY0NvcmVJ
bWFnZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9Tb3VyY2VHcmFwaGljQ29yZUltYWdlQXBwbGllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOGY2NDg1OTJh
MDViMmM2NzAyYjlmZTExM2NjMzEwMmVmYTI4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvU291cmNlR3JhcGhpY0NvcmVJbWFn
ZUFwcGxpZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiRmlsdGVyRWZm
ZWN0QXBwbGllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNvdXJjZUdyYXBo
aWM7CisKK2NsYXNzIFNvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVyIDogcHVibGljIEZpbHRl
ckVmZmVjdENvbmNyZXRlQXBwbGllcjxTb3VyY2VHcmFwaGljPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgdXNpbmcgQmFzZSA9IEZpbHRlckVmZmVjdENvbmNyZXRlQXBwbGll
cjxTb3VyY2VHcmFwaGljPjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAg
ICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1
dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL1NvdXJjZUdyYXBoaWNDb3JlSW1hZ2VB
cHBsaWVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MDkwNzAxMWJhZGJlODc1NDM5YTZiZmNjNGMxYWQyNDVi
NzFkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvU291cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIubW0KQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTb3VyY2VHcmFwaGljQ29yZUltYWdlQXBwbGll
ci5oIgorCisjaWYgVVNFKENPUkVfSU1BR0UpCisKKyNpbXBvcnQgIkZpbHRlci5oIgorI2ltcG9y
dCAiRmlsdGVySW1hZ2UuaCIKKyNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitib29sIFNvdXJjZUdyYXBoaWNDb3JlSW1hZ2VBcHBsaWVyOjph
cHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBGaWx0
ZXJJbWFnZSYgcmVzdWx0KSBjb25zdAoreworICAgIGF1dG8gc291cmNlSW1hZ2UgPSBmaWx0ZXIu
c291cmNlSW1hZ2UoKTsKKyAgICBpZiAoIXNvdXJjZUltYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gaW1hZ2U7CisgICAgaWYgKGlzPElPU3VyZmFj
ZUltYWdlQnVmZmVyPigqc291cmNlSW1hZ2UpKQorICAgICAgICBpbWFnZSA9IFtDSUltYWdlIGlt
YWdlV2l0aElPU3VyZmFjZTpkb3duY2FzdDxJT1N1cmZhY2VJbWFnZUJ1ZmZlcj4oKnNvdXJjZUlt
YWdlKS5zdXJmYWNlKCkuc3VyZmFjZSgpXTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlID0gW0NJ
SW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCktPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV07CisKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXN1bHQuc2V0Q0lJbWFnZShXVEZNb3ZlKGltYWdlKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShD
T1JFX0lNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9D
VlV0aWxpdGllcy5tbQppbmRleCA0MDcyNzA0M2ZkMTJkNjJhNGNiZDdkYmI1OWU0MTE2MGEyOGRk
ZjIyLi5hY2Y5NmZkMGQ1NDBhYjg2ZTc3MGQ0NjEzYzE5MGEyMjgzYjcwNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpAQCAt
MjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5o
IgogCisjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmlu
ZGV4IDYzMDU5OWY2ZDdkM2RkMzk1YmJhOWVlNWMwMjM2YWI4N2JmMDgxMzguLjIwMTkxM2EzMzUx
OWMwNTQ1MGQ3Y2VlZWI1MTllNGYwNjFlYjI2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAt
MjgsNiArMjgsMTAgQEAKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyNpbmNsdWRlICJGRUNvbG9yTWF0
cml4Q29yZUltYWdlQXBwbGllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVmPEZFQ29sb3JNYXRyaXg+IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShDb2xvck1hdHJpeFR5cGUg
dHlwZSwgVmVjdG9yPGZsb2F0PiYmIHZhbHVlcykKQEAgLTk0LDYgKzk4LDEzIEBAIFZlY3Rvcjxm
bG9hdD4gRkVDb2xvck1hdHJpeDo6bm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+
JiB2YWx1ZXMpCiAgICAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZXM7CiB9CiAKKyNpZiBVU0UoQ09S
RV9JTUFHRSkKK2Jvb2wgRkVDb2xvck1hdHJpeDo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllcjo6c3Vw
cG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKnRoaXMpOworfQorI2VuZGlmCisKIGJvb2wgRkVDb2xv
ck1hdHJpeDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90eXBl
ID09IEZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBOwpAQCAtMTAyLDkgKzExMyw4
IEBAIGJvb2wgRkVDb2xvck1hdHJpeDo6cmVzdWx0SXNBbHBoYUltYWdlKCkgY29uc3QKIHN0ZDo6
dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBGRUNvbG9yTWF0cml4OjpjcmVhdGVBcHBs
aWVyKGNvbnN0IEZpbHRlciYgZmlsdGVyKSBjb25zdAogewogI2lmIFVTRShDT1JFX0lNQUdFKQot
ICAgIC8vIEZJWE1FOiByZXR1cm4gRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIuCiAgICAg
aWYgKGZpbHRlci5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBw
bGllcjo6Y3JlYXRlPEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyPigqdGhpcyk7CiAjZW5k
aWYKICAgICByZXR1cm4gRmlsdGVyRWZmZWN0QXBwbGllcjo6Y3JlYXRlPEZFQ29sb3JNYXRyaXhT
b2Z0d2FyZUFwcGxpZXI+KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMDRmNTdmMWRl
Mzg5MTMwNzdjNWQ4ZTQwMTBmMjNjZDY2ZGRlZjI0YS4uM2QwNzA0ZTdmOWE5Yjg2NWIyZDE0ZWIx
OGU4YTg0YzlkNWY3MmFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTUyLDYgKzUyLDEwIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgRkVDb2xvck1hdHJpeChDb2xvck1hdHJpeFR5cGUsIFZlY3Rv
cjxmbG9hdD4mJik7CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRzQ29y
ZUltYWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKyAgICAKICAgICBib29s
IHJlc3VsdElzQWxwaGFJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAppbmRleCBlYWZhNmIz
ODNkMTViMWQ1NDJhYTcxNzRkMWJiM2E3NTRlNjVkMjY5Li44MjNlM2RhNjgxZWZmODRhNTAwZjRl
YTg4Njc0NDlmZjBkZGJmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKQEAg
LTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKENPUkVfSU1BR0UpCisjaW5jbHVkZSAiRkVDb21wb25l
bnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFJlZjxGRUNvbXBvbmVudFRyYW5zZmVyPiBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVh
dGUoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuY3Rpb24sIGNvbnN0IENv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYgYWxwaGFGdW5jdGlvbikKQEAgLTQ1LDEyICs0OSwxOCBAQCBGRUNvbXBvbmVudFRyYW5z
ZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IHJlZEZ1bgogewogfQogCisjaWYgVVNFKENPUkVfSU1BR0UpCitib29sIEZFQ29tcG9uZW50VHJh
bnNmZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
RkVDb21wb25lbnRUcmFuc2ZlckNvcmVJbWFnZUFwcGxpZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVu
ZGVyaW5nKCp0aGlzKTsKK30KKyNlbmRpZgorCiBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0
QXBwbGllcj4gRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlQXBwbGllcihjb25zdCBGaWx0ZXIm
IGZpbHRlcikgY29uc3QKIHsKICNpZiBVU0UoQ09SRV9JTUFHRSkKLSAgICAvLyBGSVhNRTogcmV0
dXJuIEZFQ29tcG9uZW50VHJhbnNmZXJDb3JlSW1hZ2VBcHBsaWVyLgogICAgIGlmIChmaWx0ZXIu
cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0
ZTxGRUNvbXBvbmVudFRyYW5zZmVyQ29yZUltYWdlQXBwbGllcj4oKnRoaXMpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIEZpbHRlckVmZmVjdEFwcGxpZXI6OmNyZWF0ZTxGRUNvbXBvbmVudFRyYW5zZmVy
U29mdHdhcmVBcHBsaWVyPigqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCmlu
ZGV4IDU5Yzk3YjY3Y2IxYTExNTI2NzBhYmFkMDU5YjNiNzgxOWVlNjc4YjkuLmNjYWY0NTliMDNl
M2YwZTRlNjA5YmFmMzkyNzQxMTA3NTVhZmEyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFQ29tcG9uZW50
VHJhbnNmZXIoY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgcmVkRnVuYywgY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZ3JlZW5GdW5jLCBjb25zdCBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJiBibHVlRnVuYywgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
YWxwaGFGdW5jKTsKIAorI2lmIFVTRShDT1JFX0lNQUdFKQorICAgIGJvb2wgc3VwcG9ydHNDb3Jl
SW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFwcGxpZXIoY29uc3QgRmlsdGVyJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oCmluZGV4IDg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMxN2JmMjk4YzBlNDEuLjJiMDZi
ZmJiNjRlMjU0MTllNGFmNTliMTFjMTU5MGQ5MGQzYzhhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNTQsMTQgKzU0LDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAogcHJvdGVj
dGVkOgotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJTY2FsZSkKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKICAg
ICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICAgICAsIG1fcmVuZGVyaW5n
TW9kZShyZW5kZXJpbmdNb2RlKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUp
CiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNp
emUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCiAgICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVy
VHlwZSkKKyAgICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKICAgICAgICAg
LCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQogICAgICAgICAsIG1fc291cmNlSW1hZ2VSZWN0
KHNvdXJjZUltYWdlUmVjdCkKICAgICAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24p
CkBAIC02OSwxMiArNzEsMTMgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBS
ZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKKwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclNj
YWxlOwogICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKICAgICBGbG9hdFJlY3QgbV9m
aWx0ZXJSZWdpb247CiAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7Ci0g
ICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGUgeyBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0UmVuZGVyZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGE4NTVjZGI5
NjMxN2I4MmRlMzU2N2ZjMzFlNWI5ZTlhOWVjNjA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAs
MCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKLQotI2lmIFVTRShDT1JFX0lNQUdFKQotI2luY2x1
ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjp0cnlDcmVhdGUoYm9vbCBhY2NlbGVyYXRlZEZpbHRlclJlbmRlcmlu
Z0VuYWJsZWQsIEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkKLXsKLSNpZiBVU0UoQ09SRV9JTUFH
RSkKLSAgICBpZiAoYWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJpbmdFbmFibGVkKQotICAgICAgICBy
ZXR1cm4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnRyeUNyZWF0ZShsYXN0RWZmZWN0
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFjY2VsZXJhdGVkRmlsdGVyUmVuZGVyaW5nRW5h
YmxlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxhc3RFZmZlY3QpOwotI2VuZGlmCi0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLQotfSAvLyBuYW1zcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Y2Y3ZGZlMzQzNjEx
ZmIxYTZmMjY1MmY2NjBiNmMwYjgxOTA1N2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAot
LyoKLSogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0qIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0qIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgCi1wdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gdHJ5Q3JlYXRlKGJvb2wsIEZpbHRl
ckVmZmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUVmZmVjdHMoY29uc3QgRmlsdGVyJiwg
RmlsdGVyRWZmZWN0JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHQoKSA9IDA7Ci0gICAgCi0gICAgdmlydHVhbCB+
RmlsdGVyRWZmZWN0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAg
RmlsdGVyRWZmZWN0UmVuZGVyZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRl
clRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCmluZGV4IGFiNGE3MDVlMGQzMmU0ZjVkNTBjNmM5MTFk
MDY5M2YwZDE3NTM0ODcuLmQyOWEzYTYwN2FhNjhmZDVmZDhhODdkZTE5NGRmNmE1NmI1YWY0OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckZ1bmN0aW9uLmgKQEAgLTg0LDYgKzg0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQXRvbVN0cmluZyBzb3VyY2VHcmFwaGljTmFtZSgpIHsgcmV0dXJuIGZpbHRlck5hbWUoVHlw
ZTo6U291cmNlR3JhcGhpYyk7IH0KICAgICBBdG9tU3RyaW5nIGZpbHRlck5hbWUoKSBjb25zdCB7
IHJldHVybiBmaWx0ZXJOYW1lKG1fZmlsdGVyVHlwZSk7IH0KIAorI2lmIFVTRShDT1JFX0lNQUdF
KQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBhcHBseShjb25zdCBG
aWx0ZXImKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgSW50T3V0c2V0cyBvdXRzZXRz
KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyUmVzdWx0KCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVySW1hZ2UuY3BwCmluZGV4IDA1NWRkODU1NzA1YmM1YjM3YzczNzk5MjJmMDJjNjY0
MGQzN2ZkYmIuLjNhNGZlOTA1M2Q2ZDcwNTkwNjAxYTc4YzUwMmY3YmRkMTE0NWZhOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuY3BwCkBAIC02NCw2ICs2NCwxNSBAQCBJbnRSZWN0IEZpbHRlckltYWdlOjphYnNv
bHV0ZUltYWdlUmVjdFJlbGF0aXZlVG8oY29uc3QgRmlsdGVySW1hZ2UmIG9yaWdpbikgY29ucwog
fQogCiBJbWFnZUJ1ZmZlciogRmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyKCkKK3sKKyNpZiBVU0Uo
Q09SRV9JTUFHRSkKKyAgICBpZiAobV9jaUltYWdlKQorICAgICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXJGcm9tQ0lJbWFnZSgpOworI2VuZGlmCisgICAgcmV0dXJuIGltYWdlQnVmZmVyRnJvbVBpeGVs
QnVmZmVyKCk7Cit9CisKK0ltYWdlQnVmZmVyKiBGaWx0ZXJJbWFnZTo6aW1hZ2VCdWZmZXJGcm9t
UGl4ZWxCdWZmZXIoKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAppbmRleCAxMGMzOWQ5YzhkYzBkMTY3YjY3
ODA2Yjg1YTcyNjkxMWE1NTliZWZjLi4yMzVhM2U4MTg1YmI5YjY4NzE3YjUyYWM3MThjNjVlY2M4
ZjQ5ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJJbWFnZS5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgVVNFKENPUkVfSU1B
R0UpCitPQkpDX0NMQVNTIENJSW1hZ2U7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGaWx0ZXI7CkBAIC02MSwxMSArNjUsMjIgQEAgcHVibGljOgogICAgIHZvaWQgY29y
cmVjdFByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlcigpOwogICAgIHZvaWQgdHJhbnNmb3JtVG9Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCisjaWYgVVNFKENPUkVfSU1B
R0UpCisgICAgUmV0YWluUHRyPENJSW1hZ2U+IGNpSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Np
SW1hZ2U7IH0KKyAgICB2b2lkIHNldENJSW1hZ2UoUmV0YWluUHRyPENJSW1hZ2U+JiYpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgRmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRp
dmVTdWJyZWdpb24sIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxw
aGFJbWFnZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgcGl4ZWxCdWZmZXJTbG90KEFscGhhUHJl
bXVsdGlwbGljYXRpb24pOwogCisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyRnJvbVBpeGVs
QnVmZmVyKCk7CisKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXJGcm9tQ0lJbWFnZSgpOworI2VuZGlmCisKICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZm
ZXJDb2xvclNwYWNlQ29udmVyc2lvbihzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4pIGNvbnN0OwogCiAgICAgRmxvYXRSZWN0IG1fcHJpbWl0aXZlU3VicmVnaW9uOwpAQCAtNzgs
NiArOTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZm
ZXI7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gbV91bnByZW11bHRpcGxpZWRQaXhl
bEJ1ZmZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBtX3ByZW11bHRpcGxpZWRQ
aXhlbEJ1ZmZlcjsKKworI2lmIFVTRShDT1JFX0lNQUdFKQorICAgIFJldGFpblB0cjxDSUltYWdl
PiBtX2NpSW1hZ2U7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwCmluZGV4IGY3YjE2ZTZkOWVlODAyMDYzM2JkOWIzYWI0MThkOGZlMmQxYmRk
ZWQuLmE4ZTcxNjY5OWU1MzhlZDc5YjllYTRhZjZhM2ZmYWFhY2JlMGMyYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljU29m
dHdhcmVBcHBsaWVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYg
VVNFKENPUkVfSU1BR0UpCisjaW5jbHVkZSAiU291cmNlR3JhcGhpY0NvcmVJbWFnZUFwcGxpZXIu
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxTb3VyY2VHcmFwaGljPiBT
b3VyY2VHcmFwaGljOjpjcmVhdGUoKQpAQCAtNDgsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0QXBwbGllcj4gU291cmNlR3JhcGhpYzo6Y3JlYXRlQXBwbGllcihjb25zdCBG
aWx0ZXImCiAjaWYgVVNFKENPUkVfSU1BR0UpCiAgICAgLy8gRklYTUU6IHJldHVybiBTb3VyY2VH
cmFwaGljQ29yZUltYWdlQXBwbGllci4KICAgICBpZiAoZmlsdGVyLnJlbmRlcmluZ01vZGUoKSA9
PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBGaWx0ZXJFZmZlY3RBcHBsaWVyOjpjcmVhdGU8U291cmNlR3JhcGhpY0Nv
cmVJbWFnZUFwcGxpZXI+KCp0aGlzKTsKICNlbmRpZgogICAgIHJldHVybiBGaWx0ZXJFZmZlY3RB
cHBsaWVyOjpjcmVhdGU8U291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllcj4oKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuaAppbmRleCBlNDJiZTZjNDU0ZmM4ZjE2MWE5ZGFmZDU5NTY2MDdmZDdkZGU4
NGU0Li4wMzc0OGExNzYwNGZkMWVlYTA4ZThjMDE5MGE2YmY1YmUyN2ZlMjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuaApAQCAtMzQsNiArMzQsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTb3VyY2VH
cmFwaGljKCk7CiAKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRzQ29yZUlt
YWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCisK
ICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KGNvbnN0IEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZUFw
cGxpZXIoY29uc3QgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KaW5k
ZXggMTM2MDA1OTUzY2Q3MzYxYTBhZGE4YzIwNDc0YmM5NTIzNzlhYmUxYS4uYTkzZGRkM2U5MjMz
OTFmOTkzNjBiZDA5YmU1NzQxYTNmZjliYmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAtMzAs
NiArMzAsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJTY3Jv
bGxBbmltYXRpb25SdWJiZXJCYW5kLmgiCiAjaW1wb3J0ICJTY3JvbGxFeHRlbnRzLmgiCisjaW1w
b3J0ICJTY3JvbGxhYmxlQXJlYS5oIgogI2ltcG9ydCAiV2hlZWxFdmVudERlbHRhRmlsdGVyLmgi
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1Njcm9sbFZpZXdTUEkuaD4KICNpbXBvcnQgPHN5cy9z
eXNjdGwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggMGFjNjg5
OWMzOWFmZDJjMzM3ZDQzYTlmMDI0YmQ5NTQ3NzVjYzI5Ny4uMTdhOTNkM2Q0MjkwYWZlODQzMTkx
ZWRjMGMwYzcxMDA5ZmRlYWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJGRURyb3BTaGFkb3cuaCIKICNpbmNsdWRl
ICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZFTWVyZ2UuaCIKLSNpbmNsdWRlICJGaWx0
ZXJFZmZlY3RSZW5kZXJlci5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKQEAg
LTU1LDE0ICs1NCwxMSBAQCBSZWZQdHI8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBSZW5kZXJpbgogICAgIGJvb2wgaGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KTsKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3Jp
Z2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0
eU9yaWdpbigpOwogCi0gICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IENTU0ZpbHRlciho
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRC
eVNlY3VyaXR5T3JpZ2luLCBzY2FsZUZhY3RvcikpOwotCi0gICAgZmlsdGVyLT5zZXRSZW5kZXJp
bmdNb2RlKHJlbmRlcmluZ01vZGUpOwotICAgIHJldHVybiBmaWx0ZXI7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRlcmluZ01vZGUsIHNjYWxlRmFjdG9yLCBoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3Vy
aXR5T3JpZ2luKSk7CiB9CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKGJvb2wgaGFzRmlsdGVyVGhh
dE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3Vy
aXR5T3JpZ2luLCBmbG9hdCBzY2FsZUZhY3RvcikKLSAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6
OkNTU0ZpbHRlciwgRmxvYXRTaXplIHsgc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yIH0pCitDU1NG
aWx0ZXI6OkNTU0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxl
RmFjdG9yLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikKKyAgICA6IEZpbHRlcihGaWx0ZXI6
OlR5cGU6OkNTU0ZpbHRlciwgcmVuZGVyaW5nTW9kZSwgRmxvYXRTaXplIHsgc2NhbGVGYWN0b3Is
IHNjYWxlRmFjdG9yIH0pCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyhoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMpCiAgICAgLCBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0
ZWRCeVNlY3VyaXR5T3JpZ2luKGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3Vy
aXR5T3JpZ2luKQogewpAQCAtMjI1LDcgKzIyMSw3IEBAIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVy
PiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRl
CiAgICAgfQogCiAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgIHJldHVybiBTVkdG
aWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLmZpbHRlclNjYWxl
KCksIGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKSwgZmlsdGVyLmZpbHRlclJlZ2lvbigpLCBwcmV2
aW91c0VmZmVjdCk7CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50
LCBidWlsZGVyLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwg
ZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpLCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCksIHByZXZpb3Vz
RWZmZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBMYXN0RWZmZWN0UHJvcGVydGllcyhGaWx0
ZXJFZmZlY3QmIGVmZmVjdCwgRmlsdGVyQ29uc3VtZXIgY29uc3VtZXIpCkBAIC0zMjksOSArMzI1
LDEwIEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgbV9mdW5jdGlvbnMuc2hyaW5rVG9G
aXQoKTsKIAogI2lmIFVTRShDT1JFX0lNQUdFKQotICAgIGlmICghbV9maWx0ZXJSZW5kZXJlcikK
LSAgICAgICAgbV9maWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjp0cnlDcmVh
dGUocmVuZGVyZXIuc2V0dGluZ3MoKS5jb3JlSW1hZ2VBY2NlbGVyYXRlZEZpbHRlclJlbmRlckVu
YWJsZWQoKSwgKmxhc3RFZmZlY3QoKSk7CisgICAgaWYgKCFzdXBwb3J0c0NvcmVJbWFnZVJlbmRl
cmluZygpKQorICAgICAgICBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpOwogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY3LDggKzM2NCw3
IEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4CiAgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdl
QnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRl
eHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKLSAgICAgICAg
UmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdl
KEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlm
CiAgICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKICAgICAgICAgICAg
IGNvbnRleHQtPnNjYWxlKGZpbHRlclNjYWxlKCkpOwpAQCAtMzg5LDYgKzM4NSwyMSBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6Omxhc3RFZmZlY3QoKQogICAgIHJldHVybiBkb3du
Y2FzdDxGaWx0ZXJFZmZlY3Q+KGZ1bmN0aW9uLnB0cigpKTsKIH0KIAorI2lmIFVTRShDT1JFX0lN
QUdFKQorYm9vbCBDU1NGaWx0ZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QK
K3sKKyAgICBpZiAocmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBt
X2Z1bmN0aW9ucykgeworICAgICAgICBpZiAoIWZ1bmN0aW9uLT5zdXBwb3J0c0NvcmVJbWFnZVJl
bmRlcmluZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKQogewogICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwpAQCAt
NDEwLDIxICs0MjEsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0
cygpCiAKIGJvb2wgQ1NTRmlsdGVyOjphcHBseSgpCiB7Ci0gICAgYXV0byBlZmZlY3QgPSBsYXN0
RWZmZWN0KCk7Ci0gICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9maWx0ZXJS
ZW5kZXJlci0+YXBwbHlFZmZlY3RzKCp0aGlzLCAqZWZmZWN0KTsKLSAgICAgICAgaWYgKG1fZmls
dGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBlZmZlY3QtPnRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKICAgICAgICAgaWYgKCFmdW5jdGlvbi0+YXBwbHkoKnRo
aXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGVmZmVjdC0+dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Cisg
ICAgbGFzdEVmZmVjdCgpLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQwLDkgKzQ0Miw2
IEBAIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlS
ZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlCiAKIEltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91
dHB1dCgpCiB7Ci0gICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+
aGFzUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiBtX2ZpbHRlclJlbmRlcmVyLT5vdXRwdXQoKTsK
LQogICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsKIApAQCAtNDcxLDggKzQ3MCw4IEBA
IEludFJlY3QgQ1NTRmlsdGVyOjpvdXRwdXRSZWN0KCkKIHsKICAgICBhdXRvIGVmZmVjdCA9IGxh
c3RFZmZlY3QoKTsKIAotICAgIGlmIChlZmZlY3QtPmhhc1Jlc3VsdCgpIHx8IChtX2ZpbHRlclJl
bmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSkKLSAgICAgICAgcmV0dXJu
IGVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSAtIEludFBvaW50KGZpbHRlclJlZ2lvbigpLmxv
Y2F0aW9uKCkpOworICAgIGlmIChhdXRvIHJlc3VsdCA9IGVmZmVjdC0+ZmlsdGVySW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC0+YWJzb2x1dGVJbWFnZVJlY3QoKSAtIEludFBvaW50KGZp
bHRlclJlZ2lvbigpLmxvY2F0aW9uKCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCBjMzQwODcxYjI3M2UyMjkxYzY4MDJkNTFmOTU4
Mjg0ZDlhMDEzYWQzLi4wZWJhNDdkZmNiYjA1MmI1ZjQ3Zjc4OTMyMDUxNzhmZTQ3ZDU1MjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0zMyw3ICszMyw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlckVmZmVjdDsKLWNsYXNzIEZpbHRlckVmZmVj
dFJlbmRlcmVyOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjsKQEAgLTcxLDcgKzcwLDExIEBAIHB1
YmxpYzoKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlS
ZWN0KTsKIAogcHJpdmF0ZToKLSAgICBDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQ
aXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmln
aW4sIGZsb2F0IHNjYWxlRmFjdG9yKTsKKyAgICBDU1NGaWx0ZXIoUmVuZGVyaW5nTW9kZSwgZmxv
YXQgc2NhbGVGYWN0b3IsIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0Zp
bHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKKworI2lmIFVTRShD
T1JFX0lNQUdFKQorICAgIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBv
dmVycmlkZTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9OwpA
QCAtODAsOCArODMsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWY8RmlsdGVyRnVuY3Rpb24+
PiBtX2Z1bmN0aW9uczsKIAogICAgIG11dGFibGUgSW50T3V0c2V0cyBtX291dHNldHM7Ci0KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IG1fZmlsdGVyUmVuZGVyZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDkzNGZj
ODNhNjQyN2MzY2YxNDVjYWZhNDcyZTgwNWEyZmRkNWJmMWUuLjgyY2NlYjRjMDZkZGJjMWE1Njhh
OTBjMmIwZmJkNTVjYzgyNjkzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMjYsOSArMTI2LDEy
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLnNj
YWxlKGZpbHRlclNjYWxlKTsKICAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoYWJz
b2x1dGVEcmF3aW5nUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpOwogCisgICAgLy8gU2V0IHRo
ZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCisgICAgYXV0byByZW5k
ZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVk
KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQ7CisKICAgICAvLyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCiAgICAgZmlsdGVy
RGF0YS0+YnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oKTsKLSAgICBmaWx0
ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0
ZXJEYXRhLT5idWlsZGVyLCBmaWx0ZXJTY2FsZSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0
ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7CisgICAgZmlsdGVyRGF0YS0+
ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAqZmlsdGVyRGF0YS0+
YnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGFic29sdXRlRHJhd2luZ1JlZ2lv
biwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gpOwogICAgIGlmICgh
ZmlsdGVyRGF0YS0+ZmlsdGVyKSB7CiAgICAgICAgIG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwLnJl
bW92ZSgmcmVuZGVyZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjAsMjIgKzE2Mywx
OCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0
ZSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxl
Y3QgdGhlIHJlc29sdXRpb24gb2YgdGhlIGZpbHRlci4KICAgICBBZmZpbmVUcmFuc2Zvcm0gZWZm
ZWN0aXZlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGZpbHRlclNjYWxlLndpZHRoKCksIDAs
IDAsIGZpbHRlclNjYWxlLmhlaWdodCgpLCAwLCAwKTsKIAotICAgIGF1dG8gcmVuZGVyaW5nTW9k
ZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKICAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNl
CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAj
ZW5kaWYKLSAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zv
cm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOworICAgIGF1dG8gc291cmNl
R3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRh
dGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgZmlsdGVy
RGF0YS0+ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIGNvbnRleHQpOwogICAgIGlmICghc291cmNl
R3JhcGhpYykgewogICAgICAgICBBU1NFUlQobV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29udGFp
bnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRl
eHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgLy8gU2V0IHRoZSBy
ZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCi0gICAgZmlsdGVyRGF0YS0+
ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwotCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsK
ICAgCiAgICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IFdURk1vdmUoc291cmNl
R3JhcGhpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmNwcAppbmRleCBjNWI3MTA2NmQ0ODk1OTE4MGNlYmQ0ODZlMGU3YzVmOTFj
Y2JjYzc5Li40OTY2YTBhNjM2YjMzNTM5OTkwZGE4Nzk2M2FjZTliMmEzM2E4NGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICBG
bG9hdFJlY3QgZHVtbXlSZWN0OwogICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
ICAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgICAgICBhdXRvIGR1bW15Rmls
dGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRlciwg
ZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCk7CisgICAgICAgIGF1
dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgp
LCBidWlsZGVyLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkdW1teVNjYWxlLCBkdW1t
eVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0KTsKICAgICAgICAgaWYgKGR1bW15RmlsdGVyKSB7
CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IGRmNzM3NDk5MzFmZGRkY2IzMWRkZWRhYzc0NjAxZDBjZmU4NzRkYjYuLjg3MjcwOTY5
ZDMwYjhhN2Q2M2VkZWJhZDA4ODU3MDJiMjhkMmJiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjgsMjEgKzI4LDIxIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpj
cmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYg
YnVpbGRlciwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBGaWx0ZXJFZmZl
Y3QmIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUo
U1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRl
ciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNj
YWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBm
aWx0ZXJSZWdpb24sIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VS
ZWN0LCBmaWx0ZXJSZWdpb24sIGZpbHRlclJlZ2lvbiwgJnByZXZpb3VzRWZmZWN0KTsKKyAgICBy
ZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRl
clNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgZmlsdGVyUmVnaW9uLCAmcHJl
dmlvdXNFZmZlY3QpOwogfQogCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShT
VkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0Qm91bmRpbmdCb3gpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShT
VkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVy
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2Nh
bGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZp
bHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlclNjYWxlLCBzb3VyY2VJ
bWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOworICAg
IHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmls
dGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0Jv
eCwgbnVsbHB0cik7CiB9CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNW
R0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKK1JlZlB0cjxT
VkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1l
bnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0KQogewogICAg
IGJvb2wgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlID0gZmlsdGVyRWxlbWVudC5wcmltaXRpdmVV
bml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsK
IAotICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUs
IHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgcHJpbWl0
aXZlQm91bmRpbmdCb3hNb2RlKSk7CisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNW
R0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0
ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUpKTsK
IAogICAgIGlmICghcHJldmlvdXNFZmZlY3QpCiAgICAgICAgIGJ1aWxkZXIuc2V0dXBCdWlsdGlu
RWZmZWN0cyhTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7CkBAIC02MiwxMSArNjIsMTcgQEAgUmVm
UHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVy
RWxlbWVudCwgU1ZHRmlsdGVyQnUKIAogICAgIEFTU0VSVCghZXhwcmVzc2lvbi5pc0VtcHR5KCkp
OwogICAgIGZpbHRlci0+c2V0RXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJlc3Npb24pKTsKKyAgICAK
KyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBpZiAoIWZpbHRlci0+c3VwcG9ydHNDb3JlSW1hZ2VS
ZW5kZXJpbmcoKSkKKyAgICAgICAgZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQpOworI2VuZGlmCisKICAgICByZXR1cm4gZmlsdGVyOwogfQogCi1T
VkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGJvb2wgZWZmZWN0QkJveE1vZGUp
Ci0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIGZpbHRlclNjYWxlLCBzb3Vy
Y2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9u
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBib29sIGVmZmVjdEJCb3hNb2Rl
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6U1ZHRmlsdGVyLCByZW5kZXJpbmdNb2RlLCBm
aWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24pCiAgICAgLCBtX3Rhcmdl
dEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KQogICAgICwgbV9lZmZlY3RCQm94TW9kZShl
ZmZlY3RCQm94TW9kZSkKIHsKQEAgLTgwLDYgKzg2LDIyIEBAIEZsb2F0U2l6ZSBTVkdGaWx0ZXI6
OnNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0CiAgICAgcmV0dXJuIEZp
bHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZShzaXplKTsKIH0KIAorI2lmIFVTRShDT1JFX0lNQUdF
KQorYm9vbCBTVkdGaWx0ZXI6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QKK3sK
KyAgICBpZiAocmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVCghbV9leHByZXNzaW9uLmlzRW1w
dHkoKSk7CisgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2V4cHJlc3Npb24pIHsKKyAgICAgICAg
aWYgKCFlZmZlY3QtPnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogYm9v
bCBTVkdGaWx0ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogewogICAgIHNldFNvdXJj
ZUltYWdlKHsgZmlsdGVyLnNvdXJjZUltYWdlKCkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDg5NmZiYjI2MzdlMmI1YzYzNWE0
OTMyODc4OGQ3NTkxMDQ2YjFhNjkuLjQ5YjU1NTNjNTYyYTcxNTMxMTc3NTMwMTlmZDgzMjRlYWU3
YjQ4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlci5oCkBAIC0zMyw5ICszMyw5IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNz
IFNWR0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxk
ZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVmZmVjdCYg
cHJldmlvdXNFZmZlY3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZH
RmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwotICAg
IHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNFZmZl
Y3QpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVu
dCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOworICAgIHN0
YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRl
ckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJS
ZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxk
ZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlv
dXNFZmZlY3QpOwogCiAgICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXpl
KSBjb25zdCBmaW5hbDsKIApAQCAtNDYsNyArNDYsMTEgQEAgcHVibGljOgogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiAhbV9leHByZXNzaW9uLmlz
RW1wdHkoKSA/IG1fZXhwcmVzc2lvbi5sYXN0KCkgOiBudWxscHRyOyB9CiAKIHByaXZhdGU6Ci0g
ICAgU1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9kZSk7CisgICAg
U1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94
TW9kZSk7CisKKyNpZiBVU0UoQ09SRV9JTUFHRSkKKyAgICBib29sIHN1cHBvcnRzQ29yZUltYWdl
UmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIGJvb2wgYXBwbHkoY29u
c3QgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3Zl
cnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>