<?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>206541</bug_id>
          
          <creation_ts>2020-01-21 10:11:29 -0800</creation_ts>
          <short_desc>Remove ImageBuffer::sizeForDestinationSize()</short_desc>
          <delta_ts>2020-01-22 16:00:05 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>206519</dependson>
          <blocked>204955</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609116</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-21 10:11:29 -0800</bug_when>
    <thetext>This function is currently does nothing. For CG ports, it scales a rect by the ratio backingStoreSize / internalSize which is always 1. The constructor ImageBuffer::ImageBuffer() sets m_size and m_data.backingStoreSize to the same value always.

    m_size = IntSize(scaledWidth, scaledHeight);
    m_data.backingStoreSize = m_size;

For other ports ImageBuffer::sizeForDestinationSize() returns the passed rectangle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609118</commentid>
    <comment_count>1</comment_count>
      <attachid>388315</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-21 10:15:32 -0800</bug_when>
    <thetext>Created attachment 388315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609254</commentid>
    <comment_count>2</comment_count>
      <attachid>388342</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-21 13:48:12 -0800</bug_when>
    <thetext>Created attachment 388342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609479</commentid>
    <comment_count>3</comment_count>
      <attachid>388402</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-22 00:18:03 -0800</bug_when>
    <thetext>Created attachment 388402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609677</commentid>
    <comment_count>4</comment_count>
      <attachid>388457</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-22 12:20:42 -0800</bug_when>
    <thetext>Created attachment 388457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609716</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 13:31:43 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388457:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609717</commentid>
    <comment_count>6</comment_count>
      <attachid>388457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 13:32:16 -0800</bug_when>
    <thetext>Comment on attachment 388457
Patch

Clearing flags on attachment: 388457

Committed r254941: &lt;https://trac.webkit.org/changeset/254941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609718</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 13:32:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609822</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-22 15:58:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/58814730&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388315</attachid>
            <date>2020-01-21 10:15:32 -0800</date>
            <delta_ts>2020-01-21 13:48:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206541-20200121101532.patch</filename>
            <type>text/plain</type>
            <size>89044</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0ZjAwY2EzZGFkNjI1
MDkwYjYzMDVkNGE3ZGFjMzhjMWNmMjllNS4uNzE2ZTM3ZjU3M2E5MjcwODgzMTkwNGVmNDVkZmJl
ZWJkMTMxNmU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMC0wMS0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRs
eSBkb2VzIG5vdGhpbmcuIEZvciBDRyBwb3J0cywgaXQgc2NhbGVzIGEgcmVjdCAKKyAgICAgICAg
YnkgdGhlIHJhdGlvIGJhY2tpbmdTdG9yZVNpemUgLyBpbnRlcm5hbFNpemUgd2hpY2ggaXMgYWx3
YXlzIDEuIFRoZSAKKyAgICAgICAgY29uc3RydWN0b3IgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KCkgc2V0cyBtX3NpemUgYW5kIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplCisgICAgICAgIHRvIHRo
ZSBzYW1lIHZhbHVlIGFsd2F5cy4KKworICAgICAgICBEZWxldGUgSW1hZ2VCdWZmZXI6OmlzQ29t
cGF0aWJsZVdpdGhDb250ZXh0KCkgYWxzbyBzaW5jZSBpdCBpcyBub3QgdXNlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjppc0NvbXBhdGlibGVXaXRoQ29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0
b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZVNpemVUb1VzZXJTcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0
aW9uU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisKKzIwMjAtMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEltYWdlQnVmZmVyIHV0
aWxpdGllcyBmdW5jdGlvbiB0byBzZXBhcmF0ZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgdXRpbGl0aWVzIGZ1bmN0aW9uIGFyZSBt
ZXJlbHkgcmVsYXRlZCB0byB0aGUgSW1hZ2VEYXRhLgorCisgICAgICAgICogU291cmNlc0dUSy50
eHQ6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmVuY29kZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqcGVn
VVRJKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmRhdGFVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZGF0YVZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjZkRhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6ZGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompw
ZWdVVEkpOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YVZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDogUmVtb3ZlZC4KKworMjAyMC0wMS0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
UmVuZGVyaW5nTW9kZSBhbmQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBlbnVtIGNsYXNzZXMgYW5k
IG1vdmUgdGhlbSB0byBzZXBhcmF0ZSBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXJpbmdNb2RlIGFuZCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG5lZWQgdG8gYmUgZW5jb2RlZCBhbmQgZGVjb2RlZAorICAgICAgICB3aGVuIHRoZXkg
YXJlIHNlbnQgZnJvbSB0aGUgV2ViUHJvY2VzcyB0byB0aGUgR1BVUHJvY2Vzcy4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGll
ZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgICogaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFu
c2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpj
cmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Ojppc0FjY2VsZXJhdGVk
IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6cmVuZGVyaW5nTW9kZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKwog
MjAyMC0wMS0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEVYSUYgb3JpZW50YXRpb24gaXMgaWdub3JlZCBmb3Igc29tZSBDU1MgaW1hZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNmZhYjI3YzVmMGQzMTkxYjRhYmUyZmM3
ZmViZDIyNzc0MTI4NjgyYS4uMjllMjYzY2FmZjgyZjhiZGNkOTE5NzUwNDJiNTAwNzEwM2ViMjNh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAx
LTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBSZW5kZXJpbmdNb2RlIGFuZCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGVudW0gY2xh
c3NlcyBhbmQgbW92ZSB0aGVtIHRvIHNlcGFyYXRlIGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjUxNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKwogMjAyMC0wMS0yMCAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBtaXNzaW5nIGhlYWRlciBn
dWFyZHMgYW5kIGNsZWFuIHVwIGVtcHR5IGZpbGVzIGluIFdlYkNvcmUsIFdlYktpdExlZ2FjeSwg
V2ViS2l0LCBUb29scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYmI4NzgwNjE4Mzc0MWY5NjI2ODM4
NjhlZmM2ODkxMDJiYzRmNGEyZC4uNDU1MmMwNWE3MzlmNzU4NzhiNjdmYTRlNjg4MGU2Yzc0NjVl
NjE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFk
UHJvdmlkZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgK
IAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTEyOCw2ICsxMTI5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IDQ2NDFkNTgwOGE1
MjdlYzZlMzBkMWNmYjZlODBiMjMxZGQ1NmQ2YjAuLjc0NjVkMGU2YTg2Njg3MzhmNGViZGM1NzRm
OTI2Yzc0ODhlN2FhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUK
IAogICAgICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAg
ICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVl
KTsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFw
SW1hZ2UtPnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgICAg
ICBtX2RhdGEgPSB7IG51bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzR1RLLnR4dAppbmRleCA3MjA1ZTIwZDNhYjRlMzlmYmVlNGJiOTQzMWFlY2I0YmNjYzI4YmQy
Li45N2YzMzZlN2M1YzllOGQwZGEyNWUyYmQ0ZTYxYWQ3MWFlNTJkZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dApAQCAtODQsNyArODQsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ljb25HdGsuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJH
dGsuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCiAKIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1YjNjZWFlZGVj
ZDYzMDY4M2E4ZDgwZTk4MjJiM2RmNDFkNzYyMGUuLjZlZDRhYzIzYTZkOWFjOTQ0ZWMxODY0YmM2
NDk3YjI3NWY4NWE0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNDEsNiArMjE0MSw4IEBACiAJCTcyNEVEMzMyMUEzQThC
MjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRC
bGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9
OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3
RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBB
QyAvKiBKU01lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzU3OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50Lmgg
Ki87IH07CkBAIC05NjQwLDYgKzk2NDIsOCBAQAogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTgg
LyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRz
UkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAw
MDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAw
NDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAv
KiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlw
bGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5OUJDNjYyM0Q2ODZD
NjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3
QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQy
RjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0
MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjUwMTIsNiArMjUwMTYsNyBAQAogCQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4OCAvKiBvcGVu
Z2wgKi8sCiAJCQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJ
CTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJCTcyOTlCQzY0
MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8sCiAJCQkJNDkw
NzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywKIAkJCQk0
OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywKIAkJCQlC
RUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywKQEAgLTI1
MTg4LDYgKzI1MTkzLDcgQEAKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9u
LmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxl
LmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1w
bGUuaCAqLywKKwkJCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5o
ICovLAogCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi8s
CiAJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJ
MEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovLApAQCAtMjkwMzks
NiArMjkwNDUsNyBAQAogCQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3
U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQg
LyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4ODFENUQ2RjQ1
MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZl
VGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0Iy
REIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzEzNjgsNiArMzEzNzUsNyBAQAogCQkJCTExOTlGQTQ2MjA4RTM1QTMw
MDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMjZCQjZD
MjMzNDNFNkYwMDJGMkJFQSAvKiBMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
MTMxMENGNTIwQkE0QTRDMDA2NUE4RDAgLyogTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdy
YXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFCQUJERDIzNjA4OEZFMDBGQTQz
NDUgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
MTMxMENGNDIwQkE0QTNEMDA2NUE4RDAgLyogTGF5b3V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzIwMTIsNiArMzIwMjAsNyBAQAogCQkJCUJDRUE0ODc2MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMkYwMEExMjEz
RTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRl
cmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NkM3QzRCMjIxMjM5OTcwMDlCMDZDQSAv
KiBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1
OTVGRjQ3MTgyNENFRTMwMEZGNTFDRCAvKiBSZW5kZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMjA2Miw3ICszMjA3MSw2IEBACiAJCQkJNDU4RkU0MEExNTg5REYwQjAwNTYwOUU2IC8q
IFJlbmRlclNlYXJjaEZpZWxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjExQTU0RjBGMzkyMzMx
MDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
NDdBNkQwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExheW91dEludGVncmF0aW9uQm94VHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5NTVBODgxNjBEMTk5MjAwODU4MDI1IC8qIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhDOEZBRTBERENEMzFCMDBC
NTkyRjQgLyogUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjY4MEU4MUNC
NzEwMEIyNTk2NSAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAppbmRleCA2NGRmZjJkOTg0ZWY3MmRkOWViYTUxMDI0MDYxMGZjMThlMjFkOTQ3Li5lZGExNzE3
ZGRmZmQ3ZWIwYmMzZjg3MDJiODI5M2U4OTliZDVjZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI3ODUsNyAr
Mjc4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6
ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpLCBVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9u
U2NhbGUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
ICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGU1YjhhYjQ2OWNlYzRiYzA1OGM0
MzdkMTk5NTA0MGI1MDIxYzc0MzEuLjJmYTUzYWEzOGMxZmNjMTE3MzU2YWY5ZjE1NWQwMTVkNDQz
N2YwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogCiAgICAgLy8gVHJhbnNm
b3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMg
YnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAg
YXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsK
KyAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJ
bWFnZTo6bnVsbEltYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAKaW5kZXggZjRiNzcwN2U5N2E4ZmU1MWY4ZTI1Nzc1OGFkZTRiNmRkZmY1MDJlNS4uMTQ3
NzYyZjU1MjQyZTYzMTU0OWRkYjBhMDY3NGE2MjFmZThjZjNkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSW1hZ2UqIEN1c3Rv
bVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFo
ZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkLCAxLCBDb2xvclNwYWNl
OjpTUkdCLCBudWxscHRyKTsKKyAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBDb2xvclNwYWNlOjpT
UkdCLCBudWxscHRyKTsKICAgICBpZiAoIW1fY29waWVkQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRl
eCAyM2Q5YjM0ZTg0OGY2ZDAxZDM0YTlkYWZmYmEzMDUwZmM3YTcxMzE2Li5mNWU3NjUwMDY5YTZk
ODY5MGQ5NDNkZWUyNmJiMzYxZjkxODljZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcApAQCAtODMsNiArODMsMTAgQEAKICNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KICNlbmRpZgogCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdl
QnVmZmVyVXRpbGl0aWVzQ0cuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1MQ2FudmFzRWxlbWVudCk7CkBAIC04ODUsNyAr
ODg5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/
IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUgPSBzaG91bGRBY2NlbGVyYXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKICAgICBhdXRvIGhvc3RXaW5k
b3cgPSAoZG9jdW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSkgPyBk
b2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwogICAgIHNl
dEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAx
LCBDb2xvclNwYWNlOjpTUkdCLCBob3N0V2luZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwCmluZGV4IDVmNDlmNzM5YTFmNWMzYmUwZWUxNzFmMzRmOTYzZTAyNjZiYzQ0OTIuLjJi
ODE5ODllOGZkNjJlZmUzNDUzODdhOTAyZmU2OTJiMzA5OTU0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwCkBAIC02MSw5ICs2MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJpdG1hcCk7CiAKICNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQotc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IEFjY2VsZXJhdGVk
Oworc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkOwogI2Vsc2UKLXN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRl
cmluZ01vZGUgPSBVbmFjY2VsZXJhdGVkOworc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVu
ZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAogUmVm
PEltYWdlQml0bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKEludFNpemUgc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCBmNzQ0ODUxMjAwMTU3NWI0YWY0YmJh
MjRlYWE1N2FiZTZhMDY0M2M5Li43NTVmMTFlZjg5ZTExODFiZTA2ZDVlYTJmMDA3ODY5NmUzOWJl
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0xMjYsNyAr
MTI2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFz
Ojp0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVmUHRyPElt
YWdlQml0bWFwPiB7IG51bGxwdHIgfSB9OwogCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkSW1h
Z2VCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4geyBJbWFnZUJpdG1hcDo6Y3JlYXRlKHsgSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpLCB0cnVlIH0pIH07CisgICAg
ICAgICAgICByZXR1cm4geyBJbWFnZUJpdG1hcDo6Y3JlYXRlKHsgSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpLCB0cnVlIH0pIH07CiAKICAg
ICAgICAgYXV0byBidWZmZXIgPSB0YWtlSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZm
ZXIpCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdl
QnVmZmVyKCkgY29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdodCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwg
VW5hY2NlbGVyYXRlZCkpOworICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25z
dApAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2Ny
ZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChzaXplKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVy
biBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCkpOwogfQogCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6cmVzZXQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA4OWQ4ZjQyNDNiMmI5MmRmYmNiMzJhYTIyMWI3NTNj
OTNmMWY1OTQxLi5kNDk0NzEyMDgzMjMxMGM3YzBkN2JlZjFjODc5ZGEzZmZiMjkzZjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTgwNiw3ICsxODA2LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
VD4gSW50UmVjdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3Np
dGluZ0J1ZmYKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZm
ZXJSZWN0KQogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6
ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJh
dGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBv
c2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE5OTAsNyArMTk5MCw3IEBAIEV4Y2VwdGlvbk9y
PFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3Jl
YXRlUGF0dGVybihICiAgICAgICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52
YXNQYXR0ZXJuOjpjcmVhdGUoQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKG5hdGl2ZUltYWdl
KSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogI2VuZGlmCiAKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKHZpZGVvRWxlbWVudCksIGRy
YXdpbmdDb250ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5kZXJpbmdNb2RlKCkgOiBBY2Nl
bGVyYXRlZCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSh2aWRlb0VsZW1lbnQpLCBkcmF3aW5nQ29udGV4dCgpID8gZHJhd2luZ0NvbnRleHQoKS0+cmVu
ZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCAxNGVhMzdkOGQ3ZWFmYjAxYjVjNGNlMTllYmU3NmM1MThjZmNkNGE4Li5iNTFiNGRiZjEz
ZWU1MDZlYjk0OThjNDNlZjQ1Yzk0NGRkNzNlMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCk7CiAKICNpZiBVU0UoSU9TVVJGQUNF
X0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQot
c3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IEFjY2VsZXJhdGVkOwor
c3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6
OkFjY2VsZXJhdGVkOwogI2Vsc2UKLXN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmlu
Z01vZGUgPSBVbmFjY2VsZXJhdGVkOworc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVy
aW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAogc3RkOjp1
bmlxdWVfcHRyPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4gSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRTZXR0aW5ncyYmIHNldHRpbmdzKQpAQCAtNjksNyArNjksNyBAQCBIVE1MQ2FudmFz
RWxlbWVudCogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMoKSBjb25zdAogCiBi
b29sIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGJ1ZmZlclJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQ7CisgICAgcmV0
dXJuIGJ1ZmZlclJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiB9
CiAKIHZvaWQgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXAoUmVm
UHRyPEltYWdlQml0bWFwPiBpbWFnZUJpdG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNjdjYTUz
YzQ3ZWVhMDA4YmVhM2Y2MWRmOTZlNzM4OWNhZWNhNmRlYS4uNDI4ODIxNjQ0OThkZmMxODU2OTQ3
YjE2YzNhMjlhODYzN2ZkOTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTYzODYsNyArNjM4Niw3
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgVW5hY2NlbGVyYXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIEFTU0VSVChtX2J1ZmZlcnMuc2l6ZSgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMzRiYTM3MmQ0OTE0
M2NmZTI5M2E3YzJhODk0NWU0MGYzNTFiMTA1MS4uZjZiYmZhZGQzNzdiYjUxYjA2MGFhMGIzM2Yw
YjY4MGYxMTJjOTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgUmVmUHRyPEltYWdl
PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tS
ZXByZXNlbnRhdGkKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhNRSAoMTQ5NDIyKTogVGhpcyBidWZmZXIg
c2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5n
UmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWlu
dGluZ1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAwYTQ0YzJmYTFh
MDk0OTdjZmRmNTU4ODgzMmZmZGZmMTAyMzMzMGUxLi5lMjRkOTJlNmYzZTYxZDM4YTliMjQ0ODVm
NGQxM2RlNTBlNTMzYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25h
cHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlCiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKQog
ICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJl
Y3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rvcik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0
KCkudHJhbnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAppbmRleCA0MjFkZmJkOTU3NTRjNDYyNzU3Yjc4
ZGJmYTQxMDI1NDMyYWYwYjdkLi5mOTBkMjQ2ZWM1OWI0ZjhhOGUxMzhiNzIyNDBjZjIwMjU4MzE5
MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKQEAgLTMxLDYg
KzMxLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbnRSZWN0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMWNhZWY4NTQxZGVlMDYyYmZlMDU0MTZjZGEyZjJhN2Y3
OTI2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90IHsKKyAgICBQcmVtdWx0aXBsaWVkLAorICAg
IFVucHJlbXVsdGlwbGllZAorfTsKKworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYzcxZDk4ZjhhNWY2Njc0Njg2MzA5NDRhYjcxZGJh
ZmM5MWRjYjY0ZS4uNDgyMjQ0YTRmMmJkY2VkZTdjODc0Y2QxYjUwZWE5MTRiMTQ5OWEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApA
QCAtMTYwLDcgKzE2MCw3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZVJlc3BlY3RpbmdPcmllbnRhdGlvbihjb25zCiAgICAgICAgIHJldHVy
biBpbWFnZTsKIAogICAgIEZsb2F0UmVjdCByZWN0ID0geyBGbG9hdFBvaW50KCksIHNpemUoKSB9
OwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgVW5h
Y2NlbGVyYXRlZCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Qu
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIGltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGY1ODZkZDRiMmFmOTFmNDU2NTUzNWE3
MDI5MzkyM2FmMmJhYWRiYTIuLmU1YzMxYzFlNjRlZjU0Yjk2MTEzMWRiYjI1YzRjZTRiMTg5ZTJk
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5o
IgorI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+
CkBAIC0zNTAsNyArMzUxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SXNBY2NlbGVyYXRlZENvbnRleHQoYm9vbCk7CiAjZW5kaWYKICAgICBib29sIGlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgY29uc3Q7Ci0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gaXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2Nl
bGVyYXRlZDsgfQorICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2F2ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCA0
NThhZTcyZjJhZTAyNTYyNDc2OGU4NzlkYmQ0OTY5NjRiNDkxYjE4Li5kYzU0YTk5ODVlNGQ0MjA2
N2RhNmMyMzgxODM1ZmJkMzczNjg3NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKIAorI2luY2x1ZGUgIkFs
cGhhUHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaAppbmRleCBjZWVhMWRhNDBlYjMyZmY3OGExZTc1ZTE3YmZlMDA5MjAxYjc2ZjEyLi41N2Vl
YmRjNTAwM2MzNzBiOGI0NzQxZWMyYmE1NDI0N2M5NWM5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC0xMjIsMTcgKzEyMiw2
IEBAIGVudW0gVGV4dEFsaWduIHsKICAgICBSaWdodFRleHRBbGlnbgogfTsKIAotZW51bSBSZW5k
ZXJpbmdNb2RlIHsKLSAgICBVbmFjY2VsZXJhdGVkLAotICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0
Zm9ybUJ1ZmZlciwgLy8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBs
YXRmb3JtIEFQSSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgotICAgIEFjY2VsZXJhdGVkCi19
OwotCi1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gewotICAgIFByZW11bHRpcGxp
ZWQsCi0gICAgVW5wcmVtdWx0aXBsaWVkCi19OwotCiBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JO
YW1lKFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwogU3Ry
aW5nIGJsZW5kTW9kZU5hbWUoV2ViQ29yZTo6QmxlbmRNb2RlKTsKIGJvb2wgcGFyc2VCbGVuZE1v
ZGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6QmxlbmRNb2RlJik7CkBAIC0xNDMsNyArMTMyLDYg
QEAgV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU8KIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CiBXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGluZUNhcCk7
CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgTGluZUpvaW4pOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAppbmRleCBjMDEyNjM3MGNiODY1OTI3YTMyYmYxMWY2MTQ4NmQ3MWFm
N2I0NzU4Li4yMGI5ODEwYzI5MTQxZTQ3M2U2YTg4OGJjODBjMTQxN2FlYWMyZmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0x
MTQsMTIgKzExNCw2IEBAIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgp
IGNvbnN0CiAjZW5kaWYKIAogI2lmICEoVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpKQotCi1GbG9h
dFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIHNpemUp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNpemU7Ci19Ci0KIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5z
Zm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENv
bG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29sb3JTcGFjZSkKQEAg
LTI0NCwxMSArMjM4LDYgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0MKICAgICByZXR1cm4gZXhw
YW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQogCi1ib29sIElt
YWdlQnVmZmVyOjppc0NvbXBhdGlibGVXaXRoQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoY29udGV4
dC5zY2FsZUZhY3RvcigpLCB0aGlzLT5jb250ZXh0KCkuc2NhbGVGYWN0b3IoKSk7Ci19Ci0KICNp
ZiAhVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHNpemVfdCBJbWFnZUJ1ZmZl
cjo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBjYjc0Mzg0NDgwMmFiNDJiNTUzNTExN2NhYjVjYjc1
NjQ0ZDViM2Y0Li5lNTY0MmY1YTdhZWRiOWUwMTg3MzBmNDNiZTFmZTBiYTZlY2IxYjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
c0dMLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2lu
Y2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENs
YW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgpAQCAtODMsNyArODUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoQ29u
dGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5JbWFnZUJ1ZmZlcigpOwogCkBAIC05MSw4ICs5Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBJ
bnRTaXplJiBpbnRlcm5hbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25z
dCBJbnRTaXplJiBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFNpemU7IH0K
IAotICAgIEZsb2F0U2l6ZSBzaXplRm9yRGVzdGluYXRpb25TaXplKEZsb2F0U2l6ZSkgY29uc3Q7
Ci0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRp
b25TY2FsZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KCkgY29uc3Q7CkBAIC0xODgsMTAgKzE4Nyw0IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLSNp
ZiBVU0UoQ0cpCi1TdHJpbmcgZGF0YVVSTChjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwotVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42OWQ4YWU4MWM4NDhiMTBlNmYyZDA3YTc4OWIxNmMzMzNkYzIzY2I0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5o
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNz
IFJlbmRlcmluZ01vZGUgOiB1aW50OF90IHsKKyAgICBBY2NlbGVyYXRlZCwKKyAgICBVbmFjY2Vs
ZXJhdGVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA0MDQxYjNmODEwNzY3OGM1
NmFjZGIwYzUzM2EwOTg2ZjdlNjQ1NTk2Li42ODFhYjU2ZWViMzQxOTQ2MmIyMzQ0NTBkMDBmNDFm
OTMzNjc0ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyU2NyYXRj
aEJ1ZmZlcigpOwogCiAgICAgICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2Nl
bGVyYXRlZCBkcmF3aW5nLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQgYnVmZmVyLgotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShyb3VuZGVkU2l6ZSwgVW5hY2NlbGVyYXRlZCwgMSk7CisgICAgICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxKTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAg
ICAgfQogCkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3coY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QKIAogdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBMYXll
ckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJD
YWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUp
LCBVbmFjY2VsZXJhdGVkLCAxKTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0CiAKIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVy
SW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdCdWZmZXIpCiB7
Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNp
emUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgVW5hY2NlbGVyYXRlZCwgMSk7Cisg
ICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUo
bGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTY4
NSw3ICs2ODUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29ucwogICAgIGF1dG8qIGxheWVySW1h
Z2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRl
U2l6ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsYXllckltYWdlUHJvcGVydGllcyk7Ci0g
ICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNp
emUsIFVuYWNjZWxlcmF0ZWQsIDEpOworICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxKTsKICAgICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNl
bmRpZgogCkBAIC03MzksNyArNzM5LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICNpZiBV
U0UoQ0cpCiAgICAgYXV0byogbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigp
LmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICNlbHNlCi0gICAgYXV0byBsYXllcklt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFVuYWNjZWxlcmF0
ZWQsIDEpOworICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
dGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKICAgICBhdXRv
KiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCkBAIC05MTIs
NyArOTEyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIoY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QKIAogICAgIGFkanVzdEJsdXJSYWRp
dXModHJhbnNmb3JtKTsKIAotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBVbmFj
Y2VsZXJhdGVkLCAxKTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMWYxMzMzYTc0MjY5ZjUyNDcw
NWY1NDNmMGRkYjgzNGNjN2NiZGYwZC4uOTFjMGExYTllMTQ4NWEyYTE0ZTYxYzY4ZjA2OGZlMzE5
NjAxYTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVz
Q2Fpcm8uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCkBAIC03Niw3ICs3Nyw2IEBACiAjZW5k
aWYKICNlbmRpZgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1hZ2VCdWZmZXJEYXRhOjpJ
bWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKQpAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJE
YXRhKGNvbnN0IEludFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kCiAKIElt
YWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVuZGVyaW5n
TW9kZSAhPSBBY2NlbGVyYXRlZCkKKyAgICBpZiAobV9yZW5kZXJpbmdNb2RlICE9IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQpAQCAtMjkyLDE0ICsyOTIsMTQgQEAgSW1hZ2VCdWZmZXI6OkltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWMKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykKLSAgICBpZiAobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCkgeworICAg
IGlmIChtX2RhdGEubV9yZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
KSB7CiAgICAgICAgIG1fZGF0YS5jcmVhdGVDYWlyb0dMU3VyZmFjZSgpOwogICAgICAgICBpZiAo
IW1fZGF0YS5tX3N1cmZhY2UgfHwgY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCi0gICAgICAgICAgICBtX2RhdGEubV9y
ZW5kZXJpbmdNb2RlID0gVW5hY2NlbGVyYXRlZDsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFs
bCBiYWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBwYXRoLgorICAgICAgICAgICAgbV9kYXRhLm1fcmVu
ZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IC8vIElmIGFsbG9jYXRp
b24gZmFpbHMsIGZhbGwgYmFjayB0byBub24tYWNjZWxlcmF0ZWQgcGF0aC4KICAgICB9Ci0gICAg
aWYgKG1fZGF0YS5tX3JlbmRlcmluZ01vZGUgPT0gVW5hY2NlbGVyYXRlZCkKKyAgICBpZiAobV9k
YXRhLm1fcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKQogI2Vs
c2UKLSAgICBBU1NFUlQobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSAhPSBBY2NlbGVyYXRlZCk7Cisg
ICAgQVNTRVJUKG1fZGF0YS5tX3JlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQpOwogI2VuZGlmCiAgICAgewogICAgICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tl
eV90IHNfc3VyZmFjZURhdGFLZXk7CkBAIC02NTQsMjEgKzY1NCw2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVBy
ZW11bHRpcGxpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKEdUSykKLXN0YXRpYyBjYWlyb19z
dGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIG91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIXJlaW50ZXJwcmV0X2Nhc3Q8
VmVjdG9yPHVpbnQ4X3Q+Kj4ob3V0cHV0KS0+dHJ5QXBwZW5kKGRhdGEsIGxlbmd0aCkpCi0gICAg
ICAgIHJldHVybiBDQUlST19TVEFUVVNfV1JJVEVfRVJST1I7Ci0gICAgcmV0dXJuIENBSVJPX1NU
QVRVU19TVUNDRVNTOwotfQotCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNl
X3QqIGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBWZWN0b3I8dWludDhfdD4qIG91dHB1
dCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKG1pbWVUeXBlLCBtaW1lVHlwZSA9PSAiaW1hZ2UvcG5n
Iik7IC8vIE9ubHkgUE5HIG91dHB1dCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4KLQotICAgIHJldHVy
biBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24s
IG91dHB1dCkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7Ci19Ci0KIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBl
bmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwpAQCAtNjgxLDIxICs2NjYs
MTMgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LAogICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5
cGUgKyAiO2Jhc2U2NCwiICsgYmFzZTY0RGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IEltYWdl
QnVmZmVyOjp0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPikg
Y29uc3QKK1ZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBBU1NFUlQo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKTsKLQogICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7Ci0KLSAgICBWZWN0b3I8dWludDhf
dD4gZW5jb2RlZEltYWdlOwotICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1
cm4gZW5jb2RlZEltYWdlOworICAgIHJldHVybiBkYXRhKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0
eSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlNjNjMjNhOTAzNDA4ZGRjZWM5MjkyYzI4YmU0OTU2YzgwMWRmZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlclV0aWxpdGllc0NhaXJvLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlz
aC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBD
by4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKKwor
I2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIkdSZWZQ
dHJHdGsuaCIKKyNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjaWYgIVBMQVRGT1JNKEdUSykKK3N0YXRpYyBjYWlyb19zdGF0dXNf
dCB3cml0ZUZ1bmN0aW9uKHZvaWQqIG91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8dWlu
dDhfdD4qPihvdXRwdXQpLT50cnlBcHBlbmQoZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJu
IENBSVJPX1NUQVRVU19XUklURV9FUlJPUjsKKyAgICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NF
U1M7Cit9CisKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2Us
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFZlY3Rvcjx1aW50OF90Piogb3V0cHV0KQoreworICAg
IEFTU0VSVF9VTlVTRUQobWltZVR5cGUsIG1pbWVUeXBlID09ICJpbWFnZS9wbmciKTsgLy8gT25s
eSBQTkcgb3V0cHV0IGlzIHN1cHBvcnRlZCBmb3Igbm93LgorCisgICAgcmV0dXJuIGNhaXJvX3N1
cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9
PSBDQUlST19TVEFUVVNfU1VDQ0VTUzsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9f
c3VyZmFjZV90KiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PikKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlOworICAgIGlmICghaW1hZ2Ug
fHwgIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIGVuY29kZWRJbWFnZTsKK30KKyNlbHNlCitzdGF0aWMg
Ym9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4m
IGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCit7CisgICAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQg
aW1hZ2UgZW5jb2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50YXRp
b24uCisgICAgLy8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFibGUv
Z2RrLXBpeGJ1Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2CisK
KyAgICBTdHJpbmcgdHlwZSA9IG1pbWVUeXBlLnN1YnN0cmluZyhzaXplb2YgImltYWdlIik7Cisg
ICAgaWYgKHR5cGUgIT0gImpwZWciICYmIHR5cGUgIT0gInBuZyIgJiYgdHlwZSAhPSAidGlmZiIg
JiYgdHlwZSAhPSAiaWNvIiAmJiB0eXBlICE9ICJibXAiKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmOworICAgIGlmICh0eXBlID09ICJqcGVn
IikgeworICAgICAgICAvLyBKUEVHIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYSBjaGFubmVsLiBUaGUg
PGNhbnZhcz4gc3BlYyBzdGF0ZXMgdGhhdCB0b0RhdGFVUkwoKSBtdXN0IGVuY29kZSBhIFBvcnRl
ci1EdWZmCisgICAgICAgIC8vIGNvbXBvc2l0ZSBzb3VyY2Utb3ZlciBibGFjayBmb3IgaW1hZ2Ug
dHlwZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBhbHBoYS4KKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gbmV3U3VyZmFjZTsKKyAgICAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUo
c3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKSB7CisgICAgICAgICAgICBuZXdT
dXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSwKKyAgICAgICAgICAgICAgICBDQUlS
T19GT1JNQVRfUkdCMjQsCisgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
d2lkdGgoc3VyZmFjZSksCisgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
aGVpZ2h0KHN1cmZhY2UpLAorICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3N0cmlkZShzdXJmYWNlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW50U2l6
ZSBzaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlKTsKKyAgICAgICAgICAgIG5ld1N1cmZh
Y2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfUkdC
MjQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgUmVmUHRyPGNh
aXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG5ld1N1cmZhY2UuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgc3VyZmFjZSwgMCwg
MCk7CisgICAgICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgcGl4YnVmID0gYWRvcHRHUmVmKGNhaXJvU3VyZmFjZVRvR2RrUGl4YnVmKG5ld1N1cmZhY2Uu
Z2V0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGl4YnVmID0gYWRvcHRHUmVmKGNhaXJvU3Vy
ZmFjZVRvR2RrUGl4YnVmKHN1cmZhY2UpKTsKKyAgICBpZiAoIXBpeGJ1ZikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGlmICh0
eXBlID09ICJqcGVnIiAmJiBxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8
PSAxLjApIHsKKyAgICAgICAgU3RyaW5nIHF1YWxpdHlTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihz
dGF0aWNfY2FzdDxpbnQ+KCpxdWFsaXR5ICogMTAwLjAgKyAwLjUpKTsKKyAgICAgICAgZ2RrX3Bp
eGJ1Zl9zYXZlX3RvX2J1ZmZlcihwaXhidWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZidWZm
ZXJTaXplLCB0eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvci5vdXRQdHIoKSwgInF1YWxpdHkiLCBx
dWFsaXR5U3RyaW5nLnV0ZjgoKS5kYXRhKCksIE5VTEwpOworICAgIH0gZWxzZQorICAgICAgICBn
ZGtfcGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwg
JmJ1ZmZlclNpemUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLm91dFB0cigpLCBOVUxMKTsK
KworICAgIHJldHVybiAhZXJyb3I7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7CisgICAgZ3NpemUg
YnVmZmVyU2l6ZTsKKyAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0
eSwgYnVmZmVyLCBidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rv
cjx1aW50OF90PiBpbWFnZURhdGE7CisgICAgaW1hZ2VEYXRhLmFwcGVuZChidWZmZXIuZ2V0KCks
IGJ1ZmZlclNpemUpOworICAgIHJldHVybiBpbWFnZURhdGE7Cit9CisjZW5kaWYgLy8gIVBMQVRG
T1JNKEdUSykKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMDg4ZDBl
YTRkM2VlZjQ1YmM3NzE3ZjVjODI1ZWEzZDUwZTdkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0Nh
aXJvLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1
cmZhY2VfdCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAppbmRleCBmYTk5MWFkNWFkMTY3ZTMwMmIyMTliZGM5YmRjYzJlMTMyYjQ4
YzhkLi5jNTRiMGI5NjFkZWM1YmYzMmEwYjE5MWYwNDE4NWZjMDQ1Yzg2OThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNp
emUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gYnVmZmVyLnNpemVGb3JEZXN0aW5hdGlvblNpemUo
ZGVzdFJlY3Quc2l6ZSgpKTsKKyAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0g
ZGVzdFJlY3Quc2l6ZSgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZl
ci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggMzU2ZjE5NjRk
MDk1NTJiZDFhMjdmYzBkMjI4MDlkOGEzZGE2Yjc1Yi4uOTA5N2IzYjgzZWNmYmEyYjU5NWVjNDIw
ZmQ4MDE4NGZkYWE1OGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTY2LDEzICs2Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdl
QnVmZmVyKTsKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW1hZ2VCdWZm
ZXIpOwogCi1zdGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGNvbnN0IEZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0
IEludFNpemUmIGludGVybmFsU2l6ZSkKLXsKLSAgICBmbG9hdCB4TWFnbmlmaWNhdGlvbiA9IHN0
YXRpY19jYXN0PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLndpZHRoKCkpIC8gaW50ZXJuYWxTaXpl
LndpZHRoKCk7Ci0gICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0KCk7Ci0gICAg
cmV0dXJuIEZsb2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sIGxv
Z2ljYWxTaXplLmhlaWdodCgpICogeU1hZ25pZmljYXRpb24pOwotfQotCiBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTEyNyw3ICsxMjAsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENH
Q29sb3JTcAogICAgIG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7
CiAgICAgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUgPSBtX3NpemU7CiAKLSAgICBib29sIGFjY2Vs
ZXJhdGVSZW5kZXJpbmcgPSByZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOworICAgIGJvb2wg
YWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQ7CiAgICAgaWYgKG1fc2l6ZS53aWR0aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgp
IDw9IDApCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU1LDcgKzE0OCw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ0dDb2xvclNwCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0OwogICAg
IGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKLSAgICAgICAgRmxvYXRTaXplIHVzZXJCb3VuZHMgPSBzaXplRm9yRGVzdGlu
YXRpb25TaXplKEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgp
KSk7CisgICAgICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gRmxvYXRTaXplKHdpZHRoLnVuc2Fm
ZUdldCgpLCBoZWlnaHQudW5zYWZlR2V0KCkpOwogICAgICAgICBtX2RhdGEuc3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBJbnRTaXplKHVzZXJCb3Vu
ZHMpLCBjb2xvclNwYWNlKTsKICAgICAgICAgaWYgKG1fZGF0YS5zdXJmYWNlKSB7CiAgICAgICAg
ICAgICBjZ0NvbnRleHQgPSBtX2RhdGEuc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGhv
c3RXaW5kb3cpOwpAQCAtMjEwLDExICsyMDMsNiBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwog
CiBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi1GbG9hdFNpemUgSW1h
Z2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIGRlc3RpbmF0aW9uU2l6
ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gc2NhbGVTaXplVG9Vc2VyU3BhY2UoZGVzdGluYXRpb25T
aXplLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwotfQotCiAjaWYg
VVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHNpemVfdCBJbWFnZUJ1ZmZlcjo6
bWVtb3J5Q29zdCgpIGNvbnN0CiB7CkBAIC0yNTksNyArMjQ3LDcgQEAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGlt
YWdlLCBjb24KICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+
JiYgaW1hZ2UsIEludFNpemUgaW50ZXJuYWxTaXplLCBJbnRTaXplIGxvZ2ljYWxTaXplLCBJbnRT
aXplIGJhY2tpbmdTdG9yZVNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJp
dG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1h
Z2UsIEludFNpemUgbG9naWNhbFNpemUsIEludFNpemUgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAg
ICAgaWYgKHJlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVz
ZXJ2ZVJlc29sdXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJ
Zk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKQEAgLTI2Nyw3ICsyNTUsNyBA
QCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPgogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6
ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVm
KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRT
ZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENH
Q29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgbG9naWNhbFNpemUpKTsKLSAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNw
YWNlID0gc2NhbGVTaXplVG9Vc2VyU3BhY2UobG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUs
IGludGVybmFsU2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9
IGxvZ2ljYWxTaXplOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBpbWFn
ZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJ
bWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQpAQCAtMjg2LDE3ICsyNzQsMTYgQEAgUmVmUHRy
PEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yLCBQcmVzZXJ2ZVJlc28KICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgbG9n
aWNhbFNpemUoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBw
cmVzZXJ2ZVJlc29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBpbnRlcm5hbFNpemUo
KSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIFJlZlB0cjxJ
bWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikK
IHsKICAgICBJbnRTaXplIGludGVybmFsU2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUo
KTsKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplID0gaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCk7
Ci0gICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gaW1hZ2VCdWZmZXItPm1fZGF0YS5iYWNr
aW5nU3RvcmVTaXplOwogICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVmZmVyLT5t
X3Jlc29sdXRpb25TY2FsZTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBp
bnRlcm5hbFNpemUsIGxvZ2ljYWxTaXplLCBiYWNraW5nU3RvcmVTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVy
KSksIGxvZ2ljYWxTaXplLCBpbnRlcm5hbFNpemUsIHJlc29sdXRpb25TY2FsZSwgcHJlc2VydmVS
ZXNvbHV0aW9uKTsKIH0KIAogQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJ
bWFnZU1vZGUoKQpAQCAtNDQ1LDc5ICs0MzIsNiBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRl
QXJyYXkoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaQog
ICAgICAgICBjb250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KDEsIDEsIDAsIDApKTsKIH0KIAot
c3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKLXsKLSNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSB8fCBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtV
VFR5cGVKUEVHID0gQ0ZTVFIoInB1YmxpYy5qcGVnIik7Ci0jZW5kaWYKLSAgICByZXR1cm4ga1VU
VHlwZUpQRUc7Ci19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9t
SW1hZ2VCdWZmZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIC8vIEZJ
WE1FOiBXaHkgZG9lc24ndCBpT1MgdXNlIHRoZSBDb3JlU2VydmljZXMgdmVyc2lvbj8KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgcmV0dXJuIFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMg
dW5jbGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgotCi0gICAgLy8gRklYTUU6IEFkZCBXaW5k
b3dzIHN1cHBvcnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSXMgd2hlbiBhIHdheSB0byBjb252
ZXJ0IGZyb20gTUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgotICAgIC8vIEZvciBu
b3csIG9ubHkgc3VwcG9ydCBQTkcsIEpQRUcsIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0v
NjA5NTI4Nj4uCi0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNU
UigicHVibGljLnBuZyIpOwotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlR0lG
ID0gQ0ZTVFIoImNvbS5jb21wdXNlcnZlLmdpZiIpOwotCi0gICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2UvcG5nIikpCi0gICAgICAgIHJldHVybiBr
VVRUeXBlUE5HOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImltYWdlL2pwZWciKSkKLSAgICAgICAgcmV0dXJuIGpwZWdVVEkoKTsKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJpbWFnZS9naWYiKSkKLSAgICAg
ICAgcmV0dXJuIGtVVFR5cGVHSUY7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4ga1VUVHlwZVBORzsKLSNlbmRpZgotfQotCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShD
R0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB1dGksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhKQotewotICAgIGlmICghaW1hZ2UgfHwgIXV0aSB8fCAh
ZGF0YSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkZXN0aW5hdGlvbiA9IGFk
b3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YSwgdXRpLCAxLCAwKSk7
Ci0gICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2VQcm9wZXJ0aWVzOwotICAgIGlmIChDRkVxdWFs
KHV0aSwganBlZ1VUSSgpKSAmJiBxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0
eSA8PSAxLjApIHsKLSAgICAgICAgLy8gQXBwbHkgdGhlIGNvbXByZXNzaW9uIHF1YWxpdHkgdG8g
dGhlIEpQRUcgaW1hZ2UgZGVzdGluYXRpb24uCi0gICAgICAgIGF1dG8gY29tcHJlc3Npb25RdWFs
aXR5ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJEb3VibGVUeXBlLCAmKnF1YWxpdHkpKTsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NH
SW1hZ2VEZXN0aW5hdGlvbkxvc3N5Q29tcHJlc3Npb25RdWFsaXR5OwotICAgICAgICBjb25zdCB2
b2lkKiB2YWx1ZSA9IGNvbXByZXNzaW9uUXVhbGl0eS5nZXQoKTsKLSAgICAgICAgaW1hZ2VQcm9w
ZXJ0aWVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwgJmtleSwgJnZhbHVlLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7Ci0gICAgfQotCi0gICAgLy8gU2V0dGluZyBrQ0dJbWFnZURlc3RpbmF0aW9uQmFj
a2dyb3VuZENvbG9yIHRvIGJsYWNrIGZvciBKUEVHIGltYWdlcyBpbiBpbWFnZVByb3BlcnRpZXMg
d291bGQgc2F2ZSBzb21lIG1hdGgKLSAgICAvLyBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbnMsIGJ1
dCBpdCBkb2Vzbid0IHNlZW0gdG8gd29yay4KLQotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZElt
YWdlKGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZSwgaW1hZ2VQcm9wZXJ0aWVzLmdldCgpKTsKLSAg
ICByZXR1cm4gQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwot
fQotCi1zdGF0aWMgU3RyaW5nIGRhdGFVUkwoQ0ZEYXRhUmVmIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCi17Ci0gICAgVmVjdG9yPGNoYXI+IGJhc2U2NERhdGE7Ci0gICAgYmFzZTY0RW5j
b2RlKENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChkYXRhKSwgYmFzZTY0
RGF0YSk7Ci0KLSAgICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGJh
c2U2NERhdGE7Ci19Ci0KLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gZGF0YVZlY3RvcihDRkRhdGFS
ZWYgY2ZEYXRhKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEuYXBwZW5k
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YSkpOwotICAg
IHJldHVybiBkYXRhOwotfQotCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1
dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHRv
Q0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24pKQpAQCAtNTY2LDcg
KzQ4MCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3ViCiAgICAgICAgIGF1dG8gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwg
bG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAg
ICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5
KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtl
KDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOwot
ICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBzaXplRm9yRGVzdGluYXRp
b25TaXplKGxvZ2ljYWxTaXplKCkpOworICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2Vy
U3BhY2UgPSBsb2dpY2FsU2l6ZSgpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemVJblVzZXJTcGFjZS53aWR0aCgpLCBp
bWFnZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1h
Z2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsK
ICAgICB9CkBAIC01NzgsNzAgKzQ5Miw2IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVm
ZmVyOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3ViCiAgICAg
cmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQotewotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwotCi0gICAg
YXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgQVNT
RVJUKHV0aSk7Ci0KLSAgICBDR0ltYWdlQWxwaGFJbmZvIGRhdGFBbHBoYUluZm8gPSBrQ0dJbWFn
ZUFscGhhTGFzdDsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gc291cmNlLmRhdGEoKS0+ZGF0
YSgpOwotICAgIFZlY3Rvcjx1aW50OF90PiBwcmVtdWx0aXBsaWVkRGF0YTsKLQotICAgIGlmIChD
RkVxdWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewotICAgICAgICAvLyBKUEVHcyBkb24ndCBo
YXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9u
IHRvcCBvZiBibGFjay4KLSAgICAgICAgc2l6ZV90IHNpemUgPSA0ICogc291cmNlLndpZHRoKCkg
KiBzb3VyY2UuaGVpZ2h0KCk7Ci0gICAgICAgIGlmICghcHJlbXVsdGlwbGllZERhdGEudHJ5UmVz
ZXJ2ZUNhcGFjaXR5KHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAg
ICAgcHJlbXVsdGlwbGllZERhdGEuZ3JvdyhzaXplKTsKLSAgICAgICAgdW5zaWduZWQgY2hhciAq
YnVmZmVyID0gcHJlbXVsdGlwbGllZERhdGEuZGF0YSgpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7IGkgKz0gNCkgewotICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBk
YXRhW2kgKyAzXTsKLSAgICAgICAgICAgIGlmIChhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAg
ICAgICBidWZmZXJbaSArIDBdID0gZGF0YVtpICsgMF0gKiBhbHBoYSAvIDI1NTsKLSAgICAgICAg
ICAgICAgICBidWZmZXJbaSArIDFdID0gZGF0YVtpICsgMV0gKiBhbHBoYSAvIDI1NTsKLSAgICAg
ICAgICAgICAgICBidWZmZXJbaSArIDJdID0gZGF0YVtpICsgMl0gKiBhbHBoYSAvIDI1NTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2kgKyAwXSA9IGRhdGFb
aSArIDBdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMV0gPSBkYXRhW2kgKyAxXTsKLSAg
ICAgICAgICAgICAgICBidWZmZXJbaSArIDJdID0gZGF0YVtpICsgMl07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBkYXRhQWxwaGFJbmZvID0ga0NHSW1hZ2VBbHBoYU5vbmVT
a2lwTGFzdDsgLy8gSWdub3JlIHRoZSBhbHBoYSBjaGFubmVsLgotICAgICAgICBkYXRhID0gcHJl
bXVsdGlwbGllZERhdGEuZGF0YSgpOwotICAgIH0KLQotICAgIHZlcmlmeUltYWdlQnVmZmVySXNC
aWdFbm91Z2goZGF0YSwgNCAqIHNvdXJjZS53aWR0aCgpICogc291cmNlLmhlaWdodCgpKTsKLSAg
ICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0
YSgwLCBkYXRhLCA0ICogc291cmNlLndpZHRoKCkgKiBzb3VyY2UuaGVpZ2h0KCksIDApKTsKLSAg
ICBpZiAoIWRhdGFQcm92aWRlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVp
Z2h0KCksIDgsIDMyLCA0ICogc291cmNlLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtD
R0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0
KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0KLSAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
KSk7Ci0gICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5
LCBjZkRhdGEuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBX
VEZNb3ZlKGNmRGF0YSk7Ci19Ci0KLVN0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0YSYgc291
cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCi17
Ci0gICAgaWYgKGF1dG8gZGF0YSA9IGNmRGF0YShzb3VyY2UsIG1pbWVUeXBlLCBxdWFsaXR5KSkK
LSAgICAgICAgcmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5cGUpOwotICAgIHJldHVy
biAiZGF0YTosIl9zOwotfQotCi1WZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBJbWFnZURhdGEm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KQotewotICAgIGlmIChhdXRvIGRhdGEgPSBjZkRhdGEoc291cmNlLCBtaW1lVHlwZSwgcXVhbGl0
eSkpCi0gICAgICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOwotICAgIHJldHVybiB7
IH07Ci19Ci0KIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgpIGNvbnN0
CiB7CiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmgKaW5kZXggYzU1YTU0YWQ5MTE3OTUzY2E1ZTY5NmRhMDdlNmUwZGY2ODE0M2Q1OC4uM2UyMzc0
YmFkMjRmMDc4N2ZlZjA1NDNjMWI1MWI5MTIwZjEyMzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
VWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggODlkMDQzOWMyMTBkYjUwMWFjOTM5ZWIx
MTQxNDg4MWVlZWM2NWIyNC4uNGYxMzhlNGQ3M2FjZTcyY2MxYWQwZDZhOGE4MGNjYTg3NDZiZGM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsMTggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgiCiAKKyNpZiBV
U0UoQ0cpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkltYWdl
RGF0YS5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxJbWFnZUlP
L0ltYWdlSU8uaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9CYXNlNjQuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlVU
SVV0aWxpdGllcy5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNCAr
NTIsMTQzIEBAIHVpbnQ4X3QgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChjb25zdCB2b2lk
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQogICAgIHJldHVybiAqKHVpbnQ4X3QqKWxhc3RC
eXRlOwogfQogCitDRlN0cmluZ1JlZiBqcGVnVVRJKCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSB8fCBQTEFURk9STShXSU4pCisgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5
cGVKUEVHID0gQ0ZTVFIoInB1YmxpYy5qcGVnIik7CisjZW5kaWYKKyAgICByZXR1cm4ga1VUVHlw
ZUpQRUc7Cit9CisKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbUltYWdlQnVmZmVyTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICAvLyBGSVhNRTogV2h5IGRvZXNu
J3QgaU9TIHVzZSB0aGUgQ29yZVNlcnZpY2VzIHZlcnNpb24/CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHJldHVybiBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7Cisj
ZWxzZQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZT
VFIgaXMgdGhyZWFkc2FmZS4KKworICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZv
ciBhbGwgdGhlIHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVU
eXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KKyAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBv
cnQgUE5HLCBKUEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgorICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmci
KTsKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUdJRiA9IENGU1RSKCJjb20u
Y29tcHVzZXJ2ZS5naWYiKTsKKworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShtaW1lVHlwZSwgImltYWdlL3BuZyIpKQorICAgICAgICByZXR1cm4ga1VUVHlwZVBORzsKKyAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJpbWFnZS9qcGVn
IikpCisgICAgICAgIHJldHVybiBqcGVnVVRJKCk7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2UvZ2lmIikpCisgICAgICAgIHJldHVybiBrVVRU
eXBlR0lGOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGtVVFR5cGVQ
Tkc7CisjZW5kaWYKK30KKworYm9vbCBlbmNvZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0
cmluZ1JlZiB1dGksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBk
YXRhKQoreworICAgIGlmICghaW1hZ2UgfHwgIXV0aSB8fCAhZGF0YSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEoZGF0YSwgdXRpLCAxLCAwKSk7CisgICAgaWYgKCFkZXN0aW5hdGlv
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gaW1hZ2VQcm9wZXJ0aWVzOworICAgIGlmIChDRkVxdWFsKHV0aSwganBlZ1VUSSgpKSAmJiBx
dWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApIHsKKyAgICAgICAg
Ly8gQXBwbHkgdGhlIGNvbXByZXNzaW9uIHF1YWxpdHkgdG8gdGhlIEpQRUcgaW1hZ2UgZGVzdGlu
YXRpb24uCisgICAgICAgIGF1dG8gY29tcHJlc3Npb25RdWFsaXR5ID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmKnF1YWxp
dHkpKTsKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VEZXN0aW5hdGlvbkxvc3N5
Q29tcHJlc3Npb25RdWFsaXR5OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZSA9IGNvbXByZXNz
aW9uUXVhbGl0eS5nZXQoKTsKKyAgICAgICAgaW1hZ2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoMCwgJmtleSwgJnZhbHVlLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgfQorCisg
ICAgLy8gU2V0dGluZyBrQ0dJbWFnZURlc3RpbmF0aW9uQmFja2dyb3VuZENvbG9yIHRvIGJsYWNr
IGZvciBKUEVHIGltYWdlcyBpbiBpbWFnZVByb3BlcnRpZXMgd291bGQgc2F2ZSBzb21lIG1hdGgK
KyAgICAvLyBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbnMsIGJ1dCBpdCBkb2Vzbid0IHNlZW0gdG8g
d29yay4KKworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgp
LCBpbWFnZSwgaW1hZ2VQcm9wZXJ0aWVzLmdldCgpKTsKKyAgICByZXR1cm4gQ0dJbWFnZURlc3Rp
bmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogfQorCitzdGF0aWMgUmV0YWluUHRy
PENGRGF0YVJlZj4gY2ZEYXRhKGNvbnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCit7CisgICAgQVNTRVJUKE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBl
KSk7CisKKyAgICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBl
KTsKKyAgICBBU1NFUlQodXRpKTsKKworICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFscGhhSW5m
byA9IGtDR0ltYWdlQWxwaGFMYXN0OworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBzb3VyY2Uu
ZGF0YSgpLT5kYXRhKCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWREYXRhOwor
CisgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBqcGVnVVRJKCkpKSB7CisgICAgICAgIC8vIEpQ
RUdzIGRvbid0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCwgc28gd2UgaGF2ZSB0byBtYW51YWxseSBj
b21wb3NpdGUgb24gdG9wIG9mIGJsYWNrLgorICAgICAgICBzaXplX3Qgc2l6ZSA9IDQgKiBzb3Vy
Y2Uud2lkdGgoKSAqIHNvdXJjZS5oZWlnaHQoKTsKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBsaWVk
RGF0YS50cnlSZXNlcnZlQ2FwYWNpdHkoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICBwcmVtdWx0aXBsaWVkRGF0YS5ncm93KHNpemUpOworICAgICAgICB1bnNp
Z25lZCBjaGFyKiBidWZmZXIgPSBwcmVtdWx0aXBsaWVkRGF0YS5kYXRhKCk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSA0KSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBhbHBoYSA9IGRhdGFbaSArIDNdOworICAgICAgICAgICAgaWYgKGFscGhhICE9IDI1NSkgewor
ICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMF0gPSBkYXRhW2kgKyAwXSAqIGFscGhhIC8gMjU1
OworICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMV0gPSBkYXRhW2kgKyAxXSAqIGFscGhhIC8g
MjU1OworICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMl0gPSBkYXRhW2kgKyAyXSAqIGFscGhh
IC8gMjU1OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbaSAr
IDBdID0gZGF0YVtpICsgMF07CisgICAgICAgICAgICAgICAgYnVmZmVyW2kgKyAxXSA9IGRhdGFb
aSArIDFdOworICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMl0gPSBkYXRhW2kgKyAyXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRhdGFBbHBoYUluZm8gPSBrQ0dJbWFn
ZUFscGhhTm9uZVNraXBMYXN0OyAvLyBJZ25vcmUgdGhlIGFscGhhIGNoYW5uZWwuCisgICAgICAg
IGRhdGEgPSBwcmVtdWx0aXBsaWVkRGF0YS5kYXRhKCk7CisgICAgfQorCisgICAgdmVyaWZ5SW1h
Z2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCA0ICogc291cmNlLndpZHRoKCkgKiBzb3VyY2UuaGVp
Z2h0KCkpOworICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIDQgKiBzb3VyY2Uud2lkdGgoKSAqIHNvdXJjZS5oZWlnaHQo
KSwgMCkpOworICAgIGlmICghZGF0YVByb3ZpZGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoc291cmNlLndpZHRoKCks
IHNvdXJjZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBzb3VyY2Uud2lkdGgoKSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQ
cm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKwor
ICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDApKTsKKyAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0
KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKK30KKworU3RyaW5nIGRhdGFVUkwoQ0ZEYXRhUmVm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgVmVjdG9yPGNoYXI+IGJhc2U2
NERhdGE7CisgICAgYmFzZTY0RW5jb2RlKENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdl
dExlbmd0aChkYXRhKSwgYmFzZTY0RGF0YSk7CisKKyAgICByZXR1cm4gImRhdGE6IiArIG1pbWVU
eXBlICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7Cit9CisKK1N0cmluZyBkYXRhVVJMKGNvbnN0
IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkpCit7CisgICAgaWYgKGF1dG8gZGF0YSA9IGNmRGF0YShzb3VyY2UsIG1pbWVU
eXBlLCBxdWFsaXR5KSkKKyAgICAgICAgcmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5
cGUpOworICAgIHJldHVybiAiZGF0YTosIl9zOworfQorCitWZWN0b3I8dWludDhfdD4gZGF0YVZl
Y3RvcihDRkRhdGFSZWYgY2ZEYXRhKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAg
IGRhdGEuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNm
RGF0YSkpOworICAgIHJldHVybiBkYXRhOworfQorCitWZWN0b3I8dWludDhfdD4gZGF0YShjb25z
dCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KQoreworICAgIGlmIChhdXRvIGRhdGEgPSBjZkRhdGEoc291cmNlLCBtaW1l
VHlwZSwgcXVhbGl0eSkpCisgICAgICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOwor
ICAgIHJldHVybiB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAppbmRleCAxNjEyOGExOWFiZDFmYjgzYWIz
MWExMTVjNjg5NTA0OTFkNDE5NTUyLi5iYzg3NzU4ODc4ZDUxNjNhOTM4YWY4MjQyYzdhNjgwMGVh
OWJkMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDMxIEBACiAKICNwcmFn
bWEgb25jZQogCisjaWYgVVNFKENHKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEltYWdlRGF0YTsKKwogV0VCQ09SRV9FWFBPUlQgdWlu
dDhfdCB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUpOwogCi19CitDRlN0cmluZ1JlZiBqcGVnVVRJKCk7CitSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwor
Citib29sIGVuY29kZUltYWdlKENHSW1hZ2VSZWYsIENGU3RyaW5nUmVmIHV0aSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBDRk11dGFibGVEYXRhUmVmKTsKKworU3RyaW5nIGRhdGFVUkwoQ0ZE
YXRhUmVmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK1N0cmluZyBkYXRhVVJMKGNvbnN0IElt
YWdlRGF0YSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSk7CisKK1ZlY3Rvcjx1aW50OF90PiBkYXRhVmVjdG9yKENGRGF0YVJlZik7CitWZWN0b3I8dWlu
dDhfdD4gZGF0YShjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXIuaAppbmRleCA0OWU4YzVhMjZlNzcxYzQyNDk2NzgxOTUyN2E1NjI3MzUzZGY0
NDk2Li5kZDM1Y2M2NWIxMzdkODIyYzcwMTUzMmRhYmQyNDkwMDRiZjJhOWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTcx
LDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1f
c291cmNlSW1hZ2U7CiAgICAgRmxvYXRTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTsKLSAgICBSZW5kZXJpbmdNb2RlIG1fcmVu
ZGVyaW5nTW9kZSB7IFVuYWNjZWxlcmF0ZWQgfTsKKyAgICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVy
aW5nTW9kZSB7IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQgfTsKICAgICBmbG9hdCBtX2Zp
bHRlclNjYWxlIHsgMSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFiNWEwZDUwZjhjZTFhYWY2NTM1ZGVlYzk0MGI4NWRjNTUxN2U0YjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDEwNCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgot
ICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0g
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIkdSZWZQdHJHdGsuaCIKLSNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotI2luY2x1ZGUg
PGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0UHRyPGdjaGFy
PiYgYnVmZmVyLCBnc2l6ZSYgYnVmZmVyU2l6ZSkKLXsKLSAgICAvLyBMaXN0IG9mIHN1cHBvcnRl
ZCBpbWFnZSBlbmNvZGluZyB0eXBlcyBjb21lcyBmcm9tIHRoZSBHZGtQaXhidWYgZG9jdW1lbnRh
dGlvbi4KLSAgICAvLyBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nZGstcGl4YnVmL3N0YWJs
ZS9nZGstcGl4YnVmLUZpbGUtc2F2aW5nLmh0bWwjZ2RrLXBpeGJ1Zi1zYXZlLXRvLWJ1ZmZlcnYK
LQotICAgIFN0cmluZyB0eXBlID0gbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKTsK
LSAgICBpZiAodHlwZSAhPSAianBlZyIgJiYgdHlwZSAhPSAicG5nIiAmJiB0eXBlICE9ICJ0aWZm
IiAmJiB0eXBlICE9ICJpY28iICYmIHR5cGUgIT0gImJtcCIpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBwaXhidWY7Ci0gICAgaWYgKHR5cGUgPT0gImpw
ZWciKSB7Ci0gICAgICAgIC8vIEpQRUcgZG9lc24ndCBzdXBwb3J0IGFscGhhIGNoYW5uZWwuIFRo
ZSA8Y2FudmFzPiBzcGVjIHN0YXRlcyB0aGF0IHRvRGF0YVVSTCgpIG11c3QgZW5jb2RlIGEgUG9y
dGVyLUR1ZmYKLSAgICAgICAgLy8gY29tcG9zaXRlIHNvdXJjZS1vdmVyIGJsYWNrIGZvciBpbWFn
ZSB0eXBlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGFscGhhLgotICAgICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBuZXdTdXJmYWNlOwotICAgICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlw
ZShzdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpIHsKLSAgICAgICAgICAgIG5l
d1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpLAotICAgICAgICAgICAgICAgIENB
SVJPX0ZPUk1BVF9SR0IyNCwKLSAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChzdXJmYWNlKSwKLSAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZSksCi0gICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfc3RyaWRlKHN1cmZhY2UpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJbnRT
aXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZhY2UpOwotICAgICAgICAgICAgbmV3U3Vy
ZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9S
R0IyNCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBSZWZQdHI8
Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobmV3U3VyZmFjZS5nZXQoKSkpOwot
ICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLCAw
LCAwKTsKLSAgICAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKLSAgICAgICAgfQotICAg
ICAgICBwaXhidWYgPSBhZG9wdEdSZWYoY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYobmV3U3VyZmFj
ZS5nZXQoKSkpOwotICAgIH0gZWxzZQotICAgICAgICBwaXhidWYgPSBhZG9wdEdSZWYoY2Fpcm9T
dXJmYWNlVG9HZGtQaXhidWYoc3VyZmFjZSkpOwotICAgIGlmICghcGl4YnVmKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgaWYg
KHR5cGUgPT0gImpwZWciICYmIHF1YWxpdHkgJiYgKnF1YWxpdHkgPj0gMC4wICYmICpxdWFsaXR5
IDw9IDEuMCkgewotICAgICAgICBTdHJpbmcgcXVhbGl0eVN0cmluZyA9IFN0cmluZzo6bnVtYmVy
KHN0YXRpY19jYXN0PGludD4oKnF1YWxpdHkgKiAxMDAuMCArIDAuNSkpOwotICAgICAgICBnZGtf
cGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1
ZmZlclNpemUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLm91dFB0cigpLCAicXVhbGl0eSIs
IHF1YWxpdHlTdHJpbmcudXRmOCgpLmRhdGEoKSwgTlVMTCk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IGdka19waXhidWZfc2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigp
LCAmYnVmZmVyU2l6ZSwgdHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksIE5VTEwp
OwotCi0gICAgcmV0dXJuICFlcnJvcjsKLX0KLQotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVz
ZXJ2ZVJlc29sdXRpb24pIGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YSA9
IHRvRGF0YShtaW1lVHlwZSwgcXVhbGl0eSk7Ci0gICAgaWYgKGltYWdlRGF0YS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiAiZGF0YTosIjsKLQotICAgIFZlY3RvcjxjaGFyPiBiYXNlNjREYXRh
OwotICAgIGJhc2U2NEVuY29kZShpbWFnZURhdGEuZGF0YSgpLCBpbWFnZURhdGEuc2l6ZSgpLCBi
YXNlNjREYXRhKTsKLQotICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5cGUgKyAiO2Jhc2U2NCwi
ICsgYmFzZTY0RGF0YTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyOjp0b0RhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdAot
ewotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVG
b3JFbmNvZGluZyhtaW1lVHlwZSkpOwotCi0gICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gYnVmZmVy
OwotICAgIGdzaXplIGJ1ZmZlclNpemU7Ci0gICAgaWYgKCFlbmNvZGVJbWFnZShtX2RhdGEubV9z
dXJmYWNlLmdldCgpLCBtaW1lVHlwZSwgcXVhbGl0eSwgYnVmZmVyLCBidWZmZXJTaXplKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAg
aW1hZ2VEYXRhLmFwcGVuZChidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwotICAgIHJldHVybiBp
bWFnZURhdGE7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCA3ZDJjZWZkNjI2MWRlZTJh
MzlhODlkMTAxNzAyZWI1MDI1MmY0ZjVlLi5mMDM5MTM4MDYwZDM0NDM0ZTZjZGRiZjk2ZWE2NGMz
MDFhNjM1NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0
bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIq
IHNvdXJjZUxheWVyLCBjCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNu
J3QgdXNlZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0
LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAKICAg
ICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAKaW5kZXggNWU5Y2YwNTc4YTZiODI5ZjBhNmMwYTAxYjA5ODZlNjAzZDYwNDI4Yy4uYjhlM2Iw
YmExOWIyY2FkZmQ2YmY3NDk2YmM3YjgyYzUzZTkxODA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgIG1fc2l6
ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7CiAgICAgbV9kYXRhLmJhY2tp
bmdTdG9yZVNpemUgPSBtX3NpemU7CiAKLSAgICBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSBy
ZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOworICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmlu
ZyA9IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAgICAgaWYg
KG1fc2l6ZS53aWR0aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCBjYTExYmI4YmEwYjE5MTBjNjI3OTY3ZDRkMjYw
YjA0YzY4NDg2NzMxLi41YWM5ZDY2MDZjNDIyMTI0OGJjNDFkZTkzODljZTVjODdlNGE0MTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChtX2ltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFVuYWNjZWxlcmF0ZWQp
OworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IGQ1YjkxYjI2ODZhZTI2MWViNTNjMDY4OWJlZWM2MmY1NWUzZmI0NTgu
LjhmNTBlNTc1NzFkN2IzODUwMGVlZDdiY2RhNmIzYTY0MmFiZjc5NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjkwNSw3ICs2OTA1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpCiAgICAgfQogICAgIAog
ICAgIGVuc3VyZUxheWVyRmlsdGVycygpOwotICAgIG1fZmlsdGVycy0+YnVpbGRGaWx0ZXIocmVu
ZGVyZXIoKSwgcGFnZSgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJlbmRlcmVyKCkuc2V0dGluZ3Mo
KS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0
ZWQpOworICAgIG1fZmlsdGVycy0+YnVpbGRGaWx0ZXIocmVuZGVyZXIoKSwgcGFnZSgpLmRldmlj
ZVNjYWxlRmFjdG9yKCksIHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNF
bmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA5MTQyMDI5
YTJkNDQ2NGRmNWNiN2IzYTQ0MTkzYmUyODYzYzFlZDJhLi44NTFhODY2Nzg5YjQ4MzU0MjJjNTdh
NDFkZGE3NWEwYmNhZDdkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6
OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAg
SW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBp
bnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0Lmhl
aWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1
ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVj
dC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogCiAgICAgaWYgKGltYWdl
QnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCAwOGU0OTI4MmFkOTNi
Y2FjZDI5Nzc1Yjg0NmYwNTlkNWEyY2E3MTNlLi4xZDc3YjYzYzZmZTI4MzEyYWUxMWVkODI1YjUy
M2FhY2U3MTdlYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGMKIAogICAgIGlmIChzaG91bGRDcmVhdGVDbGlwcGVyTWFza0lt
YWdlICYmICFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2
OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNj
ZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBw
aW5nLCB0aG91Z2guCi0gICAgICAgIGNsaXBwZXJNYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENv
bG9yU3BhY2U6OlNSR0IsIFVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgY2xpcHBl
ck1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFp
bnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIWNsaXBwZXJNYXNrSW1h
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNzVi
NTliNjNjM2U0OTYwYmQ0ZTNiZGJkODc0OTJhOTMyZjQzMTYxYi4uZGRkYmE0MzJkMzc5MzdlYjA0
M2E2Y2MxN2JmOTMyZTZiNzg5NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5MSw3ICsxOTEs
NyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5zY2Fs
ZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgZWZmZWN0aXZlVHJhbnNmb3Jt
Lm11bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAotICAg
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxl
cmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOworICAg
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxl
cmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdp
b24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6TGluZWFyUkdCLCByZW5kZXJpbmdN
b2RlLCBjb250ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJU
KCFtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKaW5kZXggMTc4N2UxOGMyZGNlZjViZGY5OTI0NzRjZmMwMjJiNTE2NmFkNTg0OC4uMTIw
YzU3YjU2OTc4NzIyMDQ2NWJjNmFlYzBiNTgwNGM0NTVjZDgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgY29uc3Qg
U1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogICAgICAgICBD
b2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBD
b2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENv
bG9yU3BhY2U6OlNSR0I7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1
ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcg
aXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KLSAgICAg
ICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBVbmFj
Y2VsZXJhdGVkLCBjb250ZXh0KTsKKyAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtLCBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBjb250
ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IGI4MjE0MTFhZGU3NzUwODU2MTY4ODU2ZWQyMmI2MmVhNmI1Y2QzZDkuLjk3ODY3YWFkM2My
N2I1YjUzOGQzYTc5ZmI0OTVkZGQ0ZjBmNDNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0lt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUg
YWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICgh
YnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggZWYwMzUwMzQyYmI4MjI0NmNk
MTlmMzU0ZDliY2MwMjkxZjI5MDQzZC4uMjQwN2YxMDY5YjU3ZmJmNjU5NDg4NzU0MTI4Y2U4ZmFi
MWVjYmJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwMiw3ICsyMDIsNyBA
QCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8g
VGhpcyBpcyBlZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFu
IHVuYWNjZWxlcmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1
cm4gbmlsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388342</attachid>
            <date>2020-01-21 13:48:12 -0800</date>
            <delta_ts>2020-01-22 00:18:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206541-20200121134811.patch</filename>
            <type>text/plain</type>
            <size>87952</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM0ZGVkNTY4M2QyNzU4
OGIwYWJhODI5ZWZmN2QzNTMzOGRkYTE3ZS4uYmM3MTQ1N2QwZTJlM2Q5NWYwYWI0MWQ4ZjE2Yzdk
OTM4NGYwZjc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMC0wMS0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRs
eSBkb2VzIG5vdGhpbmcuIEZvciBDRyBwb3J0cywgaXQgc2NhbGVzIGEgcmVjdCAKKyAgICAgICAg
YnkgdGhlIHJhdGlvIGJhY2tpbmdTdG9yZVNpemUgLyBpbnRlcm5hbFNpemUgd2hpY2ggaXMgYWx3
YXlzIDEuIFRoZSAKKyAgICAgICAgY29uc3RydWN0b3IgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KCkgc2V0cyBtX3NpemUgYW5kIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplCisgICAgICAgIHRvIHRo
ZSBzYW1lIHZhbHVlIGFsd2F5cy4KKworICAgICAgICBEZWxldGUgSW1hZ2VCdWZmZXI6OmlzQ29t
cGF0aWJsZVdpdGhDb250ZXh0KCkgYWxzbyBzaW5jZSBpdCBpcyBub3QgdXNlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjppc0NvbXBhdGlibGVXaXRoQ29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0
b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZVNpemVUb1VzZXJTcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0
aW9uU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisKKzIwMjAtMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIEltYWdlQnVmZmVyIHV0
aWxpdGllcyBmdW5jdGlvbiB0byBzZXBhcmF0ZSBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgdXRpbGl0aWVzIGZ1bmN0aW9uIGFyZSBt
ZXJlbHkgcmVsYXRlZCB0byB0aGUgSW1hZ2VEYXRhLgorCisgICAgICAgICogU291cmNlc0dUSy50
eHQ6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vU291cmNlc0NhaXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmVuY29kZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqcGVn
VVRJKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21JbWFnZUJ1ZmZlck1JTUVU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmRhdGFVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZGF0YVZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjZkRhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6ZGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompw
ZWdVVEkpOgorICAgICAgICAoV2ViQ29yZTo6dXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YVZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDogUmVtb3ZlZC4KKworMjAyMC0wMS0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ug
UmVuZGVyaW5nTW9kZSBhbmQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBlbnVtIGNsYXNzZXMgYW5k
IG1vdmUgdGhlbSB0byBzZXBhcmF0ZSBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXJpbmdNb2RlIGFuZCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG5lZWQgdG8gYmUgZW5jb2RlZCBhbmQgZGVjb2RlZAorICAgICAgICB3aGVuIHRoZXkg
YXJlIHNlbnQgZnJvbSB0aGUgV2ViUHJvY2VzcyB0byB0aGUgR1BVUHJvY2Vzcy4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGll
ZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgICogaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjp0cmFu
c2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpj
cmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52
YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0Ojppc0FjY2VsZXJhdGVk
IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6cmVuZGVyaW5nTW9kZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6fkltYWdlQnVmZmVyRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGFDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKwog
MjAyMC0wMS0yMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJHTDJdIFNhbXBsZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IGVhZjU4MWZjZmI1MmM5ODNkODBmN2QwN2NhNmJiZWM2MTU3MjNjMTkuLmEzMzhjZWJmZjE4MTNj
ZmI0YzBiNzNhNmRmYjk2MzI2OTI0Y2NlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgUmVuZGVyaW5nTW9kZSBhbmQgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBlbnVtIGNsYXNzZXMgYW5kIG1vdmUgdGhlbSB0byBzZXBhcmF0ZSBo
ZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6
CisKIDIwMjAtMDEtMjEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRGlzYWJsZSBXZWJTUUwgZXZlcnl3aGVyZSBieSBkZWZhdWx0IGV4Y2VwdCBpbiB0ZXN0cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggYmI4NzgwNjE4Mzc0MWY5NjI2ODM4NjhlZmM2ODkxMDJiYzRm
NGEyZC4uNDU1MmMwNWE3MzlmNzU4NzhiNjdmYTRlNjg4MGU2Yzc0NjVlNjE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXJDbGllbnQu
aAogICAgIHBsYXRmb3JtL2dhbWVwYWQvUGxhdGZvcm1HYW1lcGFkLmgKIAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0FOR0xFV2ViS2l0QnJpZGdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJp
dmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTEyOCw2ICsx
MTI5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IDQ2NDFkNTgwOGE1MjdlYzZlMzBkMWNmYjZl
ODBiMjMxZGQ1NmQ2YjAuLjc0NjVkMGU2YTg2Njg3MzhmNGViZGM1NzRmOTI2Yzc0ODhlN2FhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBA
IC0yODQsNyArMjg0LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIAogICAgICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFn
ZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwg
VW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
OwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBtX2RhdGEgPSB7IG51
bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRl
eCA2ZGU2NTMyNjcwYTk0NWYzNjZlN2Y1NzcyZWE4MWRjMTRkZGI5YjViLi5iY2Q4ZDlmMjc3Mzdh
NTczMjM1NmM4YmNiNjgxNWYxMzViNjdkY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtODMs
NyArODMsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0dka0NhaXJvVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25H
dGsuY3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA5Mjk5MGY3MjI1ODA5YmUwYjY4NDVhMWE4
YTg2YzJlYmY5OGI5NDAuLmNlNzg4ZjYwMDkzZDViZDM2NTIxNWQ1ZTcyZDg1MGNjNTAwZWM1ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNDEsNiArMjE0MSw4IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNo
YW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlC
QzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5OUJDNjgyM0Q2QTUz
RTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdN
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDcz
RjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBE
MENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2Fn
ZUV2ZW50LmggKi87IH07CiAJCTc1NzkzRUM5MEQwQ0U3MkQwMDdGQzBBQyAvKiBKU01lc3NhZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFQzcwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC05NjQw
LDYgKzk2NDIsOCBAQAogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JH
Qi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpT
RVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNS
R0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0
QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUwMTgsNiArMjUwMjIs
NyBAQAogCQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4OCAvKiBvcGVuZ2wgKi8sCiAJCQkJMzcy
MTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJCTQ5RTkxMUIyMEVGODZE
MjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4
MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8sCiAJCQkJNDkwNzA3RTQxMjE5QzA0MzAw
RDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywKIAkJCQk0OTA3MDdFNTEyMTlDMDQz
MDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywKIAkJCQlCRUYyOUVFOTE3MTVERDA5
MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZhdGUuaCAqLywKQEAgLTI1MTk0LDYgKzI1MTk5LDcg
QEAKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJMDcz
QTE1NTEyMTc3QTM5ODAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkw
NzNBMTU1MzIxNzdBMzlBMDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKKwkJCQk3
Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCUE3M0Y5
NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi8sCiAJCQkJQTczRjk1RkQx
MkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggKi8sCiAJCQkJMEYzREQ0NEQxMkY1RUEx
QjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwICovLApAQCAtMjkwNTEsNiArMjkwNTcsNyBAQAog
CQkJCUJDRjdFNDkxMTM3Q0Q3QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNm
b3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxs
RGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Mjk5QkM2NzIzRDZB
NTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4
QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzIwMjUsNiArMzIwMzIsNyBAQAogCQkJCUJDRUE0ODc2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8q
IFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NjQxRDQ4MTIxNDJG
N0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU1NkM3QzRCMjIxMjM5OTcwMDlCMDZDQSAvKiBSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OTVGRjQ3MTgyNENFRTMw
MEZGNTFDRCAvKiBSZW5kZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2
NGRmZjJkOTg0ZWY3MmRkOWViYTUxMDI0MDYxMGZjMThlMjFkOTQ3Li5lZGExNzE3ZGRmZmQ3ZWIw
YmMzZjg3MDJiODI5M2U4OTliZDVjZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI3ODUsNyArMjc4NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShsb2dpY2Fs
V2lkdGgsIGxvZ2ljYWxIZWlnaHQpLCBVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUpOwor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGxvZ2lj
YWxXaWR0aCwgbG9naWNhbEhlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJl
c29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgICAgICBmYWls
KCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGU1YjhhYjQ2OWNlYzRiYzA1OGM0MzdkMTk5NTA0
MGI1MDIxYzc0MzEuLjJmYTUzYWEzOGMxZmNjMTE3MzU2YWY5ZjE1NWQwMTVkNDQzN2YwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdl
IGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNo
b3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0
dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBhdXRv
IHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVs
bEltYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5k
ZXggZjRiNzcwN2U5N2E4ZmU1MWY4ZTI1Nzc1OGFkZTRiNmRkZmY1MDJlNS4uMTQ3NzYyZjU1MjQy
ZTYzMTU0OWRkYjBhMDY3NGE2MjFmZThjZjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2Fu
dmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBu
dWxscHRyKTsKKyAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxs
cHRyKTsKICAgICBpZiAoIW1fY29waWVkQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAyM2Q5YjM0
ZTg0OGY2ZDAxZDM0YTlkYWZmYmEzMDUwZmM3YTcxMzE2Li5mNWU3NjUwMDY5YTZkODY5MGQ5NDNk
ZWUyNmJiMzYxZjkxODljZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcApAQCAtODMsNiArODMsMTAgQEAKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KICNlbmRpZgogCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRp
bGl0aWVzQ0cuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChIVE1MQ2FudmFzRWxlbWVudCk7CkBAIC04ODUsNyArODg5LDcgQEAg
dm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlm
ICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IEFjY2VsZXJh
dGVkIDogVW5hY2NlbGVyYXRlZDsKKyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBz
aG91bGRBY2NlbGVyYXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKICAgICBhdXRvIGhvc3RXaW5kb3cgPSAoZG9j
dW1lbnQoKS52aWV3KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSkgPyBkb2N1bWVudCgp
LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwogICAgIHNldEltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBDb2xvclNw
YWNlOjpTUkdCLCBob3N0V2luZG93KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmlu
ZGV4IDVmNDlmNzM5YTFmNWMzYmUwZWUxNzFmMzRmOTYzZTAyNjZiYzQ0OTIuLjJiODE5ODllOGZk
NjJlZmUzNDUzODdhOTAyZmU2OTJiMzA5OTU0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwCkBAIC02MSw5ICs2MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJpdG1hcCk7CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZB
U19CQUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IEFjY2VsZXJhdGVkOworc3RhdGlj
IFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkOwogI2Vsc2UKLXN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUg
PSBVbmFjY2VsZXJhdGVkOworc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9k
ZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAogUmVmPEltYWdlQml0
bWFwPiBJbWFnZUJpdG1hcDo6Y3JlYXRlKEludFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCBmNzQ0ODUxMjAwMTU3NWI0YWY0YmJhMjRlYWE1N2Fi
ZTZhMDY0M2M5Li43NTVmMTFlZjg5ZTExODFiZTA2ZDVlYTJmMDA3ODY5NmUzOWJlNGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFuc2Zl
clRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0bWFw
PiB7IG51bGxwdHIgfSB9OwogCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIp
Ci0gICAgICAgICAgICByZXR1cm4geyBJbWFnZUJpdG1hcDo6Y3JlYXRlKHsgSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpLCB0cnVlIH0pIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBJbWFnZUJpdG1hcDo6Y3JlYXRlKHsgSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpLCB0cnVlIH0pIH07CiAKICAgICAgICAgYXV0
byBidWZmZXIgPSB0YWtlSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0y
NDMsNyArMjQzLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkg
Y29uc3QKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVy
YXRlZCkpOworICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApAQCAtMjU3
LDcgKzI1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVuQ2FudmFz
Ojp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCkpOworICAgIHJldHVybiBzZXRJbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCkpOwogfQogCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6cmVzZXQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCA4OWQ4ZjQyNDNiMmI5MmRmYmNiMzJhYTIyMWI3NTNjOTNmMWY1OTQx
Li5kNDk0NzEyMDgzMjMxMGM3YzBkN2JlZjFjODc5ZGEzZmZiMjkzZjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtMTgwNiw3ICsxODA2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVj
dCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmYK
IAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQog
ewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0Fj
Y2VsZXJhdGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBvc2l0ZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKQEAgLTE5OTAsNyArMTk5MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
YW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVy
bihICiAgICAgICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJu
OjpjcmVhdGUoQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSksIHJlcGVh
dFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogI2VuZGlmCiAKLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKHZpZGVvRWxlbWVudCksIGRyYXdpbmdDb250
ZXh0KCkgPyBkcmF3aW5nQ29udGV4dCgpLT5yZW5kZXJpbmdNb2RlKCkgOiBBY2NlbGVyYXRlZCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSh2aWRlb0Vs
ZW1lbnQpLCBkcmF3aW5nQ29udGV4dCgpID8gZHJhd2luZ0NvbnRleHQoKS0+cmVuZGVyaW5nTW9k
ZSgpIDogUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAxNGVh
MzdkOGQ3ZWFmYjAxYjVjNGNlMTllYmU3NmM1MThjZmNkNGE4Li5iNTFiNGRiZjEzZWU1MDZlYjk0
OThjNDNlZjQ1Yzk0NGRkNzNlMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM2LDkgKzM2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dCk7CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKSB8fCBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotc3RhdGljIFJl
bmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IEFjY2VsZXJhdGVkOworc3RhdGljIFJl
bmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkOwogI2Vsc2UKLXN0YXRpYyBSZW5kZXJpbmdNb2RlIGJ1ZmZlclJlbmRlcmluZ01vZGUgPSBV
bmFjY2VsZXJhdGVkOworc3RhdGljIFJlbmRlcmluZ01vZGUgYnVmZmVyUmVuZGVyaW5nTW9kZSA9
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIAogc3RkOjp1bmlxdWVfcHRy
PEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4gSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzLCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRT
ZXR0aW5ncyYmIHNldHRpbmdzKQpAQCAtNjksNyArNjksNyBAQCBIVE1MQ2FudmFzRWxlbWVudCog
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMoKSBjb25zdAogCiBib29sIEltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGJ1ZmZlclJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQ7CisgICAgcmV0dXJuIGJ1ZmZl
clJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiB9CiAKIHZvaWQg
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXAoUmVmUHRyPEltYWdl
Qml0bWFwPiBpbWFnZUJpdG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNjdjYTUzYzQ3ZWVhMDA4
YmVhM2Y2MWRmOTZlNzM4OWNhZWNhNmRlYS4uNDI4ODIxNjQ0OThkZmMxODU2OTQ3YjE2YzNhMjlh
ODYzN2ZkOTUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTYzODYsNyArNjM4Niw3IEBAIEltYWdl
QnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpp
bWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQyMyk6IFNob3Vs
ZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkPwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgVW5hY2NlbGVyYXRlZCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0
ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkKTsKICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VS
VChtX2J1ZmZlcnMuc2l6ZSgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMzRiYTM3MmQ0OTE0M2NmZTI5M2E3
YzJhODk0NWU0MGYzNTFiMTA1MS4uZjZiYmZhZGQzNzdiYjUxYjA2MGFhMGIzM2YwYjY4MGYxMTJj
OTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcApAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRh
dGkKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PnNpemUoKSk7CiAKICAgICAvLyBGSVhNRSAoMTQ5NDIyKTogVGhpcyBidWZmZXIgc2hvdWxkIG5v
dCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXpl
KCksIFVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Qu
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3Rvcikp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCAwYTQ0YzJmYTFhMDk0OTdjZmRm
NTU4ODgzMmZmZGZmMTAyMzMzMGUxLi5lMjRkOTJlNmYzZTYxZDM4YTliMjQ0ODVmNGQxM2RlNTBl
NTMzYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlCiAgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKQogICAgICAgICBz
Y2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgp
LCBVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rvcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU291cmNlc0NhaXJvLnR4dAppbmRleCA0MjFkZmJkOTU3NTRjNDYyNzU3Yjc4ZGJmYTQxMDI1
NDMyYWYwYjdkLi5mOTBkMjQ2ZWM1OWI0ZjhhOGUxMzhiNzIyNDBjZjIwMjU4MzE5MmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKQEAgLTMxLDYgKzMxLDcgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0R0xDYWlyby5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRS
ZWN0Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkMWNhZWY4NTQxZGVlMDYyYmZlMDU0MTZjZGEyZjJhN2Y3OTI2ZTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gOiB1aW50OF90IHsKKyAgICBQcmVtdWx0aXBsaWVkLAorICAgIFVucHJlbXVs
dGlwbGllZAorfTsKKworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggYzcxZDk4ZjhhNWY2Njc0Njg2MzA5NDRhYjcxZGJhZmM5MWRjYjY0
ZS4uNDgyMjQ0YTRmMmJkY2VkZTdjODc0Y2QxYjUwZWE5MTRiMTQ5OWEyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMTYwLDcg
KzE2MCw3IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZVJlc3BlY3RpbmdPcmllbnRhdGlvbihjb25zCiAgICAgICAgIHJldHVybiBpbWFnZTsK
IAogICAgIEZsb2F0UmVjdCByZWN0ID0geyBGbG9hdFBvaW50KCksIHNpemUoKSB9OwotICAgIGF1
dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRl
ZCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGY1ODZkZDRiMmFmOTFmNDU2NTUzNWE3MDI5MzkyM2Fm
MmJhYWRiYTIuLmU1YzMxYzFlNjRlZjU0Yjk2MTEzMWRiYjI1YzRjZTRiMTg5ZTJkM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNTAs
NyArMzUxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNBY2NlbGVy
YXRlZENvbnRleHQoYm9vbCk7CiAjZW5kaWYKICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgY29uc3Q7Ci0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gaXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsg
fQorICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZSgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCA0NThhZTcyZjJh
ZTAyNTYyNDc2OGU4NzlkYmQ0OTY5NjRiNDkxYjE4Li5kYzU0YTk5ODVlNGQ0MjA2N2RhNmMyMzgx
ODM1ZmJkMzczNjg3NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKIAorI2luY2x1ZGUgIkFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRl
eCBjZWVhMWRhNDBlYjMyZmY3OGExZTc1ZTE3YmZlMDA5MjAxYjc2ZjEyLi41N2VlYmRjNTAwM2Mz
NzBiOGI0NzQxZWMyYmE1NDI0N2M5NWM5M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC0xMjIsMTcgKzEyMiw2IEBAIGVudW0g
VGV4dEFsaWduIHsKICAgICBSaWdodFRleHRBbGlnbgogfTsKIAotZW51bSBSZW5kZXJpbmdNb2Rl
IHsKLSAgICBVbmFjY2VsZXJhdGVkLAotICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9ybUJ1ZmZl
ciwgLy8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRmb3JtIEFQ
SSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgotICAgIEFjY2VsZXJhdGVkCi19OwotCi1lbnVt
IGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gewotICAgIFByZW11bHRpcGxpZWQsCi0gICAg
VW5wcmVtdWx0aXBsaWVkCi19OwotCiBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKFdlYkNv
cmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUpOwogU3RyaW5nIGJsZW5k
TW9kZU5hbWUoV2ViQ29yZTo6QmxlbmRNb2RlKTsKIGJvb2wgcGFyc2VCbGVuZE1vZGUoY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6QmxlbmRNb2RlJik7CkBAIC0xNDMsNyArMTMyLDYgQEAgV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdl
YkNvcmU6OkNvbXBvc2l0ZU8KIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXaW5kUnVsZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGluZUNhcCk7CiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGlu
ZUpvaW4pOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAppbmRleCBjMDEyNjM3MGNiODY1OTI3YTMyYmYxMWY2MTQ4NmQ3MWFmN2I0NzU4Li4y
MGI5ODEwYzI5MTQxZTQ3M2U2YTg4OGJjODBjMTQxN2FlYWMyZmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTQsMTIgKzEx
NCw2IEBAIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgpIGNvbnN0CiAj
ZW5kaWYKIAogI2lmICEoVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpKQotCi1GbG9hdFNpemUgSW1h
Z2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIHNpemUpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNpemU7Ci19Ci0KIHZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2Up
CiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29sb3JTcGFjZSkKQEAgLTI0NCwxMSAr
MjM4LDYgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0MKICAgICByZXR1cm4gZXhwYW5kZWRJbnRT
aXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQogCi1ib29sIEltYWdlQnVmZmVy
Ojppc0NvbXBhdGlibGVXaXRoQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoY29udGV4dC5zY2FsZUZh
Y3RvcigpLCB0aGlzLT5jb250ZXh0KCkuc2NhbGVGYWN0b3IoKSk7Ci19Ci0KICNpZiAhVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHNpemVfdCBJbWFnZUJ1ZmZlcjo6bWVtb3J5
Q29zdCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAppbmRleCBjYjc0Mzg0NDgwMmFiNDJiNTUzNTExN2NhYjVjYjc1NjQ0ZDViM2Y0
Li5lNTY0MmY1YTdhZWRiOWUwMTg3MzBmNDNiZTFmZTBiYTZlY2IxYjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVk
ZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCkBA
IC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlJl
bmRlcmluZ01vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJh
eS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODMs
NyArODUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgc3Rh
dGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoQ29udGV4dChjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5JbWFnZUJ1
ZmZlcigpOwogCkBAIC05MSw4ICs5Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBp
bnRlcm5hbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCBJbnRTaXpl
JiBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFNpemU7IH0KIAotICAgIEZs
b2F0U2l6ZSBzaXplRm9yRGVzdGluYXRpb25TaXplKEZsb2F0U2l6ZSkgY29uc3Q7Ci0KICAgICBm
bG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7
CkBAIC0xODgsMTAgKzE4Nyw0IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLSNpZiBVU0UoQ0cp
Ci1TdHJpbmcgZGF0YVVSTChjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwotVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY29uc3Qg
SW1hZ2VEYXRhJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5KTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWQ4
YWU4MWM4NDhiMTBlNmYyZDA3YTc4OWIxNmMzMzNkYzIzY2I0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFJlbmRlcmlu
Z01vZGUgOiB1aW50OF90IHsKKyAgICBBY2NlbGVyYXRlZCwKKyAgICBVbmFjY2VsZXJhdGVkLAor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA0MDQxYjNmODEwNzY3OGM1NmFjZGIwYzUz
M2EwOTg2ZjdlNjQ1NTk2Li42ODFhYjU2ZWViMzQxOTQ2MmIyMzQ0NTBkMDBmNDFmOTMzNjc0ZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigp
OwogCiAgICAgICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2NlbGVyYXRlZCBk
cmF3aW5nLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQgYnVmZmVyLgotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShy
b3VuZGVkU2l6ZSwgVW5hY2NlbGVyYXRlZCwgMSk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxKTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAgICAgfQogCkBA
IC01OTMsNyArNTkzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QKIAogdm9pZCBTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBMYXllckltYWdlUHJv
cGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYg
ZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBVbmFjY2Vs
ZXJhdGVkLCAxKTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4
cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0CiAKIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmIGZ1bGxSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiBob2xlUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9w
ZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdCdWZmZXIpCiB7Ci0gICAgYXV0
byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJ
bWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgVW5hY2NlbGVyYXRlZCwgMSk7CisgICAgYXV0byBs
YXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFn
ZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSk7
CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTY4NSw3ICs2ODUs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29ucwogICAgIGF1dG8qIGxheWVySW1hZ2UgPSBTY3Jh
dGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShsYXllckltYWdlUHJvcGVydGllcyk7Ci0gICAgYXV0byBs
YXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFVuYWNj
ZWxlcmF0ZWQsIDEpOworICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKICAg
ICBhdXRvKiBsYXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCkBA
IC03MzksNyArNzM5LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGls
aW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICNpZiBVU0UoQ0cpCiAg
ICAgYXV0byogbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0
Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICNlbHNlCi0gICAgYXV0byBsYXllckltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFVuYWNjZWxlcmF0ZWQsIDEpOwor
ICAgIGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVT
aXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxKTsKICAgICBhdXRvKiBsYXllcklt
YWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCkBAIC05MTIsNyArOTEyLDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QKIAogICAgIGFkanVzdEJsdXJSYWRpdXModHJhbnNm
b3JtKTsKIAotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5k
ZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBVbmFjY2VsZXJhdGVk
LCAxKTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVk
SW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMWYxMzMzYTc0MjY5ZjUyNDcwNWY1NDNmMGRk
YjgzNGNjN2NiZGYwZC4uOTFjMGExYTllMTQ4NWEyYTE0ZTYxYzY4ZjA2OGZlMzE5NjAxYTg2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDb2xv
ci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCkBAIC03Niw3ICs3Nyw2IEBACiAjZW5kaWYKICNlbmRp
ZgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZl
ckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0
IEludFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kCiAKIEltYWdlQnVmZmVy
RGF0YTo6fkltYWdlQnVmZmVyRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVuZGVyaW5nTW9kZSAhPSBB
Y2NlbGVyYXRlZCkKKyAgICBpZiAobV9yZW5kZXJpbmdNb2RlICE9IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQpAQCAtMjkyLDE0ICsyOTIsMTQgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAg
ICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBp
ZiAobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCkgeworICAgIGlmIChtX2Rh
dGEubV9yZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKSB7CiAgICAg
ICAgIG1fZGF0YS5jcmVhdGVDYWlyb0dMU3VyZmFjZSgpOwogICAgICAgICBpZiAoIW1fZGF0YS5t
X3N1cmZhY2UgfHwgY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkg
IT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCi0gICAgICAgICAgICBtX2RhdGEubV9yZW5kZXJpbmdN
b2RlID0gVW5hY2NlbGVyYXRlZDsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRv
IG5vbi1hY2NlbGVyYXRlZCBwYXRoLgorICAgICAgICAgICAgbV9kYXRhLm1fcmVuZGVyaW5nTW9k
ZSA9IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IC8vIElmIGFsbG9jYXRpb24gZmFpbHMs
IGZhbGwgYmFjayB0byBub24tYWNjZWxlcmF0ZWQgcGF0aC4KICAgICB9Ci0gICAgaWYgKG1fZGF0
YS5tX3JlbmRlcmluZ01vZGUgPT0gVW5hY2NlbGVyYXRlZCkKKyAgICBpZiAobV9kYXRhLm1fcmVu
ZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKQogI2Vsc2UKLSAgICBB
U1NFUlQobV9kYXRhLm1fcmVuZGVyaW5nTW9kZSAhPSBBY2NlbGVyYXRlZCk7CisgICAgQVNTRVJU
KG1fZGF0YS5tX3JlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpOwog
I2VuZGlmCiAgICAgewogICAgICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3Vy
ZmFjZURhdGFLZXk7CkBAIC02NTQsMjEgKzY1NCw2IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5
dGVBcnJheShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxp
CiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKEdUSykKLXN0YXRpYyBjYWlyb19zdGF0dXNfdCB3
cml0ZUZ1bmN0aW9uKHZvaWQqIG91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5z
aWduZWQgaW50IGxlbmd0aCkKLXsKLSAgICBpZiAoIXJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPHVp
bnQ4X3Q+Kj4ob3V0cHV0KS0+dHJ5QXBwZW5kKGRhdGEsIGxlbmd0aCkpCi0gICAgICAgIHJldHVy
biBDQUlST19TVEFUVVNfV1JJVEVfRVJST1I7Ci0gICAgcmV0dXJuIENBSVJPX1NUQVRVU19TVUND
RVNTOwotfQotCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIGltYWdl
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBWZWN0b3I8dWludDhfdD4qIG91dHB1dCkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKG1pbWVUeXBlLCBtaW1lVHlwZSA9PSAiaW1hZ2UvcG5nIik7IC8vIE9u
bHkgUE5HIG91dHB1dCBpcyBzdXBwb3J0ZWQgZm9yIG5vdy4KLQotICAgIHJldHVybiBjYWlyb19z
dXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sIG91dHB1dCkg
PT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7Ci19Ci0KIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJl
c2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1h
Z2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwpAQCAtNjgxLDIxICs2NjYsMTMgQEAgU3Ry
aW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LAogICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5cGUgKyAiO2Jh
c2U2NCwiICsgYmFzZTY0RGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyOjp0
b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPikgY29uc3QKK1Zl
Y3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsK
LQogICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gZW5jb2Rl
ZEltYWdlOwotICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwg
JmVuY29kZWRJbWFnZSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4gZW5jb2Rl
ZEltYWdlOworICAgIHJldHVybiBkYXRhKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0eSk7CiB9CiAK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVl
NjNjMjNhOTAzNDA4ZGRjZWM5MjkyYzI4YmU0OTU2YzgwMWRmZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxp
dGllc0NhaXJvLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKKworI2lmIFVTRShD
QUlSTykKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIK
KyNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisjaWYgIVBMQVRGT1JNKEdUSykKK3N0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1
bmN0aW9uKHZvaWQqIG91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIGlmICghcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8dWludDhfdD4qPihv
dXRwdXQpLT50cnlBcHBlbmQoZGF0YSwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIENBSVJPX1NU
QVRVU19XUklURV9FUlJPUjsKKyAgICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7Cit9CisK
K3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFZlY3Rvcjx1aW50OF90Piogb3V0cHV0KQoreworICAgIEFTU0VSVF9V
TlVTRUQobWltZVR5cGUsIG1pbWVUeXBlID09ICJpbWFnZS9wbmciKTsgLy8gT25seSBQTkcgb3V0
cHV0IGlzIHN1cHBvcnRlZCBmb3Igbm93LgorCisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vfd3Jp
dGVfdG9fcG5nX3N0cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBDQUlST19T
VEFUVVNfU1VDQ0VTUzsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoY2Fpcm9fc3VyZmFjZV90
KiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPikKK3sKKyAg
ICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlOworICAgIGlmICghaW1hZ2UgfHwgIWVuY29k
ZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIGVuY29kZWRJbWFnZTsKK30KKyNlbHNlCitzdGF0aWMgYm9vbCBlbmNv
ZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4mIGJ1ZmZlciwg
Z3NpemUmIGJ1ZmZlclNpemUpCit7CisgICAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgZW5j
b2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50YXRpb24uCisgICAg
Ly8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFibGUvZ2RrLXBpeGJ1
Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2CisKKyAgICBTdHJp
bmcgdHlwZSA9IG1pbWVUeXBlLnN1YnN0cmluZyhzaXplb2YgImltYWdlIik7CisgICAgaWYgKHR5
cGUgIT0gImpwZWciICYmIHR5cGUgIT0gInBuZyIgJiYgdHlwZSAhPSAidGlmZiIgJiYgdHlwZSAh
PSAiaWNvIiAmJiB0eXBlICE9ICJibXAiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBH
UmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmOworICAgIGlmICh0eXBlID09ICJqcGVnIikgeworICAg
ICAgICAvLyBKUEVHIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYSBjaGFubmVsLiBUaGUgPGNhbnZhcz4g
c3BlYyBzdGF0ZXMgdGhhdCB0b0RhdGFVUkwoKSBtdXN0IGVuY29kZSBhIFBvcnRlci1EdWZmCisg
ICAgICAgIC8vIGNvbXBvc2l0ZSBzb3VyY2Utb3ZlciBibGFjayBmb3IgaW1hZ2UgdHlwZXMgdGhh
dCBkbyBub3Qgc3VwcG9ydCBhbHBoYS4KKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bmV3U3VyZmFjZTsKKyAgICAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkg
PT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKSB7CisgICAgICAgICAgICBuZXdTdXJmYWNlID0g
YWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSwKKyAgICAgICAgICAgICAgICBDQUlST19GT1JNQVRf
UkdCMjQsCisgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSksCisgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UpLAorICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShz
dXJmYWNlKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSW50U2l6ZSBzaXplID0g
Y2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlKTsKKyAgICAgICAgICAgIG5ld1N1cmZhY2UgPSBhZG9w
dFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfUkdCMjQsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgUmVmUHRyPGNhaXJvX3Q+IGNy
ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG5ld1N1cmZhY2UuZ2V0KCkpKTsKKyAgICAgICAgICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgc3VyZmFjZSwgMCwgMCk7CisgICAg
ICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcGl4YnVm
ID0gYWRvcHRHUmVmKGNhaXJvU3VyZmFjZVRvR2RrUGl4YnVmKG5ld1N1cmZhY2UuZ2V0KCkpKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgcGl4YnVmID0gYWRvcHRHUmVmKGNhaXJvU3VyZmFjZVRvR2Rr
UGl4YnVmKHN1cmZhY2UpKTsKKyAgICBpZiAoIXBpeGJ1ZikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIGlmICh0eXBlID09ICJq
cGVnIiAmJiBxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApIHsK
KyAgICAgICAgU3RyaW5nIHF1YWxpdHlTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihzdGF0aWNfY2Fz
dDxpbnQ+KCpxdWFsaXR5ICogMTAwLjAgKyAwLjUpKTsKKyAgICAgICAgZ2RrX3BpeGJ1Zl9zYXZl
X3RvX2J1ZmZlcihwaXhidWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZidWZmZXJTaXplLCB0
eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvci5vdXRQdHIoKSwgInF1YWxpdHkiLCBxdWFsaXR5U3Ry
aW5nLnV0ZjgoKS5kYXRhKCksIE5VTEwpOworICAgIH0gZWxzZQorICAgICAgICBnZGtfcGl4YnVm
X3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1ZmZlclNp
emUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLm91dFB0cigpLCBOVUxMKTsKKworICAgIHJl
dHVybiAhZXJyb3I7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCog
aW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkK
K3sKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBidWZmZXI7CisgICAgZ3NpemUgYnVmZmVyU2l6
ZTsKKyAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0eSwgYnVmZmVy
LCBidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3Rvcjx1aW50OF90
PiBpbWFnZURhdGE7CisgICAgaW1hZ2VEYXRhLmFwcGVuZChidWZmZXIuZ2V0KCksIGJ1ZmZlclNp
emUpOworICAgIHJldHVybiBpbWFnZURhdGE7Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKEdUSykK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMDg4ZDBlYTRkM2VlZjQ1
YmM3NzE3ZjVjODI1ZWEzZDUwZTdkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1ZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCBmYTk5MWFkNWFkMTY3ZTMwMmIyMTliZGM5YmRjYzJlMTMyYjQ4YzhkLi5jNTRi
MGI5NjFkZWM1YmYzMmEwYjE5MWYwNDE4NWZjMDQ1Yzg2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gYnVmZmVyLnNpemVGb3JEZXN0aW5hdGlvblNpemUoZGVzdFJlY3Qu
c2l6ZSgpKTsKKyAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Qu
c2l6ZSgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggMzU2ZjE5NjRkMDk1NTJiZDFh
MjdmYzBkMjI4MDlkOGEzZGE2Yjc1Yi4uOTA5N2IzYjgzZWNmYmEyYjU5NWVjNDIwZmQ4MDE4NGZk
YWE1OGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTY2LDEzICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdlQnVmZmVyKTsK
IERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW1hZ2VCdWZmZXIpOwogCi1z
dGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUm
IGludGVybmFsU2l6ZSkKLXsKLSAgICBmbG9hdCB4TWFnbmlmaWNhdGlvbiA9IHN0YXRpY19jYXN0
PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLndpZHRoKCkpIC8gaW50ZXJuYWxTaXplLndpZHRoKCk7
Ci0gICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oYmFja2luZ1N0
b3JlU2l6ZS5oZWlnaHQoKSkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEZs
b2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sIGxvZ2ljYWxTaXpl
LmhlaWdodCgpICogeU1hZ25pZmljYXRpb24pOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKQEAgLTEyNyw3ICsxMjAsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAog
ICAgIG1fc2l6ZSA9IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7CiAgICAgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUgPSBtX3NpemU7CiAKLSAgICBib29sIGFjY2VsZXJhdGVSZW5k
ZXJpbmcgPSByZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkOworICAgIGJvb2wgYWNjZWxlcmF0
ZVJlbmRlcmluZyA9IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7
CiAgICAgaWYgKG1fc2l6ZS53aWR0aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgpIDw9IDApCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTU1LDcgKzE0OCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xv
clNwCiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0OwogICAgIGlmIChhY2Nl
bGVyYXRlUmVuZGVyaW5nKSB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkKLSAgICAgICAgRmxvYXRTaXplIHVzZXJCb3VuZHMgPSBzaXplRm9yRGVzdGluYXRpb25TaXpl
KEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKSk7CisgICAg
ICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gRmxvYXRTaXplKHdpZHRoLnVuc2FmZUdldCgpLCBo
ZWlnaHQudW5zYWZlR2V0KCkpOwogICAgICAgICBtX2RhdGEuc3VyZmFjZSA9IElPU3VyZmFjZTo6
Y3JlYXRlKG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBJbnRTaXplKHVzZXJCb3VuZHMpLCBjb2xv
clNwYWNlKTsKICAgICAgICAgaWYgKG1fZGF0YS5zdXJmYWNlKSB7CiAgICAgICAgICAgICBjZ0Nv
bnRleHQgPSBtX2RhdGEuc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGhvc3RXaW5kb3cp
OwpAQCAtMjEwLDExICsyMDMsNiBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiBJbWFnZUJ1
ZmZlcjo6fkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi1GbG9hdFNpemUgSW1hZ2VCdWZmZXI6
OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIGRlc3RpbmF0aW9uU2l6ZSkgY29uc3QK
LXsKLSAgICByZXR1cm4gc2NhbGVTaXplVG9Vc2VyU3BhY2UoZGVzdGluYXRpb25TaXplLCBtX2Rh
dGEuYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwotfQotCiAjaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHNpemVfdCBJbWFnZUJ1ZmZlcjo6bWVtb3J5Q29z
dCgpIGNvbnN0CiB7CkBAIC0yNTksNyArMjQ3LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb24K
ICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2Us
IEludFNpemUgaW50ZXJuYWxTaXplLCBJbnRTaXplIGxvZ2ljYWxTaXplLCBJbnRTaXplIGJhY2tp
bmdTdG9yZVNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHBy
ZXNlcnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEludFNp
emUgbG9naWNhbFNpemUsIEludFNpemUgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgaWYgKHJl
c29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29s
dXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2Fy
eShpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKQEAgLTI2Nyw3ICsyNTUsNyBAQCBzdGF0aWMg
UmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFp
blB0cjxDR0ltYWdlUmVmPgogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQo
KSwgOCwgNCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9n
aWNhbFNpemUpKTsKLSAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gc2Nh
bGVTaXplVG9Vc2VyU3BhY2UobG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIGludGVybmFs
U2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9IGxvZ2ljYWxT
aXplOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBpbWFnZS5nZXQoKSk7
CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0LmdldCgpKSk7CiAgICAgfQpAQCAtMjg2LDE3ICsyNzQsMTYgQEAgUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVz
ZXJ2ZVJlc28KICAgICBlbHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgbG9naWNhbFNpemUo
KSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJl
c29sdXRpb24pOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKFdURk1vdmUoaW1hZ2UpLCBsb2dpY2FsU2l6ZSgpLCBpbnRlcm5hbFNpemUoKSwgbV9yZXNv
bHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAgICBJ
bnRTaXplIGludGVybmFsU2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKTsKICAgICBJ
bnRTaXplIGxvZ2ljYWxTaXplID0gaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCk7Ci0gICAgSW50
U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gaW1hZ2VCdWZmZXItPm1fZGF0YS5iYWNraW5nU3RvcmVT
aXplOwogICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVmZmVyLT5tX3Jlc29sdXRp
b25TY2FsZTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBpbnRlcm5hbFNp
emUsIGxvZ2ljYWxTaXplLCBiYWNraW5nU3RvcmVTaXplLCByZXNvbHV0aW9uU2NhbGUsIHByZXNl
cnZlUmVzb2x1dGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5n
SWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSksIGxvZ2lj
YWxTaXplLCBpbnRlcm5hbFNpemUsIHJlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9u
KTsKIH0KIAogQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUo
KQpAQCAtNDQ1LDc5ICs0MzIsNiBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29u
c3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaQogICAgICAgICBj
b250ZXh0KCkuZmlsbFJlY3QoRmxvYXRSZWN0KDEsIDEsIDAsIDApKTsKIH0KIAotc3RhdGljIGlu
bGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVKUEVH
ID0gQ0ZTVFIoInB1YmxpYy5qcGVnIik7Ci0jZW5kaWYKLSAgICByZXR1cm4ga1VUVHlwZUpQRUc7
Ci19Ci0gICAgCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tSW1hZ2VCdWZm
ZXJNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQotewotICAgIC8vIEZJWE1FOiBXaHkg
ZG9lc24ndCBpT1MgdXNlIHRoZSBDb3JlU2VydmljZXMgdmVyc2lvbj8KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgcmV0dXJuIFVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkuY3JlYXRlQ0ZTdHJpbmco
KTsKLSNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5jbGVhciBp
ZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgotCi0gICAgLy8gRklYTUU6IEFkZCBXaW5kb3dzIHN1cHBv
cnQgZm9yIGFsbCB0aGUgc3VwcG9ydGVkIFVUSXMgd2hlbiBhIHdheSB0byBjb252ZXJ0IGZyb20g
TUlNRVR5cGUgdG8gVVRJIHJlbGlhYmx5IGlzIGZvdW5kLgotICAgIC8vIEZvciBub3csIG9ubHkg
c3VwcG9ydCBQTkcsIEpQRUcsIGFuZCBHSUYuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5NTI4Nj4u
Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGlj
LnBuZyIpOwotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlR0lGID0gQ0ZTVFIo
ImNvbS5jb21wdXNlcnZlLmdpZiIpOwotCi0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1pbWVUeXBlLCAiaW1hZ2UvcG5nIikpCi0gICAgICAgIHJldHVybiBrVVRUeXBlUE5H
OwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImltYWdl
L2pwZWciKSkKLSAgICAgICAgcmV0dXJuIGpwZWdVVEkoKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJpbWFnZS9naWYiKSkKLSAgICAgICAgcmV0dXJu
IGtVVFR5cGVHSUY7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4ga1VU
VHlwZVBORzsKLSNlbmRpZgotfQotCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShDR0ltYWdlUmVm
IGltYWdlLCBDRlN0cmluZ1JlZiB1dGksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ0ZNdXRh
YmxlRGF0YVJlZiBkYXRhKQotewotICAgIGlmICghaW1hZ2UgfHwgIXV0aSB8fCAhZGF0YSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJ
bWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YSwgdXRpLCAxLCAwKSk7Ci0gICAgaWYg
KCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gaW1hZ2VQcm9wZXJ0aWVzOwotICAgIGlmIChDRkVxdWFsKHV0aSwganBl
Z1VUSSgpKSAmJiBxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjAp
IHsKLSAgICAgICAgLy8gQXBwbHkgdGhlIGNvbXByZXNzaW9uIHF1YWxpdHkgdG8gdGhlIEpQRUcg
aW1hZ2UgZGVzdGluYXRpb24uCi0gICAgICAgIGF1dG8gY29tcHJlc3Npb25RdWFsaXR5ID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVU
eXBlLCAmKnF1YWxpdHkpKTsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VEZXN0
aW5hdGlvbkxvc3N5Q29tcHJlc3Npb25RdWFsaXR5OwotICAgICAgICBjb25zdCB2b2lkKiB2YWx1
ZSA9IGNvbXByZXNzaW9uUXVhbGl0eS5nZXQoKTsKLSAgICAgICAgaW1hZ2VQcm9wZXJ0aWVzID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwgJmtleSwgJnZhbHVlLCAxLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
Ci0gICAgfQotCi0gICAgLy8gU2V0dGluZyBrQ0dJbWFnZURlc3RpbmF0aW9uQmFja2dyb3VuZENv
bG9yIHRvIGJsYWNrIGZvciBKUEVHIGltYWdlcyBpbiBpbWFnZVByb3BlcnRpZXMgd291bGQgc2F2
ZSBzb21lIG1hdGgKLSAgICAvLyBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbnMsIGJ1dCBpdCBkb2Vz
bid0IHNlZW0gdG8gd29yay4KLQotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3Rp
bmF0aW9uLmdldCgpLCBpbWFnZSwgaW1hZ2VQcm9wZXJ0aWVzLmdldCgpKTsKLSAgICByZXR1cm4g
Q0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwotfQotCi1zdGF0
aWMgU3RyaW5nIGRhdGFVUkwoQ0ZEYXRhUmVmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
Ci17Ci0gICAgVmVjdG9yPGNoYXI+IGJhc2U2NERhdGE7Ci0gICAgYmFzZTY0RW5jb2RlKENGRGF0
YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChkYXRhKSwgYmFzZTY0RGF0YSk7Ci0K
LSAgICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7
Ci19Ci0KLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gZGF0YVZlY3RvcihDRkRhdGFSZWYgY2ZEYXRh
KQotewotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEuYXBwZW5kKENGRGF0YUdl
dEJ5dGVQdHIoY2ZEYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YSkpOwotICAgIHJldHVybiBk
YXRhOwotfQotCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVz
ZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHRvQ0ZEYXRhKG1p
bWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRpb24pKQpAQCAtNTY2LDcgKzQ4MCw3IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3ViCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNp
emUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxv
Z2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAgICBG
bG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBzaXplRm9yRGVzdGluYXRpb25TaXplKGxv
Z2ljYWxTaXplKCkpOworICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBs
b2dpY2FsU2l6ZSgpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBpbWFnZVNpemVJblVzZXJTcGFjZS53aWR0aCgpLCBpbWFnZVNpemVJ
blVzZXJTcGFjZS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CkBA
IC01NzgsNzAgKzQ5Miw2IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyOjp0b0NG
RGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3ViCiAgICAgcmV0dXJuIFdU
Rk1vdmUoY2ZEYXRhKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YShj
b25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5KQotewotICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwotCi0gICAgYXV0byB1dGkg
PSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgQVNTRVJUKHV0aSk7
Ci0KLSAgICBDR0ltYWdlQWxwaGFJbmZvIGRhdGFBbHBoYUluZm8gPSBrQ0dJbWFnZUFscGhhTGFz
dDsKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gc291cmNlLmRhdGEoKS0+ZGF0YSgpOwotICAg
IFZlY3Rvcjx1aW50OF90PiBwcmVtdWx0aXBsaWVkRGF0YTsKLQotICAgIGlmIChDRkVxdWFsKHV0
aS5nZXQoKSwganBlZ1VUSSgpKSkgewotICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFs
cGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBi
bGFjay4KLSAgICAgICAgc2l6ZV90IHNpemUgPSA0ICogc291cmNlLndpZHRoKCkgKiBzb3VyY2Uu
aGVpZ2h0KCk7Ci0gICAgICAgIGlmICghcHJlbXVsdGlwbGllZERhdGEudHJ5UmVzZXJ2ZUNhcGFj
aXR5KHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgcHJlbXVs
dGlwbGllZERhdGEuZ3JvdyhzaXplKTsKLSAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmZmVyID0g
cHJlbXVsdGlwbGllZERhdGEuZGF0YSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7IGkgKz0gNCkgewotICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBkYXRhW2kgKyAz
XTsKLSAgICAgICAgICAgIGlmIChhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICBidWZm
ZXJbaSArIDBdID0gZGF0YVtpICsgMF0gKiBhbHBoYSAvIDI1NTsKLSAgICAgICAgICAgICAgICBi
dWZmZXJbaSArIDFdID0gZGF0YVtpICsgMV0gKiBhbHBoYSAvIDI1NTsKLSAgICAgICAgICAgICAg
ICBidWZmZXJbaSArIDJdID0gZGF0YVtpICsgMl0gKiBhbHBoYSAvIDI1NTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2kgKyAwXSA9IGRhdGFbaSArIDBdOwot
ICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMV0gPSBkYXRhW2kgKyAxXTsKLSAgICAgICAgICAg
ICAgICBidWZmZXJbaSArIDJdID0gZGF0YVtpICsgMl07Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBkYXRhQWxwaGFJbmZvID0ga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdDsg
Ly8gSWdub3JlIHRoZSBhbHBoYSBjaGFubmVsLgotICAgICAgICBkYXRhID0gcHJlbXVsdGlwbGll
ZERhdGEuZGF0YSgpOwotICAgIH0KLQotICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2go
ZGF0YSwgNCAqIHNvdXJjZS53aWR0aCgpICogc291cmNlLmhlaWdodCgpKTsKLSAgICBhdXRvIGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRh
LCA0ICogc291cmNlLndpZHRoKCkgKiBzb3VyY2UuaGVpZ2h0KCksIDApKTsKLSAgICBpZiAoIWRh
dGFQcm92aWRlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGltYWdlID0g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCksIDgs
IDMyLCA0ICogc291cmNlLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZh
bHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0KLSAgICBhdXRvIGNmRGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAg
aWYgKCFlbmNvZGVJbWFnZShpbWFnZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5LCBjZkRhdGEu
Z2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBXVEZNb3ZlKGNm
RGF0YSk7Ci19Ci0KLVN0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCi17Ci0gICAgaWYg
KGF1dG8gZGF0YSA9IGNmRGF0YShzb3VyY2UsIG1pbWVUeXBlLCBxdWFsaXR5KSkKLSAgICAgICAg
cmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5cGUpOwotICAgIHJldHVybiAiZGF0YTos
Il9zOwotfQotCi1WZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQotewotICAg
IGlmIChhdXRvIGRhdGEgPSBjZkRhdGEoc291cmNlLCBtaW1lVHlwZSwgcXVhbGl0eSkpCi0gICAg
ICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOwotICAgIHJldHVybiB7IH07Ci19Ci0K
IFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKaW5kZXgg
YzU1YTU0YWQ5MTE3OTUzY2E1ZTY5NmRhMDdlNmUwZGY2ODE0M2Q1OC4uM2UyMzc0YmFkMjRmMDc4
N2ZlZjA1NDNjMWI1MWI5MTIwZjEyMzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC0yNiw2ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFt
cGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5jcHAKaW5kZXggODlkMDQzOWMyMTBkYjUwMWFjOTM5ZWIxMTQxNDg4MWVl
ZWM2NWIyNC4uNGYxMzhlNGQ3M2FjZTcyY2MxYWQwZDZhOGE4MGNjYTg3NDZiZGM0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsMTggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmgiCiAKKyNpZiBVU0UoQ0cpCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgor
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8u
aD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9CYXNlNjQuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlVUSVV0aWxpdGll
cy5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNCArNTIsMTQzIEBA
IHVpbnQ4X3QgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChjb25zdCB2b2lkKiBidWZmZXIs
IHNpemVfdCBidWZmZXJTaXplKQogICAgIHJldHVybiAqKHVpbnQ4X3QqKWxhc3RCeXRlOwogfQog
CitDRlN0cmluZ1JlZiBqcGVnVVRJKCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCBQ
TEFURk9STShXSU4pCisgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVKUEVHID0g
Q0ZTVFIoInB1YmxpYy5qcGVnIik7CisjZW5kaWYKKyAgICByZXR1cm4ga1VUVHlwZUpQRUc7Cit9
CisKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbUltYWdlQnVmZmVyTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgaU9TIHVz
ZSB0aGUgQ29yZVNlcnZpY2VzIHZlcnNpb24/CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVy
biBVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpLmNyZWF0ZUNGU3RyaW5nKCk7CisjZWxzZQorICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhy
ZWFkc2FmZS4KKworICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhl
IHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVU
SSByZWxpYWJseSBpcyBmb3VuZC4KKyAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBK
UEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgorICAgIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKyAgICBz
dGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYga1VUVHlwZUdJRiA9IENGU1RSKCJjb20uY29tcHVzZXJ2
ZS5naWYiKTsKKworICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlw
ZSwgImltYWdlL3BuZyIpKQorICAgICAgICByZXR1cm4ga1VUVHlwZVBORzsKKyAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJpbWFnZS9qcGVnIikpCisgICAg
ICAgIHJldHVybiBqcGVnVVRJKCk7CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAiaW1hZ2UvZ2lmIikpCisgICAgICAgIHJldHVybiBrVVRUeXBlR0lGOwor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGtVVFR5cGVQTkc7CisjZW5k
aWYKK30KKworYm9vbCBlbmNvZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB1
dGksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhKQorewor
ICAgIGlmICghaW1hZ2UgfHwgIXV0aSB8fCAhZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRl
V2l0aERhdGEoZGF0YSwgdXRpLCAxLCAwKSk7CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2VQ
cm9wZXJ0aWVzOworICAgIGlmIChDRkVxdWFsKHV0aSwganBlZ1VUSSgpKSAmJiBxdWFsaXR5ICYm
ICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApIHsKKyAgICAgICAgLy8gQXBwbHkg
dGhlIGNvbXByZXNzaW9uIHF1YWxpdHkgdG8gdGhlIEpQRUcgaW1hZ2UgZGVzdGluYXRpb24uCisg
ICAgICAgIGF1dG8gY29tcHJlc3Npb25RdWFsaXR5ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmKnF1YWxpdHkpKTsKKyAg
ICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VEZXN0aW5hdGlvbkxvc3N5Q29tcHJlc3Np
b25RdWFsaXR5OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZSA9IGNvbXByZXNzaW9uUXVhbGl0
eS5nZXQoKTsKKyAgICAgICAgaW1hZ2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoMCwgJmtleSwgJnZhbHVlLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgfQorCisgICAgLy8gU2V0
dGluZyBrQ0dJbWFnZURlc3RpbmF0aW9uQmFja2dyb3VuZENvbG9yIHRvIGJsYWNrIGZvciBKUEVH
IGltYWdlcyBpbiBpbWFnZVByb3BlcnRpZXMgd291bGQgc2F2ZSBzb21lIG1hdGgKKyAgICAvLyBp
biB0aGUgY2FsbGluZyBmdW5jdGlvbnMsIGJ1dCBpdCBkb2Vzbid0IHNlZW0gdG8gd29yay4KKwor
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZSwg
aW1hZ2VQcm9wZXJ0aWVzLmdldCgpKTsKKyAgICByZXR1cm4gQ0dJbWFnZURlc3RpbmF0aW9uRmlu
YWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogfQorCitzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhKGNvbnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCit7CisgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CisKKyAg
ICBhdXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBB
U1NFUlQodXRpKTsKKworICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0lt
YWdlQWxwaGFMYXN0OworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBzb3VyY2UuZGF0YSgpLT5k
YXRhKCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHByZW11bHRpcGxpZWREYXRhOworCisgICAgaWYg
KENGRXF1YWwodXRpLmdldCgpLCBqcGVnVVRJKCkpKSB7CisgICAgICAgIC8vIEpQRUdzIGRvbid0
IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCwgc28gd2UgaGF2ZSB0byBtYW51YWxseSBjb21wb3NpdGUg
b24gdG9wIG9mIGJsYWNrLgorICAgICAgICBzaXplX3Qgc2l6ZSA9IDQgKiBzb3VyY2Uud2lkdGgo
KSAqIHNvdXJjZS5oZWlnaHQoKTsKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBsaWVkRGF0YS50cnlS
ZXNlcnZlQ2FwYWNpdHkoc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBwcmVtdWx0aXBsaWVkRGF0YS5ncm93KHNpemUpOworICAgICAgICB1bnNpZ25lZCBjaGFy
KiBidWZmZXIgPSBwcmVtdWx0aXBsaWVkRGF0YS5kYXRhKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSA0KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9
IGRhdGFbaSArIDNdOworICAgICAgICAgICAgaWYgKGFscGhhICE9IDI1NSkgeworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltpICsgMF0gPSBkYXRhW2kgKyAwXSAqIGFscGhhIC8gMjU1OworICAgICAg
ICAgICAgICAgIGJ1ZmZlcltpICsgMV0gPSBkYXRhW2kgKyAxXSAqIGFscGhhIC8gMjU1OworICAg
ICAgICAgICAgICAgIGJ1ZmZlcltpICsgMl0gPSBkYXRhW2kgKyAyXSAqIGFscGhhIC8gMjU1Owor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbaSArIDBdID0gZGF0
YVtpICsgMF07CisgICAgICAgICAgICAgICAgYnVmZmVyW2kgKyAxXSA9IGRhdGFbaSArIDFdOwor
ICAgICAgICAgICAgICAgIGJ1ZmZlcltpICsgMl0gPSBkYXRhW2kgKyAyXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGRhdGFBbHBoYUluZm8gPSBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBMYXN0OyAvLyBJZ25vcmUgdGhlIGFscGhhIGNoYW5uZWwuCisgICAgICAgIGRhdGEgPSBw
cmVtdWx0aXBsaWVkRGF0YS5kYXRhKCk7CisgICAgfQorCisgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJ
c0JpZ0Vub3VnaChkYXRhLCA0ICogc291cmNlLndpZHRoKCkgKiBzb3VyY2UuaGVpZ2h0KCkpOwor
ICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhE
YXRhKDAsIGRhdGEsIDQgKiBzb3VyY2Uud2lkdGgoKSAqIHNvdXJjZS5oZWlnaHQoKSwgMCkpOwor
ICAgIGlmICghZGF0YVByb3ZpZGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoc291cmNlLndpZHRoKCksIHNvdXJjZS5o
ZWlnaHQoKSwgOCwgMzIsIDQgKiBzb3VyY2Uud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwg
a0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKworICAgIGF1dG8g
Y2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApKTsKKyAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxp
dHksIGNmRGF0YS5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFdURk1vdmUoY2ZEYXRhKTsKK30KKworU3RyaW5nIGRhdGFVUkwoQ0ZEYXRhUmVmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgVmVjdG9yPGNoYXI+IGJhc2U2NERhdGE7Cisg
ICAgYmFzZTY0RW5jb2RlKENGRGF0YUdldEJ5dGVQdHIoZGF0YSksIENGRGF0YUdldExlbmd0aChk
YXRhKSwgYmFzZTY0RGF0YSk7CisKKyAgICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjti
YXNlNjQsIiArIGJhc2U2NERhdGE7Cit9CisKK1N0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0
YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHkpCit7CisgICAgaWYgKGF1dG8gZGF0YSA9IGNmRGF0YShzb3VyY2UsIG1pbWVUeXBlLCBxdWFs
aXR5KSkKKyAgICAgICAgcmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5cGUpOworICAg
IHJldHVybiAiZGF0YTosIl9zOworfQorCitWZWN0b3I8dWludDhfdD4gZGF0YVZlY3RvcihDRkRh
dGFSZWYgY2ZEYXRhKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGRhdGEuYXBw
ZW5kKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YSkpOwor
ICAgIHJldHVybiBkYXRhOworfQorCitWZWN0b3I8dWludDhfdD4gZGF0YShjb25zdCBJbWFnZURh
dGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5KQoreworICAgIGlmIChhdXRvIGRhdGEgPSBjZkRhdGEoc291cmNlLCBtaW1lVHlwZSwgcXVh
bGl0eSkpCisgICAgICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOworICAgIHJldHVy
biB7IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyVXRpbGl0aWVzQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAppbmRleCAxNjEyOGExOWFiZDFmYjgzYWIzMWExMTVjNjg5
NTA0OTFkNDE5NTUyLi5iYzg3NzU4ODc4ZDUxNjNhOTM4YWY4MjQyYzdhNjgwMGVhOWJkMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDMxIEBACiAKICNwcmFnbWEgb25jZQog
CisjaWYgVVNFKENHKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEltYWdlRGF0YTsKKwogV0VCQ09SRV9FWFBPUlQgdWludDhfdCB2ZXJp
ZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
clNpemUpOwogCi19CitDRlN0cmluZ1JlZiBqcGVnVVRJKCk7CitSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOworCitib29sIGVu
Y29kZUltYWdlKENHSW1hZ2VSZWYsIENGU3RyaW5nUmVmIHV0aSwgT3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBDRk11dGFibGVEYXRhUmVmKTsKKworU3RyaW5nIGRhdGFVUkwoQ0ZEYXRhUmVmLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKK1N0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0YSYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CisKK1Zl
Y3Rvcjx1aW50OF90PiBkYXRhVmVjdG9yKENGRGF0YVJlZik7CitWZWN0b3I8dWludDhfdD4gZGF0
YShjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
Q0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXIuaAppbmRleCA0OWU4YzVhMjZlNzcxYzQyNDk2NzgxOTUyN2E1NjI3MzUzZGY0NDk2Li5kZDM1
Y2M2NWIxMzdkODIyYzcwMTUzMmRhYmQyNDkwMDRiZjJhOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTcxLDcgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1h
Z2U7CiAgICAgRmxvYXRTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTsKLSAgICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9k
ZSB7IFVuYWNjZWxlcmF0ZWQgfTsKKyAgICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZSB7
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQgfTsKICAgICBmbG9hdCBtX2ZpbHRlclNjYWxl
IHsgMSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFiNWEwZDUwZjhjZTFhYWY2NTM1ZGVlYzk0MGI4NWRjNTUxN2U0YjEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIkdS
ZWZQdHJHdGsuaCIKLSNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotI2luY2x1ZGUgPGd0ay9ndGsu
aD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBib29sIGVu
Y29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVy
LCBnc2l6ZSYgYnVmZmVyU2l6ZSkKLXsKLSAgICAvLyBMaXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBl
bmNvZGluZyB0eXBlcyBjb21lcyBmcm9tIHRoZSBHZGtQaXhidWYgZG9jdW1lbnRhdGlvbi4KLSAg
ICAvLyBodHRwOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nZGstcGl4YnVmL3N0YWJsZS9nZGstcGl4
YnVmLUZpbGUtc2F2aW5nLmh0bWwjZ2RrLXBpeGJ1Zi1zYXZlLXRvLWJ1ZmZlcnYKLQotICAgIFN0
cmluZyB0eXBlID0gbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKTsKLSAgICBpZiAo
dHlwZSAhPSAianBlZyIgJiYgdHlwZSAhPSAicG5nIiAmJiB0eXBlICE9ICJ0aWZmIiAmJiB0eXBl
ICE9ICJpY28iICYmIHR5cGUgIT0gImJtcCIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEdSZWZQdHI8R2RrUGl4YnVmPiBwaXhidWY7Ci0gICAgaWYgKHR5cGUgPT0gImpwZWciKSB7Ci0g
ICAgICAgIC8vIEpQRUcgZG9lc24ndCBzdXBwb3J0IGFscGhhIGNoYW5uZWwuIFRoZSA8Y2FudmFz
PiBzcGVjIHN0YXRlcyB0aGF0IHRvRGF0YVVSTCgpIG11c3QgZW5jb2RlIGEgUG9ydGVyLUR1ZmYK
LSAgICAgICAgLy8gY29tcG9zaXRlIHNvdXJjZS1vdmVyIGJsYWNrIGZvciBpbWFnZSB0eXBlcyB0
aGF0IGRvIG5vdCBzdXBwb3J0IGFscGhhLgotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBuZXdTdXJmYWNlOwotICAgICAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNl
KSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpIHsKLSAgICAgICAgICAgIG5ld1N1cmZhY2Ug
PSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpLAotICAgICAgICAgICAgICAgIENBSVJPX0ZPUk1B
VF9SR0IyNCwKLSAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
dXJmYWNlKSwKLSAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZSksCi0gICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KHN1cmZhY2UpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBJbnRTaXplIHNpemUg
PSBjYWlyb1N1cmZhY2VTaXplKHN1cmZhY2UpOwotICAgICAgICAgICAgbmV3U3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9SR0IyNCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4g
Y3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobmV3U3VyZmFjZS5nZXQoKSkpOwotICAgICAgICAg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBzdXJmYWNlLCAwLCAwKTsKLSAg
ICAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKLSAgICAgICAgfQotICAgICAgICBwaXhi
dWYgPSBhZG9wdEdSZWYoY2Fpcm9TdXJmYWNlVG9HZGtQaXhidWYobmV3U3VyZmFjZS5nZXQoKSkp
OwotICAgIH0gZWxzZQotICAgICAgICBwaXhidWYgPSBhZG9wdEdSZWYoY2Fpcm9TdXJmYWNlVG9H
ZGtQaXhidWYoc3VyZmFjZSkpOwotICAgIGlmICghcGl4YnVmKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgaWYgKHR5cGUgPT0g
ImpwZWciICYmIHF1YWxpdHkgJiYgKnF1YWxpdHkgPj0gMC4wICYmICpxdWFsaXR5IDw9IDEuMCkg
ewotICAgICAgICBTdHJpbmcgcXVhbGl0eVN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHN0YXRpY19j
YXN0PGludD4oKnF1YWxpdHkgKiAxMDAuMCArIDAuNSkpOwotICAgICAgICBnZGtfcGl4YnVmX3Nh
dmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1ZmZlclNpemUs
IHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLm91dFB0cigpLCAicXVhbGl0eSIsIHF1YWxpdHlT
dHJpbmcudXRmOCgpLmRhdGEoKSwgTlVMTCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdka19waXhi
dWZfc2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVy
U2l6ZSwgdHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksIE5VTEwpOwotCi0gICAg
cmV0dXJuICFlcnJvcjsKLX0KLQotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YSA9IHRvRGF0YSht
aW1lVHlwZSwgcXVhbGl0eSk7Ci0gICAgaWYgKGltYWdlRGF0YS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAiZGF0YTosIjsKLQotICAgIFZlY3RvcjxjaGFyPiBiYXNlNjREYXRhOwotICAgIGJh
c2U2NEVuY29kZShpbWFnZURhdGEuZGF0YSgpLCBpbWFnZURhdGEuc2l6ZSgpLCBiYXNlNjREYXRh
KTsKLQotICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5cGUgKyAiO2Jhc2U2NCwiICsgYmFzZTY0
RGF0YTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyOjp0b0RhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdAotewotICAgIEFT
U0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhtaW1lVHlwZSkpOwotCi0gICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gYnVmZmVyOwotICAgIGdz
aXplIGJ1ZmZlclNpemU7Ci0gICAgaWYgKCFlbmNvZGVJbWFnZShtX2RhdGEubV9zdXJmYWNlLmdl
dCgpLCBtaW1lVHlwZSwgcXVhbGl0eSwgYnVmZmVyLCBidWZmZXJTaXplKSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7Ci0gICAgaW1hZ2VEYXRh
LmFwcGVuZChidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwotICAgIHJldHVybiBpbWFnZURhdGE7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCA3ZDJjZWZkNjI2MWRlZTJhMzlhODlkMTAx
NzAyZWI1MDI1MmY0ZjVlLi5mMDM5MTM4MDYwZDM0NDM0ZTZjZGRiZjk2ZWE2NGMzMDFhNjM1NTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0bWFwVGV4dHVy
ZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxh
eWVyLCBjCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVk
IGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBi
eSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRS
ZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXgg
NWU5Y2YwNTc4YTZiODI5ZjBhNmMwYTAxYjA5ODZlNjAzZDYwNDI4Yy4uYjhlM2IwYmExOWIyY2Fk
ZmQ2YmY3NDk2YmM3YjgyYzUzZTkxODA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAt
OTEsNyArOTEsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgIG1fc2l6ZSA9IEludFNp
emUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7CiAgICAgbV9kYXRhLmJhY2tpbmdTdG9yZVNp
emUgPSBtX3NpemU7CiAKLSAgICBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSByZW5kZXJpbmdN
b2RlID09IEFjY2VsZXJhdGVkOworICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAgICAgaWYgKG1fc2l6ZS53
aWR0aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcAppbmRleCBjYTExYmI4YmEwYjE5MTBjNjI3OTY3ZDRkMjYwYjA0YzY4NDg2
NzMxLi41YWM5ZDY2MDZjNDIyMTI0OGJjNDFkZTkzODljZTVjODdlNGE0MTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFVuYWNjZWxlcmF0ZWQpOworICAgIG1f
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDdmNzc4NGE4NmYwYWMyNzkxMjRmOGExMzA2YjhmODBiYmE0MzY1ZjguLmU5ZTZhMDM3
MjYwODkyOWZhZjg4ZWRkODQxYWU3YWUyOWRhZmE1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjk0MSw3ICs2OTQxLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6dXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpCiAgICAgfQogICAgIAogICAgIGVuc3Vy
ZUxheWVyRmlsdGVycygpOwotICAgIG1fZmlsdGVycy0+YnVpbGRGaWx0ZXIocmVuZGVyZXIoKSwg
cGFnZSgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hY2NlbGVy
YXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAg
IG1fZmlsdGVycy0+YnVpbGRGaWx0ZXIocmVuZGVyZXIoKSwgcGFnZSgpLmRldmljZVNjYWxlRmFj
dG9yKCksIHJlbmRlcmVyKCkuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkg
PyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA5MTQyMDI5YTJkNDQ2NGRm
NWNiN2IzYTQ0MTkzYmUyODYzYzFlZDJhLi44NTFhODY2Nzg5YjQ4MzU0MjJjNTdhNDFkZGE3NWEw
YmNhZDdkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApA
QCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgSW50UmVjdCBt
YXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMg
PSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAt
bWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91
bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdl
UmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCAwOGU0OTI4MmFkOTNiY2FjZDI5Nzc1
Yjg0NmYwNTlkNWEyY2E3MTNlLi4xZDc3YjYzYzZmZTI4MzEyYWUxMWVkODI1YjUyM2FhY2U3MTdl
YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGMKIAogICAgIGlmIChzaG91bGRDcmVhdGVDbGlwcGVyTWFza0ltYWdlICYmICFy
ZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMg
aW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQu
IE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91
Z2guCi0gICAgICAgIGNsaXBwZXJNYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2U6
OlNSR0IsIFVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgY2xpcHBlck1hc2tJbWFn
ZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIWNsaXBwZXJNYXNrSW1hZ2UpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNzViNTliNjNjM2U0
OTYwYmQ0ZTNiZGJkODc0OTJhOTMyZjQzMTYxYi4uZGRkYmE0MzJkMzc5MzdlYjA0M2E2Y2MxN2Jm
OTMyZTZiNzg5NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGVmZmVjdGl2ZVRyYW5zZm9ybS5zY2FsZShzY2FsZS53
aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5
KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAotICAgIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0
ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOworICAgIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0
ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkOwogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVj
dGl2ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6TGluZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250
ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKCFtX3JlbmRl
cmVyRmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5k
ZXggMTc4N2UxOGMyZGNlZjViZGY5OTI0NzRjZmMwMjJiNTE2NmFkNTg0OC4uMTIwYzU3YjU2OTc4
NzIyMDQ2NWJjNmFlYzBiNTgwNGM0NTVjZDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgY29uc3QgU1ZHUmVuZGVy
U3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogICAgICAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IENvbG9yU3BhY2U6OkxpbmVhclJHQiA6IENvbG9yU3BhY2U6
OlNSR0I7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91
bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2gg
dGhlIGNvbnRleHQgYnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KLSAgICAgICAgbWFza2Vy
RGF0YS0+bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
cmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBVbmFjY2VsZXJhdGVk
LCBjb250ZXh0KTsKKyAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3Jt
LCBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBjb250ZXh0KTsKICAg
ICAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGI4MjE0
MTFhZGU3NzUwODU2MTY4ODU2ZWQyMmI2MmVhNmI1Y2QzZDkuLjk3ODY3YWFkM2MyN2I1YjUzOGQz
YTc5ZmI0OTVkZGQ0ZjBmNDNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUgYWNjZWxlcmF0
ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQgYnVmZmVyLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKSAv
LyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggZWYwMzUwMzQyYmI4MjI0NmNkMTlmMzU0ZDli
Y2MwMjkxZjI5MDQzZC4uMjQwN2YxMDY5YjU3ZmJmNjU5NDg4NzU0MTI4Y2U4ZmFiMWVjYmJmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIwMiw3ICsyMDIsNyBAQCBSZXRhaW5Q
dHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBl
ZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxl
cmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Qu
c2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388402</attachid>
            <date>2020-01-22 00:18:03 -0800</date>
            <delta_ts>2020-01-22 12:20:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206541-20200122001803.patch</filename>
            <type>text/plain</type>
            <size>18580</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxOTMzOGZmZjk0OGZk
NjY3YWU3OGE0MzYxZjNhYjFjY2IwZTcwOC4uYjY0NTAxZDAzMmEwMWJlZGI2NTJhYmM0YjRiYWQ5
NDVjZDFlMDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAxLTIyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IEltYWdlQnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0tIFJlbW92ZSBJbWFnZUJ1ZmZlcjo6c2l6
ZUZvckRlc3RpbmF0aW9uU2l6ZSgpIHNpbmNlIGl0IGlzIGN1cnJlbnRseQorICAgICAgICAgICBk
b2VzIG5vdGhpbmcuIEZvciBDRyBhbmQgRDJEIHBvcnRzLCBpdCBzY2FsZXMgYSByZWN0IGJ5IHRo
ZSByYXRpbworICAgICAgICAgICBiYWNraW5nU3RvcmVTaXplIC8gaW50ZXJuYWxTaXplIHdoaWNo
IGlzIGFsd2F5cyAxLiBUaGUgY29uc3RydWN0b3IKKyAgICAgICAgICAgSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKCkgc2V0cyBtX3NpemUgYW5kIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplCisgICAg
ICAgICAgIHRvIHRoZSBzYW1lIHZhbHVlIGFsd2F5cy4KKworICAgICAgICAtLSBSZW1vdmUgSW1h
Z2VCdWZmZXI6OmlzQ29tcGF0aWJsZVdpdGhDb250ZXh0KCkgc2luY2UgaXQgaXMgbm90IHVzZWQu
CisgICAgICAgIC0tIFJlbW92ZSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSBzaW5j
ZSBpdCByZXR1cm5zIAorICAgICAgICAgICBEb250Q29weUJhY2tpbmdTdG9yZSBvbiBhbGwgcG9y
dHMuCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmlzQ29tcGF0aWJsZVdpdGhD
b250ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmxvZ2ljYWxTaXplIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZVNpemVUb1Vz
ZXJTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2l6ZUZv
ckRlc3RpbmF0aW9uU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjYWxlU2l6ZVRvVXNlclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSk6IERlbGV0ZWQuCisKIDIw
MjAtMDEtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIEltYWdlQnVmZmVyIHV0aWxpdGllcyBmdW5jdGlvbiB0byBzZXBhcmF0ZSBm
aWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAppbmRleCAxNDc3
NjJmNTUyNDJlNjMxNTQ5ZGRiMGEwNjc0YTYyMWZlOGNmM2Q1Li45MjA1YTk4MWU3OWZjODZiNWZi
YjFiZTM1MjE0ZjlhNDg5MGVhMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50
Q2FudmFzLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEltYWdlKiBDdXN0b21QYWludENhbnZhczo6
Y29waWVkSW1hZ2UoKSBjb25zdAogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKCk7CiAgICAgbV9kZXN0aW5hdGlvbkdyYXBoaWNzQ29udGV4dCA9IG51bGxw
dHI7CiAKLSAgICBtX2NvcGllZEltYWdlID0gbV9jb3BpZWRCdWZmZXItPmNvcHlJbWFnZShtX2Nv
cGllZEJ1ZmZlci0+ZmFzdENvcHlJbWFnZU1vZGUoKSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
OworICAgIG1fY29waWVkSW1hZ2UgPSBtX2NvcGllZEJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgcmV0dXJuIG1fY29w
aWVkSW1hZ2UuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggNDI4ODIxNjQ0OThkZmMx
ODU2OTQ3YjE2YzNhMjlhODYzN2ZkOTUwYS4uMGVmYTRiNGY5YTBjOTkwMDk0ZTA0OGVhMzc4YzE4
NDUwYTU3MzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTM5ODIsNyArMzk4Miw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMCiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1h
Z2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOworICAgICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAg
ICAgICBpZiAoaW1hZ2UpCiAgICAgICAgICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGlj
c0NvbnRleHRHTDo6RE9NU291cmNlOjpJbWFnZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVt
dWx0aXBseUFscGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMDQsNyArNDEwNCw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMCiAgICAgICAgIGlmICghdmFsaWRhdGVUZXhGdW5jKCJ0
ZXhTdWJJbWFnZTJEIiwgVGV4U3ViSW1hZ2UsIFNvdXJjZUhUTUxWaWRlb0VsZW1lbnQsIHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCB2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlk
ZW9IZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCB4b2Zmc2V0LCB5b2Zmc2V0KSkKICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHZpZGVvRnJh
bWVUb0ltYWdlKHZpZGVvLmdldCgpLCBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2aWRlby5n
ZXQoKSwgRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpZiAoIWltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgdGV4U3ViSW1hZ2UyREltcGwodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgZm9ybWF0LCB0eXBlLCBpbWFnZS5nZXQoKSwgR3JhcGhpY3ND
b250ZXh0R0w6OkRPTVNvdXJjZTo6VmlkZW8sIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVs
dGlwbHlBbHBoYSk7CkBAIC00NTUxLDcgKzQ1NTEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dAogICAgICAgICB9CiAKICAgICAgICAgLy8gTm9ybWFsIHB1cmUgU1cgcGF0aC4KLSAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpKTsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+
Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaWYgKGltYWdlKQogICAg
ICAgICAgICAgdGV4SW1hZ2UyREltcGwodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZv
cm1hdCwgdHlwZSwgaW1hZ2UuZ2V0KCksIEdyYXBoaWNzQ29udGV4dEdMOjpET01Tb3VyY2U6Oklt
YWdlLCBtX3VucGFja0ZsaXBZLCBtX3VucGFja1ByZW11bHRpcGx5QWxwaGEpOwogICAgICAgICBy
ZXR1cm4geyB9OwpAQCAtNDY2NSw3ICs0NjY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vcm1hbCBwdXJlIFNXIHBhdGguCi0gICAgICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRlb0ZyYW1lVG9JbWFnZSh2aWRlby5nZXQoKSwgSW1hZ2VC
dWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gdmlkZW9GcmFtZVRvSW1hZ2UodmlkZW8uZ2V0KCksIERvbnRDb3B5QmFja2luZ1N0b3JlKTsK
ICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHRl
eEltYWdlMkRJbXBsKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUs
IGltYWdlLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTDo6RE9NU291cmNlOjpWaWRlbywgbV91bnBh
Y2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhKTsKQEAgLTQ2OTAsNyArNDY5MCw3IEBA
IFJlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1
ZmZlcihJbWFnZSYgaW1hZ2UsIGludCB3CiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZS5zaXplKCkpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwogICAgIGJ1Zi0+Y29udGV4dCgpLmRyYXdJbWFnZShpbWFnZSwgZGVzdFJlY3QsIHNy
Y1JlY3QpOwotICAgIHJldHVybiBidWYtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJ
bWFnZU1vZGUoKSk7CisgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCBjMDEyNjM3MGNiODY1OTI3YTMyYmYx
MWY2MTQ4NmQ3MWFmN2I0NzU4Li4yMGI5ODEwYzI5MTQxZTQ3M2U2YTg4OGJjODBjMTQxN2FlYWMy
ZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCkBAIC0xMTQsMTIgKzExNCw2IEBAIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6
dG9CR1JBRGF0YSgpIGNvbnN0CiAjZW5kaWYKIAogI2lmICEoVVNFKENHKSB8fCBVU0UoRElSRUNU
MkQpKQotCi1GbG9hdFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUoRmxv
YXRTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNpemU7Ci19Ci0KIHZvaWQgSW1hZ2VC
dWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xv
clNwYWNlIGRzdENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZHN0Q29s
b3JTcGFjZSkKQEAgLTI0NCwxMSArMjM4LDYgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0
aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0MKICAg
ICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwog
fQogCi1ib29sIEltYWdlQnVmZmVyOjppc0NvbXBhdGlibGVXaXRoQ29udGV4dChjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5
RXF1YWwoY29udGV4dC5zY2FsZUZhY3RvcigpLCB0aGlzLT5jb250ZXh0KCkuc2NhbGVGYWN0b3Io
KSk7Ci19Ci0KICNpZiAhVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHNpemVf
dCBJbWFnZUJ1ZmZlcjo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAyNmRmN2NkZDlmYjZjMTNkZDMw
MGUxZDM5M2VjNDQyNTI0N2QyMGE1Li43Yjc3MmEyZjJkOGY2ZTc1NzdlYWZjNmRiMjI5MzA2Yjdj
ZmVkZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTg1LDI1ICs4NSwxOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOwogCiAgICAgc3RhdGljIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgYm9vbCBpc0NvbXBhdGlibGVX
aXRoQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5JbWFnZUJ1ZmZlcigpOwogCiAgICAgLy8gVGhlIGFjdHVhbCByZXNvbHV0aW9uIG9m
IHRoZSBiYWNraW5nIHN0b3JlCiAgICAgY29uc3QgSW50U2l6ZSYgaW50ZXJuYWxTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2ljYWxTaXplOyB9Ci0KLSAgICBGbG9hdFNpemUgc2l6ZUZvckRl
c3RpbmF0aW9uU2l6ZShGbG9hdFNpemUpIGNvbnN0OwotCiAgICAgZmxvYXQgcmVzb2x1dGlvblNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHV0aW9uU2NhbGU7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1h
Z2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJl
c2VydmVSZXNvbHV0aW9uOjpObyk7Ci0gICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNv
cHlJbWFnZSBNb2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMg
dGhlIERvbnRDb3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCi0gICAgLy8gb3IgcmV0dXJuIENvcHlC
YWNraW5nU3RvcmUgaWYgaXQgZG9lc24ndC4gIAotICAgIHN0YXRpYyBCYWNraW5nU3RvcmVDb3B5
IGZhc3RDb3B5SW1hZ2VNb2RlKCk7CiAKICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0geyBMb2dp
Y2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDkxYzBhMWE5ZTE0ODVhMmExNGU2MWM2OGYwNjhmZTMx
OTYwMWE4NjguLmJiYjVjNjQ4MmI2ZTFkM2YyOGFjNDc5ZWE3YzVkMzFiMWQzMzc5MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0zNTEsMTEgKzM1MSw2IEBAIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2Vy
dmVSZXNvCiAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4obV9kYXRhLm1fc3VyZmFjZSkpOwogfQogCi1CYWNraW5nU3RvcmVDb3B5IEltYWdlQnVm
ZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCi17Ci0gICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0
b3JlOwotfQotCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaW1hZ2VCdWZmZXItPmRy
YXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCBmYTk5MWFkNWFkMTY3ZTMwMmIyMTliZGM5YmRjYzJlMTMyYjQ4YzhkLi5jNTRi
MGI5NjFkZWM1YmYzMmEwYjE5MWYwNDE4NWZjMDQ1Yzg2OThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGUKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gYnVmZmVyLnNpemVGb3JEZXN0aW5hdGlvblNpemUoZGVzdFJlY3Qu
c2l6ZSgpKTsKKyAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Qu
c2l6ZSgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggOGE2MzdlMTBhMTEwNjZjNjJl
YmY3ZTJjYzhkNGUxNTc1ODk4M2ExMS4uNjExMmM0MjZmMGQxNzI1MGM1NmY1OTcwNzY2YmZkZmEy
M2JhNWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTY2LDEzICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdlQnVmZmVyKTsK
IERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSW1hZ2VCdWZmZXIpOwogCi1z
dGF0aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUm
IGludGVybmFsU2l6ZSkKLXsKLSAgICBmbG9hdCB4TWFnbmlmaWNhdGlvbiA9IHN0YXRpY19jYXN0
PGZsb2F0PihiYWNraW5nU3RvcmVTaXplLndpZHRoKCkpIC8gaW50ZXJuYWxTaXplLndpZHRoKCk7
Ci0gICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oYmFja2luZ1N0
b3JlU2l6ZS5oZWlnaHQoKSkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEZs
b2F0U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sIGxvZ2ljYWxTaXpl
LmhlaWdodCgpICogeU1hZ25pZmljYXRpb24pOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKQEAgLTE1NSw3ICsxNDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAog
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dDsKICAgICBpZiAoYWNjZWxlcmF0
ZVJlbmRlcmluZykgewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0g
ICAgICAgIEZsb2F0U2l6ZSB1c2VyQm91bmRzID0gc2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9h
dFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhlaWdodC51bnNhZmVHZXQoKSkpOworICAgICAgICBG
bG9hdFNpemUgdXNlckJvdW5kcyA9IEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0
LnVuc2FmZUdldCgpKTsKICAgICAgICAgbV9kYXRhLnN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgSW50U2l6ZSh1c2VyQm91bmRzKSwgY29sb3JTcGFj
ZSk7CiAgICAgICAgIGlmIChtX2RhdGEuc3VyZmFjZSkgewogICAgICAgICAgICAgY2dDb250ZXh0
ID0gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZVBsYXRmb3JtQ29udGV4dChob3N0V2luZG93KTsKQEAg
LTIxMCwxMSArMjAzLDYgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKIAogSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotRmxvYXRTaXplIEltYWdlQnVmZmVyOjpzaXpl
Rm9yRGVzdGluYXRpb25TaXplKEZsb2F0U2l6ZSBkZXN0aW5hdGlvblNpemUpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGRlc3RpbmF0aW9uU2l6ZSwgbV9kYXRhLmJh
Y2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKLX0KLQogI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzaXplX3QgSW1hZ2VCdWZmZXI6Om1lbW9yeUNvc3QoKSBj
b25zdAogewpAQCAtMjU5LDcgKzI0Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoQ0dJbWFnZVJlZiBpbWFnZSwgY29uCiAgICAg
cmV0dXJuIGltYWdlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFn
ZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBJbnRT
aXplIGludGVybmFsU2l6ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBiYWNraW5nU3Rv
cmVTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2
ZVJlc29sdXRpb24pCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVy
U2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBJbnRTaXplIGxv
Z2ljYWxTaXplLCBJbnRTaXplIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQogewogICAgIGlmIChyZXNvbHV0
aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9u
OjpZZXMpCiAgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1h
Z2UuZ2V0KCksIGludGVybmFsU2l6ZSk7CkBAIC0yNjcsNyArMjU1LDcgQEAgc3RhdGljIFJlZlB0
cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4KICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgs
IDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNv
bnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxT
aXplKSk7Ci0gICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6
ZVRvVXNlclNwYWNlKGxvZ2ljYWxTaXplLCBiYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUp
OworICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsK
ICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9h
dFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOwogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5n
ZXQoKSkpOwogICAgIH0KQEAgLTI4NiwyMiArMjc0LDE2IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVS
ZXNvCiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CiAKLSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIGxvZ2ljYWxTaXplKCksIG1f
ZGF0YS5iYWNraW5nU3RvcmVTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0
aW9uKTsKKyAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChX
VEZNb3ZlKGltYWdlKSwgbG9naWNhbFNpemUoKSwgaW50ZXJuYWxTaXplKCksIG1fcmVzb2x1dGlv
blNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyOjpzaW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgSW50U2l6
ZSBpbnRlcm5hbFNpemUgPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CiAgICAgSW50U2l6
ZSBsb2dpY2FsU2l6ZSA9IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwotICAgIEludFNpemUg
YmFja2luZ1N0b3JlU2l6ZSA9IGltYWdlQnVmZmVyLT5tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZTsK
ICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSBpbWFnZUJ1ZmZlci0+bV9yZXNvbHV0aW9uU2Nh
bGU7CiAKLSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChz
aW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpKSwgaW50ZXJuYWxTaXplLCBs
b2dpY2FsU2l6ZSwgYmFja2luZ1N0b3JlU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJl
c29sdXRpb24pOwotfQotCi1CYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpCi17Ci0gICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOworICAgIHJldHVy
biBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1h
Z2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBsb2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNv
bHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyKQpAQCAtNDkzLDcgKzQ3NSw3IEBAIFJldGFpblB0cjxDRkRh
dGFSZWY+IEltYWdlQnVmZmVyOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3ViCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwg
OCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lk
dGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSkpOwotICAgICAgICBGbG9hdFNpemUgaW1hZ2VT
aXplSW5Vc2VyU3BhY2UgPSBzaXplRm9yRGVzdGluYXRpb25TaXplKGxvZ2ljYWxTaXplKCkpOwor
ICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZSgpOwog
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBpbWFnZVNpemVJblVzZXJTcGFjZS53aWR0aCgpLCBpbWFnZVNpemVJblVzZXJTcGFjZS5oZWln
aHQoKSksIGltYWdlLmdldCgpKTsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKaW5kZXggYjhlM2IwYmExOWIyY2FkZmQ2YmY3NDk2YmM3YjgyYzUzZTkxODA5ZC4uZTA0
MjE4ZjFlZjRmNTc4Y2UwN2Y5NGI3YThlY2JiODMwYTUyNjdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcApAQCAtNTEsMTMgKzUxLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgRmxvYXRTaXplIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tpbmdTdG9yZVNpemUsIGNvbnN0IEludFNpemUmIGlu
dGVybmFsU2l6ZSkKLXsKLSAgICBmbG9hdCB4TWFnbmlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PGZs
b2F0PihiYWNraW5nU3RvcmVTaXplLndpZHRoKCkpIC8gaW50ZXJuYWxTaXplLndpZHRoKCk7Ci0g
ICAgZmxvYXQgeU1hZ25pZmljYXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSkgLyBpbnRlcm5hbFNpemUuaGVpZ2h0KCk7Ci0gICAgcmV0dXJuIEZsb2F0
U2l6ZShsb2dpY2FsU2l6ZS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sIGxvZ2ljYWxTaXplLmhl
aWdodCgpICogeU1hZ25pZmljYXRpb24pOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXplLmlz
RW1wdHkoKSkKQEAgLTEzMiwxMSArMTI1LDYgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKIAog
SW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotRmxvYXRTaXplIEltYWdl
QnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplKEZsb2F0U2l6ZSBkZXN0aW5hdGlvblNpemUp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjYWxlU2l6ZVRvVXNlclNwYWNlKGRlc3RpbmF0aW9uU2l6
ZSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGludGVybmFsU2l6ZSgpKTsKLX0KLQogR3JhcGhp
Y3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICpt
X2RhdGEuY29udGV4dDsKQEAgLTIwNiwxMSArMTk0LDYgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1
ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmUKICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRt
YXBUYXJnZXQuZ2V0KCksIHNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikp
LCBpbnRlcm5hbFNpemUsIGxvZ2ljYWxTaXplLCBiYWNraW5nU3RvcmVTaXplLCByZXNvbHV0aW9u
U2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKLUJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VC
dWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKLXsKLSAgICByZXR1cm4gRG9udENvcHlCYWNraW5n
U3RvcmU7Ci19Ci0KIENPTVB0cjxJRDJEMUJpdG1hcD4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0
aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAg
ICAvLyBGSVhNRTogU2VlIGlmIHdlIGNhbiByZXVzZSB0aGUgb24taGFyZHdhcmUgaW1hZ2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388457</attachid>
            <date>2020-01-22 12:20:42 -0800</date>
            <delta_ts>2020-01-22 13:32:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206541-20200122122041.patch</filename>
            <type>text/plain</type>
            <size>17413</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDIwLTAxLTIyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElt
YWdlQnVmZmVyOjpzaXplRm9yRGVzdGluYXRpb25TaXplKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgLS0gUmVtb3ZlIEltYWdlQnVmZmVyOjpzaXplRm9yRGVz
dGluYXRpb25TaXplKCkgc2luY2UgaXQgaXMgY3VycmVudGx5CisgICAgICAgICAgIGRvaW5nIG5v
dGhpbmcuIEZvciBDRyBhbmQgRDJEIHBvcnRzLCBpdCBzY2FsZXMgYSByZWN0IGJ5IHRoZSByYXRp
bworICAgICAgICAgICBiYWNraW5nU3RvcmVTaXplIC8gaW50ZXJuYWxTaXplIHdoaWNoIGlzIGFs
d2F5cyAxLiBUaGUgY29uc3RydWN0b3IKKyAgICAgICAgICAgSW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKCkgc2V0cyBtX3NpemUgYW5kIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplCisgICAgICAgICAg
IHRvIHRoZSBzYW1lIHZhbHVlIGFsd2F5cy4KKworICAgICAgICAtLSBSZW1vdmUgSW1hZ2VCdWZm
ZXI6OmlzQ29tcGF0aWJsZVdpdGhDb250ZXh0KCkgc2luY2UgaXQgaXMgbm90IHVzZWQuCisKKyAg
ICAgICAgLS0gUmVtb3ZlIEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpIHNpbmNlIGl0
IHJldHVybnMgCisgICAgICAgICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIG9uIGFsbCBwb3J0cy4K
KworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRvQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6aXNDb21wYXRpYmxlV2l0aENvbnRl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bG9naWNhbFNpemUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlU2l6ZVRvVXNlclNw
YWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzaXplRm9yRGVz
dGluYXRpb25TaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpmYXN0Q29weUltYWdlTW9kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Nh
bGVTaXplVG9Vc2VyU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OnNpemVGb3JEZXN0aW5hdGlvblNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKTogRGVsZXRlZC4KKwogMjAyMC0w
MS0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIERv
IG5vdCBjcmVhdGUgYSBGb3JtYXR0aW5nQ29udGV4dCB0byBjb21wdXRlIGludHJpbnNpYyB3aWR0
aCB1bmxlc3MgdGhlcmUncyBzb21lIGNvbnRlbnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24gMjU0OTMzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsx
MDIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlKCkgCiAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKICAgICBtX2Rlc3Rp
bmF0aW9uR3JhcGhpY3NDb250ZXh0ID0gbnVsbHB0cjsKIAotICAgIG1fY29waWVkSW1hZ2UgPSBt
X2NvcGllZEJ1ZmZlci0+Y29weUltYWdlKG1fY29waWVkQnVmZmVyLT5mYXN0Q29weUltYWdlTW9k
ZSgpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgbV9jb3BpZWRJbWFnZSA9IG1fY29w
aWVkQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzKTsKICAgICByZXR1cm4gbV9jb3BpZWRJbWFnZS5nZXQoKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI1NDkzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTgyLDcgKzM5ODIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZh
c3RDb3B5SW1hZ2VNb2RlKCkpOworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVy
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpZiAoaW1hZ2UpCiAg
ICAgICAgICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGljc0NvbnRleHRHTDo6RE9NU291
cmNlOjpJbWFnZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMDQsNyArNDEwNCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEIKICAgICAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmMoInRl
eFN1YkltYWdlMkQiLCBUZXhTdWJJbWFnZSwgU291cmNlSFRNTFZpZGVvRWxlbWVudCwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRl
b0hlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIHhvZmZzZXQsIHlvZmZzZXQpKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFt
ZVRvSW1hZ2UodmlkZW8uZ2V0KCksIEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpKTsK
KyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLmdl
dCgpLCBEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogICAgICAgICB0ZXhTdWJJbWFnZTJESW1wbCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6RE9NU291cmNlOjpWaWRlbywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0
aXBseUFscGhhKTsKQEAgLTQ1NTEsNyArNDU1MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEIKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vcm1hbCBwdXJlIFNX
IHBhdGguCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZShJ
bWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7CisgICAgICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAg
IGlmIChpbWFnZSkKICAgICAgICAgICAgIHRleEltYWdlMkRJbXBsKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGljc0NvbnRleHRH
TDo6RE9NU291cmNlOjpJbWFnZSwgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0aXBseUFs
cGhhKTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ2NjUsNyArNDY2NSw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEIKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE5vcm1hbCBwdXJlIFNXIHBhdGguCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSB2aWRl
b0ZyYW1lVG9JbWFnZSh2aWRlby5nZXQoKSwgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2Rl
KCkpOworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gdmlkZW9GcmFtZVRvSW1hZ2Uodmlk
ZW8uZ2V0KCksIERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHRleEltYWdlMkRJbXBsKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGltYWdlLmdldCgpLCBHcmFwaGljc0Nv
bnRleHRHTDo6RE9NU291cmNlOjpWaWRlbywgbV91bnBhY2tGbGlwWSwgbV91bnBhY2tQcmVtdWx0
aXBseUFscGhhKTsKQEAgLTQ2OTAsNyArNDY5MCw3IEBAIFJlZlB0cjxJbWFnZT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZToKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGlt
YWdlLnNpemUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7
CiAgICAgYnVmLT5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCk7
Ci0gICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9k
ZSgpKTsKKyAgICByZXR1cm4gYnVmLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwog
fQogCiAjaWYgRU5BQkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjU0OTMzKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsMTIgKzExNCw2IEBAIFZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JB
RGF0YSgKICNlbmRpZgogCiAjaWYgIShVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkpCi0KLUZsb2F0
U2l6ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgc2l6ZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc2l6ZTsKLX0KLQogdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNm
b3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q29s
b3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQpAQCAt
MjQ0LDExICsyMzgsNiBAQCBJbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6
CiAgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3Rvcigp
KTsKIH0KIAotYm9vbCBJbWFnZUJ1ZmZlcjo6aXNDb21wYXRpYmxlV2l0aENvbnRleHQoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAotewotICAgIHJldHVybiBhcmVFc3NlbnRp
YWxseUVxdWFsKGNvbnRleHQuc2NhbGVGYWN0b3IoKSwgdGhpcy0+Y29udGV4dCgpLnNjYWxlRmFj
dG9yKCkpOwotfQotCiAjaWYgIVVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBz
aXplX3QgSW1hZ2VCdWZmZXI6Om1lbW9yeUNvc3QoKSBjb25zdAogewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNTQ5
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NSwyNSArODUsMTggQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIGJvb2wgaXNDb21w
YXRpYmxlV2l0aENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIAogICAgIC8vIFRoZSBhY3R1YWwgcmVzb2x1
dGlvbiBvZiB0aGUgYmFja2luZyBzdG9yZQogICAgIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsU2l6ZTsgfQotCi0gICAgRmxvYXRTaXplIHNp
emVGb3JEZXN0aW5hdGlvblNpemUoRmxvYXRTaXplKSBjb25zdDsKLQogICAgIGZsb2F0IHJlc29s
dXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBD
b3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlPiBzaW5r
SW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIFByZXNlcnZlUmVzb2x1dGlv
biA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pOwotICAgIC8vIEdpdmUgaGludHMgb24gdGhlIGZh
c3RlciBjb3B5SW1hZ2UgTW9kZSwgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlIGlmIGl0IHN1
cHBvcnRzIHRoZSBEb250Q29weUJhY2tpbmdTdG9yZSBiZWhhdmlvcgotICAgIC8vIG9yIHJldHVy
biBDb3B5QmFja2luZ1N0b3JlIGlmIGl0IGRvZXNuJ3QuICAKLSAgICBzdGF0aWMgQmFja2luZ1N0
b3JlQ29weSBmYXN0Q29weUltYWdlTW9kZSgpOwogCiAgICAgZW51bSBDb29yZGluYXRlU3lzdGVt
IHsgTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0sIEJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0g
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDI1NDkzMykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTEgKzM1MSw2IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXI6OmNvcHlJbWFnZShCYWMKICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PihtX2RhdGEubV9zdXJmYWNlKSk7CiB9CiAKLUJhY2tpbmdTdG9y
ZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKLXsKLSAgICByZXR1cm4gRG9u
dENvcHlCYWNraW5nU3RvcmU7Ci19Ci0KIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmco
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
bWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjU0OTMzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBidWZmZXIuc2l6ZUZvckRl
c3RpbmF0aW9uU2l6ZShkZXN0UmVjdC5zaXplKCkpOworICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0
aW5hdGlvblNpemUgPSBkZXN0UmVjdC5zaXplKCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAJKHJldmlzaW9uIDI1NDkzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihJbWFnZUJ1ZmZlcik7CiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KEltYWdlQnVmZmVyKTsKIAotc3RhdGljIEZsb2F0U2l6ZSBzY2FsZVNpemVUb1VzZXJTcGFjZShj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNraW5nU3RvcmVT
aXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNpemUpCi17Ci0gICAgZmxvYXQgeE1hZ25pZmlj
YXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdD4oYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpKSAvIGlu
dGVybmFsU2l6ZS53aWR0aCgpOwotICAgIGZsb2F0IHlNYWduaWZpY2F0aW9uID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpIC8gaW50ZXJuYWxTaXplLmhlaWdo
dCgpOwotICAgIHJldHVybiBGbG9hdFNpemUobG9naWNhbFNpemUud2lkdGgoKSAqIHhNYWduaWZp
Y2F0aW9uLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0aW9uKTsKLX0KLQogc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCkBAIC0xNTUsNyArMTQ4LDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogICAgIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+IGNnQ29udGV4dDsKICAgICBpZiAoYWNjZWxlcmF0ZVJlbmRlcmluZykgewogI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIEZsb2F0U2l6ZSB1c2Vy
Qm91bmRzID0gc2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0
KCksIGhlaWdodC51bnNhZmVHZXQoKSkpOworICAgICAgICBGbG9hdFNpemUgdXNlckJvdW5kcyA9
IEZsb2F0U2l6ZSh3aWR0aC51bnNhZmVHZXQoKSwgaGVpZ2h0LnVuc2FmZUdldCgpKTsKICAgICAg
ICAgbV9kYXRhLnN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZSwgSW50U2l6ZSh1c2VyQm91bmRzKSwgY29sb3JTcGFjZSk7CiAgICAgICAgIGlmIChtX2Rh
dGEuc3VyZmFjZSkgewogICAgICAgICAgICAgY2dDb250ZXh0ID0gbV9kYXRhLnN1cmZhY2UtPmVu
c3VyZVBsYXRmb3JtQ29udGV4dChob3N0V2luZG93KTsKQEAgLTIxMCwxMSArMjAzLDYgQEAgSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogCiBJbWFnZUJ1ZmZlcjo6fklt
YWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCi1GbG9hdFNpemUgSW1hZ2VCdWZmZXI6OnNpemVGb3JE
ZXN0aW5hdGlvblNpemUoRmxvYXRTaXplIGRlc3RpbmF0aW9uU2l6ZSkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc2NhbGVTaXplVG9Vc2VyU3BhY2UoZGVzdGluYXRpb25TaXplLCBtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwotfQotCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5W
QVNfQkFDS0lOR19TVE9SRSkKIHNpemVfdCBJbWFnZUJ1ZmZlcjo6bWVtb3J5Q29zdCgpIGNvbnN0
CiB7CkBAIC0yNTksNyArMjQ3LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVh
dGVDcm9wcAogICAgIHJldHVybiBpbWFnZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJbWFnZT4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
JiBpbWFnZSwgSW50U2l6ZSBpbnRlcm5hbFNpemUsIEludFNpemUgbG9naWNhbFNpemUsIEludFNp
emUgYmFja2luZ1N0b3JlU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVzZXJ2ZVJlc29s
dXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQorc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0
bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBpbWFn
ZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAg
ICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlm
TmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUpOwpAQCAtMjY3LDcgKzI1NSw3IEBA
IHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWYKICAgICAgICAgYXV0byBj
b250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lk
dGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAg
ICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNv
cHkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVj
dChGbG9hdFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7Ci0gICAgICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNlKGxvZ2ljYWxTaXplLCBi
YWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUpOworICAgICAgICBGbG9hdFNpemUgaW1hZ2VT
aXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdlU2l6ZUlu
VXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KQEAgLTI4NiwyMiAr
Mjc0LDE2IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWMKICAgICBl
bHNlCiAgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdU
Rk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgbG9naWNhbFNpemUoKSwgbV9kYXRhLmJhY2tp
bmdTdG9yZVNpemUsIG1fcmVzb2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAg
IHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1h
Z2UpLCBsb2dpY2FsU2l6ZSgpLCBpbnRlcm5hbFNpemUoKSwgbV9yZXNvbHV0aW9uU2NhbGUsIHBy
ZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJ
bnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgUHJlc2Vy
dmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKICAgICBJbnRTaXplIGludGVybmFs
U2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKTsKICAgICBJbnRTaXplIGxvZ2ljYWxT
aXplID0gaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCk7Ci0gICAgSW50U2l6ZSBiYWNraW5nU3Rv
cmVTaXplID0gaW1hZ2VCdWZmZXItPm1fZGF0YS5iYWNraW5nU3RvcmVTaXplOwogICAgIGZsb2F0
IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVmZmVyLT5tX3Jlc29sdXRpb25TY2FsZTsKIAotICAg
IHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0
aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBpbnRlcm5hbFNpemUsIGxvZ2ljYWxTaXpl
LCBiYWNraW5nU3RvcmVTaXplLCByZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7
Ci19Ci0KLUJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkK
LXsKLSAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CisgICAgcmV0dXJuIGNyZWF0ZUJp
dG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3Zl
KGltYWdlQnVmZmVyKSksIGxvZ2ljYWxTaXplLCBpbnRlcm5hbFNpemUsIHJlc29sdXRpb25TY2Fs
ZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdl
QnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIpCkBAIC00OTMsNyArNDc1LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1h
Z2VCdWZmZXI6OnRvQ0ZEYQogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVp
Z2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRC
bGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICAgICAgRmxvYXRTaXpl
IGltYWdlU2l6ZUluVXNlclNwYWNlID0gc2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShsb2dpY2FsU2l6
ZSgpKTsKKyAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNp
emUoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1h
a2UoMCwgMCwgaW1hZ2VTaXplSW5Vc2VyU3BhY2Uud2lkdGgoKSwgaW1hZ2VTaXplSW5Vc2VyU3Bh
Y2UuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJELmNwcAkocmV2aXNpb24gMjU0OTMzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MSwxMyArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBG
bG9hdFNpemUgc2NhbGVTaXplVG9Vc2VyU3BhY2UoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgY29uc3QgSW50U2l6ZSYgYmFja2luZ1N0b3JlU2l6ZSwgY29uc3QgSW50U2l6ZSYgaW50ZXJu
YWxTaXplKQotewotICAgIGZsb2F0IHhNYWduaWZpY2F0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGJhY2tpbmdTdG9yZVNpemUud2lkdGgoKSkgLyBpbnRlcm5hbFNpemUud2lkdGgoKTsKLSAgICBm
bG9hdCB5TWFnbmlmaWNhdGlvbiA9IHN0YXRpY19jYXN0PGZsb2F0PihiYWNraW5nU3RvcmVTaXpl
LmhlaWdodCgpKSAvIGludGVybmFsU2l6ZS5oZWlnaHQoKTsKLSAgICByZXR1cm4gRmxvYXRTaXpl
KGxvZ2ljYWxTaXplLndpZHRoKCkgKiB4TWFnbmlmaWNhdGlvbiwgbG9naWNhbFNpemUuaGVpZ2h0
KCkgKiB5TWFnbmlmaWNhdGlvbik7Ci19Ci0KIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0
eSgpKQpAQCAtMTMyLDExICsxMjUsNiBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplCiAKIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLUZs
b2F0U2l6ZSBJbWFnZUJ1ZmZlcjo6c2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShGbG9hdFNpemUgZGVz
dGluYXRpb25TaXplKSBjb25zdAotewotICAgIHJldHVybiBzY2FsZVNpemVUb1VzZXJTcGFjZShk
ZXN0aW5hdGlvblNpemUsIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBpbnRlcm5hbFNpemUoKSk7
Ci19Ci0KIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CkBAIC0yMDYsMTEgKzE5NCw2IEBAIFJlZlB0cjxJ
bWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UKICAgICByZXR1cm4gY3JlYXRlQml0bWFw
SW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBUYXJnZXQuZ2V0KCksIHNpbmtJbnRvTmF0
aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBpbnRlcm5hbFNpemUsIGxvZ2ljYWxTaXpl
LCBiYWNraW5nU3RvcmVTaXplLCByZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7
CiB9CiAKLUJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkK
LXsKLSAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7Ci19Ci0KIENPTVB0cjxJRDJEMUJp
dG1hcD4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogU2VlIGlmIHdlIGNhbiBy
ZXVzZSB0aGUgb24taGFyZHdhcmUgaW1hZ2UuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>