<?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>232843</bug_id>
          
          <creation_ts>2021-11-08 13:18:54 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 14/23] Apply the filter to an ImageBuffer through GraphicsContext and ImageBuffer</short_desc>
          <delta_ts>2021-11-29 21:36:00 -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=233611</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>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</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>1812794</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 13:18:54 -0800</bug_when>
    <thetext>This will make it possible to record applying the filter for GPUProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815201</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 13:23:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/85426291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818048</commentid>
    <comment_count>2</comment_count>
      <attachid>445223</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 13:43:08 -0800</bug_when>
    <thetext>Created attachment 445223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818050</commentid>
    <comment_count>3</comment_count>
      <attachid>445224</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 14:16:50 -0800</bug_when>
    <thetext>Created attachment 445224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818056</commentid>
    <comment_count>4</comment_count>
      <attachid>445228</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 19:14:35 -0800</bug_when>
    <thetext>Created attachment 445228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818062</commentid>
    <comment_count>5</comment_count>
      <attachid>445231</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-27 21:14:32 -0800</bug_when>
    <thetext>Created attachment 445231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818091</commentid>
    <comment_count>6</comment_count>
      <attachid>445240</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-28 11:50:02 -0800</bug_when>
    <thetext>Created attachment 445240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818118</commentid>
    <comment_count>7</comment_count>
      <attachid>445247</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-28 19:41:03 -0800</bug_when>
    <thetext>Created attachment 445247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818119</commentid>
    <comment_count>8</comment_count>
      <attachid>445240</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-28 19:53:51 -0800</bug_when>
    <thetext>Comment on attachment 445240
Patch

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

&gt; Source/WebCore/rendering/CSSFilter.cpp:401
&gt; +    effect-&gt;transformResultColorSpace(DestinationColorSpace::SRGB());

This call is not needed since the caller which is Filter::apply() will transform the returned FilterImage to sRGB. This is fixed in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818123</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-28 22:08:34 -0800</bug_when>
    <thetext>Committed r286203 (244585@main): &lt;https://commits.webkit.org/244585@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445247.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445223</attachid>
            <date>2021-11-27 13:43:08 -0800</date>
            <delta_ts>2021-11-27 15:00:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211127134307.patch</filename>
            <type>text/plain</type>
            <size>39336</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwZmQ3OWZhZGFjM2Vm
ZTUwM2YzM2Y1NjYxYzM3ZTg4YWY0YmIyNC4uMjJlNjUxZmRlOGRkYzRkMzg2NTMzN2ZhMWJkYWMy
YWI3MzI3YWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTExLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBHUFVQ
cm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlci4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZmZXIg
YW5kIHRoZSBzb3VyY2VJbWFnZUJ1ZmZlclJlY3QKKyAgICAgICAgb2YgdGhlIENTU0ZpbHRlciBp
cyBtb3ZlZCB0byBSZW5kZXJMYXllckZpbHRlcnMuIFRoaXMgbmV3IHJlbGF0aW9uc2hpcCBpcwor
ICAgICAgICBzaW1pbGFyIHRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlciBhbmQgU1ZHRmlsdGVyLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dmFyaWF0aW9uQXhlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyU2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpzZXRT
b3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjppbnB1dENvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjp1cGRhdGVCYWNraW5n
U3RvcmVSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YWxsb2Nh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpvdXRwdXRSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0Q29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdp
bkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFw
cGx5RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJz
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVz
b3VyY2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuaDoKKwogMjAyMS0xMS0yNiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgRmlsdGVyRWZm
ZWN0cyBjcmVhdGUgRmlsdGVyRWZmZWN0QXBwbGllcnMgd2hpY2ggd2lsbCBiZSB1c2VkIGJ5IEZp
bHRlckVmZmVjdDo6YXBwbHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBiNmVjMTQ0OWE4NDljZGI0Zjli
MTY2NzE3ODc2MmM3ODQ4YmYxMjQ2Li4wNzdhZmY3MThmYzk4NTNkMDU5NjkyOGI3OGNlNjY2MWUw
Y2M1MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjEwMCw2ICsyMTAwLDcgQEAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVT
cGVjdWxhckxpZ2h0aW5nLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKK3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3MzU0ZWJhYmRjNDY5ZjgxMzliOWZjYzYwMjhmZGE1NWUyODU3MTE4Li41YzkyMzg1MTgwNWZj
YWQ4YWM3N2M5OTFjYWI4MmE2YjBkZDI0Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODgsNyArNDg4LDYgQEAKIAkJMUE0
OTRFREYwQTEyM0Y0QzAwRkRBRkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0OTRFREQwQTEyM0Y0QzAwRkRB
RkMxIC8qIEpTRG9jdW1lbnRGcmFnbWVudC5oICovOyB9OwogCQkxQTRBMkRGMDBBMUI4NTJBMDBD
ODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0QTJERUMwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFu
Y2hvckVsZW1lbnQuaCAqLzsgfTsKIAkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJl
ZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE0QTk1NEMwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxRkEyRURGMjc1MDZGREUwMDEx
QzE1RCAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUE0REE0MjIxQ0REM0E4MzAwRjQ0NzNDIC8qIExpbmtJY29uQ29sbGVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRE
QTQyMDFDREQzQTgzMDBGNDQ3M0MgLyogTGlua0ljb25Db2xsZWN0b3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTU2OUQxMjBEN0UyQjgyMDA3
QzM5ODMgLyogb2JqY19jbGFzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE1NjlDRTMwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MuaCAqLzsg
fTsKIAkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFNDBEN0UyQjgyMDA3
QzM5ODMgLyogb2JqY19jbGFzcy5tbSAqLzsgfTsKQEAgLTE2ODksNiArMTY4OCw3IEBACiAJCTUx
Rjc5OEYwMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjc5OEVDMUJFODgwRDMwMDhBRTQ5MSAv
KiBJREJJbmRleEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MUY4ODZDMDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNl
V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUY4ODZCRjFGMzI5MjA3MDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmggKi87
IH07CiAJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAvKiBET01XaW5kb3dFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE4MTUx
QUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUZBMkVERjI3NTA2RkRFMDAxMUMxNUQg
LyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRUQ2Mjc0Rjc4MzcwMDExQzE1RCAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRkI1NTA0MTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI1NTAyMTEzRTNF
OTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuaCAqLzsgfTsKIAkJNTFGQjY3REMxQUU2QjgyRjAw
RDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZCNjdEQTFBRTZCNUU0MDBEMDZDNUEgLyog
Q29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjczQ0M3NzI1NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZv
cm1YUkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MjczQ0M3NTI1NjEwM0NGMDA4NTAwMDcgLyogUGxhdGZvcm1YUkNvY29hLmggKi87IH07CkBA
IC0yMzA3LDYgKzIzMDcsOCBAQAogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVy
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQzMDA0
MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyog
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1h
dGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQjhCMDI3
Mjc1MjMzMUEwMEY3NTJBQSAvKiBGaWx0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MkQ3NTYyNzJBMTc0MTAwQzU2QTA5IC8qIEZp
bHRlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzJCOEIwMjgyNzUyNEM4ODAwRjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQzNUVGNDI3M0QwNzY3
MDAwNUU3RUUgLyogRmlsdGVySW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJGNjY3RTEyNjBD
MjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0MDBFRTM2QUQg
LyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggKi87IH07CkBAIC0yNzA5LDcgKzI3MTEsNyBAQAogCQk4NDIyNDE5NDEwN0U3OEE3MDA3NjZB
ODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODQyMjQxOTExMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuaCAqLzsgfTsKIAkJODQzMDBCRDYxMjBDOUFBQzAwMjE5NTRBIC8qIFNW
R1BhdGhTdHJpbmdTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggKi87IH07CiAJCTg0MzAwQkQ4MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJENzEy
MEM5QUQ0MDAyMTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oICovOyB9OwotCQk4NDVFNzJGODBGRDI2
MUVFMDBBODdENzkgLyogRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IH07
CisJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY3MEZEMjYxRUUwMEE4N0Q3OSAv
KiBGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NDVFNzJGQzBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJGQTBGRDI2MjM5MDBBODdE
NzkgLyogU1ZHRmlsdGVyLmggKi87IH07CiAJCTg0NjUwRTdFMjM4N0FEN0QwMDYyNjZFMiAvKiBN
ZWRpYVF1ZXJ5TGlzdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDY1MEU3QzIzODdBRDdDMDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVu
dC5oICovOyB9OwogCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291
cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDcz
MEQ1QTEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggKi87IH07CkBAIC0x
MDkzNSw2ICsxMDkzNyw3IEBACiAJCTcyQjRFRjc0Mjc0RTIzMzMwMDI5M0MyRiAvKiBGRUJsZW5k
U29mdHdhcmVBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCNEVGNzUyNzRFMjMzNDAwMjkzQzJG
IC8qIEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkVCbGVu
ZFNvZnR3YXJlQXBwbGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjRF
RjdDMjc0RUUzN0YwMDI5M0MyRiAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGaWx0ZXJJbWFnZVZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkI4
QjAyNDI3NTIyNEU0MDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZp
bHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcw
MDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2Vu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFD
IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYwMjIsNiArMjYwMjUsNyBAQAogCQkJCTg0NzMwRDZFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVRp
bGUuaCAqLywKIAkJCQk4NDczMEQ2RjEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmNw
cCAqLywKIAkJCQk4NDczMEQ3MDEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmggKi8s
CisJCQkJNzJCOEIwMjQyNzUyMjRFNDAwRjc1MkFBIC8qIEZpbHRlci5jcHAgKi8sCiAJCQkJODQ1
RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovLAogCQkJCTA4QzkyNTE3MEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4QzkyNTE4MEZDQzdDNEEw
MDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKQEAgLTMzNTY4LDYgKzMzNTcyLDggQEAKIAkJ
CQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQzg1NjUzNDI0QzBGNzNDMDBBMzc2NzMgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJDQUE0QTNBMjRCRTE4QjcwMDlERUU3MCAvKiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJCOEIwMjcyNzUy
MzMxQTAwRjc1MkFBIC8qIEZpbHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkI4
QjAyODI3NTI0Qzg4MDBGNzUyQUEgLyogRmlsdGVySW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5RUNFQjZFMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RUNFQjcwMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzJDMDBEOTEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwCmluZGV4IGQzMmZmYmNjM2M1ODYyY2IxZWNhNmQ2YWVkOTgyZDIwZDdkOTQ5ZmUuLjE0
NWRkOWQ3YzNmMGY3OGQ4NmU5ZjQ5ODU3MTc4NDkzYWQxOTgwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEzMCwxNCArMTMwLDEwIEBAIFJlZlB0
cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEZsb2F0U2l6CiAgICAgaWYgKCFjc3NGaWx0ZXItPmJ1aWxkRmlsdGVyRnVuY3Rp
b25zKHJlbmRlcmVyLCBtX2ZpbHRlck9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJG
dW5jdGlvbikpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCi0gICAgY3Nz
RmlsdGVyLT5zZXRTb3VyY2VJbWFnZShXVEZNb3ZlKHNvdXJjZUltYWdlKSk7Ci0gICAgY3NzRmls
dGVyLT5hcHBseSgpOworICAgIGlmIChhdXRvIGltYWdlID0gc291cmNlSW1hZ2UtPmZpbHRlcmVk
SW1hZ2UoKmNzc0ZpbHRlcikpCisgICAgICAgIHJldHVybiBpbWFnZTsKIAotICAgIGF1dG8qIG91
dHB1dCA9IGNzc0ZpbHRlci0+b3V0cHV0KCk7Ci0gICAgaWYgKCFvdXRwdXQpCi0gICAgICAgIHJl
dHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwotCi0gICAgcmV0dXJuIG91dHB1dC0+Y29weUltYWdl
KCk7CisgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiB9CiAKIHZvaWQgQ1NTRmlsdGVy
SW1hZ2VWYWx1ZTo6ZmlsdGVySW1hZ2VDaGFuZ2VkKGNvbnN0IEludFJlY3QmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CmluZGV4IDk1MWFlOWJlMzgyYzEzZmQ5NzI4OWViNDMyM2JhZTQzOWM2MzIzZTYuLjc1MGRiNGVl
ODkxNjYwZmE0YmVjZWJjNDQ0N2M2ODVjZTVjNDg0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTI1LDYg
KzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4
ZWxCdWZmZXIuaCIKIApAQCAtMTM3LDYgKzEzOSwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAorICAgIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFnZShG
aWx0ZXImIGZpbHRlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8qIGJhY2tlbmQgPSBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgICAgICBpZiAoIWJhY2tlbmQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZm
ZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IGZpbHRlci5hcHBseSh0aGlzKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gcmVzdWx0LT5pbWFn
ZUJ1ZmZlcigpOworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKTsKKyAg
ICB9CisKICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYjIy
MThmYWEzYmQ1NmIzOTU0NDE0MTVmZDhlMWY2OTY3MDllZGZkZS4uODAxODY5NmQ0Njk1ZWU4YTBi
YjU2OTk1ODk2MDMxZWE5MGVjNTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNp
bmNsdWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1
ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlckltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKQEAgLTYyOSw2ICs2MzEsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25z
dW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdAogICAgIElt
YWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKFdURk1vdmUoaW1hZ2UpLCAqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIEZpbHRlciYgZmlsdGVy
KQoreworICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHNvdXJjZUltYWdlKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSByZXN1bHQtPmltYWdlQnVmZmVyKCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgcmVzdWx0LT5hYnNv
bHV0ZUltYWdlUmVjdCgpKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogewogICAgIFBhdGggcGF0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggMGMxNDE0M2VkOGQ2YTM2ZDgwNGJhNTAyYzIyNDdlYWRjNTA1MjIzNy4uM2Q4ZDNhNzEy
NTNlMzYzMGY4ZDk1Y2RkZDQwOTZiYjY0MjI4OWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg1LDYgKzg1LDcgQEAg
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBGaWx0ZXI7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0
OwogY2xhc3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7
CkBAIC00NTEsNiArNDUyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQ
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAorICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UsIEZpbHRlciYpOworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KSA9IDA7CiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBmM2ZkMmZiNjQ2OGNmYjc5MzQ1N2ZjMzAxODQ3
MTkwMzdiMGI4ZjVkLi5kN2I3NTY0YTU5YjhjMjY3NmE3NmUxOTFjNWEwNzk1OTYxODk4NjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAg
LTQyLDYgKzQyLDggQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiBzdHJ1Y3QgSXRlbUJ1ZmZlckhh
bmRsZTsKIH0KIAorY2xhc3MgRmlsdGVyOworCiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZUJ1ZmZlciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6
TWFpbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGljOgogICAg
IC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KQEAg
LTEwNyw2ICsxMDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBmaWx0
ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZl
ciBpbnRvIHRoaXMgbmV3IG9uZS4KICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9C
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA2NDhhNTIxZjgyZTQwYjUx
MDQzOGI2ZTQ5MTI3OWIyMmMzODVlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKworI2luY2x1ZGUgIkZpbHRlckltYWdlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsdGVyOjpGaWx0ZXIoRmlsdGVyOjpUeXBlIGZp
bHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCisgICAgOiBGaWx0ZXJGdW5j
dGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKK3sKK30K
KworRmlsdGVyOjpGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGZpbHRlclJlZ2lvbikKKyAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUp
CisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgICwgbV9zb3VyY2VJbWFnZVJl
Y3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQor
eworfQorCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNv
dXJjZUltYWdlKQoreworICAgIHNldFNvdXJjZUltYWdlKHNvdXJjZUltYWdlKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gYXBwbHkoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHJlc3VsdC0+dHJhbnNmb3JtVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaAppbmRleCA4ODRlNzg4N2VlY2VkMGRlN2ZjMWYxYTQ2NTQzMTdiZjI5OGMwZTQxLi42
NTBlNmMwYjkxM2FmNTM0MTliNTlmNGNmYTMzMDhmMTNkNzgxN2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGaWx0ZXJFZmZlY3Q7CitjbGFz
cyBGaWx0ZXJJbWFnZTsKIAogY2xhc3MgRmlsdGVyIDogcHVibGljIEZpbHRlckZ1bmN0aW9uIHsK
ICAgICB1c2luZyBGaWx0ZXJGdW5jdGlvbjo6YXBwbHk7CkBAIC00NCwyOSArNDQsMjAgQEAgcHVi
bGljOgogICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
clJlZ2lvbjsgfQogICAgIHZvaWQgc2V0RmlsdGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmls
dGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0gZmlsdGVyUmVnaW9uOyB9CiAKLSAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7
IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhcHBseSgp
ID0gMDsKLQogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlSW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldFNvdXJjZUltYWdlKFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0gV1RGTW92ZShzb3VyY2VJ
bWFnZSk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsg
fQogCisgICAgdmlydHVhbCBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUg
c2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyU2NhbGU7IH0KKworICAgIHZpcnR1
YWwgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSk7CisKIHBy
b3RlY3RlZDoKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUpCi0gICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkK
LSAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVy
U2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlZ2lvbikKLSAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAg
ICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgICAgICwgbV9zb3VyY2VJbWFn
ZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQotICAgICAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJl
Z2lvbikKLSAgICB7Ci0gICAgfQorICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUpOworICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRTaXplIG1f
ZmlsdGVyU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKaW5kZXggMTBjMzlkOWM4ZGMwZDE2N2I2NzgwNmI4NWE3
MjY5MTFhNTU5YmVmYy4uOGQyNjA0YmI0MDI4M2I0MTM2YmZlZmFhNzdlZDc2OWNkYWJmY2IyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVySW1hZ2UuaApAQCAtMjUsOCArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBpeGVs
QnVmZmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRmlsdGVyOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7Ci1jbGFzcyBQ
aXhlbEJ1ZmZlcjsKIAogY2xhc3MgRmlsdGVySW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0
ZXJJbWFnZT4gewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9
CiAgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoKTsKICAgICBQaXhl
bEJ1ZmZlciogcGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0
aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmNwcAppbmRleCAwYWM2ODk5YzM5YWZkMmMzMzdkNDNhOWYwMjRiZDk1NDc3NWNjMjk3Li5h
ODYwZTM1N2E1MDhhZjNkNzY0YTczYmJiZjRmNDEyODg3MTk2MjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtMzM1LDQ4ICszMzUsNiBAQCBib29sIENTU0ZpbHRl
cjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZp
bHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1HcmFwaGljc0NvbnRleHQqIENTU0Zp
bHRlcjo6aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/ICZzb3Vy
Y2VJbWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwotfQotCi1ib29sIENTU0ZpbHRlcjo6dXBk
YXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCi17Ci0gICAg
aWYgKGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhmaWx0ZXJSZWN0LnNpemUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChm
aWx0ZXJSZWN0ID09IHNvdXJjZUltYWdlUmVjdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBzZXRTb3VyY2VJbWFnZVJlY3QoZmlsdGVyUmVjdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKLXsKLSAgICAvLyBBdCB0aGlzIHBvaW50IHRo
ZSBlZmZlY3QgY2hhaW4gaGFzIGJlZW4gYnVpbHQsIGFuZCB0aGUKLSAgICAvLyBzb3VyY2UgaW1h
Z2Ugc2l6ZXMgc2V0LiBXZSBqdXN0IG5lZWQgdG8gYXR0YWNoIHRoZSBncmFwaGljCi0gICAgLy8g
YnVmZmVyIGlmIHdlIGhhdmUgbm90IHlldCBkb25lIHNvLgotCi0gICAgaWYgKG1fZ3JhcGhpY3NC
dWZmZXJBdHRhY2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBsb2dpY2FsU2l6ZSA9
IHNvdXJjZUltYWdlUmVjdCgpLnNpemUoKTsKLSAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291
cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewotI2lmIFVTRShESVJF
Q1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2Fs
U2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwotI2Vsc2UKLSAgICAgICAgVU5V
U0VEX1BBUkFNKHRhcmdldENvbnRleHQpOwotICAgICAgICBSZW5kZXJpbmdNb2RlIG1vZGUgPSBt
X2ZpbHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiByZW5kZXJpbmdN
b2RlKCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKTsKLSNlbmRpZgotICAgICAgICBpZiAoYXV0byBjb250ZXh0ID0gaW5wdXRDb250
ZXh0KCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJTY2FsZSgpKTsKLSAgICB9
Ci0KLSAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwotfQotCiBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBDU1NGaWx0ZXI6Omxhc3RFZmZlY3QoKQogewogICAgIGlmIChtX2Z1bmN0aW9u
cy5pc0VtcHR5KCkpCkBAIC00MDgsNDUgKzM2NiwxMyBAQCB2b2lkIENTU0ZpbHRlcjo6Y2xlYXJJ
bnRlcm1lZGlhdGVSZXN1bHRzKCkKICAgICAgICAgZnVuY3Rpb24tPmNsZWFyUmVzdWx0KCk7CiB9
CiAKLWJvb2wgQ1NTRmlsdGVyOjphcHBseSgpCitSZWZQdHI8RmlsdGVySW1hZ2U+IENTU0ZpbHRl
cjo6YXBwbHkoKQogewotICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGlmICht
X2ZpbHRlclJlbmRlcmVyKSB7Ci0gICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0
cygqdGhpcywgKmVmZmVjdCk7Ci0gICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1
bHQoKSkgewotICAgICAgICAgICAgZWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotCiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25z
KSB7CiAgICAgICAgIGlmICghZnVuY3Rpb24tPmFwcGx5KCp0aGlzKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLQotICAgIGVm
ZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21w
dXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICAvLyBUaGUgcmVzdWx0
IG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGFyZWEgaW4gdGhlICJmaWx0ZXJCb3hSZWN0IiB0aGF0
IG5lZWRzIHRvIGJlIHJlcGFpbnRlZCwgc28gdGhhdCB3ZSBmdWxseSBjb3ZlciB0aGUgImRpcnR5
UmVjdCIuCi0gICAgYXV0byByZWN0Rm9yUmVwYWludCA9IGRpcnR5UmVjdDsKLSAgICBpZiAoaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCi0gICAgICAgIHJlY3RGb3JSZXBhaW50ICs9IG91dHNl
dHMoKTsKLSAgICByZWN0Rm9yUmVwYWludC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7Ci0gICAg
cmV0dXJuIHJlY3RGb3JSZXBhaW50OwotfQotCi1JbWFnZUJ1ZmZlciogQ1NTRmlsdGVyOjpvdXRw
dXQoKQotewotICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhh
c1Jlc3VsdCgpKQotICAgICAgICByZXR1cm4gbV9maWx0ZXJSZW5kZXJlci0+b3V0cHV0KCk7Ci0K
LSAgICBpZiAoYXV0byByZXN1bHQgPSBsYXN0RWZmZWN0KCktPmZpbHRlckltYWdlKCkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQtPmltYWdlQnVmZmVyKCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gbGFzdEVmZmVjdCgpLT5maWx0ZXJJbWFnZSgpOwogfQogCiB2b2lkIENTU0Zp
bHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0
KQpAQCAtNDYzLDE4ICszODksNiBAQCB2b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQogICAgICAgICAgICAgZG93bmNhc3Q8
U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNldFNvdXJjZUltYWdlUmVjdChzY2FsZWRTb3Vy
Y2VJbWFnZVJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV9ncmFwaGljc0J1ZmZlckF0
dGFjaGVkID0gZmFsc2U7Ci19Ci0KLUludFJlY3QgQ1NTRmlsdGVyOjpvdXRwdXRSZWN0KCkKLXsK
LSAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKLQotICAgIGlmIChlZmZlY3QtPmhhc1Jl
c3VsdCgpIHx8IChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3Vs
dCgpKSkKLSAgICAgICAgcmV0dXJuIGVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSAtIEludFBv
aW50KGZpbHRlclJlZ2lvbigpLmxvY2F0aW9uKCkpOwotCi0gICAgcmV0dXJuIHsgfTsKIH0KIAog
SW50T3V0c2V0cyBDU1NGaWx0ZXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5oCmluZGV4IGMzNDA4NzFiMjczZTIyOTFjNjgwMmQ1MWY5NTgyODRkOWEwMTNh
ZDMuLjRiNmZkZTliN2E1OTQ2NzViN2JhOTFlZWM5MzNiNjBkMzZhOWE4ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlcjsK
K2NsYXNzIEZpbHRlckltYWdlOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjsKQEAgLTU1LDI1ICs1
NiwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVk
QnlTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdFNob3VsZEJl
UmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW47IH0KIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGxhc3RFZmZlY3QoKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgpOwogICAg
IEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhcklu
dGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICBib29sIGFwcGx5KCkgb3ZlcnJpZGU7Ci0KLSAgICBJ
bWFnZUJ1ZmZlciogb3V0cHV0KCk7Ci0KLSAgICBib29sIHVwZGF0ZUJhY2tpbmdTdG9yZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KTsKLSAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KLSAgICBJbnRSZWN0IG91dHB1
dFJlY3QoKTsKLQotICAgIExheW91dFJlY3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5
UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBk
aXJ0eVJlY3QpOworICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJv
b2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4sIGZsb2F0
IHNjYWxlRmFjdG9yKTsKIAotICAgIGJvb2wgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4g
eyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuY3BwCmluZGV4IDk3ZmU5NjkzMTRiMjVlYTMwNTQyMWJhMWQ2MDNlODJmMTVkNWYyMjAu
Ljk2MDZkMDMyMjcxYWFkNDUxMGMyMWI2NDZhZTYzMTQ2MzI1OGQyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMjQsMzAgKzEy
NCw1OSBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGZsb2F0IHNjYWxlRmFjdG9yLAogICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVy
OjpjcmVhdGUocmVuZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwgcmVuZGVyaW5nTW9kZSwgc2NhbGVG
YWN0b3IpOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5G
aWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3Qp
CitHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KCkKK3sK
KyAgICByZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZtX3NvdXJjZUltYWdlLT5jb250ZXh0KCkgOiBu
dWxscHRyOworfQorCit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3Rv
cmVJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzaXplIHsgbV9zb3VyY2VJbWFnZVJlY3Quc2l6ZSgp
ICogbV9maWx0ZXItPmZpbHRlclNjYWxlKCkgfTsKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSBtX2xh
eWVyLnJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLnJvb3QoKSA/IG1fbGF5ZXIucmVuZGVy
ZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwor
CisgICAgbV9zb3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgbV9maWx0ZXIt
PnJlbmRlcmluZ01vZGUoKSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJw
b3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIGhvc3RXaW5kb3cpOworCisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQg
PSBtX3NvdXJjZUltYWdlLT5jb250ZXh0KCk7CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKG1fZmls
dGVyLT5maWx0ZXJTY2FsZSgpKTsKKworICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRy
dWU7Cit9CisKK0dyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRl
ckVmZmVjdChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3Qg
TGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQogewogICAgIGlmICghbV9maWx0ZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVy
OwotICAgIGF1dG8gZmlsdGVyU291cmNlUmVjdCA9IGZpbHRlci5jb21wdXRlU291cmNlSW1hZ2VS
ZWN0Rm9yRGlydHlSZWN0KGZpbHRlckJveFJlY3QsIGRpcnR5UmVjdCk7Ci0gICAgaWYgKGZpbHRl
clNvdXJjZVJlY3QuaXNFbXB0eSgpKQorICAgIGF1dG8gZmlsdGVyU291cmNlUmVjdCA9IGRpcnR5
UmVjdDsKKyAgICBpZiAoZmlsdGVyLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQorICAgICAg
ICBmaWx0ZXJTb3VyY2VSZWN0ICs9IGZpbHRlci5vdXRzZXRzKCk7CisgICAgZmlsdGVyU291cmNl
UmVjdC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7CisKKyAgICBpZiAoZmlsdGVyU291cmNlUmVj
dC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlclNvdXJj
ZVJlY3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBib29sIGhhc1Vw
ZGF0ZWRCYWNraW5nU3RvcmUgPSBmaWx0ZXIudXBkYXRlQmFja2luZ1N0b3JlUmVjdChmaWx0ZXJT
b3VyY2VSZWN0KTsKKyAgICBpZiAoZmlsdGVyU291cmNlUmVjdCAhPSBtX3NvdXJjZUltYWdlUmVj
dCkgeworICAgICAgICBtX3NvdXJjZUltYWdlUmVjdCA9IGZpbHRlclNvdXJjZVJlY3Q7CisgICAg
ICAgIGZpbHRlci5zZXRTb3VyY2VJbWFnZVJlY3QoZmlsdGVyU291cmNlUmVjdCk7CisgICAgICAg
IG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIEZJWE1F
OiB0aGlzIGNhbGwgc2hvdWxkIGJlIG1vdmVkIHRvIENTU0ZpbHRlcjo6Y3JlYXRlKCkgd2hlbiBG
aWx0ZXJFZmZlY3QgZG9lcyBub3Qgc3RvcmUgaXRzIGdlb21ldHJ5LgotICAgIGlmIChoYXNVcGRh
dGVkQmFja2luZ1N0b3JlIHx8ICFtX2ZpbHRlci0+bGFzdEVmZmVjdCgpKSB7CisgICAgaWYgKCFt
X2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgfHwgIW1fZmlsdGVyLT5sYXN0RWZmZWN0KCkpIHsKICAg
ICAgICAgLy8gSWYgdGhlIGZpbHRlciBmYWlscyB0byBidWlsZCwgcmVtb3ZlIGl0IGZyb20gdGhl
IGxheWVyLiBJdCB3aWxsIHN0aWxsIGF0dGVtcHQgdG8KICAgICAgICAgLy8gZ28gdGhyb3VnaCBy
ZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55
dGhpbmcuCiAgICAgICAgIGlmICghbV9maWx0ZXItPmJ1aWxkRmlsdGVyRnVuY3Rpb25zKHJlbmRl
cmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJv
cGVydHkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAg
aWYgKCFmaWx0ZXIuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCiAgICAgICAgIG1fcmVwYWlu
dFJlY3QgPSBkaXJ0eVJlY3Q7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChoYXNVcGRhdGVkQmFj
a2luZ1N0b3JlKQorICAgICAgICBpZiAoIW1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCkKICAgICAg
ICAgICAgIG1fcmVwYWludFJlY3QgPSBmaWx0ZXJTb3VyY2VSZWN0OwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBkaXJ0eVJlY3Q7CkBAIC0xNjAsOCArMTg5LDgg
QEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0
KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAogICAgIGZpbHRlci5kZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oKTsKIAotICAgIGZpbHRlci5hbGxvY2F0ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKGRlc3RpbmF0aW9uQ29udGV4dCk7Ci0gICAgYXV0byogc291cmNlR3JhcGhpY3NDb250
ZXh0ID0gZmlsdGVyLmlucHV0Q29udGV4dCgpOworICAgIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoKTsKKyAgICBhdXRvKiBzb3VyY2VHcmFwaGljc0NvbnRleHQgPSBpbnB1dENvbnRleHQo
KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCB8fCBmaWx0ZXIuZmlsdGVyUmVnaW9u
KCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhmaWx0ZXIuZmls
dGVyUmVnaW9uKCkuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE3Niwy
NiArMjA1LDE3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZp
bHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29u
dGV4dCkKIHsKLSAgICBBU1NFUlQobV9maWx0ZXItPmlucHV0Q29udGV4dCgpKTsKKyAgICBBU1NF
UlQoaW5wdXRDb250ZXh0KCkpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVh
bSA8PCAiXG5SZW5kZXJMYXllckZpbHRlcnMgIiA8PCB0aGlzIDw8ICIgYXBwbHlGaWx0ZXJFZmZl
Y3QiKTsKIAotICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKLSAgICBmaWx0ZXIuaW5wdXRD
b250ZXh0KCktPnJlc3RvcmUoKTsKLQotICAgIGZpbHRlci5hcHBseSgpOworICAgIGlucHV0Q29u
dGV4dCgpLT5yZXN0b3JlKCk7CiAKLSAgICAvLyBHZXQgdGhlIGZpbHRlcmVkIG91dHB1dCBhbmQg
ZHJhdyBpdCBpbiBwbGFjZS4KLSAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLm91dHB1
dFJlY3QoKTsKLSAgICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zm
c2V0LnkoKSk7Ci0KLSAgICBpZiAoYXV0byogb3V0cHV0QnVmZmVyID0gZmlsdGVyLm91dHB1dCgp
KSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZSh7IDEgLyBmaWx0ZXIuZmlsdGVy
U2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkgfSk7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwg
c25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9sYXllci5yZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQu
c2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIH0KKyAgICBkZXN0aW5hdGlvbkNvbnRl
eHQuc2NhbGUoeyAxIC8gbV9maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIG1fZmls
dGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH0pOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5k
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdlLmdldCgpLCAqbV9maWx0ZXIpOwor
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZShtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CiAK
LSAgICBmaWx0ZXIuY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CisgICAgbV9maWx0ZXItPmNs
ZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMs
IHN0cmVhbSA8PCAiUmVuZGVyTGF5ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVy
RWZmZWN0IGRvbmVcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVycy5oCmluZGV4IDNhNzQ5OTVmMWY4NGJkOTczZWQyYjg4ZDMwNDM5N2I0YzQ0ZGEw
MzcuLmM3YTQ4ODM5YTIxOTJjODFjYmVhMDM2ZjFhYzE4MjNmY2ZmYWY5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTY5LDE0ICs2OSwx
OSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0
RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQor
ICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CisgICAgdm9pZCBhbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAKICAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKIAogICAg
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1faW50ZXJuYWxTVkdSZWZlcmVuY2VzOwogICAgIFZl
Y3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4+IG1fZXh0ZXJuYWxT
VkdSZWZlcmVuY2VzOwogCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwor
ICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKICAgICBSZWZQdHI8Q1NTRmlsdGVyPiBt
X2ZpbHRlcjsKICAgICBMYXlvdXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OworICAgIGJvb2wgbV9n
cmFwaGljc0J1ZmZlckF0dGFjaGVkIHsgZmFsc2UgfTsKICAgICAKICAgICAvLyBEYXRhIHVzZWQg
cGVyIHBhaW50CiAgICAgTGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
aW5kZXggOTM0ZmM4M2E2NDI3YzNjZjE0NWNhZmE0NzJlODA1YTJmZGQ1YmYxZS4uYmNhZDRiNzdk
Mzk5NTc4NWNjOGJmOWQ3NDlhNjIyY2NiNjllZTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIy
OCwzMSArMjI4LDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGF1dG8gbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEuZmlsdGVyLT5sYXN0RWZm
ZWN0KCk7Ci0KLSAgICBpZiAobGFzdEVmZmVjdCAmJiAhZmlsdGVyRGF0YS5ib3VuZGFyaWVzLmlz
RW1wdHkoKSAmJiAhbGFzdEVmZmVjdC0+ZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIHJlYWwgZmlsdGVyaW5nIG9mIHRoZSBvYmpl
Y3QuIEl0IGp1c3QgbmVlZHMgdG8gYmUgY2FsbGVkIG9uIHRoZQotICAgICAgICAvLyBpbml0aWFs
IGZpbHRlcmluZyBwcm9jZXNzLiBXZSBqdXN0IHRha2UgdGhlIHN0b3JlZCBmaWx0ZXIgcmVzdWx0
IG9uIGEKLSAgICAgICAgLy8gc2Vjb25kIGRyYXdpbmcuCi0gICAgICAgIGlmIChmaWx0ZXJEYXRh
LnN0YXRlICE9IEZpbHRlckRhdGE6OkJ1aWx0KQotICAgICAgICAgICAgZmlsdGVyRGF0YS5maWx0
ZXItPnNldFNvdXJjZUltYWdlKFdURk1vdmUoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVy
KSk7Ci0KLSAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0
IChmaWx0ZXJEYXRhLT5zdGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCi0gICAgICAgIGlmICgh
bGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUg
PSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuZmlsdGVyLT5h
cHBseSgpOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdFByZW11bHRpcGxpZWRSZXN1
bHRJZk5lZWRlZCgpOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgICAgIH0KKyAgICBp
ZiAoIWZpbHRlckRhdGEuYm91bmRhcmllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmlsdGVyRGF0
YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0OwotCi0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IGxhc3RFZmZlY3QtPmZpbHRlckltYWdlKCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0SW1h
Z2UgPSByZXN1bHQtPmltYWdlQnVmZmVyKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEg
LyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOwotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgcmVzdWx0LT5hYnNvbHV0
ZUltYWdlUmVjdCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmls
dGVyLT5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEg
LyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOworICAgICAgICBj
b250ZXh0LT5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNC
dWZmZXIuZ2V0KCksICpmaWx0ZXJEYXRhLmZpbHRlcik7CisgICAgICAgIGNvbnRleHQtPnNjYWxl
KGZpbHRlckRhdGEuc2NhbGUpOwogICAgIH0KKwogICAgIGZpbHRlckRhdGEuc291cmNlR3JhcGhp
Y0J1ZmZlciA9IG51bGxwdHI7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0QXBwbHlSZXNv
dXJjZSBkb25lXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuY3BwCmluZGV4IGRmNzM3NDk5MzFmZGRkY2IzMWRkZWRhYzc0NjAxZDBjZmU4
NzRkYjYuLjBhZjhkZmJjMDE0MTMzNWYyMTlhMWFkNWQzY2I0MGYwNDU5ZWRkNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAt
ODYsMTQgKzg2LDE0IEBAIGJvb2wgU1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRl
cikKICAgICByZXR1cm4gYXBwbHkoKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXI6OmFwcGx5KCkKK1Jl
ZlB0cjxGaWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseSgpCiB7CiAgICAgQVNTRVJUKCFtX2V4
cHJlc3Npb24uaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZXhwcmVzc2lv
bikgewogICAgICAgICBpZiAoIWVmZmVjdC0+YXBwbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBsYXN0RWZmZWN0KCktPmZpbHRlckltYWdlKCk7CiB9CiAKIElu
dE91dHNldHMgU1ZHRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggODk2ZmJiMjYzN2UyYjVjNjM1
YTQ5MzI4Nzg4ZDc1OTEwNDZiMWE2OS4uMjE3OTQwNWJkMDlmMDcxMjMzNzZjYWEyZjk4OWQ0ZGRj
ZWRkZWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBGaWx0ZXJJbWFnZTsKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0ZXJF
bGVtZW50OwogCkBAIC0zNywxNCArMzgsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8
U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gpOwogICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZH
RmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRl
ckVmZmVjdCogcHJldmlvdXNFZmZlY3QpOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVy
U2NhbGUoRmxvYXRTaXplKSBjb25zdCBmaW5hbDsKLQogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3Vu
ZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KLSAgICBib29s
IGFwcGx5KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0
VmVjdG9yJiYgZXhwcmVzc2lvbikgeyBtX2V4cHJlc3Npb24gPSBXVEZNb3ZlKGV4cHJlc3Npb24p
OyB9CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2V4cHJlc3Npb24uaXNFbXB0eSgpID8gbV9leHByZXNzaW9uLmxhc3QoKSA6IG51bGxwdHI7
IH0KIAorICAgIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSkgY29uc3Qg
ZmluYWw7CisKKyAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KCkgb3ZlcnJpZGU7CisKIHBy
aXZhdGU6CiAgICAgU1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9k
ZSk7CiAK
</data>
<flag name="commit-queue"
          id="470363"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445224</attachid>
            <date>2021-11-27 14:16:50 -0800</date>
            <delta_ts>2021-11-27 19:14:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211127141649.patch</filename>
            <type>text/plain</type>
            <size>39950</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwZmQ3OWZhZGFjM2Vm
ZTUwM2YzM2Y1NjYxYzM3ZTg4YWY0YmIyNC4uOWE2YWMxNDM5N2I0OTMxNmE3YTU3YmVhZmNiMGYx
ZWE5NmMyM2RjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTExLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBHUFVQ
cm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlci4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZmZXIg
YW5kIHRoZSBzb3VyY2VJbWFnZUJ1ZmZlclJlY3QKKyAgICAgICAgb2YgdGhlIENTU0ZpbHRlciBp
cyBtb3ZlZCB0byBSZW5kZXJMYXllckZpbHRlcnMuIFRoaXMgbmV3IHJlbGF0aW9uc2hpcCBpcwor
ICAgICAgICBzaW1pbGFyIHRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlciBhbmQgU1ZHRmlsdGVyLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YXJpYXRpb25BeGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBs
eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXI6OkZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZv
ckRpcnR5UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dFJlY3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
RmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6YXBw
bHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDIx
LTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJFZmZlY3RzIGNyZWF0ZSBGaWx0ZXJFZmZlY3RBcHBsaWVy
cyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgRmlsdGVyRWZmZWN0OjphcHBseSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA5YmE5MGRmMTE2MGE1MGM1ZTYxN2IwZDA5YWY1YTA0NjBkNDNiOGZiLi5iY2Y3
MzNmNDcxNGU1YWQyODlmYjA4MDhmYjE4MmZhYTYzZjNhZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE0MjMsNiArMTQyMyw5IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAog
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVySW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGI2ZWMxNDQ5YTg0OWNkYjRmOWIxNjY3MTc4NzYyYzc4
NDhiZjEyNDYuLjA3N2FmZjcxOGZjOTg1M2QwNTk2OTI4Yjc4Y2U2NjYxZTBjYzUxYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTAwLDYgKzIxMDAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFT2Zmc2V0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRp
bmcuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDczNTRlYmFiZGM0
NjlmODEzOWI5ZmNjNjAyOGZkYTU1ZTI4NTcxMTguLjVjOTIzODUxODA1ZmNhZDhhYzc3Yzk5MWNh
YjgyYTZiMGRkMjQ2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4OCw3ICs0ODgsNiBAQAogCQkxQTQ5NEVERjBBMTIzRjRD
MDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ5NEVERDBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1
bWVudEZyYWdtZW50LmggKi87IH07CiAJCTFBNEEyREYwMEExQjg1MkEwMEM4MDdGOCAvKiBKU0hU
TUxBbmNob3JFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTRBMkRFQzBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5o
ICovOyB9OwogCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOTU0QzBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFGQTJFREYyNzUwNkZERTAwMTFDMTVEIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUZBMkVENjI3NEY3ODM3MDAxMUMxNUQgLyogU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTREQTQyMjFDREQzQTgzMDBGNDQ3M0MgLyogTGlua0ljb25Db2xsZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNERBNDIwMUNERDNBODMw
MEY0NDczQyAvKiBMaW5rSWNvbkNvbGxlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNTY5RDEyMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTU2OUNFMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5oICovOyB9OwogCQkxQTU2OUQx
MzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0U0MEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tICovOyB9OwpAQCAtMTY4OSw2ICsxNjg4LDcgQEAKIAkJNTFGNzk4RjAxQkU4ODBF
NzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFGNzk4RUMxQkU4ODBEMzAwOEFFNDkxIC8qIElEQkluZGV4SW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
Rjg4NkMwMUYzMjkyMzEwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjg4NkJGMUYzMjky
MDcwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTFGQTJE
NzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5
IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTUxRkEyRURGMjc1MDZGREUwMDExQzE1RCAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFG
QjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAwODIxMTc2IC8q
IEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNjdEQzFBRTZCODJGMDBEMDZDNUEgLyogQ29u
dGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5z
aW9uU3R5bGVTaGVldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUyNzNDQzc3MjU2MTAzQ0YwMDg1MDAwNyAvKiBQbGF0Zm9ybVhSQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQzc1MjU2
MTAzQ0YwMDg1MDAwNyAvKiBQbGF0Zm9ybVhSQ29jb2EuaCAqLzsgfTsKQEAgLTIzMDcsNiArMjMw
Nyw4IEBACiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4
NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1
QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJCOEIwMjcyNzUyMzMxQTAwRjc1
MkFBIC8qIEZpbHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkgLyogRmlsdGVyRnVuY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkI4
QjAyODI3NTI0Qzg4MDBGNzUyQUEgLyogRmlsdGVySW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDM1RUY0MjczRDA3NjcwMDA1RTdFRSAvKiBG
aWx0ZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNF
MTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY2NjdFMTI2MEMyNkFDMDBFRTM2QUQg
LyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjY2N0RGMjYwQzI2NDQwMEVFMzZBRCAvKiBEaWFnbm9zdGlj
TG9nZ2luZ0RvbWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rv
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTND
RkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCAqLzsgfTsKQEAg
LTI3MDksNyArMjcxMSw3IEBACiAJCTg0MjI0MTk0MTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NDIyNDE5MTEwN0U3OEE3MDA3NjZBODcgLyogU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oICovOyB9OwogCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1Nv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQz
MDBCRDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuaCAqLzsgfTsKIAkJ
ODQzMDBCRDgxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAwQkQ3MTIwQzlBRDQwMDIxOTU0
QSAvKiBTVkdQYXRoU291cmNlLmggKi87IH07Ci0JCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAv
KiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0NUU3MkY3MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCAqLzsgfTsKKwkJODQ1RTcyRjgw
RkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg0NUU3MkZD
MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkZBMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0
ZXIuaCAqLzsgfTsKIAkJODQ2NTBFN0UyMzg3QUQ3RDAwNjI2NkUyIC8qIE1lZGlhUXVlcnlMaXN0
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0
NjUwRTdDMjM4N0FEN0MwMDYyNjZFMiAvKiBNZWRpYVF1ZXJ5TGlzdEV2ZW50LmggKi87IH07CiAJ
CTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NzMwRDVBMTI0OEYwQjMw
MEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCAqLzsgfTsKQEAgLTEwOTM1LDYgKzEwOTM3
LDcgQEAKIAkJNzJCNEVGNzQyNzRFMjMzMzAwMjkzQzJGIC8qIEZFQmxlbmRTb2Z0d2FyZUFwcGxp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRkVCbGVuZFNvZnR3YXJlQXBwbGllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkI0RUY3NTI3NEUyMzM0MDAyOTNDMkYgLyogRkVCbGVuZFNv
ZnR3YXJlQXBwbGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGRUJsZW5kU29mdHdhcmVBcHBs
aWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCNEVGN0MyNzRFRTM3RjAw
MjkzQzJGIC8qIEZpbHRlckltYWdlVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckltYWdl
VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjhCMDI0Mjc1MjI0RTQw
MEY3NTJBQSAvKiBGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUlt
YWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjAyMiw2ICsyNjAy
NSw3IEBACiAJCQkJODQ3MzBENkUxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFVGlsZS5oICovLAogCQkJ
CTg0NzMwRDZGMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuY3BwICovLAogCQkJCTg0
NzMwRDcwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuaCAqLywKKwkJCQk3MkI4QjAy
NDI3NTIyNEU0MDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLywKIAkJCQk4NDVFNzJGNzBGRDI2MUVF
MDBBODdENzkgLyogRmlsdGVyLmggKi8sCiAJCQkJMDhDOTI1MTcwRkNDN0M0QTAwNDgwREVDIC8q
IEZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZp
bHRlckVmZmVjdC5oICovLApAQCAtMzM1NjgsNiArMzM1NzIsOCBAQAogCQkJCTA4QzkyNTFBMEZD
QzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJDODU2
NTM0MjRDMEY3M0MwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkNBQTRBM0EyNEJFMThCNzAwOURFRTcwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkI4QjAyNzI3NTIzMzFBMDBGNzUyQUEg
LyogRmlsdGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQjhCMDI4Mjc1MjRDODgw
MEY3NTJBQSAvKiBGaWx0ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUxNDk5
NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlF
Q0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXgg
ZDMyZmZiY2MzYzU4NjJjYjFlY2E2ZDZhZWQ5ODJkMjBkN2Q5NDlmZS4uMTQ1ZGQ5ZDdjM2YwZjc4
ZDg2ZTlmNDk4NTcxNzg0OTNhZDE5ODBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcApAQCAtMTMwLDE0ICsxMzAsMTAgQEAgUmVmUHRyPEltYWdlPiBDU1NG
aWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxv
YXRTaXoKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIs
IG1fZmlsdGVyT3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAg
ICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAgICBjc3NGaWx0ZXItPnNldFNv
dXJjZUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpKTsKLSAgICBjc3NGaWx0ZXItPmFwcGx5KCk7
CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBzb3VyY2VJbWFnZS0+ZmlsdGVyZWRJbWFnZSgqY3NzRmls
dGVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCi0gICAgYXV0byogb3V0cHV0ID0gY3NzRmls
dGVyLT5vdXRwdXQoKTsKLSAgICBpZiAoIW91dHB1dCkKLSAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7Ci0KLSAgICByZXR1cm4gb3V0cHV0LT5jb3B5SW1hZ2UoKTsKKyAgICByZXR1
cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAogdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpm
aWx0ZXJJbWFnZUNoYW5nZWQoY29uc3QgSW50UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggOTUxYWU5
YmUzODJjMTNmZDk3Mjg5ZWI0MzIzYmFlNDM5YzYzMjNlNi4uNzUwZGI0ZWU4OTE2NjBmYTRiZWNl
YmM0NDQ3YzY4NWNlNWM0ODQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjUsNiArMjUsOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlckltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgog
CkBAIC0xMzcsNiArMTM5LDI0IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCisgICAgUmVmUHRyPEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYgZmlsdGVy
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRD
cmVhdGVkKCk7CisgICAgICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5m
bHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5
KHRoaXMpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSByZXN1bHQtPmltYWdlQnVmZmVyKCk7Cisg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgpOworICAgIH0KKwogICAgIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBiMjIxOGZhYTNiZDU2YjM5
NTQ0MTQxNWZkOGUxZjY5NjcwOWVkZmRlLi44MDE4Njk2ZDQ2OTVlZThhMGJiNTY5OTU4OTYwMzFl
YTkwZWM1MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkJpZGlS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgi
CisjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0Lmgi
CiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtNjI5
LDYgKzYzMSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0CiAgICAgSW1hZ2VCdWZmZXI6OmRy
YXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgRmlsdGVyJiBmaWx0ZXIpCit7CisgICAgYXV0
byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkoc291cmNlSW1hZ2UpOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHJlc3VsdC0+aW1h
Z2VCdWZmZXIoKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBkcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCByZXN1bHQtPmFic29sdXRlSW1hZ2VSZWN0
KCkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QpCiB7CiAgICAgUGF0aCBwYXRoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwYzE0MTQz
ZWQ4ZDZhMzZkODA0YmE1MDJjMjI0N2VhZGM1MDUyMjM3Li4zZDhkM2E3MTI1M2UzNjMwZjhkOTVj
ZGRkNDA5NmJiNjQyMjg5YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODUsNiArODUsNyBAQCB0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgVUludDg7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5z
Zm9ybTsKK2NsYXNzIEZpbHRlcjsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFk
aWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKQEAgLTQ1MSw2ICs0
NTIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSwgRmlsdGVyJik7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIAogI2lm
IEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCmluZGV4IGYzZmQyZmI2NDY4Y2ZiNzkzNDU3ZmMzMDE4NDcxOTAzN2IwYjhmNWQu
LmQ3Yjc1NjRhNTliOGMyNjc2YTc2ZTE5MWM1YTA3OTU5NjE4OTg2MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtNDIsNiArNDIsOCBA
QCBjbGFzcyBEcmF3aW5nQ29udGV4dDsKIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlOwogfQogCitj
bGFzcyBGaWx0ZXI7CisKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlQnVmZmVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1
cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgpAQCAtMTA3LDYgKzEwOSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5v
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmls
dGVyJikgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDY0OGE1MjFmODJlNDBiNTEwNDM4YjZlNDkxMjc5
YjIyYzM4NWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZpbHRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKKyAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5
cGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQoreworfQorCitGaWx0ZXI6OkZp
bHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2Fs
ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmls
dGVyUmVnaW9uKQorICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKKyAgICAsIG1fZmls
dGVyU2NhbGUoZmlsdGVyU2NhbGUpCisgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFn
ZVJlY3QpCisgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCit7Cit9CisKK1JlZlB0
cjxGaWx0ZXJJbWFnZT4gRmlsdGVyOjphcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UpCit7
CisgICAgc2V0U291cmNlSW1hZ2Uoc291cmNlSW1hZ2UpOworCisgICAgYXV0byByZXN1bHQgPSBh
cHBseSgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmVz
dWx0LT50cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4
IDg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMxN2JmMjk4YzBlNDEuLjY1MGU2YzBiOTEzYWY1
MzQxOWI1OWY0Y2ZhMzMwOGYxM2Q3ODE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEZpbHRlckltYWdl
OwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgRmlsdGVyRnVuY3Rpb24gewogICAgIHVzaW5nIEZp
bHRlckZ1bmN0aW9uOjphcHBseTsKQEAgLTQ0LDI5ICs0NCwyMCBAQCBwdWJsaWM6CiAgICAgRmxv
YXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CiAg
ICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsg
bV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KIAotICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUg
KiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdmlydHVhbCBib29sIGFwcGx5KCkgPSAwOwotCiAgICAg
SW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiYmIHNv
dXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogCiAg
ICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJp
bmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9CiAKKyAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7
IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQorCisgICAgdmlydHVhbCBSZWZQdHI8Rmls
dGVySW1hZ2U+IGFwcGx5KCkgPSAwOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGaWx0ZXJJ
bWFnZT4gYXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKTsKKwogcHJvdGVjdGVkOgotICAg
IEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSkKLSAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAgICAgICAsIG1f
ZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgewotICAgIH0KLQotICAgIEZpbHRlcihGaWx0
ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9u
KQotICAgICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0
ZXJTY2FsZShmaWx0ZXJTY2FsZSkKLSAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJ
bWFnZVJlY3QpCi0gICAgICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQotICAgIHsK
LSAgICB9CisgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSk7CisgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9maWx0ZXJTY2FsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaAppbmRleCAxMGMzOWQ5YzhkYzBkMTY3YjY3ODA2Yjg1YTcyNjkxMWE1NTliZWZj
Li44ZDI2MDRiYjQwMjgzYjQxMzZiZmVmYWE3N2VkNzY5Y2RhYmZjYjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5o
CkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNp
bmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXI7CiBj
bGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKLWNsYXNzIFBpeGVsQnVmZmVyOwog
CiBjbGFzcyBGaWx0ZXJJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckltYWdlPiB7CiBw
dWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KICAgICBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KIAotICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOwogICAgIFBpeGVsQnVmZmVyKiBwaXhl
bEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9
IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4
IDBhYzY4OTljMzlhZmQyYzMzN2Q0M2E5ZjAyNGJkOTU0Nzc1Y2MyOTcuLmE4NjBlMzU3YTUwOGFm
M2Q3NjRhNzNiYmJmNGY0MTI4ODcxOTYyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCkBAIC0zMzUsNDggKzMzNSw2IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRl
ckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENv
bnRleHQoKQotewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNv
bnRleHQoKSA6IG51bGxwdHI7Ci19Ci0KLWJvb2wgQ1NTRmlsdGVyOjp1cGRhdGVCYWNraW5nU3Rv
cmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkKLXsKLSAgICBpZiAoZmlsdGVyUmVj
dC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlclJlY3Qu
c2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGZpbHRlclJlY3QgPT0g
c291cmNlSW1hZ2VSZWN0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNldFNvdXJj
ZUltYWdlUmVjdChmaWx0ZXJSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDU1NG
aWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0
JiB0YXJnZXRDb250ZXh0KQotewotICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFp
biBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQotICAgIC8vIHNvdXJjZSBpbWFnZSBzaXplcyBzZXQu
IFdlIGp1c3QgbmVlZCB0byBhdHRhY2ggdGhlIGdyYXBoaWMKLSAgICAvLyBidWZmZXIgaWYgd2Ug
aGF2ZSBub3QgeWV0IGRvbmUgc28uCi0KLSAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VS
ZWN0KCkuc2l6ZSgpOwotICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5s
b2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7Ci0jaWYgVVNFKERJUkVDVDJEKQotICAgICAg
ICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJp
bmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odGFy
Z2V0Q29udGV4dCk7Ci0gICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVuZGVy
ZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAgICAg
ICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwot
I2VuZGlmCi0gICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlclNjYWxlKCkpOwotICAgIH0KLQotICAgIG1fZ3Jh
cGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7Ci19Ci0KIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENT
U0ZpbHRlcjo6bGFzdEVmZmVjdCgpCiB7CiAgICAgaWYgKG1fZnVuY3Rpb25zLmlzRW1wdHkoKSkK
QEAgLTQwOCw0NSArMzY2LDEzIEBAIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVybWVkaWF0ZVJl
c3VsdHMoKQogICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1bHQoKTsKIH0KIAotYm9vbCBDU1NG
aWx0ZXI6OmFwcGx5KCkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmlsdGVyOjphcHBseSgpCiB7
Ci0gICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7Ci0gICAgaWYgKG1fZmlsdGVyUmVuZGVy
ZXIpIHsKLSAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKCp0aGlzLCAqZWZm
ZWN0KTsKLSAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAg
ICAgICAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKICAgICAgICAg
aWYgKCFmdW5jdGlvbi0+YXBwbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotCi0gICAgZWZmZWN0LT50cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFn
ZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0KQotewotICAgIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5j
dGlvbiBpcyB0aGUgYXJlYSBpbiB0aGUgImZpbHRlckJveFJlY3QiIHRoYXQgbmVlZHMgdG8gYmUg
cmVwYWludGVkLCBzbyB0aGF0IHdlIGZ1bGx5IGNvdmVyIHRoZSAiZGlydHlSZWN0Ii4KLSAgICBh
dXRvIHJlY3RGb3JSZXBhaW50ID0gZGlydHlSZWN0OwotICAgIGlmIChoYXNGaWx0ZXJUaGF0TW92
ZXNQaXhlbHMoKSkKLSAgICAgICAgcmVjdEZvclJlcGFpbnQgKz0gb3V0c2V0cygpOwotICAgIHJl
Y3RGb3JSZXBhaW50LmludGVyc2VjdChmaWx0ZXJCb3hSZWN0KTsKLSAgICByZXR1cm4gcmVjdEZv
clJlcGFpbnQ7Ci19Ci0KLUltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpCi17Ci0gICAg
aWYgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpCi0g
ICAgICAgIHJldHVybiBtX2ZpbHRlclJlbmRlcmVyLT5vdXRwdXQoKTsKLQotICAgIGlmIChhdXRv
IHJlc3VsdCA9IGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdC0+aW1hZ2VCdWZmZXIoKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBs
YXN0RWZmZWN0KCktPmZpbHRlckltYWdlKCk7CiB9CiAKIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3Vy
Y2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCkBAIC00NjMsMTgg
KzM4OSw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiAgICAgICAgICAgICBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1
bmN0aW9uLnB0cigpKS0+c2V0U291cmNlSW1hZ2VSZWN0KHNjYWxlZFNvdXJjZUltYWdlUmVjdCk7
CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSBmYWxz
ZTsKLX0KLQotSW50UmVjdCBDU1NGaWx0ZXI6Om91dHB1dFJlY3QoKQotewotICAgIGF1dG8gZWZm
ZWN0ID0gbGFzdEVmZmVjdCgpOwotCi0gICAgaWYgKGVmZmVjdC0+aGFzUmVzdWx0KCkgfHwgKG1f
ZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAg
ICByZXR1cm4gZWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpIC0gSW50UG9pbnQoZmlsdGVyUmVn
aW9uKCkubG9jYXRpb24oKSk7Ci0KLSAgICByZXR1cm4geyB9OwogfQogCiBJbnRPdXRzZXRzIENT
U0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgK
aW5kZXggYzM0MDg3MWIyNzNlMjI5MWM2ODAyZDUxZjk1ODI4NGQ5YTAxM2FkMy4uNGI2ZmRlOWI3
YTU5NDY3NWI3YmE5MWVlYzkzM2I2MGQzNmE5YThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbHRlckVmZmVjdDsKIGNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyOworY2xhc3MgRmlsdGVy
SW1hZ2U7CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwpAQCAtNTUsMjUgKzU2LDE0IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlT
ZWN1cml0eU9yaWdpbjsgfQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgp
OwotICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW50T3V0c2V0cyBv
dXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVz
dWx0cygpOwotICAgIGJvb2wgYXBwbHkoKSBvdmVycmlkZTsKLQotICAgIEltYWdlQnVmZmVyKiBv
dXRwdXQoKTsKLQotICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlY3QpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQotICAgIEludFJlY3Qgb3V0cHV0UmVjdCgpOwotCi0g
ICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExh
eW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCk7Cisg
ICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IENTU0ZpbHRlcihib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJU
aGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiwgZmxvYXQgc2NhbGVGYWN0b3Ip
OwogCi0gICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNG
aWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiB7IGZhbHNlIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5k
ZXggOTdmZTk2OTMxNGIyNWVhMzA1NDIxYmExZDYwM2U4MmYxNWQ1ZjIyMC4uOTYwNmQwMzIyNzFh
YWQ0NTEwYzIxYjY0NmFlNjMxNDYzMjU4ZDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKQEAgLTEyNCwzMCArMTI0LDU5IEBAIHZvaWQg
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
ZmxvYXQgc2NhbGVGYWN0b3IsCiAgICAgbV9maWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5k
ZXJlci5zdHlsZSgpLmZpbHRlcigpLCByZW5kZXJpbmdNb2RlLCBzY2FsZUZhY3Rvcik7CiB9CiAK
LUdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKK0dyYXBoaWNzQ29u
dGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQoreworICAgIHJldHVybiBt
X3NvdXJjZUltYWdlID8gJm1fc291cmNlSW1hZ2UtPmNvbnRleHQoKSA6IG51bGxwdHI7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkK
K3sKKyAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBJbnRTaXplIHNpemUgeyBtX3NvdXJjZUltYWdlUmVjdC5zaXplKCkgKiBtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSB9OworICAgIGF1dG8gaG9zdFdpbmRvdyA9IG1fbGF5ZXIucmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCkucm9vdCgpID8gbV9sYXllci5yZW5kZXJlcigpLnZpZXcoKS5m
cmFtZVZpZXcoKS5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICBtX3NvdXJj
ZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBtX2ZpbHRlci0+cmVuZGVyaW5nTW9k
ZSgpLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdp
bmRvdyk7CisKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IG1fc291cmNlSW1h
Z2UtPmNvbnRleHQoKTsKKyAgICBpbWFnZUNvbnRleHQuc2NhbGUobV9maWx0ZXItPmZpbHRlclNj
YWxlKCkpOworCisgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKK30KKworR3Jh
cGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBo
aWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJl
Y3QmIGxheWVyUmVwYWludFJlY3QpCiB7CiAgICAgaWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7Ci0gICAgYXV0byBm
aWx0ZXJTb3VyY2VSZWN0ID0gZmlsdGVyLmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0KTsKLSAgICBpZiAoZmlsdGVyU291cmNlUmVjdC5p
c0VtcHR5KCkpCisgICAgYXV0byBmaWx0ZXJTb3VyY2VSZWN0ID0gZGlydHlSZWN0OworICAgIGlm
IChmaWx0ZXIuaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkpCisgICAgICAgIGZpbHRlclNvdXJj
ZVJlY3QgKz0gZmlsdGVyLm91dHNldHMoKTsKKyAgICBmaWx0ZXJTb3VyY2VSZWN0LmludGVyc2Vj
dChmaWx0ZXJCb3hSZWN0KTsKKworICAgIGlmIChmaWx0ZXJTb3VyY2VSZWN0LmlzRW1wdHkoKSB8
fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZmlsdGVyU291cmNlUmVjdC5zaXplKCkp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdT
dG9yZSA9IGZpbHRlci51cGRhdGVCYWNraW5nU3RvcmVSZWN0KGZpbHRlclNvdXJjZVJlY3QpOwor
ICAgIGlmIChmaWx0ZXJTb3VyY2VSZWN0ICE9IG1fc291cmNlSW1hZ2VSZWN0KSB7CisgICAgICAg
IG1fc291cmNlSW1hZ2VSZWN0ID0gZmlsdGVyU291cmNlUmVjdDsKKyAgICAgICAgZmlsdGVyLnNl
dFNvdXJjZUltYWdlUmVjdChmaWx0ZXJTb3VyY2VSZWN0KTsKKyAgICAgICAgbV9ncmFwaGljc0J1
ZmZlckF0dGFjaGVkID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8gRklYTUU6IHRoaXMgY2FsbCBz
aG91bGQgYmUgbW92ZWQgdG8gQ1NTRmlsdGVyOjpjcmVhdGUoKSB3aGVuIEZpbHRlckVmZmVjdCBk
b2VzIG5vdCBzdG9yZSBpdHMgZ2VvbWV0cnkuCi0gICAgaWYgKGhhc1VwZGF0ZWRCYWNraW5nU3Rv
cmUgfHwgIW1fZmlsdGVyLT5sYXN0RWZmZWN0KCkpIHsKKyAgICBpZiAoIW1fZ3JhcGhpY3NCdWZm
ZXJBdHRhY2hlZCB8fCAhbV9maWx0ZXItPmxhc3RFZmZlY3QoKSkgewogICAgICAgICAvLyBJZiB0
aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdp
bGwgc3RpbGwgYXR0ZW1wdCB0bwogICAgICAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vz
c2luZyAoZS5nLiBjb21wb3NpdGluZyksIGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KICAgICAg
ICAgaWYgKCFtX2ZpbHRlci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIHJlbmRlcmVy
LnN0eWxlKCkuZmlsdGVyKCksIEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJQcm9wZXJ0eSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWZpbHRlci5o
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkKICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGRpcnR5
UmVjdDsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUpCisg
ICAgICAgIGlmICghbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICAgICAgbV9yZXBh
aW50UmVjdCA9IGZpbHRlclNvdXJjZVJlY3Q7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9yZXBhaW50UmVjdCA9IGRpcnR5UmVjdDsKQEAgLTE2MCw4ICsxODksOCBAQCBHcmFwaGljc0Nv
bnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250
ZXh0JiBkZXN0aW5hdAogCiAgICAgZmlsdGVyLmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbigpOwogCi0gICAgZmlsdGVyLmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoZGVzdGlu
YXRpb25Db250ZXh0KTsKLSAgICBhdXRvKiBzb3VyY2VHcmFwaGljc0NvbnRleHQgPSBmaWx0ZXIu
aW5wdXRDb250ZXh0KCk7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOworICAg
IGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgpOwogICAgIGlmICgh
c291cmNlR3JhcGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24oKS5pc0VtcHR5KCkg
fHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0ZXJSZWdpb24oKS5z
aXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc2LDI2ICsyMDUsMTcgQEAg
R3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdy
YXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAogdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFwcGx5
RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQogewotICAg
IEFTU0VSVChtX2ZpbHRlci0+aW5wdXRDb250ZXh0KCkpOworICAgIEFTU0VSVChpbnB1dENvbnRl
eHQoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJcblJlbmRl
ckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZpbHRlckVmZmVjdCIpOwogCi0gICAg
YXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwotICAgIGZpbHRlci5pbnB1dENvbnRleHQoKS0+cmVz
dG9yZSgpOwotCi0gICAgZmlsdGVyLmFwcGx5KCk7CisgICAgaW5wdXRDb250ZXh0KCktPnJlc3Rv
cmUoKTsKIAotICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBkcmF3IGl0IGluIHBs
YWNlLgotICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0UmVjdCgpOwotICAg
IGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKLQot
ICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCkpIHsKLSAgICAgICAg
ZGVzdGluYXRpb25Db250ZXh0LnNjYWxlKHsgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLndpZHRo
KCksIDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9KTsKLSAgICAgICAgZGVzdGlu
YXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVyLCBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX2xheWVyLnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZShmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7Ci0gICAgfQorICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZSh7IDEg
LyBtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gbV9maWx0ZXItPmZpbHRlclNj
YWxlKCkuaGVpZ2h0KCkgfSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJlZElt
YWdlQnVmZmVyKG1fc291cmNlSW1hZ2UuZ2V0KCksICptX2ZpbHRlcik7CisgICAgZGVzdGluYXRp
b25Db250ZXh0LnNjYWxlKG1fZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsKIAotICAgIGZpbHRlci5j
bGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKKyAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJS
ZW5kZXJMYXllckZpbHRlcnMgIiA8PCB0aGlzIDw8ICIgYXBwbHlGaWx0ZXJFZmZlY3QgZG9uZVxu
Iik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgK
aW5kZXggM2E3NDk5NWYxZjg0YmQ5NzNlZDJiODhkMzA0Mzk3YjRjNDRkYTAzNy4uYzdhNDg4Mzlh
MjE5MmM4MWNiZWEwMzZmMWFjMTgyM2ZjZmZhZjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaApAQCAtNjksMTQgKzY5LDE5IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJl
Y3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9CisgICAgR3JhcGhpY3ND
b250ZXh0KiBpbnB1dENvbnRleHQoKTsKKyAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoKTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7CiAgICAgVmVjdG9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRlcm5hbFNWR1JlZmVyZW5jZXM7
CiAKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CisgICAgRmxvYXRSZWN0
IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIFJlZlB0cjxDU1NGaWx0ZXI+IG1fZmlsdGVyOwogICAg
IExheW91dFJlY3QgbV9kaXJ0eVNvdXJjZVJlY3Q7CisgICAgYm9vbCBtX2dyYXBoaWNzQnVmZmVy
QXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIAogICAgIC8vIERhdGEgdXNlZCBwZXIgcGFpbnQKICAg
ICBMYXlvdXRQb2ludCBtX3BhaW50T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA5MzRmYzgz
YTY0MjdjM2NmMTQ1Y2FmYTQ3MmU4MDVhMmZkZDViZjFlLi5iY2FkNGI3N2QzOTk1Nzg1Y2M4YmY5
ZDc0OWE2MjJjY2I2OWVlNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjI4LDMxICsyMjgsMTMg
QEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
YXV0byBsYXN0RWZmZWN0ID0gZmlsdGVyRGF0YS5maWx0ZXItPmxhc3RFZmZlY3QoKTsKLQotICAg
IGlmIChsYXN0RWZmZWN0ICYmICFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpICYmICFs
YXN0RWZmZWN0LT5maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVjdC4gSXQganVzdCBu
ZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCi0gICAgICAgIC8vIGluaXRpYWwgZmlsdGVyaW5nIHBy
b2Nlc3MuIFdlIGp1c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciByZXN1bHQgb24gYQotICAgICAg
ICAvLyBzZWNvbmQgZHJhd2luZy4KLSAgICAgICAgaWYgKGZpbHRlckRhdGEuc3RhdGUgIT0gRmls
dGVyRGF0YTo6QnVpbHQpCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLmZpbHRlci0+c2V0U291cmNl
SW1hZ2UoV1RGTW92ZShmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIpKTsKLQotICAgICAg
ICAvLyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEt
PnN0YXRlID09IEZpbHRlckRhdGE6OkJ1aWx0KS4KLSAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5o
YXNSZXN1bHQoKSkgewotICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6
OkFwcGx5aW5nOwotICAgICAgICAgICAgZmlsdGVyRGF0YS5maWx0ZXItPmFwcGx5KCk7Ci0gICAg
ICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0UHJlbXVsdGlwbGllZFJlc3VsdElmTmVlZGVkKCk7
Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgfQorICAgIGlmICghZmlsdGVyRGF0
YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmls
dGVyRGF0YTo6QnVpbHQ7Ci0KLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbGFzdEVmZmVjdC0+
ZmlsdGVySW1hZ2UoKSkgewotICAgICAgICAgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3VsdC0+
aW1hZ2VCdWZmZXIoKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEu
ZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCByZXN1bHQtPmFic29sdXRlSW1hZ2VSZWN0KCkp
OwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNj
YWxlKCkpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEu
ZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7CisgICAgICAgIGNvbnRleHQtPmRyYXdG
aWx0ZXJlZEltYWdlQnVmZmVyKGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlci5nZXQoKSwg
KmZpbHRlckRhdGEuZmlsdGVyKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5z
Y2FsZSk7CiAgICAgfQorCiAgICAgZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVyID0gbnVs
bHB0cjsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyICIgPDwgdGhpcyA8PCAiIHBvc3RBcHBseVJlc291cmNlIGRvbmVcbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5j
cHAKaW5kZXggZGY3Mzc0OTkzMWZkZGRjYjMxZGRlZGFjNzQ2MDFkMGNmZTg3NGRiNi4uMGFmOGRm
YmMwMTQxMzM1ZjIxOWExYWQ1ZDNjYjQwZjA0NTllZGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC04NiwxNCArODYsMTQg
QEAgYm9vbCBTVkdGaWx0ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHJldHVy
biBhcHBseSgpOwogfQogCi1ib29sIFNWR0ZpbHRlcjo6YXBwbHkoKQorUmVmUHRyPEZpbHRlcklt
YWdlPiBTVkdGaWx0ZXI6OmFwcGx5KCkKIHsKICAgICBBU1NFUlQoIW1fZXhwcmVzc2lvbi5pc0Vt
cHR5KCkpOwogICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9leHByZXNzaW9uKSB7CiAgICAgICAg
IGlmICghZWZmZWN0LT5hcHBseSgqdGhpcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKTsKIH0KIAogSW50T3V0c2V0cyBTVkdG
aWx0ZXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA4OTZmYmIyNjM3ZTJiNWM2MzVhNDkzMjg3ODhkNzU5
MTA0NmIxYTY5Li4yMTc5NDA1YmQwOWYwNzEyMzM3NmNhYTJmOTg5ZDRkZGNlZGRlYzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAt
MjgsNiArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZpbHRlckltYWdl
OwogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlcjsKIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKQEAg
LTM3LDE0ICszOCwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNy
ZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0Jv
eCk7CiAgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50
JiwgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2
aW91c0VmZmVjdCk7CiAKLSAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwotCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGluZ0JveDsgfQotICAgIGJvb2wgYXBwbHkoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2V0RXhwcmVzc2lvbihGaWx0ZXJFZmZlY3RWZWN0b3ImJiBleHBy
ZXNzaW9uKSB7IG1fZXhwcmVzc2lvbiA9IFdURk1vdmUoZXhwcmVzc2lvbik7IH0KICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gIW1fZXhwcmVzc2lv
bi5pc0VtcHR5KCkgPyBtX2V4cHJlc3Npb24ubGFzdCgpIDogbnVsbHB0cjsgfQogCisgICAgRmxv
YXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplKSBjb25zdCBmaW5hbDsKKworICAg
IFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBT
VkdGaWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445228</attachid>
            <date>2021-11-27 19:14:35 -0800</date>
            <delta_ts>2021-11-27 21:14:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211127191434.patch</filename>
            <type>text/plain</type>
            <size>37320</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwZmQ3OWZhZGFjM2Vm
ZTUwM2YzM2Y1NjYxYzM3ZTg4YWY0YmIyNC4uZTIzNDQ0ZDEwODZkMzkyMjU3MzM5Njg3N2FmZTQ4
MDA4MmNhMWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBHUFVQ
cm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlci4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZmZXIg
b2YgdGhlIENTU0ZpbHRlciBpcyBtb3ZlZAorICAgICAgICB0byBSZW5kZXJMYXllckZpbHRlcnMu
IFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIAorICAgICAg
ICBkb2VzIGJ5IG1haW50YWluaW5nIHRoZSBzb3VyY2VJbWFnZSBmb3IgdGhlIFNWR0ZpbHRlci4K
KworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpGaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjppbnB1dENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6b3V0cHV0UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NT
U0ZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oOgorCiAyMDIxLTExLTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTWFrZSBGaWx0ZXJFZmZlY3RzIGNyZWF0ZSBG
aWx0ZXJFZmZlY3RBcHBsaWVycyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgRmlsdGVyRWZmZWN0Ojph
cHBseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5YmE5MGRmMTE2MGE1MGM1ZTYxN2IwZDA5YWY1
YTA0NjBkNDNiOGZiLi5iY2Y3MzNmNDcxNGU1YWQyODlmYjA4MDhmYjE4MmZhYTYzZjNhZGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTE0MjMsNiArMTQyMyw5IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQuaAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGI2ZWMxNDQ5YTg0OWNk
YjRmOWIxNjY3MTc4NzYyYzc4NDhiZjEyNDYuLjA3N2FmZjcxOGZjOTg1M2QwNTk2OTI4Yjc4Y2U2
NjYxZTBjYzUxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTAwLDYgKzIxMDAsNyBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9uLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDczNTRlYmFiZGM0NjlmODEzOWI5ZmNjNjAyOGZkYTU1ZTI4NTcxMTguLjVjOTIzODUx
ODA1ZmNhZDhhYzc3Yzk5MWNhYjgyYTZiMGRkMjQ2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4OCw3ICs0ODgsNiBAQAog
CQkxQTQ5NEVERjBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ5NEVERDBBMTIzRjRD
MDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50LmggKi87IH07CiAJCTFBNEEyREYwMEExQjg1
MkEwMEM4MDdGOCAvKiBKU0hUTUxBbmNob3JFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBMkRFQzBBMUI4NTJBMDBDODA3RjggLyogSlNI
VE1MQW5jaG9yRWxlbWVudC5oICovOyB9OwogCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyog
U2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTRBOTU0QzBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTFGQTJFREYyNzUwNkZE
RTAwMTFDMTVEIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkVENjI3NEY3ODM3MDAxMUMxNUQgLyog
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQTREQTQyMjFDREQzQTgzMDBGNDQ3M0MgLyogTGlua0ljb25D
b2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNERBNDIwMUNERDNBODMwMEY0NDczQyAvKiBMaW5rSWNvbkNvbGxlY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNTY5RDEyMEQ3RTJC
ODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTU2OUNFMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5o
ICovOyB9OwogCQkxQTU2OUQxMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTY5Q0U0MEQ3RTJC
ODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tICovOyB9OwpAQCAtMTY4OSw2ICsxNjg4LDcgQEAK
IAkJNTFGNzk4RjAxQkU4ODBFNzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNzk4RUMxQkU4ODBEMzAwOEFF
NDkxIC8qIElEQkluZGV4SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxRjg4NkMwMUYzMjkyMzEwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNl
cnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRjg4NkJGMUYzMjkyMDcwMEMxOTNFRiAvKiBKU05hdmlnYXRvclNlcnZpY2VXb3JrZXIu
aCAqLzsgfTsKIAkJNTFGQTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RkJB
MTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRkEyRURGMjc1MDZGREUwMDEx
QzE1RCAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJFRDYyNzRGNzgzNzAwMTFDMTVEIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIx
MTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNjdEQzFBRTZC
ODJGMDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkI2N0RBMUFFNkI1RTQwMEQwNkM1
QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNzNDQzc3MjU2MTAzQ0YwMDg1MDAwNyAvKiBQ
bGF0Zm9ybVhSQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNzNDQzc1MjU2MTAzQ0YwMDg1MDAwNyAvKiBQbGF0Zm9ybVhSQ29jb2EuaCAqLzsg
fTsKQEAgLTIzMDcsNiArMjMwNyw4IEBACiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBS
ZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQy
NDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5
OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyog
QW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJC
OEIwMjcyNzUyMzMxQTAwRjc1MkFBIC8qIEZpbHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyRDc1NjI3MkExNzQxMDBDNTZBMDkg
LyogRmlsdGVyRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MkI4QjAyODI3NTI0Qzg4MDBGNzUyQUEgLyogRmlsdGVySW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDM1RUY0Mjcz
RDA3NjcwMDA1RTdFRSAvKiBGaWx0ZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY2NjdF
MTI2MEMyNkFDMDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjY2N0RGMjYwQzI2NDQwMEVF
MzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBU
aW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCAqLzsgfTsKQEAgLTI3MDksNyArMjcxMSw3IEBACiAJCTg0MjI0MTk0MTA3RTc4QTcw
MDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDIyNDE5MTEwN0U3OEE3MDA3NjZBODcgLyogU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oICovOyB9OwogCQk4NDMwMEJENjEyMEM5QUFDMDAyMTk1NEEg
LyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQzMDBCRDUxMjBDOUFBQzAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdT
b3VyY2UuaCAqLzsgfTsKIAkJODQzMDBCRDgxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzAw
QkQ3MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggKi87IH07Ci0JCTg0NUU3MkY4
MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY3MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCAq
LzsgfTsKKwkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3
RDc5IC8qIEZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkZBMEZEMjYyMzkw
MEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCAqLzsgfTsKIAkJODQ2NTBFN0UyMzg3QUQ3RDAwNjI2NkUy
IC8qIE1lZGlhUXVlcnlMaXN0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg0NjUwRTdDMjM4N0FEN0MwMDYyNjZFMiAvKiBNZWRpYVF1ZXJ5TGlz
dEV2ZW50LmggKi87IH07CiAJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGln
aHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0NzMwRDVBMTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCAqLzsgfTsK
QEAgLTEwOTM1LDYgKzEwOTM3LDcgQEAKIAkJNzJCNEVGNzQyNzRFMjMzMzAwMjkzQzJGIC8qIEZF
QmxlbmRTb2Z0d2FyZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRkVCbGVuZFNvZnR3YXJlQXBw
bGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkI0RUY3NTI3NEUyMzM0MDAy
OTNDMkYgLyogRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
RUJsZW5kU29mdHdhcmVBcHBsaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJCNEVGN0MyNzRFRTM3RjAwMjkzQzJGIC8qIEZpbHRlckltYWdlVmVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZpbHRlckltYWdlVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyQjhCMDI0Mjc1MjI0RTQwMEY3NTJBQSAvKiBGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0Ux
NzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFj
a2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4
RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjAyMiw2ICsyNjAyNSw3IEBACiAJCQkJODQ3MzBENkUxMjQ4RjBCMzAwRDNBOUM5IC8q
IEZFVGlsZS5oICovLAogCQkJCTg0NzMwRDZGMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVu
Y2UuY3BwICovLAogCQkJCTg0NzMwRDcwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2Uu
aCAqLywKKwkJCQk3MkI4QjAyNDI3NTIyNEU0MDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLywKIAkJ
CQk4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8sCiAJCQkJMDhDOTI1MTcw
RkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJMDhDOTI1MTgwRkND
N0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovLApAQCAtMzM1NjgsNiArMzM1NzIsOCBA
QAogCQkJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJDODU2NTM0MjRDMEY3M0MwMEEzNzY3MyAvKiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkNBQTRBM0EyNEJFMThCNzAwOURFRTcwIC8qIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkI4QjAy
NzI3NTIzMzFBMDBGNzUyQUEgLyogRmlsdGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyQjhCMDI4Mjc1MjRDODgwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFQ0VCNkUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDlFQ0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5k
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKaW5kZXggZDMyZmZiY2MzYzU4NjJjYjFlY2E2ZDZhZWQ5ODJkMjBkN2Q5NDlm
ZS4uMTQ1ZGQ5ZDdjM2YwZjc4ZDg2ZTlmNDk4NTcxNzg0OTNhZDE5ODBiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApAQCAtMTMwLDE0ICsxMzAsMTAgQEAg
UmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGRGaWx0ZXJG
dW5jdGlvbnMocmVuZGVyZXIsIG1fZmlsdGVyT3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZp
bHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAg
ICBjc3NGaWx0ZXItPnNldFNvdXJjZUltYWdlKFdURk1vdmUoc291cmNlSW1hZ2UpKTsKLSAgICBj
c3NGaWx0ZXItPmFwcGx5KCk7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBzb3VyY2VJbWFnZS0+Zmls
dGVyZWRJbWFnZSgqY3NzRmlsdGVyKSkKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCi0gICAgYXV0
byogb3V0cHV0ID0gY3NzRmlsdGVyLT5vdXRwdXQoKTsKLSAgICBpZiAoIW91dHB1dCkKLSAgICAg
ICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7Ci0KLSAgICByZXR1cm4gb3V0cHV0LT5jb3B5
SW1hZ2UoKTsKKyAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIH0KIAogdm9pZCBDU1NG
aWx0ZXJJbWFnZVZhbHVlOjpmaWx0ZXJJbWFnZUNoYW5nZWQoY29uc3QgSW50UmVjdCYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVm
ZmVyLmgKaW5kZXggOTUxYWU5YmUzODJjMTNmZDk3Mjg5ZWI0MzIzYmFlNDM5YzYzMjNlNi4uNzUw
ZGI0ZWU4OTE2NjBmYTRiZWNlYmM0NDQ3YzY4NWNlNWM0ODQ4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAt
MjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZpbHRlci5oIgorI2lu
Y2x1ZGUgIkZpbHRlckltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJQaXhlbEJ1ZmZlci5oIgogCkBAIC0xMzcsNiArMTM5LDI0IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgUmVmUHRyPEltYWdlPiBmaWx0ZXJlZElt
YWdlKEZpbHRlciYgZmlsdGVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byogYmFja2Vu
ZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgICAgIGlmICghYmFja2VuZCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFn
ZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gZmlsdGVyLmFwcGx5KHRoaXMpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSByZXN1bHQt
PmltYWdlQnVmZmVyKCk7CisgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgp
OworICAgIH0KKwogICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCBiMjIxOGZhYTNiZDU2YjM5NTQ0MTQxNWZkOGUxZjY5NjcwOWVkZmRlLi44MDE4Njk2ZDQ2OTVl
ZThhMGJiNTY5OTU4OTYwMzFlYTkwZWM1MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisj
aW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKICNpbmNsdWRlICJG
bG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgpAQCAtNjI5LDYgKzYzMSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0CiAg
ICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgRmlsdGVyJiBm
aWx0ZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkoc291cmNlSW1hZ2UpOwor
ICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBkcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCByZXN1bHQt
PmFic29sdXRlSW1hZ2VSZWN0KCkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiB7CiAgICAgUGF0aCBwYXRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCAwYzE0MTQzZWQ4ZDZhMzZkODA0YmE1MDJjMjI0N2VhZGM1MDUyMjM3Li4zZDhk
M2E3MTI1M2UzNjMwZjhkOTVjZGRkNDA5NmJiNjQyMjg5YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODUsNiArODUs
NyBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUludDg7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKK2NsYXNzIEZpbHRlcjsKIGNsYXNzIEZsb2F0Um91bmRl
ZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZTsKQEAgLTQ1MSw2ICs0NTIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVy
KFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgRmlsdGVyJik7CisKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGYzZmQyZmI2NDY4Y2ZiNzkzNDU3ZmMz
MDE4NDcxOTAzN2IwYjhmNWQuLmQ3Yjc1NjRhNTliOGMyNjc2YTc2ZTE5MWM1YTA3OTU5NjE4OTg2
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBEcmF3aW5nQ29udGV4dDsKIHN0cnVjdCBJdGVtQnVm
ZmVySGFuZGxlOwogfQogCitjbGFzcyBGaWx0ZXI7CisKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyLCBXVEY6OkRlc3RydWN0aW9uVGhy
ZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgpAQCAtMTA3LDYgKzEwOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+
IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMg
YnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDY0OGE1MjFmODJl
NDBiNTEwNDM4YjZlNDkxMjc5YjIyYzM4NWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVySW1h
Z2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKKyAgICA6IEZpbHRl
ckZ1bmN0aW9uKGZpbHRlclR5cGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQor
eworfQorCitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxv
YXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQorICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVy
VHlwZSkKKyAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCisgICAgLCBtX3NvdXJjZUlt
YWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdp
b24pCit7Cit9CisKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVyOjphcHBseShJbWFnZUJ1ZmZl
ciogc291cmNlSW1hZ2UpCit7CisgICAgc2V0U291cmNlSW1hZ2Uoc291cmNlSW1hZ2UpOworCisg
ICAgYXV0byByZXN1bHQgPSBhcHBseSgpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgcmVzdWx0LT50cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlci5oCmluZGV4IDg4NGU3ODg3ZWVjZWQwZGU3ZmMxZjFhNDY1NDMxN2JmMjk4YzBl
NDEuLjY1MGU2YzBiOTEzYWY1MzQxOWI1OWY0Y2ZhMzMwOGYxM2Q3ODE3ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtMjks
NyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbHRlckVmZmVjdDsK
K2NsYXNzIEZpbHRlckltYWdlOwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgRmlsdGVyRnVuY3Rp
b24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKQEAgLTQ0LDI5ICs0NCwyMCBA
QCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KIAotICAg
IHZpcnR1YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNv
bnN0IHsgcmV0dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdmlydHVhbCBib29sIGFw
cGx5KCkgPSAwOwotCiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUmVmUHRy
PEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNv
dXJjZUltYWdlKTsgfQogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdN
b2RlOyB9CiAKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0
U2l6ZSBzaXplKSBjb25zdCB7IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQorCisgICAg
dmlydHVhbCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KCkgPSAwOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKTsK
KwogcHJvdGVjdGVkOgotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKLSAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJU
eXBlKQotICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgewotICAgIH0K
LQotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZmlsdGVyUmVnaW9uKQotICAgICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUp
Ci0gICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKLSAgICAgICAgLCBtX3NvdXJj
ZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCi0gICAgICAgICwgbV9maWx0ZXJSZWdpb24oZmls
dGVyUmVnaW9uKQotICAgIHsKLSAgICB9CisgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSk7CisgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFNp
emUgbV9maWx0ZXJTY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAppbmRleCAxMGMzOWQ5YzhkYzBkMTY3YjY3ODA2
Yjg1YTcyNjkxMWE1NTliZWZjLi44ZDI2MDRiYjQwMjgzYjQxMzZiZmVmYWE3N2VkNzY5Y2RhYmZj
YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJJbWFnZS5oCkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzYsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBGaWx0ZXI7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKLWNs
YXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBGaWx0ZXJJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEZpbHRlckltYWdlPiB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01v
ZGU7IH0KICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KIAotICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZl
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpOwogICAg
IFBpeGVsQnVmZmVyKiBwaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlw
bGljYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHN0ZDo6b3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCmluZGV4IDBhYzY4OTljMzlhZmQyYzMzN2Q0M2E5ZjAyNGJkOTU0Nzc1Y2My
OTcuLjE4ODBiZjYyMzkwODg0OGQ2YzZjZWQzOGExZjIzMTgwNGY0YzMyNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0zMzUsMTEgKzMzNSw2IEBAIGJvb2wgQ1NT
RmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgRmlsdGVyT3BlcmF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCog
Q1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQotewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8g
JnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51bGxwdHI7Ci19Ci0KIGJvb2wgQ1NTRmlsdGVy
Ojp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkKIHsK
ICAgICBpZiAoZmlsdGVyUmVjdC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKGZpbHRlclJlY3Quc2l6ZSgpKSkKQEAgLTM1MiwzMSArMzQ3LDYgQEAgYm9vbCBDU1NG
aWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0
KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCi17Ci0g
ICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZWZmZWN0IGNoYWluIGhhcyBiZWVuIGJ1aWx0LCBhbmQg
dGhlCi0gICAgLy8gc291cmNlIGltYWdlIHNpemVzIHNldC4gV2UganVzdCBuZWVkIHRvIGF0dGFj
aCB0aGUgZ3JhcGhpYwotICAgIC8vIGJ1ZmZlciBpZiB3ZSBoYXZlIG5vdCB5ZXQgZG9uZSBzby4K
LQotICAgIGlmIChtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8gbG9naWNhbFNpemUgPSBzb3VyY2VJbWFnZVJlY3QoKS5zaXplKCk7Ci0gICAgaWYg
KCFzb3VyY2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNh
bFNpemUpIHsKLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdl
QnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRl
eHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKLSAgICAgICAg
UmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGF1
dG8gY29udGV4dCA9IGlucHV0Q29udGV4dCgpKQotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUo
ZmlsdGVyU2NhbGUoKSk7Ci0gICAgfQotCi0gICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0g
dHJ1ZTsKLX0KLQogUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpsYXN0RWZmZWN0KCkK
IHsKICAgICBpZiAobV9mdW5jdGlvbnMuaXNFbXB0eSgpKQpAQCAtNDA4LDI0ICszNzgsMTYgQEAg
dm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiAgICAgICAgIGZ1bmN0
aW9uLT5jbGVhclJlc3VsdCgpOwogfQogCi1ib29sIENTU0ZpbHRlcjo6YXBwbHkoKQorUmVmUHRy
PEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KCkKIHsKICAgICBhdXRvIGVmZmVjdCA9IGxh
c3RFZmZlY3QoKTsKLSAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewotICAgICAgICBtX2ZpbHRl
clJlbmRlcmVyLT5hcHBseUVmZmVjdHMoKnRoaXMsICplZmZlY3QpOwotICAgICAgICBpZiAobV9m
aWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC0+dHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBtX2Z1bmN0aW9ucykgewogICAgICAgICBpZiAoIWZ1bmN0aW9uLT5hcHBseSgq
dGhpcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKICAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBlZmZlY3QtPmZpbHRlckltYWdlKCk7CiB9CiAKIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21w
dXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKQEAgLTQzOCwxNyArNDAwLDYgQEAg
TGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgZmlsdGUKICAgICByZXR1cm4gcmVjdEZvclJlcGFpbnQ7CiB9CiAK
LUltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpCi17Ci0gICAgaWYgKG1fZmlsdGVyUmVu
ZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiBt
X2ZpbHRlclJlbmRlcmVyLT5vdXRwdXQoKTsKLQotICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RF
ZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+aW1hZ2VCdWZm
ZXIoKTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB2b2lkIENTU0ZpbHRlcjo6c2V0U291
cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQogewogICAgIGF1
dG8gc2NhbGVkU291cmNlSW1hZ2VSZWN0ID0gc291cmNlSW1hZ2VSZWN0OwpAQCAtNDYzLDE4ICs0
MTQsNiBAQCB2b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0KQogICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5j
dGlvbi5wdHIoKSktPnNldFNvdXJjZUltYWdlUmVjdChzY2FsZWRTb3VyY2VJbWFnZVJlY3QpOwog
ICAgICAgICB9CiAgICAgfQotCi0gICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7
Ci19Ci0KLUludFJlY3QgQ1NTRmlsdGVyOjpvdXRwdXRSZWN0KCkKLXsKLSAgICBhdXRvIGVmZmVj
dCA9IGxhc3RFZmZlY3QoKTsKLQotICAgIGlmIChlZmZlY3QtPmhhc1Jlc3VsdCgpIHx8IChtX2Zp
bHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSkKLSAgICAgICAg
cmV0dXJuIGVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSAtIEludFBvaW50KGZpbHRlclJlZ2lv
bigpLmxvY2F0aW9uKCkpOwotCi0gICAgcmV0dXJuIHsgfTsKIH0KIAogSW50T3V0c2V0cyBDU1NG
aWx0ZXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmlu
ZGV4IGMzNDA4NzFiMjczZTIyOTFjNjgwMmQ1MWY5NTgyODRkOWEwMTNhZDMuLjMyNzNlM2Y3MTk5
Nzc4ZGExMTUxNjdlOGYxMjNlYjdjZmFmNjEwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmgKQEAgLTU1LDI1ICs1NSwxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGaWx0ZXJU
aGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW47IH0KIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKTsKLSAgICBHcmFwaGljc0NvbnRleHQq
IGlucHV0Q29udGV4dCgpOwogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICBib29sIGFwcGx5
KCkgb3ZlcnJpZGU7Ci0KLSAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCk7CisgICAgUmVmUHRyPEZp
bHRlckltYWdlPiBhcHBseSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3Rv
cmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCi0gICAgSW50UmVj
dCBvdXRwdXRSZWN0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFnZVJlY3RG
b3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0KTsKIAogcHJpdmF0ZToKICAgICBDU1NGaWx0ZXIoYm9vbCBoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5
U2VjdXJpdHlPcmlnaW4sIGZsb2F0IHNjYWxlRmFjdG9yKTsKIAotICAgIGJvb2wgbV9ncmFwaGlj
c0J1ZmZlckF0dGFjaGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJp
Y3RlZEJ5U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDk3ZmU5NjkzMTRiMjVlYTMwNTQy
MWJhMWQ2MDNlODJmMTVkNWYyMjAuLmZmOWQ4MjY2MjU4ZTc3YTY0Mjg0ZWQxYjhlOTVhOTRkOWNk
NzdmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuY3BwCkBAIC0xMjQsNiArMTI0LDI4IEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWls
ZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVGYWN0b3IsCiAgICAg
bV9maWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBy
ZW5kZXJpbmdNb2RlLCBzY2FsZUZhY3Rvcik7CiB9CiAKK0dyYXBoaWNzQ29udGV4dCogUmVuZGVy
TGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQoreworICAgIHJldHVybiBtX3NvdXJjZUltYWdl
ID8gJm1fc291cmNlSW1hZ2UtPmNvbnRleHQoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVuZGVy
TGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZShjb25zdCBHcmFwaGljc0NvbnRleHQm
IHRhcmdldENvbnRleHQpCit7CisgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOworICAgIGF1
dG8gbG9naWNhbFNpemUgPSBmaWx0ZXIuc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOworICAgIAor
ICAgIGlmICghbV9zb3VyY2VJbWFnZSB8fCBtX3NvdXJjZUltYWdlLT5sb2dpY2FsU2l6ZSgpICE9
IGxvZ2ljYWxTaXplKSB7CisjaWYgVVNFKERJUkVDVDJEKQorICAgICAgICBtX3NvdXJjZUltYWdl
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgZmlsdGVyLnJlbmRlcmluZ01vZGUo
KSwgJnRhcmdldENvbnRleHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldENvbnRl
eHQpOworICAgICAgICBtX3NvdXJjZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2Fs
U2l6ZSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisjZW5kaWYKKyAgICAgICAgaWYgKGF1dG8gY29u
dGV4dCA9IGlucHV0Q29udGV4dCgpKQorICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVy
LmZpbHRlclNjYWxlKCkpOworICAgIH0KK30KKwogR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXll
ckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25D
b250ZXh0LCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVy
Qm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBs
YXllclJlcGFpbnRSZWN0KQogewogICAgIGlmICghbV9maWx0ZXIpCkBAIC0xNjAsOCArMTgyLDEw
IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVj
dChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAKICAgICBmaWx0ZXIuZGV0ZXJtaW5lRmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKCk7CiAKLSAgICBmaWx0ZXIuYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOwotICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29u
dGV4dCA9IGZpbHRlci5pbnB1dENvbnRleHQoKTsKKyAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdT
dG9yZSkKKyAgICAgICAgYWxsb2NhdGVCYWNraW5nU3RvcmUoZGVzdGluYXRpb25Db250ZXh0KTsK
KworICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgpOwogICAg
IGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24oKS5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0ZXJSZWdp
b24oKS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc2LDI0ICsyMDAs
MTcgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZm
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAogdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6
OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQog
ewotICAgIEFTU0VSVChtX2ZpbHRlci0+aW5wdXRDb250ZXh0KCkpOworICAgIEFTU0VSVChpbnB1
dENvbnRleHQoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJc
blJlbmRlckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZpbHRlckVmZmVjdCIpOwog
Ci0gICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwotICAgIGZpbHRlci5pbnB1dENvbnRleHQo
KS0+cmVzdG9yZSgpOworICAgIGlucHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7CiAKLSAgICBmaWx0
ZXIuYXBwbHkoKTsKLQotICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBkcmF3IGl0
IGluIHBsYWNlLgotICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0UmVjdCgp
OwotICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgp
KTsKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CiAKLSAgICBpZiAoYXV0byogb3V0cHV0
QnVmZmVyID0gZmlsdGVyLm91dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5z
Y2FsZSh7IDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyLmZpbHRl
clNjYWxlKCkuaGVpZ2h0KCkgfSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwg
bV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAg
ICAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAg
IH0KKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoeyAxIC8gZmlsdGVyLmZpbHRlclNjYWxl
KCkud2lkdGgoKSwgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH0pOworICAgIGRl
c3RpbmF0aW9uQ29udGV4dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdlLmdl
dCgpLCBmaWx0ZXIpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZShmaWx0ZXIuZmlsdGVy
U2NhbGUoKSk7CiAKICAgICBmaWx0ZXIuY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAppbmRleCAzYTc0
OTk1ZjFmODRiZDk3M2VkMmI4OGQzMDQzOTdiNGM0NGRhMDM3Li5iNzBhZjE1NWExYTRmNjg3ZDU0
NjhmZDRjNzI5YTkzZWMxZDEzNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5oCkBAIC02OSwxMiArNjksMTUgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9k
aXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KKyAgICBHcmFwaGljc0NvbnRleHQqIGlu
cHV0Q29udGV4dCgpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7CiAg
ICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRl
cm5hbFNWR1JlZmVyZW5jZXM7CiAKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1h
Z2U7CiAgICAgUmVmUHRyPENTU0ZpbHRlcj4gbV9maWx0ZXI7CiAgICAgTGF5b3V0UmVjdCBtX2Rp
cnR5U291cmNlUmVjdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggOTM0ZmM4M2E2NDI3YzNj
ZjE0NWNhZmE0NzJlODA1YTJmZGQ1YmYxZS4uYmNhZDRiNzdkMzk5NTc4NWNjOGJmOWQ3NDlhNjIy
Y2NiNjllZTRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIyOCwzMSArMjI4LDEzIEBAIHZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1dG8gbGFz
dEVmZmVjdCA9IGZpbHRlckRhdGEuZmlsdGVyLT5sYXN0RWZmZWN0KCk7Ci0KLSAgICBpZiAobGFz
dEVmZmVjdCAmJiAhZmlsdGVyRGF0YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSAmJiAhbGFzdEVmZmVj
dC0+ZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIHJlYWwgZmlsdGVyaW5nIG9mIHRoZSBvYmplY3QuIEl0IGp1c3QgbmVlZHMgdG8g
YmUgY2FsbGVkIG9uIHRoZQotICAgICAgICAvLyBpbml0aWFsIGZpbHRlcmluZyBwcm9jZXNzLiBX
ZSBqdXN0IHRha2UgdGhlIHN0b3JlZCBmaWx0ZXIgcmVzdWx0IG9uIGEKLSAgICAgICAgLy8gc2Vj
b25kIGRyYXdpbmcuCi0gICAgICAgIGlmIChmaWx0ZXJEYXRhLnN0YXRlICE9IEZpbHRlckRhdGE6
OkJ1aWx0KQotICAgICAgICAgICAgZmlsdGVyRGF0YS5maWx0ZXItPnNldFNvdXJjZUltYWdlKFdU
Rk1vdmUoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVyKSk7Ci0KLSAgICAgICAgLy8gQWx3
YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5zdGF0ZSA9
PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCi0gICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0
KCkpIHsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpBcHBseWlu
ZzsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuZmlsdGVyLT5hcHBseSgpOwotICAgICAgICAgICAg
bGFzdEVmZmVjdC0+Y29ycmVjdFByZW11bHRpcGxpZWRSZXN1bHRJZk5lZWRlZCgpOwotICAgICAg
ICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoIWZpbHRlckRhdGEuYm91bmRh
cmllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6
OkJ1aWx0OwotCi0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RFZmZlY3QtPmZpbHRlcklt
YWdlKCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQtPmltYWdlQnVm
ZmVyKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRh
dGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+
ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKCpyZXN1bHRJbWFnZSwgcmVzdWx0LT5hYnNvbHV0ZUltYWdlUmVjdCgpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsK
LSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRh
dGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+
ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOworICAgICAgICBjb250ZXh0LT5kcmF3RmlsdGVyZWRJ
bWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCksICpmaWx0ZXJE
YXRhLmZpbHRlcik7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuc2NhbGUpOwog
ICAgIH0KKwogICAgIGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlciA9IG51bGxwdHI7CiAK
ICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0QXBwbHlSZXNvdXJjZSBkb25lXG4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCmluZGV4
IGRmNzM3NDk5MzFmZGRkY2IzMWRkZWRhYzc0NjAxZDBjZmU4NzRkYjYuLjBhZjhkZmJjMDE0MTMz
NWYyMTlhMWFkNWQzY2I0MGYwNDU5ZWRkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtODYsMTQgKzg2LDE0IEBAIGJvb2wg
U1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlcikKICAgICByZXR1cm4gYXBwbHko
KTsKIH0KIAotYm9vbCBTVkdGaWx0ZXI6OmFwcGx5KCkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gU1ZH
RmlsdGVyOjphcHBseSgpCiB7CiAgICAgQVNTRVJUKCFtX2V4cHJlc3Npb24uaXNFbXB0eSgpKTsK
ICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZXhwcmVzc2lvbikgewogICAgICAgICBpZiAoIWVm
ZmVjdC0+YXBwbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBs
YXN0RWZmZWN0KCktPmZpbHRlckltYWdlKCk7CiB9CiAKIEludE91dHNldHMgU1ZHRmlsdGVyOjpv
dXRzZXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKaW5kZXggODk2ZmJiMjYzN2UyYjVjNjM1YTQ5MzI4Nzg4ZDc1OTEwNDZiMWE2
OS4uMjE3OTQwNWJkMDlmMDcxMjMzNzZjYWEyZjk4OWQ0ZGRjZWRkZWM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGaWx0ZXJJbWFnZTsKIGNsYXNz
IFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCkBAIC0zNywxNCAr
MzgsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZH
RmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwogICAg
IHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNFZmZl
Y3QpOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplKSBjb25z
dCBmaW5hbDsKLQogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KLSAgICBib29sIGFwcGx5KCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0VmVjdG9yJiYgZXhwcmVzc2lvbikg
eyBtX2V4cHJlc3Npb24gPSBXVEZNb3ZlKGV4cHJlc3Npb24pOyB9CiAgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuICFtX2V4cHJlc3Npb24uaXNFbXB0
eSgpID8gbV9leHByZXNzaW9uLmxhc3QoKSA6IG51bGxwdHI7IH0KIAorICAgIEZsb2F0U2l6ZSBz
Y2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSkgY29uc3QgZmluYWw7CisKKyAgICBSZWZQdHI8
RmlsdGVySW1hZ2U+IGFwcGx5KCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgU1ZHRmlsdGVy
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9kZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445231</attachid>
            <date>2021-11-27 21:14:32 -0800</date>
            <delta_ts>2021-11-28 11:49:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211127211431.patch</filename>
            <type>text/plain</type>
            <size>36317</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIyNjY3NzkxNzkyNDJi
YzVlNTVhNjlkMzAxYWE0YzQ1NjU5ZjA0Yy4uNzY5Y2ZmYjM1ZDRlMTBkOWQwOTY3YzBiODg3ZmUw
NzQ3MjExMTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTExLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBHUFVQ
cm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlci4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZmZXIg
b2YgdGhlIENTU0ZpbHRlciBpcyBtb3ZlZAorICAgICAgICB0byBSZW5kZXJMYXllckZpbHRlcnMu
IFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIAorICAgICAg
ICBkb2VzIGJ5IG1haW50YWluaW5nIHRoZSBzb3VyY2VJbWFnZSBmb3IgdGhlIFNWR0ZpbHRlci4K
KworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpGaWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjppbnB1dENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6b3V0cHV0UmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NT
U0ZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oOgorCiAyMDIxLTExLTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IEZpbHRlckVmZmVjdCBDb3Jl
SW1hZ2UgYXBwbGllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDliYTkwZGYxMTYwYTUwYzVlNjE3
YjBkMDlhZjVhMDQ2MGQ0M2I4ZmIuLmJjZjczM2Y0NzE0ZTVhZDI4OWZiMDgwOGZiMTgyZmFhNjNm
M2FkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQyMyw2ICsxNDIzLDkgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5o
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTE0YWQx
MDUxNWYzMjM5YjQ5MWYzYzQ3YjdiYzI0Y2Y3ZTA4MmU4Ny4uMzAwYzExNGVhMDg4ZDliMjRkYTJj
NWEyMjA0ZTMwMmUwOTVjZTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxMDAsNiArMjEwMCw3IEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJGdW5jdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggM2M0MTc0ZWYzZTk1ODM3OTA3MDA0NTJhZTI2YTNhNzFkNmFiNGM2Ny4uNzYwN2VhMTlj
OWUzNDUwZjk2YzU2NWRmM2E0NzNiNmU3NGQzN2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMwNSw2ICsyMzA1LDggQEAK
IAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMEND
Njg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1
MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkI4QjAzNTI3NTM0Mzg2MDBGNzUyQUEgLyog
RmlsdGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNjJENzU2MjcyQTE3NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQjhCMDM2Mjc1
MzQ0MTQwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0MzVFRjQyNzNEMDc2NzAwMDVFN0VFIC8qIEZpbHRlcklt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFn
bm9zdGljTG9nZ2luZ0RvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzJGNjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5n
RG9tYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhG
NDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAtMjcwNyw3
ICsyNzA5LDcgQEAKIAkJODQyMjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0MjI0MTkxMTA3RTc4QTcwMDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87
IH07CiAJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJENTEy
MEM5QUFDMDAyMTk1NEEgLyogU1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovOyB9OwogCQk4NDMwMEJE
ODEyMEM5QUQ0MDAyMTk1NEEgLyogU1ZHUGF0aFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMDBCRDcxMjBDOUFENDAwMjE5NTRBIC8qIFNW
R1BhdGhTb3VyY2UuaCAqLzsgfTsKLQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcy
RjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICovOyB9OworCQk4NDVFNzJGODBGRDI2MUVF
MDBBODdENzkgLyogRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQ1RTcyRkMwRkQyNjIz
OTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQ1RTcyRkEwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5oICov
OyB9OwogCQk4NDY1MEU3RTIzODdBRDdEMDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NTBFN0My
Mzg3QUQ3QzAwNjI2NkUyIC8qIE1lZGlhUXVlcnlMaXN0RXZlbnQuaCAqLzsgfTsKIAkJODQ3MzBE
NzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5
IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oICovOyB9OwpAQCAtMTA5MzYsNiArMTA5MzgsNyBAQAog
CQk3MkI4QjAxRTI3NTFCOTEwMDBGNzUyQUEgLyogRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxp
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCOEIwMUYyNzUxQjkyODAwRjc1
MkFBIC8qIEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZF
Q29sb3JNYXRyaXhDb3JlSW1hZ2VBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQjhCMDIwMjc1MUM0QjcwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbHRlckltYWdlQ29yZUltYWdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkI4QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJC
QUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYwMjgsNiArMjYwMzEs
NyBAQAogCQkJCTg0NzMwRDZFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuaCAqLywKIAkJCQk4
NDczMEQ2RjEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmNwcCAqLywKIAkJCQk4NDcz
MEQ3MDEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmggKi8sCisJCQkJNzJCOEIwMzIy
NzUzM0Y4MTAwRjc1MkFBIC8qIEZpbHRlci5jcHAgKi8sCiAJCQkJODQ1RTcyRjcwRkQyNjFFRTAw
QTg3RDc5IC8qIEZpbHRlci5oICovLAogCQkJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuaCAqLywKQEAgLTMzNTcwLDYgKzMzNTc0LDggQEAKIAkJCQk3MTJCRTQ4MzFGRTg2
NUREMDAyMDMxQ0MgLyogRmlsbE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkY4MEZE
MjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzkyNTFBMEZD
QzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQjhC
MDM1Mjc1MzQzODYwMEY3NTJBQSAvKiBGaWx0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzJCOEIwMzYyNzUzNDQxNDAwRjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUVDRUI2RTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZp
bmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAppbmRleCBkMzJmZmJjYzNjNTg2MmNiMWVjYTZkNmFlZDk4MmQyMGQ3ZDk0
OWZlLi4xNDVkZDlkN2MzZjBmNzhkODZlOWY0OTg1NzE3ODQ5M2FkMTk4MGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMzAsMTQgKzEzMCwxMCBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIGlmICghY3NzRmlsdGVyLT5idWlsZEZpbHRl
ckZ1bmN0aW9ucyhyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lcjo6
RmlsdGVyRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAot
ICAgIGNzc0ZpbHRlci0+c2V0U291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSkpOwotICAg
IGNzc0ZpbHRlci0+YXBwbHkoKTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHNvdXJjZUltYWdlLT5m
aWx0ZXJlZEltYWdlKCpjc3NGaWx0ZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CiAKLSAgICBh
dXRvKiBvdXRwdXQgPSBjc3NGaWx0ZXItPm91dHB1dCgpOwotICAgIGlmICghb3V0cHV0KQotICAg
ICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKLQotICAgIHJldHVybiBvdXRwdXQtPmNv
cHlJbWFnZSgpOworICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiB2b2lkIENT
U0ZpbHRlckltYWdlVmFsdWU6OmZpbHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaAppbmRleCA5NTFhZTliZTM4MmMxM2ZkOTcyODllYjQzMjNiYWU0MzljNjMyM2U2Li43
NTBkYjRlZTg5MTY2MGZhNGJlY2ViYzQ0NDdjNjg1Y2U1YzQ4NDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyLmgiCisj
aW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlBpeGVsQnVmZmVyLmgiCiAKQEAgLTEzNyw2ICsxMzksMjQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVk
SW1hZ2UoRmlsdGVyJiBmaWx0ZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvKiBiYWNr
ZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUlt
YWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhpcyk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHJlc3Vs
dC0+aW1hZ2VCdWZmZXIoKTsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weUltYWdl
KCk7CisgICAgfQorCiAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IGIyMjE4ZmFhM2JkNTZiMzk1NDQxNDE1ZmQ4ZTFmNjk2NzA5ZWRmZGUuLjgwMTg2OTZkNDY5
NWVlOGEwYmI1Njk5NTg5NjAzMWVhOTBlYzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjgsNiArMjgsOCBA
QAogCiAjaW5jbHVkZSAiQmlkaVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
KyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgogI2luY2x1ZGUg
IkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCkBAIC02MjksNiArNjMxLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QK
ICAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0ZXIm
IGZpbHRlcikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gcmVzdWx0LT5pbWFnZUJ1ZmZlcigpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHJlc3Vs
dC0+YWJzb2x1dGVJbWFnZVJlY3QoKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBQYXRoIHBh
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IDBjMTQxNDNlZDhkNmEzNmQ4MDRiYTUwMmMyMjQ3ZWFkYzUwNTIyMzcuLjNk
OGQzYTcxMjUzZTM2MzBmOGQ5NWNkZGQ0MDk2YmI2NDIyODliZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04NSw2ICs4
NSw3IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSW50ODsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgRmlsdGVyOwogY2xhc3MgRmxvYXRSb3Vu
ZGVkUmVjdDsKIGNsYXNzIEdyYWRpZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlOwpAQCAtNDUxLDYgKzQ1Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZm
ZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0ZXImKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgPSAwOwogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjNmZDJmYjY0NjhjZmI3OTM0NTdm
YzMwMTg0NzE5MDM3YjBiOGY1ZC4uZDdiNzU2NGE1OWI4YzI2NzZhNzZlMTkxYzVhMDc5NTk2MTg5
ODYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0Owogc3RydWN0IEl0ZW1C
dWZmZXJIYW5kbGU7CiB9CiAKK2NsYXNzIEZpbHRlcjsKKwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1Ymxp
YzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1
cmUuCkBAIC0xMDcsNiArMTA5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0
aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdT
dG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImKSA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2Ug
YnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhp
cyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5
UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZTEyY2JkNjg4
NmU3MWYzYWY4ODBlZTJkNDM3ZTEwODIzMDcyODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6
VHlwZSBmaWx0ZXJUeXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUpCisgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAg
ICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZp
bHRlclNjYWxlKQoreworfQorCitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlw
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNj
YWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBm
aWx0ZXJSZWdpb24pCisgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9y
ZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNj
YWxlKQorICAgICwgbV9zb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICwgbV9m
aWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQoreworfQorCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZp
bHRlcjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKQoreworICAgIHNldFNvdXJjZUlt
YWdlKHNvdXJjZUltYWdlKTsKKworICAgIGF1dG8gcmVzdWx0ID0gYXBwbHkoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJlc3VsdC0+dHJhbnNmb3JtVG9D
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCAyYjA2YmZiYjY0ZTI1NDE5
ZTRhZjU5YjExYzE1OTBkOTBkM2M4YTg2Li5iYzliOTRkNjUzOTg5ZGVhYWMzZjY0MmYxZjM3NGE3
NWM1ZjdkMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKQEAgLTI5LDEyICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEZpbHRlckltYWdlOwogCiBjbGFzcyBGaWx0
ZXIgOiBwdWJsaWMgRmlsdGVyRnVuY3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjph
cHBseTsKIAogcHVibGljOgorICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5n
TW9kZTsgfQorICAgIAogICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsdGVyU2NhbGU7IH0KICAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CiAKQEAgLTQ0
LDMxICs0NywxNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdp
b247IH0KIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRT
aXplIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdmly
dHVhbCBib29sIGFwcGx5KCkgPSAwOwotCiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0U291cmNl
SW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2Ug
PSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRSZW5k
ZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUg
PSByZW5kZXJpbmdNb2RlOyB9CisgICAgdmlydHVhbCBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyU2NhbGU7
IH0KKworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpID0gMDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSk7CiAKIHByb3RlY3RlZDoKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5
cGUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSkKLSAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAgICAgICAsIG1f
cmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQotICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmls
dGVyU2NhbGUpCi0gICAgewotICAgIH0KLQotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVy
VHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBmaWx0ZXJSZWdpb24pCi0gICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAg
ICAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKLSAgICAgICAgLCBtX2ZpbHRl
clNjYWxlKGZpbHRlclNjYWxlKQotICAgICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUlt
YWdlUmVjdCkKLSAgICAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCi0gICAgewot
ICAgIH0KKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlclNjYWxlKTsKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pOwogCiBwcml2YXRlOgog
ICAgIFJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IDIzNWEz
ZTgxODViYjliNjg3MTdiNTJhYzcxOGM2NWVjYzhmNDlkYmQuLmNhYTk1ZWMyNDU5NTAxNTk1ZTg1
YmEyMTZhNmY0OGVkNzg1NGM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKQEAgLTI1LDggKzI1LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0MSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZpbHRlcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNz
IEltYWdlQnVmZmVyOwotY2xhc3MgUGl4ZWxCdWZmZXI7CiAKIGNsYXNzIEZpbHRlckltYWdlIDog
cHVibGljIFJlZkNvdW50ZWQ8RmlsdGVySW1hZ2U+IHsKIHB1YmxpYzoKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKCk7CiAgICAgUGl4ZWxCdWZmZXIqIHBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlw
bGljYXRpb24pOwogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZm
ZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgc3Rk
OjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggMTdhOTNkM2Q0MjkwYWZlODQzMTkx
ZWRjMGMwYzcxMDA5ZmRlYWRhYi4uMWIwODI1Y2ExNDU3NmE4YTU5MmE3YTg0NGM2YzliNzRjYmVj
MWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMzIsMTEgKzMzMiw2IEBAIGJvb2wg
Q1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmlsdGVyT3BlcmF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUdyYXBoaWNzQ29udGV4
dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQotewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgp
ID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51bGxwdHI7Ci19Ci0KIGJvb2wgQ1NTRmls
dGVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkK
IHsKICAgICBpZiAoZmlsdGVyUmVjdC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVk
c0NsYW1waW5nKGZpbHRlclJlY3Quc2l6ZSgpKSkKQEAgLTM0OSwzMCArMzQ0LDYgQEAgYm9vbCBD
U1NGaWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJS
ZWN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNr
aW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCi17
Ci0gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZWZmZWN0IGNoYWluIGhhcyBiZWVuIGJ1aWx0LCBh
bmQgdGhlCi0gICAgLy8gc291cmNlIGltYWdlIHNpemVzIHNldC4gV2UganVzdCBuZWVkIHRvIGF0
dGFjaCB0aGUgZ3JhcGhpYwotICAgIC8vIGJ1ZmZlciBpZiB3ZSBoYXZlIG5vdCB5ZXQgZG9uZSBz
by4KLQotICAgIGlmIChtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gbG9naWNhbFNpemUgPSBzb3VyY2VJbWFnZVJlY3QoKS5zaXplKCk7Ci0gICAg
aWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9n
aWNhbFNpemUpIHsKLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKElt
YWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENv
bnRleHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKLSAgICAg
ICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVy
aW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KSk7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGF1dG8gY29udGV4dCA9IGlucHV0Q29udGV4
dCgpKQotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyU2NhbGUoKSk7Ci0gICAgfQot
Ci0gICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKLX0KLQogUmVmUHRyPEZpbHRl
ckVmZmVjdD4gQ1NTRmlsdGVyOjpsYXN0RWZmZWN0KCkKIHsKICAgICBpZiAobV9mdW5jdGlvbnMu
aXNFbXB0eSgpKQpAQCAtNDE5LDE1ICszOTAsMTYgQEAgdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50
ZXJtZWRpYXRlUmVzdWx0cygpCiAgICAgICAgIGZ1bmN0aW9uLT5jbGVhclJlc3VsdCgpOwogfQog
Ci1ib29sIENTU0ZpbHRlcjo6YXBwbHkoKQorUmVmUHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6
OmFwcGx5KCkKIHsKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKICAg
ICAgICAgaWYgKCFmdW5jdGlvbi0+YXBwbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgbGFzdEVmZmVj
dCgpLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsK
KyAgICBlZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOworICAgIHJldHVybiBlZmZlY3QtPmZpbHRlckltYWdlKCk7CiB9CiAKIExh
eW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNv
bnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVj
dCkKQEAgLTQ0MCwxNCArNDEyLDYgQEAgTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3Vy
Y2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGUKICAgICByZXR1
cm4gcmVjdEZvclJlcGFpbnQ7CiB9CiAKLUltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgp
Ci17Ci0gICAgaWYgKGF1dG8gcmVzdWx0ID0gbGFzdEVmZmVjdCgpLT5maWx0ZXJJbWFnZSgpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0LT5pbWFnZUJ1ZmZlcigpOwotCi0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiB7CiAgICAgYXV0byBzY2FsZWRTb3VyY2VJbWFnZVJlY3Qg
PSBzb3VyY2VJbWFnZVJlY3Q7CkBAIC00NjIsMTggKzQyNiw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpz
ZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiAgICAg
ICAgICAgICBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0U291cmNlSW1h
Z2VSZWN0KHNjYWxlZFNvdXJjZUltYWdlUmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBt
X2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSBmYWxzZTsKLX0KLQotSW50UmVjdCBDU1NGaWx0ZXI6
Om91dHB1dFJlY3QoKQotewotICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotCi0gICAg
aWYgKGF1dG8gcmVzdWx0ID0gZWZmZWN0LT5maWx0ZXJJbWFnZSgpKQotICAgICAgICByZXR1cm4g
cmVzdWx0LT5hYnNvbHV0ZUltYWdlUmVjdCgpIC0gSW50UG9pbnQoZmlsdGVyUmVnaW9uKCkubG9j
YXRpb24oKSk7Ci0KLSAgICByZXR1cm4geyB9OwogfQogCiBJbnRPdXRzZXRzIENTU0ZpbHRlcjo6
b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMGVi
YTQ3ZGZjYmIwNTJiNWY0N2Y3ODkzMjA1MTc4ZmU0N2Q1NTI2MS4uYjZhYjIwMzFlMDE2N2ZkOGFl
Y2Y5ODNkZDlhMjZiMjVjZTJmOWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDE4ICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmls
dGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW47IH0KIAogICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGlucHV0
Q29udGV4dCgpOwogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKLSAgICBib29sIGFwcGx5KCkgb3Zl
cnJpZGU7Ci0KLSAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCk7CisgICAgUmVmUHRyPEZpbHRlcklt
YWdlPiBhcHBseSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCi0gICAgSW50UmVjdCBvdXRw
dXRSZWN0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0
eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGlydHlSZWN0KTsKIApAQCAtNzYsNyArNzAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9y
dHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgYm9v
bCBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggOTdmZTk2OTMx
NGIyNWVhMzA1NDIxYmExZDYwM2U4MmYxNWQ1ZjIyMC4uZmY5ZDgyNjYyNThlNzdhNjQyODRlZDFi
OGU5NWE5NGQ5Y2Q3N2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHAKQEAgLTEyNCw2ICsxMjQsMjggQEAgdm9pZCBSZW5kZXJMYXllckZp
bHRlcnM6OmJ1aWxkRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBmbG9hdCBzY2FsZUZh
Y3RvciwKICAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLnN0eWxlKCku
ZmlsdGVyKCksIHJlbmRlcmluZ01vZGUsIHNjYWxlRmFjdG9yKTsKIH0KIAorR3JhcGhpY3NDb250
ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0Q29udGV4dCgpCit7CisgICAgcmV0dXJuIG1f
c291cmNlSW1hZ2UgPyAmbV9zb3VyY2VJbWFnZS0+Y29udGV4dCgpIDogbnVsbHB0cjsKK30KKwor
dm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3sKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0
ZXI7CisgICAgYXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKS5zaXpl
KCk7CisgICAgCisgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2lj
YWxTaXplKCkgIT0gbG9naWNhbFNpemUpIHsKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgICAgIG1f
c291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBmaWx0ZXIucmVu
ZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0Q29udGV4dCk7CisgICAgICAgIG1fc291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyNlbmRpZgorICAgICAgICBp
ZiAoYXV0byBjb250ZXh0ID0gaW5wdXRDb250ZXh0KCkpCisgICAgICAgICAgICBjb250ZXh0LT5z
Y2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgfQorfQorCiBHcmFwaGljc0NvbnRleHQq
IFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0aW5hdGlvbkNvbnRleHQsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRS
ZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExh
eW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCiB7CiAgICAgaWYgKCFtX2ZpbHRlcikKQEAgLTE2
MCw4ICsxODIsMTAgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2lu
RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAogICAgIGZpbHRlci5kZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKIAotICAgIGZpbHRlci5hbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKGRlc3RpbmF0aW9uQ29udGV4dCk7Ci0gICAgYXV0byogc291cmNl
R3JhcGhpY3NDb250ZXh0ID0gZmlsdGVyLmlucHV0Q29udGV4dCgpOworICAgIGlmIChoYXNVcGRh
dGVkQmFja2luZ1N0b3JlKQorICAgICAgICBhbGxvY2F0ZUJhY2tpbmdTdG9yZShkZXN0aW5hdGlv
bkNvbnRleHQpOworCisgICAgYXV0byogc291cmNlR3JhcGhpY3NDb250ZXh0ID0gaW5wdXRDb250
ZXh0KCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljc0NvbnRleHQgfHwgZmlsdGVyLmZpbHRlclJl
Z2lvbigpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZmlsdGVy
LmZpbHRlclJlZ2lvbigpLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NzYsMjQgKzIwMCwxNyBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVn
aW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdAogCiB2b2lkIFJlbmRlckxh
eWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlv
bkNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKG1fZmlsdGVyLT5pbnB1dENvbnRleHQoKSk7CisgICAg
QVNTRVJUKGlucHV0Q29udGV4dCgpKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBz
dHJlYW0gPDwgIlxuUmVuZGVyTGF5ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVy
RWZmZWN0Iik7CiAKLSAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7Ci0gICAgZmlsdGVyLmlu
cHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7CisgICAgaW5wdXRDb250ZXh0KCktPnJlc3RvcmUoKTsK
IAotICAgIGZpbHRlci5hcHBseSgpOwotCi0gICAgLy8gR2V0IHRoZSBmaWx0ZXJlZCBvdXRwdXQg
YW5kIGRyYXcgaXQgaW4gcGxhY2UuCi0gICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci5v
dXRwdXRSZWN0KCk7Ci0gICAgZGVzdFJlY3QubW92ZShtX3BhaW50T2Zmc2V0LngoKSwgbV9wYWlu
dE9mZnNldC55KCkpOworICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKIAotICAgIGlmIChh
dXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCkpIHsKLSAgICAgICAgZGVzdGluYXRp
b25Db250ZXh0LnNjYWxlKHsgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBm
aWx0ZXIuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9KTsKLSAgICAgICAgZGVzdGluYXRpb25Db250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0QnVmZmVyLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGRlc3RSZWN0LCBtX2xheWVyLnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZShmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgfQorICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZSh7IDEgLyBmaWx0ZXIu
ZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkg
fSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKG1fc291
cmNlSW1hZ2UuZ2V0KCksIGZpbHRlcik7CisgICAgZGVzdGluYXRpb25Db250ZXh0LnNjYWxlKGZp
bHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAgIGZpbHRlci5jbGVhckludGVybWVkaWF0ZVJlc3Vs
dHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5o
CmluZGV4IDNhNzQ5OTVmMWY4NGJkOTczZWQyYjg4ZDMwNDM5N2I0YzQ0ZGEwMzcuLmI3MGFmMTU1
YTFhNGY2ODdkNTQ2OGZkNGM3MjlhOTNlYzFkMTM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTY5LDEyICs2OSwxNSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0RGlydHlTb3VyY2VS
ZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQorICAgIEdyYXBoaWNz
Q29udGV4dCogaW5wdXRDb250ZXh0KCk7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZShj
b25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpOwogCiAgICAgUmVuZGVyTGF5ZXIm
IG1fbGF5ZXI7CiAKICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBtX2ludGVybmFsU1ZHUmVm
ZXJlbmNlczsKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1l
bnQ+PiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlczsKIAorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
bV9zb3VyY2VJbWFnZTsKICAgICBSZWZQdHI8Q1NTRmlsdGVyPiBtX2ZpbHRlcjsKICAgICBMYXlv
dXRSZWN0IG1fZGlydHlTb3VyY2VSZWN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCA4MmNj
ZWI0YzA2ZGRiYzFhNTY4YTkwYzJiMGZiZDU1Y2M4MjY5MzYxLi5lY2JiMmJlZjFlODliN2EwNjMx
N2U1MTJhNzMzZjUxMGI3MDAwZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjI3LDMxICsyMjcs
MTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgYXV0byBsYXN0RWZmZWN0ID0gZmlsdGVyRGF0YS5maWx0ZXItPmxhc3RFZmZlY3QoKTsKLQot
ICAgIGlmIChsYXN0RWZmZWN0ICYmICFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpICYm
ICFsYXN0RWZmZWN0LT5maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgcmVhbCBmaWx0ZXJpbmcgb2YgdGhlIG9iamVjdC4gSXQganVz
dCBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlCi0gICAgICAgIC8vIGluaXRpYWwgZmlsdGVyaW5n
IHByb2Nlc3MuIFdlIGp1c3QgdGFrZSB0aGUgc3RvcmVkIGZpbHRlciByZXN1bHQgb24gYQotICAg
ICAgICAvLyBzZWNvbmQgZHJhd2luZy4KLSAgICAgICAgaWYgKGZpbHRlckRhdGEuc3RhdGUgIT0g
RmlsdGVyRGF0YTo6QnVpbHQpCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLmZpbHRlci0+c2V0U291
cmNlSW1hZ2UoV1RGTW92ZShmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIpKTsKLQotICAg
ICAgICAvLyBBbHdheXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRh
dGEtPnN0YXRlID09IEZpbHRlckRhdGE6OkJ1aWx0KS4KLSAgICAgICAgaWYgKCFsYXN0RWZmZWN0
LT5oYXNSZXN1bHQoKSkgewotICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRh
dGE6OkFwcGx5aW5nOwotICAgICAgICAgICAgZmlsdGVyRGF0YS5maWx0ZXItPmFwcGx5KCk7Ci0g
ICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0UHJlbXVsdGlwbGllZFJlc3VsdElmTmVlZGVk
KCk7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgfQorICAgIGlmICghZmlsdGVy
RGF0YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0g
RmlsdGVyRGF0YTo6QnVpbHQ7Ci0KLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbGFzdEVmZmVj
dC0+ZmlsdGVySW1hZ2UoKSkgewotICAgICAgICAgICAgYXV0byByZXN1bHRJbWFnZSA9IHJlc3Vs
dC0+aW1hZ2VCdWZmZXIoKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
IC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRh
dGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCByZXN1bHQtPmFic29sdXRlSW1hZ2VSZWN0
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRl
clNjYWxlKCkpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
IC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlckRh
dGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7CisgICAgICAgIGNvbnRleHQtPmRy
YXdGaWx0ZXJlZEltYWdlQnVmZmVyKGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlci5nZXQo
KSwgKmZpbHRlckRhdGEuZmlsdGVyKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0
YS5zY2FsZSk7CiAgICAgfQorCiAgICAgZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVyID0g
bnVsbHB0cjsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyICIgPDwgdGhpcyA8PCAiIHBvc3RBcHBseVJlc291cmNlIGRvbmVc
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAKaW5kZXggODcyNzA5NjlkMzBiOGE3ZDYzZWRlYmFkMDg4NTcwMmIyOGQyYmJmZS4uMWJk
OTIwYTVmYzljYzhkNDk2ODBhMzUwZjhiMTFiMjQwMGUxNGJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC0yLDYgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDgsMTQgKzEwOSwxNCBAQCBib29s
IFNWR0ZpbHRlcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGFwcGx5
KCk7CiB9CiAKLWJvb2wgU1ZHRmlsdGVyOjphcHBseSgpCitSZWZQdHI8RmlsdGVySW1hZ2U+IFNW
R0ZpbHRlcjo6YXBwbHkoKQogewogICAgIEFTU0VSVCghbV9leHByZXNzaW9uLmlzRW1wdHkoKSk7
CiAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBtX2V4cHJlc3Npb24pIHsKICAgICAgICAgaWYgKCFl
ZmZlY3QtPmFwcGx5KCp0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
bGFzdEVmZmVjdCgpLT5maWx0ZXJJbWFnZSgpOwogfQogCiBJbnRPdXRzZXRzIFNWR0ZpbHRlcjo6
b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5oCmluZGV4IDQ5YjU1NTNjNTYyYTcxNTMxMTc3NTMwMTlmZDgzMjRlYWU3YjQ4
NzEuLjIxMWQxMDM3ZTNkYWQ2YWI1NTc3YzUwNzIyOTdlNzBjNTdjY2M1MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNiArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEZpbHRlckltYWdlOwogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlcjsKIGNs
YXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKQEAgLTM3LDE0ICszOSwxNSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmls
dGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgc3RhdGlj
IFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVp
bGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2
aW91c0VmZmVjdCk7CiAKLSAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwotCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGluZ0JveDsgfQotICAgIGJvb2wgYXBwbHkoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2V0RXhwcmVzc2lvbihGaWx0ZXJFZmZlY3RWZWN0b3ImJiBleHBy
ZXNzaW9uKSB7IG1fZXhwcmVzc2lvbiA9IFdURk1vdmUoZXhwcmVzc2lvbik7IH0KICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gIW1fZXhwcmVzc2lv
bi5pc0VtcHR5KCkgPyBtX2V4cHJlc3Npb24ubGFzdCgpIDogbnVsbHB0cjsgfQogCisgICAgRmxv
YXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplKSBjb25zdCBmaW5hbDsKKworICAg
IFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBT
VkdGaWx0ZXIoUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91
bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hN
b2RlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445240</attachid>
            <date>2021-11-28 11:50:02 -0800</date>
            <delta_ts>2021-11-28 14:26:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211128115001.patch</filename>
            <type>text/plain</type>
            <size>38421</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhjNTMyZDRiMTlmZTQz
N2Q4MmM0N2Y2ZDNmYmEyMjVmYjc1OTQ5Mi4uOWY4YTY4ZTEwZmI2OGY1MGQ5YTlkZDMzNzM0YjZk
NTM1YmYwNzQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTExLTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBHUFVQ
cm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZlci4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZmZXIg
b2YgdGhlIENTU0ZpbHRlciBpcyBtb3ZlZAorICAgICAgICB0byBSZW5kZXJMYXllckZpbHRlcnMu
IFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIAorICAgICAg
ICBkb2VzIGJ5IG1haW50YWluaW5nIHRoZSBzb3VyY2VJbWFnZSBmb3IgdGhlIFNWR0ZpbHRlci4K
KworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyOjpzZXRSZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2Nh
bGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZpbHRl
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVU
aWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFw
cGxpZXIuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OnNldFNvdXJjZUltYWdlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmlucHV0
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpvdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpvdXRw
dXRSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjph
cHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIw
MjEtMTEtMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV2ViR1BVXSBBZGQgZGVyaXZlZCBzb3VyY2VzIHRvIFhjb2RlIHByb2plY3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDliYTkwZGYxMTYwYTUwYzVlNjE3YjBkMDlhZjVhMDQ2MGQ0M2I4ZmIu
LmJjZjczM2Y0NzE0ZTVhZDI4OWZiMDgwOGZiMTgyZmFhNjNmM2FkYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTQyMyw2ICsxNDIzLDkgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5oCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9ucy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTgxZDQ3NTFmNTZmZjU5MGU4MGU0YmI0ZWEx
NmI2MzVmMmE3MmVjYy4uN2I2ZDU2MTQ2OTkyY2VhNDM3Yjg5YjRlNGNmMTY0MmU0NzcyNDA0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTIxMDEsNiArMjEwMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVPZmZzZXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2FhNTZjN2M2OWRjZGVh
ZTQ1YWE4NDZhZjE1OTBlMmQ1YTk0YWI3Yy4uN2Q1ZmRkMGE3NDM4NDI2NzllYzE3YzIxMWUyNmI1
N2RhN2JkMmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjMwNSw2ICsyMzA1LDggQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAw
Q0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5
RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMx
M0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAw
MDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MkI4QjAzNTI3NTM0Mzg2MDBGNzUyQUEgLyogRmlsdGVyRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjJENzU2MjcyQTE3
NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQjhCMDM2Mjc1MzQ0MTQwMEY3NTJBQSAvKiBGaWx0
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzI0MzVFRjQyNzNEMDc2NzAwMDVFN0VFIC8qIEZpbHRlckltYWdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVy
QmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGNjY3REYy
NjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAtMjcwNyw3ICsyNzA5LDcgQEAKIAkJODQyMjQx
OTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkxMTA3RTc4QTcwMDc2
NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87IH07CiAJCTg0MzAwQkQ2MTIwQzlB
QUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJENTEyMEM5QUFDMDAyMTk1NEEgLyogU1ZH
UGF0aFN0cmluZ1NvdXJjZS5oICovOyB9OwogCQk4NDMwMEJEODEyMEM5QUQ0MDAyMTk1NEEgLyog
U1ZHUGF0aFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODQzMDBCRDcxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCAqLzsgfTsK
LQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8q
IEZpbHRlci5oICovOyB9OworCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJGNzBG
RDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQ1RTcyRkMwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcy
RkEwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5oICovOyB9OwogCQk4NDY1MEU3RTIzODdB
RDdEMDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NTBFN0MyMzg3QUQ3QzAwNjI2NkUyIC8qIE1l
ZGlhUXVlcnlMaXN0RXZlbnQuaCAqLzsgfTsKIAkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8q
IERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJj
ZS5oICovOyB9OwpAQCAtMTEyMDQsNiArMTEyMDYsNyBAQAogCQk3MkI4QjAxRTI3NTFCOTEwMDBG
NzUyQUEgLyogRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJCOEIwMUYyNzUxQjkyODAwRjc1MkFBIC8qIEZFQ29sb3JNYXRyaXhD
b3JlSW1hZ2VBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFQ29sb3JNYXRyaXhDb3JlSW1hZ2VB
cHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjhCMDIwMjc1MUM0Qjcw
MEY3NTJBQSAvKiBGaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEZpbHRlckltYWdlQ29yZUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MkI4QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFD
IC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJC
QUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NjYsNiArMjY1NjksNyBAQAogCQkJCTg0NzMwRDZFMTI0
OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuaCAqLywKIAkJCQk4NDczMEQ2RjEyNDhGMEIzMDBEM0E5
QzkgLyogRkVUdXJidWxlbmNlLmNwcCAqLywKIAkJCQk4NDczMEQ3MDEyNDhGMEIzMDBEM0E5Qzkg
LyogRkVUdXJidWxlbmNlLmggKi8sCisJCQkJNzJCOEIwMzIyNzUzM0Y4MTAwRjc1MkFBIC8qIEZp
bHRlci5jcHAgKi8sCiAJCQkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oICov
LAogCQkJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovLAog
CQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKQEAgLTM0
MTEwLDYgKzM0MTE0LDggQEAKIAkJCQk3MTJCRTQ4MzFGRTg2NUREMDAyMDMxQ0MgLyogRmlsbE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQjhCMDM1Mjc1MzQzODYwMEY3NTJBQSAv
KiBGaWx0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJCOEIwMzYyNzUzNDQxNDAw
Rjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2RTE0OTk3
OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVD
RUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCBk
MzJmZmJjYzNjNTg2MmNiMWVjYTZkNmFlZDk4MmQyMGQ3ZDk0OWZlLi4xNDVkZDlkN2MzZjBmNzhk
ODZlOWY0OTg1NzE3ODQ5M2FkMTk4MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCkBAIC0xMzAsMTQgKzEzMCwxMCBAQCBSZWZQdHI8SW1hZ2U+IENTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFNpegogICAgIGlmICghY3NzRmlsdGVyLT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJlciwg
bV9maWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pKQogICAg
ICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSkpOwotICAgIGNzc0ZpbHRlci0+YXBwbHkoKTsK
KyAgICBpZiAoYXV0byBpbWFnZSA9IHNvdXJjZUltYWdlLT5maWx0ZXJlZEltYWdlKCpjc3NGaWx0
ZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CiAKLSAgICBhdXRvKiBvdXRwdXQgPSBjc3NGaWx0
ZXItPm91dHB1dCgpOwotICAgIGlmICghb3V0cHV0KQotICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKLQotICAgIHJldHVybiBvdXRwdXQtPmNvcHlJbWFnZSgpOworICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmZp
bHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA5NTFhZTli
ZTM4MmMxM2ZkOTcyODllYjQzMjNiYWU0MzljNjMyM2U2Li43NTBkYjRlZTg5MTY2MGZhNGJlY2Vi
YzQ0NDdjNjg1Y2U1YzQ4NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVySW1hZ2Uu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAK
QEAgLTEzNyw2ICsxMzksMjQgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKKyAgICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJiBmaWx0ZXIp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKTsKKyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZs
dXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHko
dGhpcyk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsKKyAg
ICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgfQorCiAgICAgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGIyMjE4ZmFhM2JkNTZiMzk1
NDQxNDE1ZmQ4ZTFmNjk2NzA5ZWRmZGUuLjgwMTg2OTZkNDY5NWVlOGEwYmI1Njk5NTg5NjAzMWVh
OTBlYzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQmlkaVJl
c29sdmVyLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIK
KyNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIK
ICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC02Mjks
NiArNjMxLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZm
ZXIoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QKICAgICBJbWFnZUJ1ZmZlcjo6ZHJh
d0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9w
dGlvbnMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0ZXImIGZpbHRlcikKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gcmVzdWx0LT5pbWFn
ZUJ1ZmZlcigpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHJlc3VsdC0+YWJzb2x1dGVJbWFnZVJlY3Qo
KSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBQYXRoIHBhdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBjMTQxNDNl
ZDhkNmEzNmQ4MDRiYTUwMmMyMjQ3ZWFkYzUwNTIyMzcuLjNkOGQzYTcxMjUzZTM2MzBmOGQ5NWNk
ZGQ0MDk2YmI2NDIyODliZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04NSw2ICs4NSw3IEBAIHR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBVSW50ODsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOworY2xhc3MgRmlsdGVyOwogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEdyYWRp
ZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwpAQCAtNDUxLDYgKzQ1
Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVy
PiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJj
ZUltYWdlLCBGaWx0ZXImKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJ
bWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCiAjaWYg
RU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKaW5kZXggZjNmZDJmYjY0NjhjZmI3OTM0NTdmYzMwMTg0NzE5MDM3YjBiOGY1ZC4u
ZDdiNzU2NGE1OWI4YzI2NzZhNzZlMTkxYzVhMDc5NTk2MTg5ODYxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC00Miw2ICs0Miw4IEBA
IGNsYXNzIERyYXdpbmdDb250ZXh0Owogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiB9CiAKK2Ns
YXNzIEZpbHRlcjsKKwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8SW1hZ2VCdWZmZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVy
biBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCkBAIC0xMDcsNiArMTA5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8p
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0
ZXImKSA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0
aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlzIG5l
dyBvbmUuCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZTEyY2JkNjg4NmU3MWYzYWY4ODBlZTJkNDM3ZTEw
ODIzMDcyODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmlsdGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0ZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCisg
ICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9yZW5kZXJpbmdNb2RlKHJl
bmRlcmluZ01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQoreworfQorCitG
aWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCisgICAgOiBG
aWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmlu
Z01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgICwgbV9zb3VyY2VJ
bWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVn
aW9uKQoreworfQorCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VCdWZm
ZXIqIHNvdXJjZUltYWdlKQoreworICAgIHNldFNvdXJjZUltYWdlKHNvdXJjZUltYWdlKTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gYXBwbHkoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIHJlc3VsdC0+dHJhbnNmb3JtVG9Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuaAppbmRleCAyYjA2YmZiYjY0ZTI1NDE5ZTRhZjU5YjExYzE1OTBkOTBkM2M4
YTg2Li5iYzliOTRkNjUzOTg5ZGVhYWMzZjY0MmYxZjM3NGE3NWM1ZjdkMzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTI5
LDEyICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbHRlckVmZmVj
dDsKK2NsYXNzIEZpbHRlckltYWdlOwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgRmlsdGVyRnVu
Y3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKIAogcHVibGljOgorICAg
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5n
TW9kZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsgfQorICAgIAogICAgIEZs
b2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7IH0KICAg
ICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpIHsgbV9m
aWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CiAKQEAgLTQ0LDMxICs0NywxNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVn
aW9uOyB9CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJS
ZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KIAotICAgIHZpcnR1YWwg
RmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0IHsgcmV0
dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdmlydHVhbCBib29sIGFwcGx5KCkgPSAw
OwotCiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJbWFnZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUmVmUHRyPEltYWdlQnVm
ZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdl
KTsgfQogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9Cisg
ICAgdmlydHVhbCBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUgc2l6ZSkg
Y29uc3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyU2NhbGU7IH0KKworICAgIHZpcnR1YWwgUmVm
UHRyPEZpbHRlckltYWdlPiBhcHBseSgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKLSAgICAgICAgOiBGaWx0
ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAgICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJp
bmdNb2RlKQotICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgewotICAg
IH0KLQotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCi0gICAg
ICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX3JlbmRlcmluZ01v
ZGUocmVuZGVyaW5nTW9kZSkKLSAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQot
ICAgICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKLSAgICAgICAgLCBt
X2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCi0gICAgewotICAgIH0KKyAgICBGaWx0ZXIoRmls
dGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlKTsK
KyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUm
IGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24pOwogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ01vZGUgbV9y
ZW5kZXJpbmdNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IDIzNWEzZTgxODViYjliNjg3MTdiNTJhYzcx
OGM2NWVjYzhmNDlkYmQuLmNhYTk1ZWMyNDU5NTAxNTk1ZTg1YmEyMTZhNmY0OGVkNzg1NGM0MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckltYWdlLmgKQEAgLTI1LDggKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQaXhl
bEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEZpbHRlcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwotY2xhc3Mg
UGl4ZWxCdWZmZXI7CiAKIGNsYXNzIEZpbHRlckltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8Rmls
dGVySW1hZ2U+IHsKIHB1YmxpYzoKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsg
fQogICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCk7CiAgICAgUGl4
ZWxCdWZmZXIqIHBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCiAgICAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
RkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA4ZmE3YTM5M2MzY2UzNjY0OTMyZWVkMTI4
ZDUxMmM0NzlmNGI1YzI1Li5iNzk5MWY0OTQ5MDRlOWMzZTQ1MWE0YTM0YTZmMjg5ZGNjZmE0MzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRkVUaWxlLmgiCiAjaW5jbHVkZSAiRmlsdGVy
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291
cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAKaW5k
ZXggNWUzOTJlNGMxOGZkYTMzN2QwM2MzNGYzOTRiYjYzZDVkMTM2ZTJiMS4uN2IyMmQ0ZGYxYThl
ZTBiYTJiNmJmMDZhNjMzMTQwM2I5MzcxOGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBw
bGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
IAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VHcmFw
aGljU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA2M2FkOGJjZGUwMWFkZTc4ZTA3MjNmOTFmNzUw
NGU5MmZlZGRkMjM5Li44YjJhNTliMmY0MmRjNzgyOTMyYmU1OTI1ZWNhYWUxYTU3MWM5MWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3
YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3YXJl
QXBwbGllci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDE3YTkzZDNkNDI5MGFmZTg0MzE5MWVkYzBj
MGM3MTAwOWZkZWFkYWIuLjFiMDgyNWNhMTQ1NzZhOGE1OTJhN2E4NDRjNmM5Yjc0Y2JlYzFhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzMyLDExICszMzIsNiBAQCBib29sIENTU0Zp
bHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEZpbHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1HcmFwaGljc0NvbnRleHQqIENT
U0ZpbHRlcjo6aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/ICZz
b3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwotfQotCiBib29sIENTU0ZpbHRlcjo6
dXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCiB7CiAg
ICAgaWYgKGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFt
cGluZyhmaWx0ZXJSZWN0LnNpemUoKSkpCkBAIC0zNDksMzAgKzM0NCw2IEBAIGJvb2wgQ1NTRmls
dGVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQotewotICAg
IC8vIEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRo
ZQotICAgIC8vIHNvdXJjZSBpbWFnZSBzaXplcyBzZXQuIFdlIGp1c3QgbmVlZCB0byBhdHRhY2gg
dGhlIGdyYXBoaWMKLSAgICAvLyBidWZmZXIgaWYgd2UgaGF2ZSBub3QgeWV0IGRvbmUgc28uCi0K
LSAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwotICAgIGlmICgh
c291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxT
aXplKSB7Ci0jaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7
Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7Ci0gICAgICAgIHNl
dFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01v
ZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCkpOwotI2VuZGlmCi0gICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlclNjYWxlKCkpOwotICAgIH0KLQotICAg
IG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7Ci19Ci0KIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVjdCgpCiB7CiAgICAgaWYgKG1fZnVuY3Rpb25zLmlzRW1w
dHkoKSkKQEAgLTQxOSwxNSArMzkwLDE2IEBAIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVybWVk
aWF0ZVJlc3VsdHMoKQogICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1bHQoKTsKIH0KIAotYm9v
bCBDU1NGaWx0ZXI6OmFwcGx5KCkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmlsdGVyOjphcHBs
eSgpCiB7CiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7CiAgICAgICAg
IGlmICghZnVuY3Rpb24tPmFwcGx5KCp0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGxhc3RFZmZlY3QoKS0+
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBlZmZlY3QgPSBsYXN0RWZmZWN0KCk7CisgICAg
ZWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpKTsKKyAgICByZXR1cm4gZWZmZWN0LT5maWx0ZXJJbWFnZSgpOwogfQogCiBMYXlvdXRS
ZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBM
YXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCkBA
IC00NDAsMTQgKzQxMiw2IEBAIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1h
Z2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlCiAgICAgcmV0dXJuIHJl
Y3RGb3JSZXBhaW50OwogfQogCi1JbWFnZUJ1ZmZlciogQ1NTRmlsdGVyOjpvdXRwdXQoKQotewot
ICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsKLQotICAgIHJldHVybiBudWxscHRyOwot
fQotCiB2b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0KQogewogICAgIGF1dG8gc2NhbGVkU291cmNlSW1hZ2VSZWN0ID0gc291
cmNlSW1hZ2VSZWN0OwpAQCAtNDYyLDE4ICs0MjYsNiBAQCB2b2lkIENTU0ZpbHRlcjo6c2V0U291
cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQogICAgICAgICAg
ICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNldFNvdXJjZUltYWdlUmVj
dChzY2FsZWRTb3VyY2VJbWFnZVJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV9ncmFw
aGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7Ci19Ci0KLUludFJlY3QgQ1NTRmlsdGVyOjpvdXRw
dXRSZWN0KCkKLXsKLSAgICBhdXRvIGVmZmVjdCA9IGxhc3RFZmZlY3QoKTsKLQotICAgIGlmIChh
dXRvIHJlc3VsdCA9IGVmZmVjdC0+ZmlsdGVySW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+YWJzb2x1dGVJbWFnZVJlY3QoKSAtIEludFBvaW50KGZpbHRlclJlZ2lvbigpLmxvY2F0aW9u
KCkpOwotCi0gICAgcmV0dXJuIHsgfTsKIH0KIAogSW50T3V0c2V0cyBDU1NGaWx0ZXI6Om91dHNl
dHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmluZGV4IDBlYmE0N2Rm
Y2JiMDUyYjVmNDdmNzg5MzIwNTE3OGZlNDdkNTUyNjEuLmI2YWIyMDMxZTAxNjdmZDhhZWNmOTgz
ZGQ5YTI2YjI1Y2UyZjlmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01NCwxOCArNTQsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJl
UmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRo
YXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luOyB9CiAKICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBsYXN0RWZmZWN0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRl
eHQoKTsKICAgICBJbnRPdXRzZXRzIG91dHNldHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgYm9vbCBhcHBseSgpIG92ZXJyaWRl
OwotCi0gICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpOworICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4g
YXBwbHkoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQotICAgIEludFJlY3Qgb3V0cHV0UmVj
dCgpOwogCiAgICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0
KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCk7CiAKQEAgLTc2LDcgKzcwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzQ29y
ZUltYWdlUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIGJvb2wgbV9n
cmFwaGljc0J1ZmZlckF0dGFjaGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhh
dE1vdmVzUGl4ZWxzIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzRmlsdGVyVGhhdFNob3VsZEJl
UmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4geyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDk3ZmU5NjkzMTRiMjVl
YTMwNTQyMWJhMWQ2MDNlODJmMTVkNWYyMjAuLmZmOWQ4MjY2MjU4ZTc3YTY0Mjg0ZWQxYjhlOTVh
OTRkOWNkNzdmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlcnMuY3BwCkBAIC0xMjQsNiArMTI0LDI4IEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJz
OjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVGYWN0b3Is
CiAgICAgbV9maWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlci5zdHlsZSgpLmZpbHRl
cigpLCByZW5kZXJpbmdNb2RlLCBzY2FsZUZhY3Rvcik7CiB9CiAKK0dyYXBoaWNzQ29udGV4dCog
UmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQoreworICAgIHJldHVybiBtX3NvdXJj
ZUltYWdlID8gJm1fc291cmNlSW1hZ2UtPmNvbnRleHQoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQg
UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZShjb25zdCBHcmFwaGljc0Nv
bnRleHQmIHRhcmdldENvbnRleHQpCit7CisgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwor
ICAgIGF1dG8gbG9naWNhbFNpemUgPSBmaWx0ZXIuc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwor
ICAgIAorICAgIGlmICghbV9zb3VyY2VJbWFnZSB8fCBtX3NvdXJjZUltYWdlLT5sb2dpY2FsU2l6
ZSgpICE9IGxvZ2ljYWxTaXplKSB7CisjaWYgVVNFKERJUkVDVDJEKQorICAgICAgICBtX3NvdXJj
ZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdl
dENvbnRleHQpOworICAgICAgICBtX3NvdXJjZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisjZW5kaWYKKyAgICAgICAgaWYgKGF1
dG8gY29udGV4dCA9IGlucHV0Q29udGV4dCgpKQorICAgICAgICAgICAgY29udGV4dC0+c2NhbGUo
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOworICAgIH0KK30KKwogR3JhcGhpY3NDb250ZXh0KiBSZW5k
ZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGlu
YXRpb25Db250ZXh0LCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYg
ZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRS
ZWN0JiBsYXllclJlcGFpbnRSZWN0KQogewogICAgIGlmICghbV9maWx0ZXIpCkBAIC0xNjAsOCAr
MTgyLDEwIEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRl
ckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAKICAgICBmaWx0ZXIuZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAKLSAgICBmaWx0ZXIuYWxsb2NhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOwotICAgIGF1dG8qIHNvdXJjZUdyYXBo
aWNzQ29udGV4dCA9IGZpbHRlci5pbnB1dENvbnRleHQoKTsKKyAgICBpZiAoaGFzVXBkYXRlZEJh
Y2tpbmdTdG9yZSkKKyAgICAgICAgYWxsb2NhdGVCYWNraW5nU3RvcmUoZGVzdGluYXRpb25Db250
ZXh0KTsKKworICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgp
OwogICAgIGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24o
KS5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0
ZXJSZWdpb24oKS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc2LDI0
ICsyMDAsMTcgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmls
dGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAogdm9pZCBSZW5kZXJMYXllckZp
bHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KQogewotICAgIEFTU0VSVChtX2ZpbHRlci0+aW5wdXRDb250ZXh0KCkpOworICAgIEFTU0VS
VChpbnB1dENvbnRleHQoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJcblJlbmRlckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZpbHRlckVmZmVj
dCIpOwogCi0gICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwotICAgIGZpbHRlci5pbnB1dENv
bnRleHQoKS0+cmVzdG9yZSgpOworICAgIGlucHV0Q29udGV4dCgpLT5yZXN0b3JlKCk7CiAKLSAg
ICBmaWx0ZXIuYXBwbHkoKTsKLQotICAgIC8vIEdldCB0aGUgZmlsdGVyZWQgb3V0cHV0IGFuZCBk
cmF3IGl0IGluIHBsYWNlLgotICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIub3V0cHV0
UmVjdCgpOwotICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZz
ZXQueSgpKTsKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CiAKLSAgICBpZiAoYXV0byog
b3V0cHV0QnVmZmVyID0gZmlsdGVyLm91dHB1dCgpKSB7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29u
dGV4dC5zY2FsZSh7IDEgLyBmaWx0ZXIuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVy
LmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkgfSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKm91dHB1dEJ1ZmZlciwgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0
UmVjdCwgbV9sYXllci5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkp
OwotICAgICAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwotICAgIH0KKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoeyAxIC8gZmlsdGVyLmZpbHRl
clNjYWxlKCkud2lkdGgoKSwgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH0pOwor
ICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUlt
YWdlLmdldCgpLCBmaWx0ZXIpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5zY2FsZShmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAKICAgICBmaWx0ZXIuY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAppbmRl
eCAzYTc0OTk1ZjFmODRiZDk3M2VkMmI4OGQzMDQzOTdiNGM0NGRhMDM3Li5iNzBhZjE1NWExYTRm
Njg3ZDU0NjhmZDRjNzI5YTkzZWMxZDEzNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5oCkBAIC02OSwxMiArNjksMTUgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVjdCgp
IHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KKyAgICBHcmFwaGljc0NvbnRl
eHQqIGlucHV0Q29udGV4dCgpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xh
eWVyOwogCiAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5j
ZXM7CiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4g
bV9leHRlcm5hbFNWR1JlZmVyZW5jZXM7CiAKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291
cmNlSW1hZ2U7CiAgICAgUmVmUHRyPENTU0ZpbHRlcj4gbV9maWx0ZXI7CiAgICAgTGF5b3V0UmVj
dCBtX2RpcnR5U291cmNlUmVjdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggODJjY2ViNGMw
NmRkYmMxYTU2OGE5MGMyYjBmYmQ1NWNjODI2OTM2MS4uZWNiYjJiZWYxZTg5YjdhMDYzMTdlNTEy
YTczM2Y1MTBiNzAwMGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTIyNywzMSArMjI3LDEzIEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGF1
dG8gbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEuZmlsdGVyLT5sYXN0RWZmZWN0KCk7Ci0KLSAgICBp
ZiAobGFzdEVmZmVjdCAmJiAhZmlsdGVyRGF0YS5ib3VuZGFyaWVzLmlzRW1wdHkoKSAmJiAhbGFz
dEVmZmVjdC0+ZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IC8vIFRoaXMgaXMgdGhlIHJlYWwgZmlsdGVyaW5nIG9mIHRoZSBvYmplY3QuIEl0IGp1c3QgbmVl
ZHMgdG8gYmUgY2FsbGVkIG9uIHRoZQotICAgICAgICAvLyBpbml0aWFsIGZpbHRlcmluZyBwcm9j
ZXNzLiBXZSBqdXN0IHRha2UgdGhlIHN0b3JlZCBmaWx0ZXIgcmVzdWx0IG9uIGEKLSAgICAgICAg
Ly8gc2Vjb25kIGRyYXdpbmcuCi0gICAgICAgIGlmIChmaWx0ZXJEYXRhLnN0YXRlICE9IEZpbHRl
ckRhdGE6OkJ1aWx0KQotICAgICAgICAgICAgZmlsdGVyRGF0YS5maWx0ZXItPnNldFNvdXJjZUlt
YWdlKFdURk1vdmUoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVyKSk7Ci0KLSAgICAgICAg
Ly8gQWx3YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5z
dGF0ZSA9PSBGaWx0ZXJEYXRhOjpCdWlsdCkuCi0gICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFz
UmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpB
cHBseWluZzsKLSAgICAgICAgICAgIGZpbHRlckRhdGEuZmlsdGVyLT5hcHBseSgpOwotICAgICAg
ICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdFByZW11bHRpcGxpZWRSZXN1bHRJZk5lZWRlZCgpOwot
ICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoIWZpbHRlckRhdGEu
Ym91bmRhcmllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRl
ckRhdGE6OkJ1aWx0OwotCi0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGxhc3RFZmZlY3QtPmZp
bHRlckltYWdlKCkpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0SW1hZ2UgPSByZXN1bHQtPmlt
YWdlQnVmZmVyKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZp
bHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLmZp
bHRlci0+ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgcmVzdWx0LT5hYnNvbHV0ZUltYWdlUmVjdCgpKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2Fs
ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZp
bHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLmZp
bHRlci0+ZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSkpOworICAgICAgICBjb250ZXh0LT5kcmF3Rmls
dGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCksICpm
aWx0ZXJEYXRhLmZpbHRlcik7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuc2Nh
bGUpOwogICAgIH0KKwogICAgIGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1ZmZlciA9IG51bGxw
dHI7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0QXBwbHlSZXNvdXJjZSBkb25lXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDg3MjcwOTY5ZDMwYjhhN2Q2M2VkZWJhZDA4ODU3MDJiMjhkMmJiZmUuLjFiZDkyMGE1
ZmM5Y2M4ZDQ5NjgwYTM1MGY4YjExYjI0MDBlMTRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMiw2ICsyLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA4LDE0ICsxMDksMTQgQEAgYm9vbCBTVkdG
aWx0ZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgIHJldHVybiBhcHBseSgpOwog
fQogCi1ib29sIFNWR0ZpbHRlcjo6YXBwbHkoKQorUmVmUHRyPEZpbHRlckltYWdlPiBTVkdGaWx0
ZXI6OmFwcGx5KCkKIHsKICAgICBBU1NFUlQoIW1fZXhwcmVzc2lvbi5pc0VtcHR5KCkpOwogICAg
IGZvciAoYXV0byYgZWZmZWN0IDogbV9leHByZXNzaW9uKSB7CiAgICAgICAgIGlmICghZWZmZWN0
LT5hcHBseSgqdGhpcykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGxhc3RF
ZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKTsKIH0KIAogSW50T3V0c2V0cyBTVkdGaWx0ZXI6Om91dHNl
dHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaAppbmRleCA0OWI1NTUzYzU2MmE3MTUzMTE3NzUzMDE5ZmQ4MzI0ZWFlN2I0ODcxLi4y
MTFkMTAzN2UzZGFkNmFiNTU3N2M1MDcyMjk3ZTcwYzU3Y2NjNTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBGaWx0ZXJJbWFnZTsKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBT
VkdGaWx0ZXJFbGVtZW50OwogCkBAIC0zNywxNCArMzksMTUgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1
aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwogICAgIHN0YXRpYyBSZWZQ
dHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXIm
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNF
ZmZlY3QpOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplKSBj
b25zdCBmaW5hbDsKLQogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KLSAgICBib29sIGFwcGx5KCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHNldEV4cHJlc3Npb24oRmlsdGVyRWZmZWN0VmVjdG9yJiYgZXhwcmVzc2lv
bikgeyBtX2V4cHJlc3Npb24gPSBXVEZNb3ZlKGV4cHJlc3Npb24pOyB9CiAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuICFtX2V4cHJlc3Npb24uaXNF
bXB0eSgpID8gbV9leHByZXNzaW9uLmxhc3QoKSA6IG51bGxwdHI7IH0KIAorICAgIEZsb2F0U2l6
ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSkgY29uc3QgZmluYWw7CisKKyAgICBSZWZQ
dHI8RmlsdGVySW1hZ2U+IGFwcGx5KCkgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgU1ZHRmls
dGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9kZSk7
CiAK
</data>
<flag name="review"
          id="470384"
          type_id="1"
          status="+"
          setter="heycam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445247</attachid>
            <date>2021-11-28 19:41:03 -0800</date>
            <delta_ts>2021-11-28 22:08:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232843-20211128194103.patch</filename>
            <type>text/plain</type>
            <size>38326</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhjNTMyZDRiMTlmZTQz
N2Q4MmM0N2Y2ZDNmYmEyMjVmYjc1OTQ5Mi4uZWE2OGQ3YjdiMzU3NjE5ZDIxNzk1OWI0NDk3OTlh
M2NjOGRlYTNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTExLTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QXBwbHkgdGhlIGZpbHRlciB0byBhbiBJbWFnZUJ1ZmZlciB0aHJvdWdoIEdyYXBoaWNzQ29udGV4
dCBhbmQgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjg0MworCisgICAgICAgIFJldmlld2VkIGJ5IENhbWVyb24gTWNDb3JtYWNr
LgorCisgICAgICAgIFRoaXMgc3RlcCB3aWxsIGFsbG93IHNlbmRpbmcgdGhlIEZpbHRlciB0byBH
UFVQcm9jZXNzIGFuZCBhcHBseWluZyBpdCB0bworICAgICAgICBhIHJlbW90ZSBJbWFnZUJ1ZmZl
ci4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCBtYW5hZ2luZyB0aGUgc291cmNlSW1hZ2VCdWZm
ZXIgb2YgdGhlIENTU0ZpbHRlciBpcyBtb3ZlZAorICAgICAgICB0byBSZW5kZXJMYXllckZpbHRl
cnMuIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIAorICAg
ICAgICBkb2VzIGJ5IG1haW50YWluaW5nIHRoZSBzb3VyY2VJbWFnZSBmb3IgdGhlIFNWR0ZpbHRl
ci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXI6OnJlbmRlcmluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRSZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZp
bHRlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
RkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2Fy
ZUFwcGxpZXIuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0
ZXI6OnNldFNvdXJjZUltYWdlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Omlu
cHV0Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9j
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpvdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
OjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisK
IDIwMjEtMTEtMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViR1BVXSBBZGQgZGVyaXZlZCBzb3VyY2VzIHRvIFhjb2RlIHByb2plY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDliYTkwZGYxMTYwYTUwYzVlNjE3YjBkMDlhZjVhMDQ2MGQ0M2I4
ZmIuLmJjZjczM2Y0NzE0ZTVhZDI4OWZiMDgwOGZiMTgyZmFhNjNmM2FkYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTQyMyw2ICsxNDIzLDkgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5oCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMTgxZDQ3NTFmNTZmZjU5MGU4MGU0YmI0
ZWExNmI2MzVmMmE3MmVjYy4uN2I2ZDU2MTQ2OTkyY2VhNDM3Yjg5YjRlNGNmMTY0MmU0NzcyNDA0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIxMDEsNiArMjEwMSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVPZmZzZXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCitwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2FhNTZjN2M2OWRj
ZGVhZTQ1YWE4NDZhZjE1OTBlMmQ1YTk0YWI3Yy4uN2Q1ZmRkMGE3NDM4NDI2NzllYzE3YzIxMWUy
NmI1N2RhN2JkMmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjMwNSw2ICsyMzA1LDggQEAKIAkJNzI5OUJDNjgyM0Q2QTUz
RTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUy
NTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNG
OTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmlt
YXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MkI4QjAzNTI3NTM0Mzg2MDBGNzUyQUEgLyogRmlsdGVyRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjJENzU2Mjcy
QTE3NDEwMEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQjhCMDM2Mjc1MzQ0MTQwMEY3NTJBQSAvKiBG
aWx0ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI0MzVFRjQyNzNEMDc2NzAwMDVFN0VFIC8qIEZpbHRlckltYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFp
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGNjY3
REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5nRG9tYWluLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDcz
RjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwpAQCAtMjcwNyw3ICsyNzA5LDcgQEAKIAkJODQy
MjQxOTQxMDdFNzhBNzAwNzY2QTg3IC8qIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MjI0MTkxMTA3RTc4QTcw
MDc2NkE4NyAvKiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggKi87IH07CiAJCTg0MzAwQkQ2MTIw
QzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDMwMEJENTEyMEM5QUFDMDAyMTk1NEEgLyog
U1ZHUGF0aFN0cmluZ1NvdXJjZS5oICovOyB9OwogCQk4NDMwMEJEODEyMEM5QUQ0MDAyMTk1NEEg
LyogU1ZHUGF0aFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODQzMDBCRDcxMjBDOUFENDAwMjE5NTRBIC8qIFNWR1BhdGhTb3VyY2UuaCAqLzsg
fTsKLQkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5
IC8qIEZpbHRlci5oICovOyB9OworCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJG
NzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODQ1RTcyRkMwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0Zp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1
RTcyRkEwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5oICovOyB9OwogCQk4NDY1MEU3RTIz
ODdBRDdEMDA2MjY2RTIgLyogTWVkaWFRdWVyeUxpc3RFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ2NTBFN0MyMzg3QUQ3QzAwNjI2NkUyIC8q
IE1lZGlhUXVlcnlMaXN0RXZlbnQuaCAqLzsgfTsKIAkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5
IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQ3MzBENUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNv
dXJjZS5oICovOyB9OwpAQCAtMTEyMDQsNiArMTEyMDYsNyBAQAogCQk3MkI4QjAxRTI3NTFCOTEw
MDBGNzUyQUEgLyogRkVDb2xvck1hdHJpeENvcmVJbWFnZUFwcGxpZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBGRUNvbG9yTWF0cml4Q29yZUltYWdlQXBwbGllci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJCOEIwMUYyNzUxQjkyODAwRjc1MkFBIC8qIEZFQ29sb3JNYXRy
aXhDb3JlSW1hZ2VBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZFQ29sb3JNYXRyaXhDb3JlSW1h
Z2VBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjhCMDIwMjc1MUM0
QjcwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZUNvcmVJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZpbHRlckltYWdlQ29yZUltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkI4QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NjYsNiArMjY1NjksNyBAQAogCQkJCTg0NzMwRDZF
MTI0OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuaCAqLywKIAkJCQk4NDczMEQ2RjEyNDhGMEIzMDBE
M0E5QzkgLyogRkVUdXJidWxlbmNlLmNwcCAqLywKIAkJCQk4NDczMEQ3MDEyNDhGMEIzMDBEM0E5
QzkgLyogRkVUdXJidWxlbmNlLmggKi8sCisJCQkJNzJCOEIwMzIyNzUzM0Y4MTAwRjc1MkFBIC8q
IEZpbHRlci5jcHAgKi8sCiAJCQkJODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5o
ICovLAogCQkJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICov
LAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKQEAg
LTM0MTEwLDYgKzM0MTE0LDggQEAKIAkJCQk3MTJCRTQ4MzFGRTg2NUREMDAyMDMxQ0MgLyogRmls
bE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzkyNTFBMEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQjhCMDM1Mjc1MzQzODYwMEY3NTJB
QSAvKiBGaWx0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJCOEIwMzYyNzUzNDQx
NDAwRjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVDRUI2RTE0
OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUVDRUI3MDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRl
eCBkMzJmZmJjYzNjNTg2MmNiMWVjYTZkNmFlZDk4MmQyMGQ3ZDk0OWZlLi4xNDVkZDlkN2MzZjBm
NzhkODZlOWY0OTg1NzE3ODQ5M2FkMTk4MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMzAsMTQgKzEzMCwxMCBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghY3NzRmlsdGVyLT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJl
ciwgbV9maWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pKQog
ICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIGNzc0ZpbHRlci0+c2V0
U291cmNlSW1hZ2UoV1RGTW92ZShzb3VyY2VJbWFnZSkpOwotICAgIGNzc0ZpbHRlci0+YXBwbHko
KTsKKyAgICBpZiAoYXV0byBpbWFnZSA9IHNvdXJjZUltYWdlLT5maWx0ZXJlZEltYWdlKCpjc3NG
aWx0ZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CiAKLSAgICBhdXRvKiBvdXRwdXQgPSBjc3NG
aWx0ZXItPm91dHB1dCgpOwotICAgIGlmICghb3V0cHV0KQotICAgICAgICByZXR1cm4gJkltYWdl
OjpudWxsSW1hZ2UoKTsKLQotICAgIHJldHVybiBvdXRwdXQtPmNvcHlJbWFnZSgpOworICAgIHJl
dHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogfQogCiB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6
OmZpbHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA5NTFh
ZTliZTM4MmMxM2ZkOTcyODllYjQzMjNiYWU0MzljNjMyM2U2Li43NTBkYjRlZTg5MTY2MGZhNGJl
Y2ViYzQ0NDdjNjg1Y2U1YzQ4NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yNSw2ICsyNSw4IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVySW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgi
CiAKQEAgLTEzNyw2ICsxMzksMjQgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKKyAgICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJiBmaWx0
ZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2Vu
ZENyZWF0ZWQoKTsKKyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMp
LmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBw
bHkodGhpcyk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHJlc3VsdC0+aW1hZ2VCdWZmZXIoKTsK
KyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgfQorCiAgICAg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGIyMjE4ZmFhM2JkNTZi
Mzk1NDQxNDE1ZmQ4ZTFmNjk2NzA5ZWRmZGUuLjgwMTg2OTZkNDY5NWVlOGEwYmI1Njk5NTg5NjAz
MWVhOTBlYzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQmlk
aVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJGaWx0ZXIu
aCIKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3Qu
aCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC02
MjksNiArNjMxLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QKICAgICBJbWFnZUJ1ZmZlcjo6
ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IG9wdGlvbnMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0ZXImIGZpbHRlcikKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJbWFnZSk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gcmVzdWx0LT5p
bWFnZUJ1ZmZlcigpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHJlc3VsdC0+YWJzb2x1dGVJbWFnZVJl
Y3QoKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBQYXRoIHBhdGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBjMTQx
NDNlZDhkNmEzNmQ4MDRiYTUwMmMyMjQ3ZWFkYzUwNTIyMzcuLjNkOGQzYTcxMjUzZTM2MzBmOGQ5
NWNkZGQ0MDk2YmI2NDIyODliZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04NSw2ICs4NSw3IEBAIHR5cGVkZWYgdW5z
aWduZWQgY2hhciBVSW50ODsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOworY2xhc3MgRmlsdGVyOwogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEdy
YWRpZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwpAQCAtNDUxLDYg
KzQ1Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVm
ZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNv
dXJjZUltYWdlLCBGaWx0ZXImKTsKKwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihOYXRp
dmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCiAj
aWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggZjNmZDJmYjY0NjhjZmI3OTM0NTdmYzMwMTg0NzE5MDM3YjBiOGY1
ZC4uZDdiNzU2NGE1OWI4YzI2NzZhNzZlMTkxYzVhMDc5NTk2MTg5ODYxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC00Miw2ICs0Miw4
IEBAIGNsYXNzIERyYXdpbmdDb250ZXh0Owogc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiB9CiAK
K2NsYXNzIEZpbHRlcjsKKwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SW1hZ2VCdWZmZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJl
dHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCkBAIC0xMDcsNiArMTA5
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENv
cHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6
Tm8pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFnZShG
aWx0ZXImKSA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUg
d2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlz
IG5ldyBvbmUuCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZTEyY2JkNjg4NmU3MWYzYWY4ODBlZTJkNDM3
ZTEwODIzMDcyODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmlsdGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJJbWFnZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0ZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
CisgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9yZW5kZXJpbmdNb2Rl
KHJlbmRlcmluZ01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQoreworfQor
CitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCisgICAg
OiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQorICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRl
cmluZ01vZGUpCisgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgICwgbV9zb3Vy
Y2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVy
UmVnaW9uKQoreworfQorCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VC
dWZmZXIqIHNvdXJjZUltYWdlKQoreworICAgIHNldFNvdXJjZUltYWdlKHNvdXJjZUltYWdlKTsK
KworICAgIGF1dG8gcmVzdWx0ID0gYXBwbHkoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJlc3VsdC0+dHJhbnNmb3JtVG9Db2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuaAppbmRleCAyYjA2YmZiYjY0ZTI1NDE5ZTRhZjU5YjExYzE1OTBkOTBk
M2M4YTg2Li5iYzliOTRkNjUzOTg5ZGVhYWMzZjY0MmYxZjM3NGE3NWM1ZjdkMzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAg
LTI5LDEyICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbHRlckVm
ZmVjdDsKK2NsYXNzIEZpbHRlckltYWdlOwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgRmlsdGVy
RnVuY3Rpb24gewogICAgIHVzaW5nIEZpbHRlckZ1bmN0aW9uOjphcHBseTsKIAogcHVibGljOgor
ICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
aW5nTW9kZTsgfQorICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsgfQorICAgIAogICAg
IEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7IH0K
ICAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpIHsg
bV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CiAKQEAgLTQ0LDMxICs0NywxNyBAQCBwdWJs
aWM6CiAgICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVy
UmVnaW9uOyB9CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0
ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KIAotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNvbnN0IHsg
cmV0dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdmlydHVhbCBib29sIGFwcGx5KCkg
PSAwOwotCiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VJbWFnZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUmVmUHRyPEltYWdl
QnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUlt
YWdlKTsgfQogCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdNb2RlOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9
CisgICAgdmlydHVhbCBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUgc2l6
ZSkgY29uc3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyU2NhbGU7IH0KKworICAgIHZpcnR1YWwg
UmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKLSAgICAgICAgOiBG
aWx0ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAgICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5k
ZXJpbmdNb2RlKQotICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgewot
ICAgIH0KLQotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCi0g
ICAgICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX3JlbmRlcmlu
Z01vZGUocmVuZGVyaW5nTW9kZSkKLSAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxl
KQotICAgICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKLSAgICAgICAg
LCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCi0gICAgewotICAgIH0KKyAgICBGaWx0ZXIo
RmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxl
KTsKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNp
emUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pOwogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ01vZGUg
bV9yZW5kZXJpbmdNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IDIzNWEzZTgxODViYjliNjg3MTdiNTJh
YzcxOGM2NWVjYzhmNDlkYmQuLmNhYTk1ZWMyNDU5NTAxNTk1ZTg1YmEyMTZhNmY0OGVkNzg1NGM0
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmgKQEAgLTI1LDggKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQ
aXhlbEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZpbHRlcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEltYWdlQnVmZmVyOwotY2xh
c3MgUGl4ZWxCdWZmZXI7CiAKIGNsYXNzIEZpbHRlckltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
RmlsdGVySW1hZ2U+IHsKIHB1YmxpYzoKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9k
ZTsgfQogICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCk7CiAgICAg
UGl4ZWxCdWZmZXIqIHBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCiAgICAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgc3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBs
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA4ZmE3YTM5M2MzY2UzNjY0OTMyZWVk
MTI4ZDUxMmM0NzlmNGI1YzI1Li5iNzk5MWY0OTQ5MDRlOWMzZTQ1MWE0YTM0YTZmMjg5ZGNjZmE0
MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRkVUaWxlLmgiCiAjaW5jbHVkZSAiRmls
dGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUv
U291cmNlQWxwaGFTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAK
aW5kZXggNWUzOTJlNGMxOGZkYTMzN2QwM2MzNGYzOTRiYjYzZDVkMTM2ZTJiMS4uN2IyMmQ0ZGYx
YThlZTBiYTJiNmJmMDZhNjMzMTQwM2I5MzcxOGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJl
QXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9Tb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9Tb3VyY2VH
cmFwaGljU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA2M2FkOGJjZGUwMWFkZTc4ZTA3MjNmOTFm
NzUwNGU5MmZlZGRkMjM5Li44YjJhNTliMmY0MmRjNzgyOTMyYmU1OTI1ZWNhYWUxYTU3MWM5MWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL1NvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvU291cmNlR3JhcGhpY1NvZnR3
YXJlQXBwbGllci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkZpbHRlci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDE3YTkzZDNkNDI5MGFmZTg0MzE5MWVk
YzBjMGM3MTAwOWZkZWFkYWIuLmRkZjAxNDM0Yzk5ZjFlYzY5Y2MzZjAzNjc2ODA4YzZkOTMyMTIx
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzMyLDExICszMzIsNiBAQCBib29sIENT
U0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IEZpbHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1HcmFwaGljc0NvbnRleHQq
IENTU0ZpbHRlcjo6aW5wdXRDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/
ICZzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwotfQotCiBib29sIENTU0ZpbHRl
cjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCiB7
CiAgICAgaWYgKGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhmaWx0ZXJSZWN0LnNpemUoKSkpCkBAIC0zNDksMzAgKzM0NCw2IEBAIGJvb2wgQ1NT
RmlsdGVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVj
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQotewot
ICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5k
IHRoZQotICAgIC8vIHNvdXJjZSBpbWFnZSBzaXplcyBzZXQuIFdlIGp1c3QgbmVlZCB0byBhdHRh
Y2ggdGhlIGdyYXBoaWMKLSAgICAvLyBidWZmZXIgaWYgd2UgaGF2ZSBub3QgeWV0IGRvbmUgc28u
Ci0KLSAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwotICAgIGlm
ICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2lj
YWxTaXplKSB7Ci0jaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250
ZXh0LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KSk7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7Ci0gICAgICAg
IHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmlu
Z01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCkpOwotI2VuZGlmCi0gICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQo
KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlclNjYWxlKCkpOwotICAgIH0KLQot
ICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7Ci19Ci0KIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVjdCgpCiB7CiAgICAgaWYgKG1fZnVuY3Rpb25zLmlz
RW1wdHkoKSkKQEAgLTQxOSwxNSArMzkwLDEzIEBAIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVy
bWVkaWF0ZVJlc3VsdHMoKQogICAgICAgICBmdW5jdGlvbi0+Y2xlYXJSZXN1bHQoKTsKIH0KIAot
Ym9vbCBDU1NGaWx0ZXI6OmFwcGx5KCkKK1JlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmlsdGVyOjph
cHBseSgpCiB7CiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7CiAgICAg
ICAgIGlmICghZnVuY3Rpb24tPmFwcGx5KCp0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLQotICAgIGxhc3RFZmZlY3Qo
KS0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1h
Z2UoKTsKIH0KIAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RG
b3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZGlydHlSZWN0KQpAQCAtNDQwLDE0ICs0MDksNiBAQCBMYXlvdXRSZWN0IENTU0ZpbHRl
cjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBm
aWx0ZQogICAgIHJldHVybiByZWN0Rm9yUmVwYWludDsKIH0KIAotSW1hZ2VCdWZmZXIqIENTU0Zp
bHRlcjo6b3V0cHV0KCkKLXsKLSAgICBpZiAoYXV0byByZXN1bHQgPSBsYXN0RWZmZWN0KCktPmZp
bHRlckltYWdlKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPmltYWdlQnVmZmVyKCk7Ci0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQogdm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVj
dChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKIHsKICAgICBhdXRvIHNjYWxlZFNv
dXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsKQEAgLTQ2MiwxOCArNDIzLDYgQEAgdm9p
ZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCkKICAgICAgICAgICAgIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRyKCkp
LT5zZXRTb3VyY2VJbWFnZVJlY3Qoc2NhbGVkU291cmNlSW1hZ2VSZWN0KTsKICAgICAgICAgfQog
ICAgIH0KLQotICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IGZhbHNlOwotfQotCi1JbnRS
ZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpCi17Ci0gICAgYXV0byBlZmZlY3QgPSBsYXN0RWZm
ZWN0KCk7Ci0KLSAgICBpZiAoYXV0byByZXN1bHQgPSBlZmZlY3QtPmZpbHRlckltYWdlKCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQtPmFic29sdXRlSW1hZ2VSZWN0KCkgLSBJbnRQb2ludChmaWx0
ZXJSZWdpb24oKS5sb2NhdGlvbigpKTsKLQotICAgIHJldHVybiB7IH07CiB9CiAKIEludE91dHNl
dHMgQ1NTRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuaAppbmRleCAwZWJhNDdkZmNiYjA1MmI1ZjQ3Zjc4OTMyMDUxNzhmZTQ3ZDU1MjYxLi5iNmFi
MjAzMWUwMTY3ZmQ4YWVjZjk4M2RkOWEyNmIyNWNlMmY5Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsMTggKzU0LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbjsg
fQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbGFzdEVmZmVjdCgpOwotICAgIEdyYXBoaWNz
Q29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwotICAgIGJv
b2wgYXBwbHkoKSBvdmVycmlkZTsKLQotICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKTsKKyAgICBS
ZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHVwZGF0ZUJh
Y2tpbmdTdG9yZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KTsKLSAgICB2b2lkIGFs
bG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KLSAg
ICBJbnRSZWN0IG91dHB1dFJlY3QoKTsKIAogICAgIExheW91dFJlY3QgY29tcHV0ZVNvdXJjZUlt
YWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25z
dCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCkBAIC03Niw3ICs3MCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwogI2Vu
ZGlmCiAKLSAgICBib29sIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luIHsgZmFsc2UgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApp
bmRleCA5N2ZlOTY5MzE0YjI1ZWEzMDU0MjFiYTFkNjAzZTgyZjE1ZDVmMjIwLi5mZjlkODI2NjI1
OGU3N2E2NDI4NGVkMWI4ZTk1YTk0ZDljZDc3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMTI0LDYgKzEyNCwyOCBAQCB2b2lk
IFJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGZsb2F0IHNjYWxlRmFjdG9yLAogICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVu
ZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwgcmVuZGVyaW5nTW9kZSwgc2NhbGVGYWN0b3IpOwogfQog
CitHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KCkKK3sK
KyAgICByZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZtX3NvdXJjZUltYWdlLT5jb250ZXh0KCkgOiBu
dWxscHRyOworfQorCit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3Rv
cmUoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQoreworICAgIGF1dG8mIGZp
bHRlciA9ICptX2ZpbHRlcjsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gZmlsdGVyLnNvdXJjZUlt
YWdlUmVjdCgpLnNpemUoKTsKKyAgICAKKyAgICBpZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3Vy
Y2VJbWFnZS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgeworI2lmIFVTRShESVJFQ1Qy
RCkKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNp
emUsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyNlbHNlCisgICAgICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworI2Vu
ZGlmCisgICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKKyAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICB9Cit9CisKIEdy
YXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKIHsKICAgICBpZiAoIW1f
ZmlsdGVyKQpAQCAtMTYwLDggKzE4MiwxMCBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVy
RmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdAogCiAg
ICAgZmlsdGVyLmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwogCi0gICAgZmls
dGVyLmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoZGVzdGluYXRpb25Db250ZXh0KTsKLSAg
ICBhdXRvKiBzb3VyY2VHcmFwaGljc0NvbnRleHQgPSBmaWx0ZXIuaW5wdXRDb250ZXh0KCk7Cisg
ICAgaWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIGFsbG9jYXRlQmFja2luZ1N0
b3JlKGRlc3RpbmF0aW9uQ29udGV4dCk7CisKKyAgICBhdXRvKiBzb3VyY2VHcmFwaGljc0NvbnRl
eHQgPSBpbnB1dENvbnRleHQoKTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCB8fCBm
aWx0ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTE3NiwyNCArMjAwLDE3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5
ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAK
IHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIHsKLSAgICBBU1NFUlQobV9maWx0ZXItPmlucHV0Q29u
dGV4dCgpKTsKKyAgICBBU1NFUlQoaW5wdXRDb250ZXh0KCkpOwogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiXG5SZW5kZXJMYXllckZpbHRlcnMgIiA8PCB0aGlzIDw8
ICIgYXBwbHlGaWx0ZXJFZmZlY3QiKTsKIAotICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsK
LSAgICBmaWx0ZXIuaW5wdXRDb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBpbnB1dENvbnRleHQo
KS0+cmVzdG9yZSgpOwogCi0gICAgZmlsdGVyLmFwcGx5KCk7Ci0KLSAgICAvLyBHZXQgdGhlIGZp
bHRlcmVkIG91dHB1dCBhbmQgZHJhdyBpdCBpbiBwbGFjZS4KLSAgICBMYXlvdXRSZWN0IGRlc3RS
ZWN0ID0gZmlsdGVyLm91dHB1dFJlY3QoKTsKLSAgICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZz
ZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CisgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVy
OwogCi0gICAgaWYgKGF1dG8qIG91dHB1dEJ1ZmZlciA9IGZpbHRlci5vdXRwdXQoKSkgewotICAg
ICAgICBkZXN0aW5hdGlvbkNvbnRleHQuc2NhbGUoeyAxIC8gZmlsdGVyLmZpbHRlclNjYWxlKCku
d2lkdGgoKSwgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLmhlaWdodCgpIH0pOwotICAgICAgICBk
ZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoZGVzdFJlY3QsIG1fbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LnNjYWxlKGZp
bHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICB9CisgICAgZGVzdGluYXRpb25Db250ZXh0LnNjYWxl
KHsgMSAvIGZpbHRlci5maWx0ZXJTY2FsZSgpLndpZHRoKCksIDEgLyBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKS5oZWlnaHQoKSB9KTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIobV9zb3VyY2VJbWFnZS5nZXQoKSwgZmlsdGVyKTsKKyAgICBkZXN0aW5hdGlvbkNv
bnRleHQuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgZmlsdGVyLmNsZWFySW50
ZXJtZWRpYXRlUmVzdWx0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmgKaW5kZXggM2E3NDk5NWYxZjg0YmQ5NzNlZDJiODhkMzA0Mzk3YjRjNDRk
YTAzNy4uYjcwYWYxNTVhMWE0ZjY4N2Q1NDY4ZmQ0YzcyOWE5M2VjMWQxMzczMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaApAQCAtNjksMTIgKzY5
LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgcmVz
ZXREaXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9
CisgICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKKyAgICB2b2lkIGFsbG9jYXRl
QmFja2luZ1N0b3JlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCk7CiAKICAg
ICBSZW5kZXJMYXllciYgbV9sYXllcjsKIAogICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IG1f
aW50ZXJuYWxTVkdSZWZlcmVuY2VzOwogICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTVkdEb2N1bWVudD4+IG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzOwogCisgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIFJlZlB0cjxDU1NGaWx0ZXI+IG1fZmls
dGVyOwogICAgIExheW91dFJlY3QgbV9kaXJ0eVNvdXJjZVJlY3Q7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCmluZGV4IDgyY2NlYjRjMDZkZGJjMWE1NjhhOTBjMmIwZmJkNTVjYzgyNjkzNjEuLmVjYmIy
YmVmMWU4OWI3YTA2MzE3ZTUxMmE3MzNmNTEwYjcwMDBlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBA
IC0yMjcsMzEgKzIyNywxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBhdXRvIGxhc3RFZmZlY3QgPSBmaWx0ZXJEYXRhLmZpbHRlci0+bGFz
dEVmZmVjdCgpOwotCi0gICAgaWYgKGxhc3RFZmZlY3QgJiYgIWZpbHRlckRhdGEuYm91bmRhcmll
cy5pc0VtcHR5KCkgJiYgIWxhc3RFZmZlY3QtPmZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLmlz
RW1wdHkoKSkgewotICAgICAgICAvLyBUaGlzIGlzIHRoZSByZWFsIGZpbHRlcmluZyBvZiB0aGUg
b2JqZWN0LiBJdCBqdXN0IG5lZWRzIHRvIGJlIGNhbGxlZCBvbiB0aGUKLSAgICAgICAgLy8gaW5p
dGlhbCBmaWx0ZXJpbmcgcHJvY2Vzcy4gV2UganVzdCB0YWtlIHRoZSBzdG9yZWQgZmlsdGVyIHJl
c3VsdCBvbiBhCi0gICAgICAgIC8vIHNlY29uZCBkcmF3aW5nLgotICAgICAgICBpZiAoZmlsdGVy
RGF0YS5zdGF0ZSAhPSBGaWx0ZXJEYXRhOjpCdWlsdCkKLSAgICAgICAgICAgIGZpbHRlckRhdGEu
ZmlsdGVyLT5zZXRTb3VyY2VJbWFnZShXVEZNb3ZlKGZpbHRlckRhdGEuc291cmNlR3JhcGhpY0J1
ZmZlcikpOwotCi0gICAgICAgIC8vIEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBi
dWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgotICAgICAgICBp
ZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBmaWx0ZXJEYXRhLnN0
YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7Ci0gICAgICAgICAgICBmaWx0ZXJEYXRhLmZpbHRl
ci0+YXBwbHkoKTsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RQcmVtdWx0aXBsaWVk
UmVzdWx0SWZOZWVkZWQoKTsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICB9Cisg
ICAgaWYgKCFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZpbHRl
ckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKLQotICAgICAgICBpZiAoYXV0byByZXN1
bHQgPSBsYXN0RWZmZWN0LT5maWx0ZXJJbWFnZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3Vs
dEltYWdlID0gcmVzdWx0LT5pbWFnZUJ1ZmZlcigpOwotICAgICAgICAgICAgY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIHJlc3VsdC0+YWJz
b2x1dGVJbWFnZVJlY3QoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRh
LmZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgY29udGV4dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3VyY2VHcmFw
aGljQnVmZmVyLmdldCgpLCAqZmlsdGVyRGF0YS5maWx0ZXIpOworICAgICAgICBjb250ZXh0LT5z
Y2FsZShmaWx0ZXJEYXRhLnNjYWxlKTsKICAgICB9CisKICAgICBmaWx0ZXJEYXRhLnNvdXJjZUdy
YXBoaWNCdWZmZXIgPSBudWxscHRyOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0
cmVhbSA8PCAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgIiA8PCB0aGlzIDw8ICIgcG9zdEFwcGx5
UmVzb3VyY2UgZG9uZVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRleCA4NzI3MDk2OWQzMGI4YTdkNjNlZGViYWQwODg1NzAy
YjI4ZDJiYmZlLi4xYmQ5MjBhNWZjOWNjOGQ0OTY4MGEzNTBmOGIxMWIyNDAwZTE0YmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAK
QEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0
QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwOCwxNCAr
MTA5LDE0IEBAIGJvb2wgU1ZHRmlsdGVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlcikKICAg
ICByZXR1cm4gYXBwbHkoKTsKIH0KIAotYm9vbCBTVkdGaWx0ZXI6OmFwcGx5KCkKK1JlZlB0cjxG
aWx0ZXJJbWFnZT4gU1ZHRmlsdGVyOjphcHBseSgpCiB7CiAgICAgQVNTRVJUKCFtX2V4cHJlc3Np
b24uaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZXhwcmVzc2lvbikgewog
ICAgICAgICBpZiAoIWVmZmVjdC0+YXBwbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBsYXN0RWZmZWN0KCktPmZpbHRlckltYWdlKCk7CiB9CiAKIEludE91dHNl
dHMgU1ZHRmlsdGVyOjpvdXRzZXRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggNDliNTU1M2M1NjJhNzE1MzExNzc1MzAx
OWZkODMyNGVhZTdiNDg3MS4uMjExZDEwMzdlM2RhZDZhYjU1NzdjNTA3MjI5N2U3MGM1N2NjYzUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCw2ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsdGVySW1hZ2U7CiBjbGFzcyBTVkdGaWx0
ZXJCdWlsZGVyOwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIApAQCAtMzcsMTQgKzM5LDE1IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVs
ZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
KTsKICAgICBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQm
LCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0
ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0
ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0KTsKIAotICAgIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRl
clNjYWxlKEZsb2F0U2l6ZSkgY29uc3QgZmluYWw7Ci0KICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91
bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3RhcmdldEJvdW5kaW5nQm94OyB9Ci0gICAgYm9v
bCBhcHBseSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRFeHByZXNzaW9uKEZpbHRlckVmZmVj
dFZlY3RvciYmIGV4cHJlc3Npb24pIHsgbV9leHByZXNzaW9uID0gV1RGTW92ZShleHByZXNzaW9u
KTsgfQogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVy
biAhbV9leHByZXNzaW9uLmlzRW1wdHkoKSA/IG1fZXhwcmVzc2lvbi5sYXN0KCkgOiBudWxscHRy
OyB9CiAKKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0
IGZpbmFsOworCisgICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpIG92ZXJyaWRlOworCiBw
cml2YXRlOgogICAgIFNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJv
b2wgZWZmZWN0QkJveE1vZGUpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>