<?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>236628</bug_id>
          
          <creation_ts>2022-02-14 18:28:58 -0800</creation_ts>
          <short_desc>[macOS] Add a &quot;Markup Image&quot; item to the sharing services picker context menu</short_desc>
          <delta_ts>2022-02-16 01:21:14 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236602</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841518</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-14 18:28:58 -0800</bug_when>
    <thetext>rdar://86446810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841581</commentid>
    <comment_count>1</comment_count>
      <attachid>451997</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-14 22:53:01 -0800</bug_when>
    <thetext>Created attachment 451997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841960</commentid>
    <comment_count>2</comment_count>
      <attachid>452094</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 14:58:34 -0800</bug_when>
    <thetext>Created attachment 452094
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841970</commentid>
    <comment_count>3</comment_count>
      <attachid>452098</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 15:13:05 -0800</bug_when>
    <thetext>Created attachment 452098
Fix Big Sur build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841987</commentid>
    <comment_count>4</comment_count>
      <attachid>452098</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-15 15:44:56 -0800</bug_when>
    <thetext>Comment on attachment 452098
Fix Big Sur build

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

&gt; Source/WebCore/dom/mac/ImageControlsMac.cpp:144
&gt;      if (ImageControlsMac::isImageControlsButtonElement(node)) {
&gt; -        auto shadowHost = node.shadowHost();
&gt; +        RefPtr shadowHost = node.shadowHost();
&gt;          if (!is&lt;HTMLImageElement&gt;(*shadowHost))
&gt;              return false;
&gt;          if (auto* image = imageFromImageElementNode(*shadowHost)) {

This mix of early return and nested if doesn’t seem logical. Either 3 nested if statements or 3 early returns would be better than 2 and 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842067</commentid>
    <comment_count>5</comment_count>
      <attachid>452098</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 17:32:53 -0800</bug_when>
    <thetext>Comment on attachment 452098
Fix Big Sur build

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

Thanks for the review!

&gt;&gt; Source/WebCore/dom/mac/ImageControlsMac.cpp:144
&gt;&gt;          if (auto* image = imageFromImageElementNode(*shadowHost)) {
&gt; 
&gt; This mix of early return and nested if doesn’t seem logical. Either 3 nested if statements or 3 early returns would be better than 2 and 1.

Good point! Replaced the `if (auto* image = …)` with an early return.

(Also changed this to use the `dynamicDowncast&lt;HTMLImageElement&gt;(…)` idiom here instead of having separate `is&lt;&gt;/downcast&lt;&gt;` calls).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842075</commentid>
    <comment_count>6</comment_count>
      <attachid>452098</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-15 17:47:45 -0800</bug_when>
    <thetext>Comment on attachment 452098
Fix Big Sur build

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

&gt;&gt;&gt; Source/WebCore/dom/mac/ImageControlsMac.cpp:144
&gt;&gt;&gt;          if (auto* image = imageFromImageElementNode(*shadowHost)) {
&gt;&gt; 
&gt;&gt; This mix of early return and nested if doesn’t seem logical. Either 3 nested if statements or 3 early returns would be better than 2 and 1.
&gt; 
&gt; Good point! Replaced the `if (auto* image = …)` with an early return.
&gt; 
&gt; (Also changed this to use the `dynamicDowncast&lt;HTMLImageElement&gt;(…)` idiom here instead of having separate `is&lt;&gt;/downcast&lt;&gt;` calls).

Even though I didn&apos;t say anything, I was hoping you would consider that. Making Chris Dumez’s day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842085</commentid>
    <comment_count>7</comment_count>
      <attachid>452121</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 18:25:56 -0800</bug_when>
    <thetext>Created attachment 452121
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842169</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 01:21:09 -0800</bug_when>
    <thetext>Committed r289882 (247320@main): &lt;https://commits.webkit.org/247320@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452121.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451997</attachid>
            <date>2022-02-14 22:53:01 -0800</date>
            <delta_ts>2022-02-15 14:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236628-20220214225300.patch</filename>
            <type>text/plain</type>
            <size>29912</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVmOTEwZTZiOGU4YTlh
YzZhODBhYWVlOTQ3ZGJlZGFjNDRmMDQwMS4uZWUyYzFmNGQxYTQ5NzBkYTM2ZGUzNGE4ZjRmNjU0
MjViYmQzM2ZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IGFuICJNYXJrdXAgSW1hZ2UiIGl0ZW0gdG8gdGhlIHNoYXJpbmcgc2VydmljZXMgcGlja2VyIGNv
bnRleHQgbWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2NjI4CisgICAgICAgIHJkYXI6Ly84NjQ0NjgxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIG5ldyBjb250ZXh0
IG1lbnUgaXRlbSBpbiB0aGUgc2hhcmluZyBzZXJ2aWNlcyBwaWNrZXI7IHNlZSBXZWJLaXQvQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJv
bHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6aGFuZGxlRXZl
bnQpOgorCisgICAgICAgIFNpbXBsaWZ5IHRoaXMgY2hyb21lIGNsaWVudCBob29rIGJ5IHBhc3Np
bmcgYWxvbmcgdGhlIGVudGlyZSBIVE1MSW1hZ2VFbGVtZW50LCBpbnN0ZWFkIG9mIHRoZSBhYnNv
bHV0ZSBib3VuZHMsCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVudCBJRCwgYW5kIHdoZXRoZXIg
dGhlIGltYWdlIGhhcyBjb250ZW50ZWRpdGFibGUgc3R5bGUgYXMgc2VwYXJhdGUgYXJndW1lbnRz
LiBUaGlzIG1ha2VzIGl0IGEKKyAgICAgICAgYml0IGVhc2llciB0byBjb21wdXRlIGFuZCBzZW5k
IHRoZSBpbWFnZSBNSU1FIHR5cGUgYW5kIGFuIEVsZW1lbnRDb250ZXh0IGluIFdlYktpdDIuIFNl
ZSBjaGFuZ2VzIGluIFdlYlBhZ2VNYWMKKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOiBFeHBvcnQgYSBtZXRob2Qu
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW06CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgIk1h
cmt1cCBJbWFnZSIgbWVudSBpdGVtJ3MgbG9jYWxpemVkIHRpdGxlLgorCisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKToKKwogMjAyMi0wMi0xNCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFk
ZCBhIGNvbnRleHQgbWVudSBpdGVtIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGU1MWQ4ZDM2Mjg2YWU5NDlhNWYwOWNlOWU4ZDRiYzliZjc3NTE1NTAuLjJkYTcxZDJiZjQ1NjMw
MmU3M2Y2ZGMxMTY0ZjM2MjM2ZjhjMGY2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIw
MjItMDItMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXSBBZGQgYW4gIk1hcmt1cCBJbWFnZSIgaXRlbSB0byB0aGUgc2hhcmluZyBzZXJ2
aWNlcyBwaWNrZXIgY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY2MjgKKyAgICAgICAgcmRhcjovLzg2NDQ2ODEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIGluIHRoZSBzaGFyaW5nIHNlcnZpY2VzIHBpY2tlcjsg
dG8gYWNoaWV2ZSB0aGlzLCB3ZSBwbHVtYiBhbG9uZyBzb21lCisgICAgICAgIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGNvbnRyb2xsZWQgaW1hZ2UgZWxlbWVudCBmb3IgdGhlIHNlcnZpY2Vz
IHBpY2tlciBtZW51IChpLmUuIE1JTUUgdHlwZSBhbmQgYW4gZWxlbWVudAorICAgICAgICBjb250
ZXh0KS4gSW4gV2ViQ29udGV4dE1lbnVQcm94eU1hYywgd2UgdGhlbiBhcHBlbmQgdGhlICJNYXJr
dXAgSW1hZ2UiIGl0ZW0gaWYgdGhlIHN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsCisgICAgICAg
IGFuZCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSBlbGVt
ZW50IHRvIHJlcGxhY2UgdGhlIGltYWdlIHVzaW5nIGltYWdlIGRhdGEgcmV0dXJuZWQgZnJvbQor
ICAgICAgICBWaXNpb25LaXQsIHRyYW5zY29kZWQgdG8gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHRo
YXQgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBpbWFnZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Y29udHJv
bGxlZEltYWdlTUlNRVR5cGUgY29uc3QpOgorCisgICAgICAgIEFkZCBgbV9jb250cm9sbGVkSW1h
Z2VFbGVtZW50Q29udGV4dGAsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb250
cm9sbGVkIGltYWdlIGVsZW1lbnQsIGFuZAorICAgICAgICBgbV9jb250cm9sbGVkSW1hZ2VNSU1F
VHlwZWAsIHRoZSBNSU1FIHR5cGUgb2YgdGhlIGNvbnRyb2xsZWQgaW1hZ2UuIFNlZSBgYXBwbHlN
YXJrdXBUb0NvbnRyb2xsZWRJbWFnZWAgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24gYWJv
dXQgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJk
RGF0YSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0aGF0J3MgbmVhcmx5IGlkZW50
aWNhbCB0byB0aGUgZXh0YW50IGByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhYCBt
ZXRob2QsIGV4Y2VwdAorICAgICAgICB0aGF0IGl0IHRha2VzIGFuIEVsZW1lbnRDb250ZXh0IGFu
ZCBhcHBsaWVzIHRoZSBlZGl0aW5nIHJlcGxhY2VtZW50IHRvIGEgc2VsZWN0aW9uIGNvbnRhaW5p
bmcgdGhlIGVsZW1lbnQKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY29udGV4
dCwgcmF0aGVyIHRoYW4gYXBwbHlpbmcgdGhlIGVkaXQgY29tbWFuZCB0byB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczpdKToKKwor
ICAgICAgICBVc2UgdGhlIG5ldyBXZWJDb3JlIGxvY2FsaXplZCBzdHJpbmcgaGVscGVyIGZ1bmN0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIG1h
cmt1cEltYWdlXSk6CisKKyAgICAgICAgSGFuZGxlIHRoZSBuZXcgY29udGV4dCBtZW51IGludm9j
YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51
KToKKworICAgICAgICBJZiB0aGUgY29udHJvbGxlZCBpbWFnZSBpcyBzZXQgYW5kIGBpc0ltYWdl
QW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpYCBpcyB0cnVlLCBhcHBlbmQgYSBu
ZXcgaXRlbSB0bworICAgICAgICB0aGUgc2VydmljZXMgbWVudSB0byBpbnZva2UgIk1hcmt1cCBJ
bWFnZSI7IHdoZW4gYWN0aXZhdGVkLCB0aGlzIG1lbnUgaXRlbSBpbnZva2VzIHRoZQorICAgICAg
ICBgLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgbWFya3VwSW1hZ2VdYCBtZXRob2Qg
YWJvdmUsIHdoaWNoIGluIHR1cm4gY2FsbHMgaW50bworICAgICAgICBgYXBwbHlNYXJrdXBUb0Nv
bnRyb2xsZWRJbWFnZWAgYmVsb3cuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSk6CisKKyAgICAgICAgVGhpcyBt
ZXRob2QgY29udGFpbnMgdGhlIG1haW4gbG9naWMgZm9yIGNvb3JkaW5hdGluZyAiTWFya3VwIElt
YWdlIiBmcm9tIHRoZSBzZXJ2aWNlcyBtZW51IG9uIG1hY09TLiBVc2luZworICAgICAgICBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSwgdGhpcyBmaXJzdCBjcmVhdGVzIGEg
Q0dJbWFnZVJlZiBmcm9tIHRoZSBpbWFnZSBiaXRtYXAsIHBhc3NlcyBpdCB0bworICAgICAgICBW
aXNpb25LaXQgZm9yIGFuYWx5c2lzLCBhbmQgb2J0YWlucyBhIHJlc3VsdGluZyBDR0ltYWdlUmVm
OyBpdCB0aGVuIHRyYW5zY29kZXMgdGhpcyByZXN1bHRpbmcgQ0dJbWFnZVJlZiB0bworICAgICAg
ICBpbWFnZSBkYXRhIGluIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB0aGUgTUlNRSB0eXBlIG9mIHRo
ZSBzb3VyY2UgaW1hZ2UsIGFuZCByZXBsYWNlcyB0aGUgY29udHJvbGxlZCBpbWFnZSB1c2luZwor
ICAgICAgICB0aGlzIGltYWdlIGRhdGEgdmlhIHRoZSBvdmVycmlkZSBwYXN0ZWJvYXJkLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNr
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisg
ICAgICAgIE1vdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIHN1cnJvdW5kIHRoZSBlbGVtZW50
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIEVsZW1lbnRDb250ZXh0LCBhbmQgdGhlbiBjYWxsIGlu
dG8KKyAgICAgICAgYHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGFgIHRvIHBlcmZv
cm0gdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKToKKworICAgICAgICBB
ZGRpdGlvbmFsbHkgY29tcHV0ZSBhbmQgc2VuZCB0aGUgY29udHJvbGxlZCBpbWFnZSBNSU1FIHR5
cGUgYW5kIGl0cyBlbGVtZW50IGNvbnRleHQuCisKIDIwMjItMDItMTQgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0
IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
YWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggOTFjYzRkMmYwOTBjODRhNzU1MDM4NjllNzZm
NWY3ZTU1MzRiNWIwNC4uYTZhZWJlNjJiMmY4ZjkzNTVhYWFmMWFjNTlmYTE5N2U5NDllYTY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC0xMzgs
MTMgKzEzOCwxMSBAQCBib29sIGhhbmRsZUV2ZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFdmVu
dCYgZXZlbnQpCiAgICAgYXV0byYgbm9kZSA9IGRvd25jYXN0PE5vZGU+KCptb3VzZUV2ZW50LnRh
cmdldCgpKTsKIAogICAgIGlmIChJbWFnZUNvbnRyb2xzTWFjOjppc0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgIGF1dG8gc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93
SG9zdCgpOworICAgICAgICBSZWZQdHIgc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93SG9zdCgpOwog
ICAgICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gaW1hZ2VGcm9tSW1h
Z2VFbGVtZW50Tm9kZSgqc2hhZG93SG9zdCkpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0
KTsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudElEID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpnZXRBdHRhY2htZW50SWRlbnRpZmllcihpbWFnZUVsZW1lbnQpOwotICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2socm91bmRlZEludFBv
aW50KG1vdXNlRXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpKSwgKmltYWdlLCBpbWFnZUVsZW1lbnQu
aXNDb250ZW50RWRpdGFibGUoKSwgaW1hZ2VFbGVtZW50LnJlbmRlckJveCgpLT5hYnNvbHV0ZUNv
bnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKSwgYXR0YWNobWVudElEKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHJv
dW5kZWRJbnRQb2ludChtb3VzZUV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksICppbWFnZSwgZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKnNoYWRvd0hvc3QpKTsKICAgICAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggZmQz
ZDFhMzgxZjM3ZWI1NTlhYjM3ZmU4YzBhMTQwYWQ3ZDljODEwYy4uNTU0OTc5MWMyZTA3ZDBkZDdk
Mzg1ZjZkY2UxYTRjNzllMWNlNWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRN
TEltYWdlRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBzdGF0aWMg
VVJMIGFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCBibG9iVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCAyODQ5NjdkZjQ2MjU0NWZlMDZjYzJlYjY2YTI3MTYyODIwNTNmMmYzLi40NDE5ZWQ1NTUzMDUx
OTM4Yjc1ODAwYmRlZWJkNGY2YjQ0NzMwNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNl
bGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIC8qaXNUZXh0
T25seSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bWFnZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYsIEltYWdlJiwgYm9vbCAvKmlzRWRpdGFi
bGUqLywgY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYgLyphdHRhY2htZW50SUQqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50
JiwgSW1hZ2UmLCBIVE1MSW1hZ2VFbGVtZW50JikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXgg
MTY4MThjY2E3NDdlNjM1OWJjMWIyNmY4MjQ3OGFlYjFlMzk3MzAzMy4uYjE4MWYxZWQ4YTBiODhj
MWZjZmNkMGU4NjE3MjM0YmIyOTQ5M2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaApAQCAtMzc5LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpOwog
I2VuZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmlu
ZGV4IDYxOGNlYTZhODVhNjg1NzQ2MjdiMGI4N2I1ZjU2MGQyYzRhZjdhZWYuLjNiNTIxODE3OWIw
MzNiZWMyYTBmYjAzY2Q2OWMyNTQ4NWRmMWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTMyNiw2ICsz
MjYsMTEgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKQogICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJDb3B5IENyb3BwZWQgSW1hZ2UiLCAiVGl0bGUgZm9yIENv
cHkgQ3JvcHBlZCBJbWFnZSIpOwogfQogCi0jZW5kaWYKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
aXRsZU1hcmt1cEltYWdlKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTWFya3VwIElt
YWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1cCBtZW51IGl0ZW0iKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAKaW5kZXggYWFlOTFhN2Q0M2M3YzA0YWY3YzcwMGQyYTQ5ODk0ODBhZmU3YTlkZi4uNzAwYTg4
NTI2MGNiMDI1ZjQ3ZWQ1MzcwMzc5NzJjZmFmNmVhMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBD
b250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBtZW51TG9jYQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
Ci1Db250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIFdlYkNvcmU6OkltYWdlJiBpbWFnZSwgYm9v
bCBpc0VkaXRhYmxlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0
cmluZyYgYXR0YWNobWVudElEKQorQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVD
b250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBXZWJDb3Jl
OjpJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
aW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRpb25hbDxFbGVt
ZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFnZU1J
TUVUeXBlKQogICAgIDogbV90eXBlKFR5cGU6OlNlcnZpY2VzTWVudSkKICAgICAsIG1fbWVudUxv
Y2F0aW9uKG1lbnVMb2NhdGlvbikKICAgICAsIG1fc2VsZWN0aW9uSXNFZGl0YWJsZShpc0VkaXRh
YmxlKQogICAgICwgbV9jb250cm9sbGVkSW1hZ2VCb3VuZHMoaW1hZ2VSZWN0KQogICAgICwgbV9j
b250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoYXR0YWNobWVudElEKQorICAgICwgbV9jb250cm9s
bGVkSW1hZ2VFbGVtZW50Q29udGV4dChXVEZNb3ZlKGVsZW1lbnRDb250ZXh0KSkKKyAgICAsIG1f
Y29udHJvbGxlZEltYWdlTUlNRVR5cGUoc291cmNlSW1hZ2VNSU1FVHlwZSkKIHsKICAgICBzZXRJ
bWFnZSgmaW1hZ2UpOwogfQpAQCAtMTA2LDYgKzEwOCw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
ZXh0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBlbmNvZGVyIDw8IG1fY29udHJvbGxlZElt
YWdlQm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQ7
CisgICAgZW5jb2RlciA8PCBtX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIGVu
Y29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VNSU1FVHlwZTsKICNlbmRpZgogfQogCkBAIC0xNDQs
NiArMTQ4LDEwIEBAIGJvb2wgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29udGV4dE1lbnVDb250ZXh0RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUF0dGFj
aG1lbnRJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY29udHJvbGxlZEltYWdl
TUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCmlu
ZGV4IDRjYzM1YzVmOWVkZGVlYmI0NTE4MDYwNjg4MmFmNWM4YzFkZTc0YzIuLmQwMWFlNjdmMDhi
OTRjMTQxN2EyN2QxNWIwN2QyM2VmMmYxNDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdERhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudENvbnRleHQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
bWVudUxvY2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7Cisg
ICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxv
Y2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFn
ZU1JTUVUeXBlKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcCogY29udHJvbGxlZEltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2UuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvbnRyb2xsZWRTZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jb250
cm9sbGVkU2VsZWN0aW9uRGF0YTsgfQpAQCAtNzQsNyArNzUsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjb250cm9sbGVkRGF0YUlzRWRpdGFibGUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGNvbnRyb2xsZWRJbWFnZUJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEltYWdl
Qm91bmRzOyB9OwogICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJRDsgfTsKLSNlbmRpZgorICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRyb2xsZWRJbWFnZUVs
ZW1lbnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2VFbGVtZW50Q29u
dGV4dDsgfQorICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udHJvbGxlZEltYWdlTUlNRVR5cGU7IH0KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29u
dGV4dE1lbnVDb250ZXh0RGF0YSYpOwpAQCAtOTcsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29udHJv
bGxlZEltYWdlQm91bmRzOwogICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBtX2NvbnRyb2xs
ZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZU1JTUVU
eXBlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNjNDczYTU4ZWVmZGVlNzA5ZmJhNTI1MTJkM2Zk
ODgwNzcwZmI3OWQuLjRkYmYyODE1MTE4YzM5YjU2YWI5MDBiNjY4YWUyZjZhYzgxODkwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC04NjgsNiArODY4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0
aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0
eXBlcywgZGF0YSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJv
YXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVu
dENvbnRleHQsIHR5cGVzLCBkYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGM1NzY3YTA3MjYwYzJlNWRhZDJkMDYzY2UwNTMzNGM3ZmU2ZDMzYmQu
LjVhZTFhMTkxNjU3MzExNzliZGZhNzcyMzlhNTg1YWQyODNmNDcyMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTgzLDYgKzExODMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQg
aXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2Vu
KTsKKyAgICB2b2lkIHJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBjMzZkMjZiZDgwMDI3ZTc1MjViOWRjZDhjNWQ3MTMzNThlZDU2
ZGU4Li41NGRmOGRjY2NmMjRjZDViNGM3Y2E2ODdiZmI3YTU0NzQwODBjYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTQ2NjcsNyArNDY2Nyw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRX
aXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAg
ICAgIGlmIChjdXJyZW50SXRlbSkKICAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2Jq
ZWN0OmN1cnJlbnRJdGVtXTsKICAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkKLSAgICAgICAg
W3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRX
aXRoVGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1h
cmt1cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFy
a3VwOildKS5nZXQoKV07CisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRpdGxlTWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lz
TWFya3VwOildKS5nZXQoKV07CiB9CiAKIC0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaAppbmRleCA2ZDQ4OTBjNTQ0OGZiMWVjZjQ0MWJm
OTEyNmI3MjAyMGMwZTZmYWI2Li44YmQ0ZjU0YWJkYTNjYWY2ZTM4MTgyOGNkNGFmMjFiMGQwNzI4
ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHlNYWM7CiAtICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1l
bnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKIC0gKHZvaWQpc2V0U291cmNlRnJh
bWU6KE5TUmVjdClzb3VyY2VGcmFtZTsKIC0gKHZvaWQpc2V0QXR0YWNobWVudElEOihTdHJpbmcp
YXR0YWNobWVudElEOworLSAodm9pZCltYXJrdXBJbWFnZTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5tbQppbmRleCBiMzM3MzFlZmUzM2ZhMDIyYTA4NTQ4YjFlOTZhMGFhYTk2ZTZj
ODdjLi4zZWU4MTU5NDVhYzM5NjQwNTZjNDUyMDg5NDIyMTBjYjRiNDE5ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUubW0KQEAgLTE4Myw2ICsxODMsMTEgQEAKICAgICByZXR1cm4gX21lbnVQ
cm94eS0+d2luZG93KCk7CiB9CiAKKy0gKHZvaWQpbWFya3VwSW1hZ2UKK3sKKyAgICBfbWVudVBy
b3h5LT5hcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCk7Cit9CisKIEBlbmQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggMzRlMmQwMDc0NmViYjA3
OTcxOWJlY2JlNzgxZjViYzZjZWExZDQ4MC4uMzFiYzA3OTdhMWIwODZiOTM0MmU1NDQ5ZTQ4Y2Y1
YjMwNTA0NjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKKyAg
ICB2b2lkIGFwcGx5TWFya3VwVG9Db250cm9sbGVkSW1hZ2UoKTsKICNlbmRpZgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA2OGFjNzQxMGY1OWVhZTg0NThh
ZjY0MjFmYzNmZDJhMDI1OTVmNGQ5Li5hNjUzOWFmNWM5MDY4ODAwNjUyZWVkY2ZhYWE2NDA2ZWFk
Y2M0MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtMzAsMTAgKzMwLDEyIEBACiAKICNpbXBvcnQgIkFQSUF0
dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCisjaW1wb3J0ICJD
b2NvYUltYWdlLmgiCiAjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xp
ZW50SW1wbE1hYy5oIgogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJT
aGFyZWFibGVCaXRtYXAuaCIKKyNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgog
I2ltcG9ydCAiV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKQEAgLTQ5LDYgKzUxLDEwIEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIEhBVkUoVU5JRk9STV9UWVBFX0lERU5USUZJRVJTX0ZS
QU1FV09SSykKKyNpbXBvcnQgPFVuaWZvcm1UeXBlSWRlbnRpZmllcnMvVW5pZm9ybVR5cGVJZGVu
dGlmaWVycy5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgV0tVc2VyRGF0YVdyYXBwZXIgOiBOU09i
amVjdCB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBfd2ViVXNlckRhdGE7CiB9CkBAIC0yNTYs
NiArMjYyLDE5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2V0dXBTZXJ2aWNlc01l
bnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAgICAgICAgIFttX21lbnUgc2V0
U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOworICAgIGVsc2UgaWYgKGlzSW1hZ2VBbmFseXNpc01hcmt1
cFN5c3RlbUZlYXR1cmVFbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byBtYXJrdXBJbWFnZUl0ZW0g
PSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250ZXh0TWVudUl0
ZW1UaXRsZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSkga2V5RXF1
aXZhbGVudDpAIiJdKTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFnZTpbTlNJbWFn
ZSBpbWFnZVdpdGhTeXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2ZpbmRlciIgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV1d
OworICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUuc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07CisgICAgICAg
IFttYXJrdXBJbWFnZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSldOworICAg
ICAgICBhdXRvIG51bWJlck9mSXRlbXMgPSBbbV9tZW51IG51bWJlck9mSXRlbXNdOworICAgICAg
ICBpZiAobnVtYmVyT2ZJdGVtcykKKyAgICAgICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0SW5k
ZW50YXRpb25MZXZlbDpbbV9tZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXS5pbmRl
bnRhdGlvbkxldmVsXTsKKyAgICAgICAgaWYgKG51bWJlck9mSXRlbXMgPj0gMSkKKyAgICAgICAg
ICAgIFttX21lbnUgaW5zZXJ0SXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCkgYXRJbmRleDpudW1i
ZXJPZkl0ZW1zIC0gMV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX21lbnUgYWRkSXRl
bTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOworICAgIH0KIAogICAgIC8vIEV4cGxpY2l0bHkgYWRk
IGEgbWVudSBpdGVtIGZvciBlYWNoIHRlbGVwaG9uZSBudW1iZXIgdGhhdCBpcyBpbiB0aGUgc2Vs
ZWN0aW9uLgogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4+IHRlbGVwaG9uZU51bWJl
ck1lbnVJdGVtczsKQEAgLTMwMSw2ICszMjAsMzggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpjbGVhclNlcnZpY2VzTWVudSgpCiAgICAgbV9tZW51ID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjphcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCkK
K3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmICghcGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVsZW1lbnRDb250ZXh0ID0gbV9jb250
ZXh0LmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KCk7CisgICAgaWYgKCFlbGVtZW50Q29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogaW1hZ2VCaXRtYXAgPSBtX2NvbnRl
eHQuY29udHJvbGxlZEltYWdlKCk7CisgICAgaWYgKCFpbWFnZUJpdG1hcCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZSgpOworICAg
IGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHJlcXVlc3RJbWFnZUFuYWx5c2lz
TWFya3VwKGltYWdlLmdldCgpLCBbd2Vha1BhZ2UgPSBXZWFrUHRyIHsgcGFnZSgpIH0sIHByZWZl
cnJlZE1JTUVUeXBlID0gbV9jb250ZXh0LmNvbnRyb2xsZWRJbWFnZU1JTUVUeXBlKCksIGVsZW1l
bnRDb250ZXh0ID0gV1RGTW92ZSgqZWxlbWVudENvbnRleHQpXShDR0ltYWdlUmVmIHJlc3VsdCkg
eworICAgICAgICBSZWZQdHIgcHJvdGVjdGVkUGFnZSA9IHdlYWtQYWdlLmdldCgpOworICAgICAg
ICBpZiAoIXByb3RlY3RlZFBhZ2UgfHwgIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBhdXRvIFtkYXRhLCB0eXBlXSA9IHRyYW5zY29kZVdpdGhQcmVmZXJyZWRNSU1FVHlw
ZShyZXN1bHQsIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRh
dGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJvdGVjdGVkUGFnZS0+cmVwbGFj
ZVdpdGhQYXN0ZWJvYXJkRGF0YShlbGVtZW50Q29udGV4dCwgeyBTdHJpbmcodHlwZS5nZXQoKSkg
fSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKSk7CisgICAgfSk7CisjZW5kaWYgLy8gRU5BQkxFKElNQUdF
X0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKK30KKwogc3RhdGljIHZvaWQgZ2V0U3RhbmRhcmRTaGFy
ZU1lbnVJdGVtKE5TQXJyYXkgKml0ZW1zLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TTWVu
dUl0ZW0gKikpCiB7CiAjaWYgSEFWRShOU1NIQVJJTkdTRVJWSUNFUElDS0VSX0FTWU5DX01FTlVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkY2E4NWUyMjNjMTVhMzQ4ODU4YjI5YTYwZWU0
ZTdmNWYxYThiYmE5Li5jNWY0MDNhNmQ0NGQ1NTRiNmJlNzk0ZDE2OTAzZGRjODdjNjIyYTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTM0Niw5ICsxMzQ2LDkgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBj
b25zdAogICAgIHJldHVybiAoaXNUZXh0T25seSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5o
YXNTZWxlY3Rpb25TZXJ2aWNlcygpKSB8fCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5oYXNSaWNo
Q29udGVudFNlcnZpY2VzKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVJbWFn
ZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYgcG9pbnQsIEltYWdlJiBpbWFnZSwgYm9vbCBp
c0VkaXRhYmxlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0cmluZyYgYXR0YWNo
bWVudElEKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNv
bnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2UmIGltYWdlLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIG1fcGFnZS5oYW5kbGVJbWFnZVNlcnZpY2VDbGljayhwb2ludCwgaW1hZ2Us
IGlzRWRpdGFibGUsIGltYWdlUmVjdCwgYXR0YWNobWVudElEKTsKKyAgICBtX3BhZ2UuaGFuZGxl
SW1hZ2VTZXJ2aWNlQ2xpY2socG9pbnQsIGltYWdlLCBlbGVtZW50KTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggODg0NTNiZjc0ZjAwMWQ4OTUyZGM5OWNjNTcyM2M4MzcwNjU3
MGE2Zi4uNzc5ZGE1YWM0ZmJhZDVlMDBlMmRkN2FmMGNkYjBiYmNjYzRjYzA2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMzgxLDcgKzM4MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCiAgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVy
cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsKICAgICBib29sIGhhc1JlbGV2YW50
U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29y
ZTo6SW1hZ2UmLCBib29sIGlzRWRpdGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdHJpbmcmIC8qYXR0YWNobWVudElEKi8pIGZpbmFsOworICAgIHZvaWQgaGFuZGxlSW1hZ2VT
ZXJ2aWNlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpJbWFnZSYsIFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91
bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpp
bmRleCA3M2VjNDE0NzMwN2FkMjZjZDBjYmMxZTgyZjlhMmE0NjAyMWY5MWYwLi4zMWEwNDkxNTdi
Nzg4MDZlODU1ZWRmOWM0NDNiZDUyYzJiYjQ1MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00NTcsNiAr
NDU3LDI0IEBAIHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgp
CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAordm9pZCBXZWJQYWdlOjpyZXBsYWNlV2l0aFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7Cisg
ICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQo
ZWxlbWVudENvbnRleHQpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNDb250ZW50
RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
ICE9ICZlbGVtZW50LT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJl
cGxhY2VtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKCplbGVtZW50KTsKKyAgICBp
ZiAoIXJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdl
IH0pOworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEp
OworfQorCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiB7CiAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzkxNTgzM2Y4OGZkNWZjMjc2MTM4ZTQxNmJl
Y2FhM2ZhZTFjN2ExYi4uODQzOTI1MjAxODQ2ZTkyYWMwYTg2MGY5MDRkMWQyZjExYmM1MTFiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTY4LDYg
Kzk2OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCByZXBsYWNlV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNlbmRpZgog
CkBAIC0xMjA3LDcgKzEyMDgsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2b2lkIGhhbmRs
ZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGhhbmRsZVNl
bGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwot
ICAgIHZvaWQgaGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElEKTsKKyAgICB2b2lkIGhhbmRsZUltYWdlU2Vy
dmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2Ny
b2xsT2Zmc2V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGI3YTgzNzIx
N2UyMTM1YWMwMjA3NGQ5ZTY1MjUyMGM4YjMyYTIwMTYuLjYxOTM3MWJjMDcwMmYwZmJmYTk2ZDY3
ODRkZWIxZTMyYTg0MzdmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDU5LDYgKzQ1OSw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+
IChTdHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgR2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUpIFN5bmNocm9ub3VzCiAgICAgUmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5j
aHJvbm91cworICAgIFJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoc3RydWN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+IHR5cGVzLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKFZlY3Rv
cjxTdHJpbmc+IHR5cGVzLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIAogICAgIFNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChi
b29sIHJlc3VsdCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNmMwOTkzY2NkMzZkMGE2MzZjNjQwYjJi
YmZiNzAzNGY4YmQzYTNhNS4uOWRjMDBkYTI3NzBjMTkzOTg5MWEzMDBmMjMzNzQ5NmE5YzhlNzAx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTcwLDcgKzcwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxJbWFnZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ltYWdlT3ZlcmxheS5oPgpAQCAtNzU5LDkgKzc2MSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omhh
bmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25z
dCBWZWN0bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEocG9pbnQsIHNlbGVjdGlvbkRhdGFWZWN0b3IsIHBob25l
TnVtYmVycywgc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpLCBVc2Vy
RGF0YSgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29u
c3QgSW50UG9pbnQmIHBvaW50LCBJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkKK3ZvaWQgV2Vi
UGFnZTo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbWFn
ZSYgaW1hZ2UsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YShw
b2ludCwgaW1hZ2UsIGlzRWRpdGFibGUsIGltYWdlUmVjdCwgYXR0YWNobWVudElEKSwgVXNlckRh
dGEoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEgeworICAgICAgICBwb2ludCwKKyAgICAgICAgaW1hZ2Us
CisgICAgICAgIGVsZW1lbnQuaXNDb250ZW50RWRpdGFibGUoKSwKKyAgICAgICAgZWxlbWVudC5y
ZW5kZXJCb3goKS0+YWJzb2x1dGVDb250ZW50UXVhZCgpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCks
CisgICAgICAgIEhUTUxBdHRhY2htZW50RWxlbWVudDo6Z2V0QXR0YWNobWVudElkZW50aWZpZXIo
ZWxlbWVudCksCisgICAgICAgIGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpLAorICAgICAgICBp
bWFnZS5taW1lVHlwZSgpCisgICAgfSwgeyB9KSk7CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452094</attachid>
            <date>2022-02-15 14:58:34 -0800</date>
            <delta_ts>2022-02-15 15:29:48 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-236628-20220215145833.patch</filename>
            <type>text/plain</type>
            <size>29912</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIyMGI4Mzk4ZTlkY2Ni
ZTQyOTE5OWFmMWJhMzkyOWVmMjgyMmQ3OC4uYmVhNTg3N2RmZjJlYjUxMmRmNDNiMDM3ZWU3ZDgy
OTMyZWQyOTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IGFuICJNYXJrdXAgSW1hZ2UiIGl0ZW0gdG8gdGhlIHNoYXJpbmcgc2VydmljZXMgcGlja2VyIGNv
bnRleHQgbWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2NjI4CisgICAgICAgIHJkYXI6Ly84NjQ0NjgxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIG5ldyBjb250ZXh0
IG1lbnUgaXRlbSBpbiB0aGUgc2hhcmluZyBzZXJ2aWNlcyBwaWNrZXI7IHNlZSBXZWJLaXQvQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJv
bHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6aGFuZGxlRXZl
bnQpOgorCisgICAgICAgIFNpbXBsaWZ5IHRoaXMgY2hyb21lIGNsaWVudCBob29rIGJ5IHBhc3Np
bmcgYWxvbmcgdGhlIGVudGlyZSBIVE1MSW1hZ2VFbGVtZW50LCBpbnN0ZWFkIG9mIHRoZSBhYnNv
bHV0ZSBib3VuZHMsCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVudCBJRCwgYW5kIHdoZXRoZXIg
dGhlIGltYWdlIGhhcyBjb250ZW50ZWRpdGFibGUgc3R5bGUgYXMgc2VwYXJhdGUgYXJndW1lbnRz
LiBUaGlzIG1ha2VzIGl0IGEKKyAgICAgICAgYml0IGVhc2llciB0byBjb21wdXRlIGFuZCBzZW5k
IHRoZSBpbWFnZSBNSU1FIHR5cGUgYW5kIGFuIEVsZW1lbnRDb250ZXh0IGluIFdlYktpdDIuIFNl
ZSBjaGFuZ2VzIGluIFdlYlBhZ2VNYWMKKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOiBFeHBvcnQgYSBtZXRob2Qu
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW06CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgIk1h
cmt1cCBJbWFnZSIgbWVudSBpdGVtJ3MgbG9jYWxpemVkIHRpdGxlLgorCisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKToKKwogMjAyMi0wMi0xNSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFk
ZCBhIGNvbnRleHQgbWVudSBpdGVtIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDM3OTQxYjFmNzRhOTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLmI5ZGM0N2E4MTZlNTdi
ZTZkMWM2OGJlOWZmMzE3YWU2NDljZmM2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIw
MjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXSBBZGQgYW4gIk1hcmt1cCBJbWFnZSIgaXRlbSB0byB0aGUgc2hhcmluZyBzZXJ2
aWNlcyBwaWNrZXIgY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY2MjgKKyAgICAgICAgcmRhcjovLzg2NDQ2ODEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIGluIHRoZSBzaGFyaW5nIHNlcnZpY2VzIHBpY2tlcjsg
dG8gYWNoaWV2ZSB0aGlzLCB3ZSBwbHVtYiBhbG9uZyBzb21lCisgICAgICAgIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGNvbnRyb2xsZWQgaW1hZ2UgZWxlbWVudCBmb3IgdGhlIHNlcnZpY2Vz
IHBpY2tlciBtZW51IChpLmUuIE1JTUUgdHlwZSBhbmQgYW4gZWxlbWVudAorICAgICAgICBjb250
ZXh0KS4gSW4gV2ViQ29udGV4dE1lbnVQcm94eU1hYywgd2UgdGhlbiBhcHBlbmQgdGhlICJNYXJr
dXAgSW1hZ2UiIGl0ZW0gaWYgdGhlIHN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsCisgICAgICAg
IGFuZCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSBlbGVt
ZW50IHRvIHJlcGxhY2UgdGhlIGltYWdlIHVzaW5nIGltYWdlIGRhdGEgcmV0dXJuZWQgZnJvbQor
ICAgICAgICBWaXNpb25LaXQsIHRyYW5zY29kZWQgdG8gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHRo
YXQgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBpbWFnZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Y29udHJv
bGxlZEltYWdlTUlNRVR5cGUgY29uc3QpOgorCisgICAgICAgIEFkZCBgbV9jb250cm9sbGVkSW1h
Z2VFbGVtZW50Q29udGV4dGAsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb250
cm9sbGVkIGltYWdlIGVsZW1lbnQsIGFuZAorICAgICAgICBgbV9jb250cm9sbGVkSW1hZ2VNSU1F
VHlwZWAsIHRoZSBNSU1FIHR5cGUgb2YgdGhlIGNvbnRyb2xsZWQgaW1hZ2UuIFNlZSBgYXBwbHlN
YXJrdXBUb0NvbnRyb2xsZWRJbWFnZWAgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24gYWJv
dXQgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJk
RGF0YSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0aGF0J3MgbmVhcmx5IGlkZW50
aWNhbCB0byB0aGUgZXh0YW50IGByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhYCBt
ZXRob2QsIGV4Y2VwdAorICAgICAgICB0aGF0IGl0IHRha2VzIGFuIEVsZW1lbnRDb250ZXh0IGFu
ZCBhcHBsaWVzIHRoZSBlZGl0aW5nIHJlcGxhY2VtZW50IHRvIGEgc2VsZWN0aW9uIGNvbnRhaW5p
bmcgdGhlIGVsZW1lbnQKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY29udGV4
dCwgcmF0aGVyIHRoYW4gYXBwbHlpbmcgdGhlIGVkaXQgY29tbWFuZCB0byB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczpdKToKKwor
ICAgICAgICBVc2UgdGhlIG5ldyBXZWJDb3JlIGxvY2FsaXplZCBzdHJpbmcgaGVscGVyIGZ1bmN0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIG1h
cmt1cEltYWdlXSk6CisKKyAgICAgICAgSGFuZGxlIHRoZSBuZXcgY29udGV4dCBtZW51IGludm9j
YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51
KToKKworICAgICAgICBJZiB0aGUgY29udHJvbGxlZCBpbWFnZSBpcyBzZXQgYW5kIGBpc0ltYWdl
QW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpYCBpcyB0cnVlLCBhcHBlbmQgYSBu
ZXcgaXRlbSB0bworICAgICAgICB0aGUgc2VydmljZXMgbWVudSB0byBpbnZva2UgIk1hcmt1cCBJ
bWFnZSI7IHdoZW4gYWN0aXZhdGVkLCB0aGlzIG1lbnUgaXRlbSBpbnZva2VzIHRoZQorICAgICAg
ICBgLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgbWFya3VwSW1hZ2VdYCBtZXRob2Qg
YWJvdmUsIHdoaWNoIGluIHR1cm4gY2FsbHMgaW50bworICAgICAgICBgYXBwbHlNYXJrdXBUb0Nv
bnRyb2xsZWRJbWFnZWAgYmVsb3cuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSk6CisKKyAgICAgICAgVGhpcyBt
ZXRob2QgY29udGFpbnMgdGhlIG1haW4gbG9naWMgZm9yIGNvb3JkaW5hdGluZyAiTWFya3VwIElt
YWdlIiBmcm9tIHRoZSBzZXJ2aWNlcyBtZW51IG9uIG1hY09TLiBVc2luZworICAgICAgICBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSwgdGhpcyBmaXJzdCBjcmVhdGVzIGEg
Q0dJbWFnZVJlZiBmcm9tIHRoZSBpbWFnZSBiaXRtYXAsIHBhc3NlcyBpdCB0bworICAgICAgICBW
aXNpb25LaXQgZm9yIGFuYWx5c2lzLCBhbmQgb2J0YWlucyBhIHJlc3VsdGluZyBDR0ltYWdlUmVm
OyBpdCB0aGVuIHRyYW5zY29kZXMgdGhpcyByZXN1bHRpbmcgQ0dJbWFnZVJlZiB0bworICAgICAg
ICBpbWFnZSBkYXRhIGluIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB0aGUgTUlNRSB0eXBlIG9mIHRo
ZSBzb3VyY2UgaW1hZ2UsIGFuZCByZXBsYWNlcyB0aGUgY29udHJvbGxlZCBpbWFnZSB1c2luZwor
ICAgICAgICB0aGlzIGltYWdlIGRhdGEgdmlhIHRoZSBvdmVycmlkZSBwYXN0ZWJvYXJkLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNr
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisg
ICAgICAgIE1vdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIHN1cnJvdW5kIHRoZSBlbGVtZW50
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIEVsZW1lbnRDb250ZXh0LCBhbmQgdGhlbiBjYWxsIGlu
dG8KKyAgICAgICAgYHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGFgIHRvIHBlcmZv
cm0gdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKToKKworICAgICAgICBB
ZGRpdGlvbmFsbHkgY29tcHV0ZSBhbmQgc2VuZCB0aGUgY29udHJvbGxlZCBpbWFnZSBNSU1FIHR5
cGUgYW5kIGl0cyBlbGVtZW50IGNvbnRleHQuCisKIDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0
IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
YWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggOTFjYzRkMmYwOTBjODRhNzU1MDM4NjllNzZm
NWY3ZTU1MzRiNWIwNC4uYTZhZWJlNjJiMmY4ZjkzNTVhYWFmMWFjNTlmYTE5N2U5NDllYTY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC0xMzgs
MTMgKzEzOCwxMSBAQCBib29sIGhhbmRsZUV2ZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFdmVu
dCYgZXZlbnQpCiAgICAgYXV0byYgbm9kZSA9IGRvd25jYXN0PE5vZGU+KCptb3VzZUV2ZW50LnRh
cmdldCgpKTsKIAogICAgIGlmIChJbWFnZUNvbnRyb2xzTWFjOjppc0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgIGF1dG8gc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93
SG9zdCgpOworICAgICAgICBSZWZQdHIgc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93SG9zdCgpOwog
ICAgICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gaW1hZ2VGcm9tSW1h
Z2VFbGVtZW50Tm9kZSgqc2hhZG93SG9zdCkpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0
KTsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudElEID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpnZXRBdHRhY2htZW50SWRlbnRpZmllcihpbWFnZUVsZW1lbnQpOwotICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2socm91bmRlZEludFBv
aW50KG1vdXNlRXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpKSwgKmltYWdlLCBpbWFnZUVsZW1lbnQu
aXNDb250ZW50RWRpdGFibGUoKSwgaW1hZ2VFbGVtZW50LnJlbmRlckJveCgpLT5hYnNvbHV0ZUNv
bnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKSwgYXR0YWNobWVudElEKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHJv
dW5kZWRJbnRQb2ludChtb3VzZUV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksICppbWFnZSwgZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKnNoYWRvd0hvc3QpKTsKICAgICAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggZmQz
ZDFhMzgxZjM3ZWI1NTlhYjM3ZmU4YzBhMTQwYWQ3ZDljODEwYy4uNTU0OTc5MWMyZTA3ZDBkZDdk
Mzg1ZjZkY2UxYTRjNzllMWNlNWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRN
TEltYWdlRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBzdGF0aWMg
VVJMIGFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCBibG9iVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCAyODQ5NjdkZjQ2MjU0NWZlMDZjYzJlYjY2YTI3MTYyODIwNTNmMmYzLi40NDE5ZWQ1NTUzMDUx
OTM4Yjc1ODAwYmRlZWJkNGY2YjQ0NzMwNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNl
bGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIC8qaXNUZXh0
T25seSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bWFnZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYsIEltYWdlJiwgYm9vbCAvKmlzRWRpdGFi
bGUqLywgY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYgLyphdHRhY2htZW50SUQqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50
JiwgSW1hZ2UmLCBIVE1MSW1hZ2VFbGVtZW50JikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXgg
MTY4MThjY2E3NDdlNjM1OWJjMWIyNmY4MjQ3OGFlYjFlMzk3MzAzMy4uYjE4MWYxZWQ4YTBiODhj
MWZjZmNkMGU4NjE3MjM0YmIyOTQ5M2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaApAQCAtMzc5LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpOwog
I2VuZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmlu
ZGV4IDYxOGNlYTZhODVhNjg1NzQ2MjdiMGI4N2I1ZjU2MGQyYzRhZjdhZWYuLjNiNTIxODE3OWIw
MzNiZWMyYTBmYjAzY2Q2OWMyNTQ4NWRmMWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTMyNiw2ICsz
MjYsMTEgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKQogICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJDb3B5IENyb3BwZWQgSW1hZ2UiLCAiVGl0bGUgZm9yIENv
cHkgQ3JvcHBlZCBJbWFnZSIpOwogfQogCi0jZW5kaWYKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
aXRsZU1hcmt1cEltYWdlKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTWFya3VwIElt
YWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1cCBtZW51IGl0ZW0iKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAKaW5kZXggYWFlOTFhN2Q0M2M3YzA0YWY3YzcwMGQyYTQ5ODk0ODBhZmU3YTlkZi4uNzAwYTg4
NTI2MGNiMDI1ZjQ3ZWQ1MzcwMzc5NzJjZmFmNmVhMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBD
b250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBtZW51TG9jYQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
Ci1Db250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIFdlYkNvcmU6OkltYWdlJiBpbWFnZSwgYm9v
bCBpc0VkaXRhYmxlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0
cmluZyYgYXR0YWNobWVudElEKQorQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVD
b250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBXZWJDb3Jl
OjpJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
aW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRpb25hbDxFbGVt
ZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFnZU1J
TUVUeXBlKQogICAgIDogbV90eXBlKFR5cGU6OlNlcnZpY2VzTWVudSkKICAgICAsIG1fbWVudUxv
Y2F0aW9uKG1lbnVMb2NhdGlvbikKICAgICAsIG1fc2VsZWN0aW9uSXNFZGl0YWJsZShpc0VkaXRh
YmxlKQogICAgICwgbV9jb250cm9sbGVkSW1hZ2VCb3VuZHMoaW1hZ2VSZWN0KQogICAgICwgbV9j
b250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoYXR0YWNobWVudElEKQorICAgICwgbV9jb250cm9s
bGVkSW1hZ2VFbGVtZW50Q29udGV4dChXVEZNb3ZlKGVsZW1lbnRDb250ZXh0KSkKKyAgICAsIG1f
Y29udHJvbGxlZEltYWdlTUlNRVR5cGUoc291cmNlSW1hZ2VNSU1FVHlwZSkKIHsKICAgICBzZXRJ
bWFnZSgmaW1hZ2UpOwogfQpAQCAtMTA2LDYgKzEwOCw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
ZXh0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBlbmNvZGVyIDw8IG1fY29udHJvbGxlZElt
YWdlQm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQ7
CisgICAgZW5jb2RlciA8PCBtX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIGVu
Y29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VNSU1FVHlwZTsKICNlbmRpZgogfQogCkBAIC0xNDQs
NiArMTQ4LDEwIEBAIGJvb2wgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29udGV4dE1lbnVDb250ZXh0RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUF0dGFj
aG1lbnRJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY29udHJvbGxlZEltYWdl
TUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCmlu
ZGV4IDRjYzM1YzVmOWVkZGVlYmI0NTE4MDYwNjg4MmFmNWM4YzFkZTc0YzIuLmQwMWFlNjdmMDhi
OTRjMTQxN2EyN2QxNWIwN2QyM2VmMmYxNDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdERhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudENvbnRleHQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
bWVudUxvY2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7Cisg
ICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxv
Y2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFn
ZU1JTUVUeXBlKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcCogY29udHJvbGxlZEltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2UuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvbnRyb2xsZWRTZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jb250
cm9sbGVkU2VsZWN0aW9uRGF0YTsgfQpAQCAtNzQsNyArNzUsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjb250cm9sbGVkRGF0YUlzRWRpdGFibGUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGNvbnRyb2xsZWRJbWFnZUJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEltYWdl
Qm91bmRzOyB9OwogICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJRDsgfTsKLSNlbmRpZgorICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRyb2xsZWRJbWFnZUVs
ZW1lbnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2VFbGVtZW50Q29u
dGV4dDsgfQorICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udHJvbGxlZEltYWdlTUlNRVR5cGU7IH0KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29u
dGV4dE1lbnVDb250ZXh0RGF0YSYpOwpAQCAtOTcsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29udHJv
bGxlZEltYWdlQm91bmRzOwogICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBtX2NvbnRyb2xs
ZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZU1JTUVU
eXBlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNjNDczYTU4ZWVmZGVlNzA5ZmJhNTI1MTJkM2Zk
ODgwNzcwZmI3OWQuLjRkYmYyODE1MTE4YzM5YjU2YWI5MDBiNjY4YWUyZjZhYzgxODkwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC04NjgsNiArODY4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0
aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0
eXBlcywgZGF0YSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJv
YXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVu
dENvbnRleHQsIHR5cGVzLCBkYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGIxNjk2ZmYxMWY5OTk0MWRkNDVhODYxZjdkNDdhNmVkZmUwNjEwMGUu
LmFmZTgxNDY5OTNlNGVkYTg0YTIzMDEzY2Y3YzlhYjU1ODUwNDIwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTg0LDYgKzExODQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQg
aXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2Vu
KTsKKyAgICB2b2lkIHJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCA0MmI5YjU1MTZkMDk4Nzk5NTYxYjQ0NDY0OTIwYTlhODZjNTAx
NTc1Li43OGQ3ZjdkMjMxYzYxMjBkMTNlMjgxYjc5NGI3YzUwNGQ3NmRiYmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTQ2NjcsNyArNDY2Nyw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRX
aXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAg
ICAgIGlmIChjdXJyZW50SXRlbSkKICAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2Jq
ZWN0OmN1cnJlbnRJdGVtXTsKICAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkKLSAgICAgICAg
W3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRX
aXRoVGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1h
cmt1cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFy
a3VwOildKS5nZXQoKV07CisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRpdGxlTWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lz
TWFya3VwOildKS5nZXQoKV07CiB9CiAKIC0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaAppbmRleCA2ZDQ4OTBjNTQ0OGZiMWVjZjQ0MWJm
OTEyNmI3MjAyMGMwZTZmYWI2Li44YmQ0ZjU0YWJkYTNjYWY2ZTM4MTgyOGNkNGFmMjFiMGQwNzI4
ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHlNYWM7CiAtICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1l
bnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKIC0gKHZvaWQpc2V0U291cmNlRnJh
bWU6KE5TUmVjdClzb3VyY2VGcmFtZTsKIC0gKHZvaWQpc2V0QXR0YWNobWVudElEOihTdHJpbmcp
YXR0YWNobWVudElEOworLSAodm9pZCltYXJrdXBJbWFnZTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5tbQppbmRleCBiMzM3MzFlZmUzM2ZhMDIyYTA4NTQ4YjFlOTZhMGFhYTk2ZTZj
ODdjLi4zZWU4MTU5NDVhYzM5NjQwNTZjNDUyMDg5NDIyMTBjYjRiNDE5ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUubW0KQEAgLTE4Myw2ICsxODMsMTEgQEAKICAgICByZXR1cm4gX21lbnVQ
cm94eS0+d2luZG93KCk7CiB9CiAKKy0gKHZvaWQpbWFya3VwSW1hZ2UKK3sKKyAgICBfbWVudVBy
b3h5LT5hcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCk7Cit9CisKIEBlbmQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggMzRlMmQwMDc0NmViYjA3
OTcxOWJlY2JlNzgxZjViYzZjZWExZDQ4MC4uMzFiYzA3OTdhMWIwODZiOTM0MmU1NDQ5ZTQ4Y2Y1
YjMwNTA0NjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKKyAg
ICB2b2lkIGFwcGx5TWFya3VwVG9Db250cm9sbGVkSW1hZ2UoKTsKICNlbmRpZgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA2OGFjNzQxMGY1OWVhZTg0NThh
ZjY0MjFmYzNmZDJhMDI1OTVmNGQ5Li5hNjUzOWFmNWM5MDY4ODAwNjUyZWVkY2ZhYWE2NDA2ZWFk
Y2M0MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtMzAsMTAgKzMwLDEyIEBACiAKICNpbXBvcnQgIkFQSUF0
dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCisjaW1wb3J0ICJD
b2NvYUltYWdlLmgiCiAjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xp
ZW50SW1wbE1hYy5oIgogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJT
aGFyZWFibGVCaXRtYXAuaCIKKyNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgog
I2ltcG9ydCAiV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKQEAgLTQ5LDYgKzUxLDEwIEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIEhBVkUoVU5JRk9STV9UWVBFX0lERU5USUZJRVJTX0ZS
QU1FV09SSykKKyNpbXBvcnQgPFVuaWZvcm1UeXBlSWRlbnRpZmllcnMvVW5pZm9ybVR5cGVJZGVu
dGlmaWVycy5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgV0tVc2VyRGF0YVdyYXBwZXIgOiBOU09i
amVjdCB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBfd2ViVXNlckRhdGE7CiB9CkBAIC0yNTYs
NiArMjYyLDE5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2V0dXBTZXJ2aWNlc01l
bnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAgICAgICAgIFttX21lbnUgc2V0
U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOworICAgIGVsc2UgaWYgKGlzSW1hZ2VBbmFseXNpc01hcmt1
cFN5c3RlbUZlYXR1cmVFbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byBtYXJrdXBJbWFnZUl0ZW0g
PSBhZG9wdE5TKFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpjb250ZXh0TWVudUl0
ZW1UaXRsZU1hcmt1cEltYWdlKCkgYWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSkga2V5RXF1
aXZhbGVudDpAIiJdKTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbWFnZTpbTlNJbWFn
ZSBpbWFnZVdpdGhTeXN0ZW1TeW1ib2xOYW1lOkAicGVyc29uLmZpbGwudmlld2ZpbmRlciIgYWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2UoKV1d
OworICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldFRhcmdldDpXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUuc2hhcmVkU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZV07CisgICAgICAg
IFttYXJrdXBJbWFnZUl0ZW0gc2V0QWN0aW9uOkBzZWxlY3RvcihtYXJrdXBJbWFnZSldOworICAg
ICAgICBhdXRvIG51bWJlck9mSXRlbXMgPSBbbV9tZW51IG51bWJlck9mSXRlbXNdOworICAgICAg
ICBpZiAobnVtYmVyT2ZJdGVtcykKKyAgICAgICAgICAgIFttYXJrdXBJbWFnZUl0ZW0gc2V0SW5k
ZW50YXRpb25MZXZlbDpbbV9tZW51IGl0ZW1BdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXS5pbmRl
bnRhdGlvbkxldmVsXTsKKyAgICAgICAgaWYgKG51bWJlck9mSXRlbXMgPj0gMSkKKyAgICAgICAg
ICAgIFttX21lbnUgaW5zZXJ0SXRlbTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCkgYXRJbmRleDpudW1i
ZXJPZkl0ZW1zIC0gMV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFttX21lbnUgYWRkSXRl
bTptYXJrdXBJbWFnZUl0ZW0uZ2V0KCldOworICAgIH0KIAogICAgIC8vIEV4cGxpY2l0bHkgYWRk
IGEgbWVudSBpdGVtIGZvciBlYWNoIHRlbGVwaG9uZSBudW1iZXIgdGhhdCBpcyBpbiB0aGUgc2Vs
ZWN0aW9uLgogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4+IHRlbGVwaG9uZU51bWJl
ck1lbnVJdGVtczsKQEAgLTMwMSw2ICszMjAsMzggQEAgdm9pZCBXZWJDb250ZXh0TWVudVByb3h5
TWFjOjpjbGVhclNlcnZpY2VzTWVudSgpCiAgICAgbV9tZW51ID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjphcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCkK
K3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmICghcGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVsZW1lbnRDb250ZXh0ID0gbV9jb250
ZXh0LmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KCk7CisgICAgaWYgKCFlbGVtZW50Q29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogaW1hZ2VCaXRtYXAgPSBtX2NvbnRl
eHQuY29udHJvbGxlZEltYWdlKCk7CisgICAgaWYgKCFpbWFnZUJpdG1hcCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBpbWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZSgpOworICAg
IGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHJlcXVlc3RJbWFnZUFuYWx5c2lz
TWFya3VwKGltYWdlLmdldCgpLCBbd2Vha1BhZ2UgPSBXZWFrUHRyIHsgcGFnZSgpIH0sIHByZWZl
cnJlZE1JTUVUeXBlID0gbV9jb250ZXh0LmNvbnRyb2xsZWRJbWFnZU1JTUVUeXBlKCksIGVsZW1l
bnRDb250ZXh0ID0gV1RGTW92ZSgqZWxlbWVudENvbnRleHQpXShDR0ltYWdlUmVmIHJlc3VsdCkg
eworICAgICAgICBSZWZQdHIgcHJvdGVjdGVkUGFnZSA9IHdlYWtQYWdlLmdldCgpOworICAgICAg
ICBpZiAoIXByb3RlY3RlZFBhZ2UgfHwgIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBhdXRvIFtkYXRhLCB0eXBlXSA9IHRyYW5zY29kZVdpdGhQcmVmZXJyZWRNSU1FVHlw
ZShyZXN1bHQsIHByZWZlcnJlZE1JTUVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRh
dGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcHJvdGVjdGVkUGFnZS0+cmVwbGFj
ZVdpdGhQYXN0ZWJvYXJkRGF0YShlbGVtZW50Q29udGV4dCwgeyBTdHJpbmcodHlwZS5nZXQoKSkg
fSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdKSk7CisgICAgfSk7CisjZW5kaWYgLy8gRU5BQkxFKElNQUdF
X0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKK30KKwogc3RhdGljIHZvaWQgZ2V0U3RhbmRhcmRTaGFy
ZU1lbnVJdGVtKE5TQXJyYXkgKml0ZW1zLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TTWVu
dUl0ZW0gKikpCiB7CiAjaWYgSEFWRShOU1NIQVJJTkdTRVJWSUNFUElDS0VSX0FTWU5DX01FTlVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkY2E4NWUyMjNjMTVhMzQ4ODU4YjI5YTYwZWU0
ZTdmNWYxYThiYmE5Li5jNWY0MDNhNmQ0NGQ1NTRiNmJlNzk0ZDE2OTAzZGRjODdjNjIyYTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTM0Niw5ICsxMzQ2LDkgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBj
b25zdAogICAgIHJldHVybiAoaXNUZXh0T25seSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5o
YXNTZWxlY3Rpb25TZXJ2aWNlcygpKSB8fCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5oYXNSaWNo
Q29udGVudFNlcnZpY2VzKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVJbWFn
ZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYgcG9pbnQsIEltYWdlJiBpbWFnZSwgYm9vbCBp
c0VkaXRhYmxlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0cmluZyYgYXR0YWNo
bWVudElEKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNv
bnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2UmIGltYWdlLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIG1fcGFnZS5oYW5kbGVJbWFnZVNlcnZpY2VDbGljayhwb2ludCwgaW1hZ2Us
IGlzRWRpdGFibGUsIGltYWdlUmVjdCwgYXR0YWNobWVudElEKTsKKyAgICBtX3BhZ2UuaGFuZGxl
SW1hZ2VTZXJ2aWNlQ2xpY2socG9pbnQsIGltYWdlLCBlbGVtZW50KTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggODg0NTNiZjc0ZjAwMWQ4OTUyZGM5OWNjNTcyM2M4MzcwNjU3
MGE2Zi4uNzc5ZGE1YWM0ZmJhZDVlMDBlMmRkN2FmMGNkYjBiYmNjYzRjYzA2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMzgxLDcgKzM4MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCiAgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVy
cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsKICAgICBib29sIGhhc1JlbGV2YW50
U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29y
ZTo6SW1hZ2UmLCBib29sIGlzRWRpdGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdHJpbmcmIC8qYXR0YWNobWVudElEKi8pIGZpbmFsOworICAgIHZvaWQgaGFuZGxlSW1hZ2VT
ZXJ2aWNlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpJbWFnZSYsIFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgYm9vbCBzaG91
bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpp
bmRleCA3M2VjNDE0NzMwN2FkMjZjZDBjYmMxZTgyZjlhMmE0NjAyMWY5MWYwLi4zMWEwNDkxNTdi
Nzg4MDZlODU1ZWRmOWM0NDNiZDUyYzJiYjQ1MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC00NTcsNiAr
NDU3LDI0IEBAIHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgp
CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAordm9pZCBXZWJQYWdlOjpyZXBsYWNlV2l0aFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7Cisg
ICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQo
ZWxlbWVudENvbnRleHQpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNDb250ZW50
RWRpdGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
ICE9ICZlbGVtZW50LT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJl
cGxhY2VtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKCplbGVtZW50KTsKKyAgICBp
ZiAoIXJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiB7ICpyZXBsYWNlbWVudFJhbmdl
IH0pOworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEp
OworfQorCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiB7CiAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTI1MzJjZmQ3MTllZjljMmRhYTZkNTgxMGEy
ZjUyZDA5NTRmYTU5Zi4uOWQyNmM2N2Q0OWFlMzQ2YjViOGM0OTgyZTI2YTBmY2MwYjIxZjFlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcxLDYg
Kzk3MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9p
ZCByZXBsYWNlV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNlbmRpZgog
CkBAIC0xMjEwLDcgKzEyMTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2b2lkIGhhbmRs
ZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGhhbmRsZVNl
bGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwot
ICAgIHZvaWQgaGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElEKTsKKyAgICB2b2lkIGhhbmRsZUltYWdlU2Vy
dmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkQ2hhbmdlU2Ny
b2xsT2Zmc2V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJjNzFlMTFi
NzdiOWFkYjc5ODk5M2YzZDlmODJjMWRiMjkxNjczOTkuLmJhOWU4MmJkNjRhMzU2ZjZkMGVmMDMz
ZTQ1YThmMzQxNzU4MWE4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDYwLDYgKzQ2MCw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+
IChTdHJpbmcgc3RyaW5nVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgR2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUpIFN5bmNocm9ub3VzCiAgICAgUmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5j
aHJvbm91cworICAgIFJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoc3RydWN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+IHR5cGVzLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKFZlY3Rv
cjxTdHJpbmc+IHR5cGVzLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIAogICAgIFNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChi
b29sIHJlc3VsdCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNmMwOTkzY2NkMzZkMGE2MzZjNjQwYjJi
YmZiNzAzNGY4YmQzYTNhNS4uOWRjMDBkYTI3NzBjMTkzOTg5MWEzMDBmMjMzNzQ5NmE5YzhlNzAx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KQEAgLTcwLDcgKzcwLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJU
eXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0hUTUxJbWFnZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ltYWdlT3ZlcmxheS5oPgpAQCAtNzU5LDkgKzc2MSwxNyBAQCB2b2lkIFdlYlBhZ2U6Omhh
bmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25z
dCBWZWN0bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEocG9pbnQsIHNlbGVjdGlvbkRhdGFWZWN0b3IsIHBob25l
TnVtYmVycywgc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpLCBVc2Vy
RGF0YSgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29u
c3QgSW50UG9pbnQmIHBvaW50LCBJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkKK3ZvaWQgV2Vi
UGFnZTo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgSW50UG9pbnQmIHBvaW50LCBJbWFn
ZSYgaW1hZ2UsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YShw
b2ludCwgaW1hZ2UsIGlzRWRpdGFibGUsIGltYWdlUmVjdCwgYXR0YWNobWVudElEKSwgVXNlckRh
dGEoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEgeworICAgICAgICBwb2ludCwKKyAgICAgICAgaW1hZ2Us
CisgICAgICAgIGVsZW1lbnQuaXNDb250ZW50RWRpdGFibGUoKSwKKyAgICAgICAgZWxlbWVudC5y
ZW5kZXJCb3goKS0+YWJzb2x1dGVDb250ZW50UXVhZCgpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCks
CisgICAgICAgIEhUTUxBdHRhY2htZW50RWxlbWVudDo6Z2V0QXR0YWNobWVudElkZW50aWZpZXIo
ZWxlbWVudCksCisgICAgICAgIGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpLAorICAgICAgICBp
bWFnZS5taW1lVHlwZSgpCisgICAgfSwgeyB9KSk7CiB9CiAKICNlbmRpZgo=
</data>
<flag name="commit-queue"
          id="479034"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452098</attachid>
            <date>2022-02-15 15:13:05 -0800</date>
            <delta_ts>2022-02-15 18:25:53 -0800</delta_ts>
            <desc>Fix Big Sur build</desc>
            <filename>bug-236628-20220215151304.patch</filename>
            <type>text/plain</type>
            <size>30000</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIyMGI4Mzk4ZTlkY2Ni
ZTQyOTE5OWFmMWJhMzkyOWVmMjgyMmQ3OC4uYmVhNTg3N2RmZjJlYjUxMmRmNDNiMDM3ZWU3ZDgy
OTMyZWQyOTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IGFuICJNYXJrdXAgSW1hZ2UiIGl0ZW0gdG8gdGhlIHNoYXJpbmcgc2VydmljZXMgcGlja2VyIGNv
bnRleHQgbWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2NjI4CisgICAgICAgIHJkYXI6Ly84NjQ0NjgxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIG5ldyBjb250ZXh0
IG1lbnUgaXRlbSBpbiB0aGUgc2hhcmluZyBzZXJ2aWNlcyBwaWNrZXI7IHNlZSBXZWJLaXQvQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJv
bHNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6aGFuZGxlRXZl
bnQpOgorCisgICAgICAgIFNpbXBsaWZ5IHRoaXMgY2hyb21lIGNsaWVudCBob29rIGJ5IHBhc3Np
bmcgYWxvbmcgdGhlIGVudGlyZSBIVE1MSW1hZ2VFbGVtZW50LCBpbnN0ZWFkIG9mIHRoZSBhYnNv
bHV0ZSBib3VuZHMsCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVudCBJRCwgYW5kIHdoZXRoZXIg
dGhlIGltYWdlIGhhcyBjb250ZW50ZWRpdGFibGUgc3R5bGUgYXMgc2VwYXJhdGUgYXJndW1lbnRz
LiBUaGlzIG1ha2VzIGl0IGEKKyAgICAgICAgYml0IGVhc2llciB0byBjb21wdXRlIGFuZCBzZW5k
IHRoZSBpbWFnZSBNSU1FIHR5cGUgYW5kIGFuIEVsZW1lbnRDb250ZXh0IGluIFdlYktpdDIuIFNl
ZSBjaGFuZ2VzIGluIFdlYlBhZ2VNYWMKKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOiBFeHBvcnQgYSBtZXRob2Qu
CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJp
bmdzQ29jb2EubW06CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgIk1h
cmt1cCBJbWFnZSIgbWVudSBpdGVtJ3MgbG9jYWxpemVkIHRpdGxlLgorCisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKToKKwogMjAyMi0wMi0xNSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFk
ZCBhIGNvbnRleHQgbWVudSBpdGVtIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDM3OTQxYjFmNzRhOTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLmI5ZGM0N2E4MTZlNTdi
ZTZkMWM2OGJlOWZmMzE3YWU2NDljZmM2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIw
MjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXSBBZGQgYW4gIk1hcmt1cCBJbWFnZSIgaXRlbSB0byB0aGUgc2hhcmluZyBzZXJ2
aWNlcyBwaWNrZXIgY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY2MjgKKyAgICAgICAgcmRhcjovLzg2NDQ2ODEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGEgbmV3IGNvbnRleHQgbWVudSBpdGVtIGluIHRoZSBzaGFyaW5nIHNlcnZpY2VzIHBpY2tlcjsg
dG8gYWNoaWV2ZSB0aGlzLCB3ZSBwbHVtYiBhbG9uZyBzb21lCisgICAgICAgIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGNvbnRyb2xsZWQgaW1hZ2UgZWxlbWVudCBmb3IgdGhlIHNlcnZpY2Vz
IHBpY2tlciBtZW51IChpLmUuIE1JTUUgdHlwZSBhbmQgYW4gZWxlbWVudAorICAgICAgICBjb250
ZXh0KS4gSW4gV2ViQ29udGV4dE1lbnVQcm94eU1hYywgd2UgdGhlbiBhcHBlbmQgdGhlICJNYXJr
dXAgSW1hZ2UiIGl0ZW0gaWYgdGhlIHN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsCisgICAgICAg
IGFuZCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSBlbGVt
ZW50IHRvIHJlcGxhY2UgdGhlIGltYWdlIHVzaW5nIGltYWdlIGRhdGEgcmV0dXJuZWQgZnJvbQor
ICAgICAgICBWaXNpb25LaXQsIHRyYW5zY29kZWQgdG8gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHRo
YXQgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBpbWFnZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Y29udHJv
bGxlZEltYWdlTUlNRVR5cGUgY29uc3QpOgorCisgICAgICAgIEFkZCBgbV9jb250cm9sbGVkSW1h
Z2VFbGVtZW50Q29udGV4dGAsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb250
cm9sbGVkIGltYWdlIGVsZW1lbnQsIGFuZAorICAgICAgICBgbV9jb250cm9sbGVkSW1hZ2VNSU1F
VHlwZWAsIHRoZSBNSU1FIHR5cGUgb2YgdGhlIGNvbnRyb2xsZWQgaW1hZ2UuIFNlZSBgYXBwbHlN
YXJrdXBUb0NvbnRyb2xsZWRJbWFnZWAgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24gYWJv
dXQgdXNhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJk
RGF0YSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0aGF0J3MgbmVhcmx5IGlkZW50
aWNhbCB0byB0aGUgZXh0YW50IGByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhYCBt
ZXRob2QsIGV4Y2VwdAorICAgICAgICB0aGF0IGl0IHRha2VzIGFuIEVsZW1lbnRDb250ZXh0IGFu
ZCBhcHBsaWVzIHRoZSBlZGl0aW5nIHJlcGxhY2VtZW50IHRvIGEgc2VsZWN0aW9uIGNvbnRhaW5p
bmcgdGhlIGVsZW1lbnQKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY29udGV4
dCwgcmF0aGVyIHRoYW4gYXBwbHlpbmcgdGhlIGVkaXQgY29tbWFuZCB0byB0aGUgY3VycmVudCBz
ZWxlY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczpdKToKKwor
ICAgICAgICBVc2UgdGhlIG5ldyBXZWJDb3JlIGxvY2FsaXplZCBzdHJpbmcgaGVscGVyIGZ1bmN0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVs
ZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIG1h
cmt1cEltYWdlXSk6CisKKyAgICAgICAgSGFuZGxlIHRoZSBuZXcgY29udGV4dCBtZW51IGludm9j
YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51
KToKKworICAgICAgICBJZiB0aGUgY29udHJvbGxlZCBpbWFnZSBpcyBzZXQgYW5kIGBpc0ltYWdl
QW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpYCBpcyB0cnVlLCBhcHBlbmQgYSBu
ZXcgaXRlbSB0bworICAgICAgICB0aGUgc2VydmljZXMgbWVudSB0byBpbnZva2UgIk1hcmt1cCBJ
bWFnZSI7IHdoZW4gYWN0aXZhdGVkLCB0aGlzIG1lbnUgaXRlbSBpbnZva2VzIHRoZQorICAgICAg
ICBgLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgbWFya3VwSW1hZ2VdYCBtZXRob2Qg
YWJvdmUsIHdoaWNoIGluIHR1cm4gY2FsbHMgaW50bworICAgICAgICBgYXBwbHlNYXJrdXBUb0Nv
bnRyb2xsZWRJbWFnZWAgYmVsb3cuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSk6CisKKyAgICAgICAgVGhpcyBt
ZXRob2QgY29udGFpbnMgdGhlIG1haW4gbG9naWMgZm9yIGNvb3JkaW5hdGluZyAiTWFya3VwIElt
YWdlIiBmcm9tIHRoZSBzZXJ2aWNlcyBtZW51IG9uIG1hY09TLiBVc2luZworICAgICAgICBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSwgdGhpcyBmaXJzdCBjcmVhdGVzIGEg
Q0dJbWFnZVJlZiBmcm9tIHRoZSBpbWFnZSBiaXRtYXAsIHBhc3NlcyBpdCB0bworICAgICAgICBW
aXNpb25LaXQgZm9yIGFuYWx5c2lzLCBhbmQgb2J0YWlucyBhIHJlc3VsdGluZyBDR0ltYWdlUmVm
OyBpdCB0aGVuIHRyYW5zY29kZXMgdGhpcyByZXN1bHRpbmcgQ0dJbWFnZVJlZiB0bworICAgICAg
ICBpbWFnZSBkYXRhIGluIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB0aGUgTUlNRSB0eXBlIG9mIHRo
ZSBzb3VyY2UgaW1hZ2UsIGFuZCByZXBsYWNlcyB0aGUgY29udHJvbGxlZCBpbWFnZSB1c2luZwor
ICAgICAgICB0aGlzIGltYWdlIGRhdGEgdmlhIHRoZSBvdmVycmlkZSBwYXN0ZWJvYXJkLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNr
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisg
ICAgICAgIE1vdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIHN1cnJvdW5kIHRoZSBlbGVtZW50
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIEVsZW1lbnRDb250ZXh0LCBhbmQgdGhlbiBjYWxsIGlu
dG8KKyAgICAgICAgYHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGFgIHRvIHBlcmZv
cm0gdGhlIHJlcGxhY2VtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKToKKworICAgICAgICBB
ZGRpdGlvbmFsbHkgY29tcHV0ZSBhbmQgc2VuZCB0aGUgY29udHJvbGxlZCBpbWFnZSBNSU1FIHR5
cGUgYW5kIGl0cyBlbGVtZW50IGNvbnRleHQuCisKIDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0
IG1lbnUgaXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
YWMvSW1hZ2VDb250cm9sc01hYy5jcHAKaW5kZXggOTFjYzRkMmYwOTBjODRhNzU1MDM4NjllNzZm
NWY3ZTU1MzRiNWIwNC4uYTZhZWJlNjJiMmY4ZjkzNTVhYWFmMWFjNTlmYTE5N2U5NDllYTY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC0xMzgs
MTMgKzEzOCwxMSBAQCBib29sIGhhbmRsZUV2ZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFdmVu
dCYgZXZlbnQpCiAgICAgYXV0byYgbm9kZSA9IGRvd25jYXN0PE5vZGU+KCptb3VzZUV2ZW50LnRh
cmdldCgpKTsKIAogICAgIGlmIChJbWFnZUNvbnRyb2xzTWFjOjppc0ltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgIGF1dG8gc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93
SG9zdCgpOworICAgICAgICBSZWZQdHIgc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93SG9zdCgpOwog
ICAgICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gaW1hZ2VGcm9tSW1h
Z2VFbGVtZW50Tm9kZSgqc2hhZG93SG9zdCkpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0
KTsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudElEID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpnZXRBdHRhY2htZW50SWRlbnRpZmllcihpbWFnZUVsZW1lbnQpOwotICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2socm91bmRlZEludFBv
aW50KG1vdXNlRXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpKSwgKmltYWdlLCBpbWFnZUVsZW1lbnQu
aXNDb250ZW50RWRpdGFibGUoKSwgaW1hZ2VFbGVtZW50LnJlbmRlckJveCgpLT5hYnNvbHV0ZUNv
bnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKSwgYXR0YWNobWVudElEKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHJv
dW5kZWRJbnRQb2ludChtb3VzZUV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksICppbWFnZSwgZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKnNoYWRvd0hvc3QpKTsKICAgICAgICAgICAgIGV2ZW50
LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggZmQz
ZDFhMzgxZjM3ZWI1NTlhYjM3ZmU4YzBhMTQwYWQ3ZDljODEwYy4uNTU0OTc5MWMyZTA3ZDBkZDdk
Mzg1ZjZkY2UxYTRjNzllMWNlNWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRN
TEltYWdlRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBzdGF0aWMg
VVJMIGFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCBibG9iVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCAyODQ5NjdkZjQ2MjU0NWZlMDZjYzJlYjY2YTI3MTYyODIwNTNmMmYzLi40NDE5ZWQ1NTUzMDUx
OTM4Yjc1ODAwYmRlZWJkNGY2YjQ0NzMwNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNl
bGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIC8qaXNUZXh0
T25seSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bWFnZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYsIEltYWdlJiwgYm9vbCAvKmlzRWRpdGFi
bGUqLywgY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYgLyphdHRhY2htZW50SUQqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50
JiwgSW1hZ2UmLCBIVE1MSW1hZ2VFbGVtZW50JikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXgg
MTY4MThjY2E3NDdlNjM1OWJjMWIyNmY4MjQ3OGFlYjFlMzk3MzAzMy4uYjE4MWYxZWQ4YTBiODhj
MWZjZmNkMGU4NjE3MjM0YmIyOTQ5M2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaApAQCAtMzc5LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpOwog
I2VuZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmlu
ZGV4IDYxOGNlYTZhODVhNjg1NzQ2MjdiMGI4N2I1ZjU2MGQyYzRhZjdhZWYuLjNiNTIxODE3OWIw
MzNiZWMyYTBmYjAzY2Q2OWMyNTQ4NWRmMWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTMyNiw2ICsz
MjYsMTEgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKQogICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJDb3B5IENyb3BwZWQgSW1hZ2UiLCAiVGl0bGUgZm9yIENv
cHkgQ3JvcHBlZCBJbWFnZSIpOwogfQogCi0jZW5kaWYKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
aXRsZU1hcmt1cEltYWdlKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTWFya3VwIElt
YWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1cCBtZW51IGl0ZW0iKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4
dERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5j
cHAKaW5kZXggYWFlOTFhN2Q0M2M3YzA0YWY3YzcwMGQyYTQ5ODk0ODBhZmU3YTlkZi4uNzAwYTg4
NTI2MGNiMDI1ZjQ3ZWQ1MzcwMzc5NzJjZmFmNmVhMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBD
b250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBtZW51TG9jYQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
Ci1Db250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIFdlYkNvcmU6OkltYWdlJiBpbWFnZSwgYm9v
bCBpc0VkaXRhYmxlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0
cmluZyYgYXR0YWNobWVudElEKQorQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVD
b250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBXZWJDb3Jl
OjpJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
aW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRpb25hbDxFbGVt
ZW50Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFnZU1J
TUVUeXBlKQogICAgIDogbV90eXBlKFR5cGU6OlNlcnZpY2VzTWVudSkKICAgICAsIG1fbWVudUxv
Y2F0aW9uKG1lbnVMb2NhdGlvbikKICAgICAsIG1fc2VsZWN0aW9uSXNFZGl0YWJsZShpc0VkaXRh
YmxlKQogICAgICwgbV9jb250cm9sbGVkSW1hZ2VCb3VuZHMoaW1hZ2VSZWN0KQogICAgICwgbV9j
b250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoYXR0YWNobWVudElEKQorICAgICwgbV9jb250cm9s
bGVkSW1hZ2VFbGVtZW50Q29udGV4dChXVEZNb3ZlKGVsZW1lbnRDb250ZXh0KSkKKyAgICAsIG1f
Y29udHJvbGxlZEltYWdlTUlNRVR5cGUoc291cmNlSW1hZ2VNSU1FVHlwZSkKIHsKICAgICBzZXRJ
bWFnZSgmaW1hZ2UpOwogfQpAQCAtMTA2LDYgKzEwOCw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
ZXh0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVy
IDw8IG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBlbmNvZGVyIDw8IG1fY29udHJvbGxlZElt
YWdlQm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQ7
CisgICAgZW5jb2RlciA8PCBtX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIGVu
Y29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VNSU1FVHlwZTsKICNlbmRpZgogfQogCkBAIC0xNDQs
NiArMTQ4LDEwIEBAIGJvb2wgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29udGV4dE1lbnVDb250ZXh0RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUF0dGFj
aG1lbnRJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY29udHJvbGxlZEltYWdl
TUlNRVR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0
RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCmlu
ZGV4IDRjYzM1YzVmOWVkZGVlYmI0NTE4MDYwNjg4MmFmNWM4YzFkZTc0YzIuLmQwMWFlNjdmMDhi
OTRjMTQxN2EyN2QxNWIwN2QyM2VmMmYxNDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdERhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRWxlbWVudENvbnRleHQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
bWVudUxvY2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7Cisg
ICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxv
Y2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFn
ZU1JTUVUeXBlKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcCogY29udHJvbGxlZEltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2UuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvbnRyb2xsZWRTZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jb250
cm9sbGVkU2VsZWN0aW9uRGF0YTsgfQpAQCAtNzQsNyArNzUsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjb250cm9sbGVkRGF0YUlzRWRpdGFibGUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGNvbnRyb2xsZWRJbWFnZUJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEltYWdl
Qm91bmRzOyB9OwogICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJRDsgfTsKLSNlbmRpZgorICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRyb2xsZWRJbWFnZUVs
ZW1lbnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2VFbGVtZW50Q29u
dGV4dDsgfQorICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udHJvbGxlZEltYWdlTUlNRVR5cGU7IH0KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29u
dGV4dE1lbnVDb250ZXh0RGF0YSYpOwpAQCAtOTcsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29udHJv
bGxlZEltYWdlQm91bmRzOwogICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBtX2NvbnRyb2xs
ZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZU1JTUVU
eXBlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNjNDczYTU4ZWVmZGVlNzA5ZmJhNTI1MTJkM2Zk
ODgwNzcwZmI3OWQuLjRkYmYyODE1MTE4YzM5YjU2YWI5MDBiNjY4YWUyZjZhYzgxODkwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC04NjgsNiArODY4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0
aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0
eXBlcywgZGF0YSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJv
YXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVu
dENvbnRleHQsIHR5cGVzLCBkYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGIxNjk2ZmYxMWY5OTk0MWRkNDVhODYxZjdkNDdhNmVkZmUwNjEwMGUu
LmFmZTgxNDY5OTNlNGVkYTg0YTIzMDEzY2Y3YzlhYjU1ODUwNDIwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTg0LDYgKzExODQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQg
aXMgcmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICB2b2lk
IHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2Vu
KTsKKyAgICB2b2lkIHJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
OwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCA0MmI5YjU1MTZkMDk4Nzk5NTYxYjQ0NDY0OTIwYTlhODZjNTAx
NTc1Li43OGQ3ZjdkMjMxYzYxMjBkMTNlMjgxYjc5NGI3YzUwNGQ3NmRiYmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTQ2NjcsNyArNDY2Nyw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRX
aXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAg
ICAgIGlmIChjdXJyZW50SXRlbSkKICAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2Jq
ZWN0OmN1cnJlbnRJdGVtXTsKICAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkKLSAgICAgICAg
W3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRX
aXRoVGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1h
cmt1cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFy
a3VwOildKS5nZXQoKV07CisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMo
W1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRpdGxlTWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lz
TWFya3VwOildKS5nZXQoKV07CiB9CiAKIC0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaAppbmRleCA2ZDQ4OTBjNTQ0OGZiMWVjZjQ0MWJm
OTEyNmI3MjAyMGMwZTZmYWI2Li44YmQ0ZjU0YWJkYTNjYWY2ZTM4MTgyOGNkNGFmMjFiMGQwNzI4
ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
U2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdl
YkNvbnRleHRNZW51UHJveHlNYWM7CiAtICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1l
bnQ6KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKIC0gKHZvaWQpc2V0U291cmNlRnJh
bWU6KE5TUmVjdClzb3VyY2VGcmFtZTsKIC0gKHZvaWQpc2V0QXR0YWNobWVudElEOihTdHJpbmcp
YXR0YWNobWVudElEOworLSAodm9pZCltYXJrdXBJbWFnZTsKIAogQGVuZAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNr
ZXJEZWxlZ2F0ZS5tbQppbmRleCBiMzM3MzFlZmUzM2ZhMDIyYTA4NTQ4YjFlOTZhMGFhYTk2ZTZj
ODdjLi4zZWU4MTU5NDVhYzM5NjQwNTZjNDUyMDg5NDIyMTBjYjRiNDE5ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNl
UGlja2VyRGVsZWdhdGUubW0KQEAgLTE4Myw2ICsxODMsMTEgQEAKICAgICByZXR1cm4gX21lbnVQ
cm94eS0+d2luZG93KCk7CiB9CiAKKy0gKHZvaWQpbWFya3VwSW1hZ2UKK3sKKyAgICBfbWVudVBy
b3h5LT5hcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCk7Cit9CisKIEBlbmQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggMzRlMmQwMDc0NmViYjA3
OTcxOWJlY2JlNzgxZjViYzZjZWExZDQ4MC4uMzFiYzA3OTdhMWIwODZiOTM0MmU1NDQ5ZTQ4Y2Y1
YjMwNTA0NjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNZW51UHJveHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKKyAg
ICB2b2lkIGFwcGx5TWFya3VwVG9Db250cm9sbGVkSW1hZ2UoKTsKICNlbmRpZgogCiAgICAgTlNX
aW5kb3cgKndpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA2OGFjNzQxMGY1OWVhZTg0NThh
ZjY0MjFmYzNmZDJhMDI1OTVmNGQ5Li5hZjcxNGU1ZTA4ZmYzNWU0NzhkN2ViY2EzNGY3YWYyNmYx
ZTE3MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5tbQpAQCAtMzAsMTAgKzMwLDEyIEBACiAKICNpbXBvcnQgIkFQSUF0
dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCisjaW1wb3J0ICJD
b2NvYUltYWdlLmgiCiAjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xp
ZW50SW1wbE1hYy5oIgogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJT
aGFyZWFibGVCaXRtYXAuaCIKKyNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgog
I2ltcG9ydCAiV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKQEAgLTQ5LDYgKzUxLDEwIEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIEhBVkUoVU5JRk9STV9UWVBFX0lERU5USUZJRVJTX0ZS
QU1FV09SSykKKyNpbXBvcnQgPFVuaWZvcm1UeXBlSWRlbnRpZmllcnMvVW5pZm9ybVR5cGVJZGVu
dGlmaWVycy5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgV0tVc2VyRGF0YVdyYXBwZXIgOiBOU09i
amVjdCB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBfd2ViVXNlckRhdGE7CiB9CkBAIC0yNTYs
NiArMjYyLDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2V0dXBTZXJ2aWNlc01l
bnUoKQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAgICAgICAgIFttX21lbnUgc2V0
U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNF
TUVOVFMpCisgICAgZWxzZSBpZiAoaXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVu
YWJsZWQoKSkgeworICAgICAgICBhdXRvIG1hcmt1cEltYWdlSXRlbSA9IGFkb3B0TlMoW1tOU01l
bnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1h
Z2UoKSBhY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKSBrZXlFcXVpdmFsZW50OkAiIl0pOwor
ICAgICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldEltYWdlOltOU0ltYWdlIGltYWdlV2l0aFN5c3Rl
bVN5bWJvbE5hbWU6QCJwZXJzb24uZmlsbC52aWV3ZmluZGVyIiBhY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb246Y29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpXV07CisgICAgICAgIFttYXJr
dXBJbWFnZUl0ZW0gc2V0VGFyZ2V0OldLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5zaGFy
ZWRTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRl
bSBzZXRBY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKV07CisgICAgICAgIGF1dG8gbnVtYmVy
T2ZJdGVtcyA9IFttX21lbnUgbnVtYmVyT2ZJdGVtc107CisgICAgICAgIGlmIChudW1iZXJPZkl0
ZW1zKQorICAgICAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOltt
X21lbnUgaXRlbUF0SW5kZXg6bnVtYmVyT2ZJdGVtcyAtIDFdLmluZGVudGF0aW9uTGV2ZWxdOwor
ICAgICAgICBpZiAobnVtYmVyT2ZJdGVtcyA+PSAxKQorICAgICAgICAgICAgW21fbWVudSBpbnNl
cnRJdGVtOm1hcmt1cEltYWdlSXRlbS5nZXQoKSBhdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fbWVudSBhZGRJdGVtOm1hcmt1cEltYWdlSXRl
bS5nZXQoKV07CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNF
TUVOVFMpCiAKICAgICAvLyBFeHBsaWNpdGx5IGFkZCBhIG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxl
cGhvbmUgbnVtYmVyIHRoYXQgaXMgaW4gdGhlIHNlbGVjdGlvbi4KICAgICBWZWN0b3I8UmV0YWlu
UHRyPE5TTWVudUl0ZW0+PiB0ZWxlcGhvbmVOdW1iZXJNZW51SXRlbXM7CkBAIC0zMDEsNiArMzIy
LDM4IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y2xlYXJTZXJ2aWNlc01lbnUoKQog
ICAgIG1fbWVudSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6
YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSgpCit7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBlbGVtZW50Q29udGV4dCA9IG1fY29udGV4dC5jb250cm9sbGVkSW1hZ2VFbGVtZW50
Q29udGV4dCgpOworICAgIGlmICghZWxlbWVudENvbnRleHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250ZXh0LmNvbnRyb2xsZWRJbWFnZSgpOworICAg
IGlmICghaW1hZ2VCaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBp
bWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFnZS5nZXQoKSwgW3dlYWtQ
YWdlID0gV2Vha1B0ciB7IHBhZ2UoKSB9LCBwcmVmZXJyZWRNSU1FVHlwZSA9IG1fY29udGV4dC5j
b250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpLCBlbGVtZW50Q29udGV4dCA9IFdURk1vdmUoKmVsZW1l
bnRDb250ZXh0KV0oQ0dJbWFnZVJlZiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyIHByb3RlY3Rl
ZFBhZ2UgPSB3ZWFrUGFnZS5nZXQoKTsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRQYWdlIHx8ICFy
ZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBbZGF0YSwgdHlwZV0g
PSB0cmFuc2NvZGVXaXRoUHJlZmVycmVkTUlNRVR5cGUocmVzdWx0LCBwcmVmZXJyZWRNSU1FVHlw
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElG
Ri5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHByb3RlY3RlZFBhZ2UtPnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVu
dENvbnRleHQsIHsgU3RyaW5nKHR5cGUuZ2V0KCkpIH0sIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpOwor
ICAgIH0pOworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCit9
CisKIHN0YXRpYyB2b2lkIGdldFN0YW5kYXJkU2hhcmVNZW51SXRlbShOU0FycmF5ICppdGVtcywg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU01lbnVJdGVtICopKQogewogI2lmIEhBVkUoTlNT
SEFSSU5HU0VSVklDRVBJQ0tFUl9BU1lOQ19NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggZGNhODVlMjIzYzE1YTM0ODg1OGIyOWE2MGVlNGU3ZjVmMWE4YmJhOS4uYzVmNDAzYTZkNDRk
NTU0YjZiZTc5NGQxNjkwM2RkYzg3YzYyMmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTEzNDYsOSArMTM0Niw5IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNSZWxldmFudFNlbGVj
dGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0T25seSkgY29uc3QKICAgICByZXR1cm4gKGlzVGV4dE9u
bHkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaGFzU2VsZWN0aW9uU2VydmljZXMoKSkgfHwg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaGFzUmljaENvbnRlbnRTZXJ2aWNlcygpOwogfQogCi12
b2lkIFdlYkNocm9tZUNsaWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgSW50UG9p
bnQmIHBvaW50LCBJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgSW50UmVjdCYg
aW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYgcG9pbnQsIEltYWdl
JiBpbWFnZSwgSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBtX3BhZ2UuaGFuZGxl
SW1hZ2VTZXJ2aWNlQ2xpY2socG9pbnQsIGltYWdlLCBpc0VkaXRhYmxlLCBpbWFnZVJlY3QsIGF0
dGFjaG1lbnRJRCk7CisgICAgbV9wYWdlLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHBvaW50LCBp
bWFnZSwgZWxlbWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDg4NDUz
YmY3NGYwMDFkODk1MmRjOTljYzU3MjNjODM3MDY1NzBhNmYuLjc3OWRhNWFjNGZiYWQ1ZTAwZTJk
ZDdhZjBjZGIwYmJjY2M0Y2MwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4MSw3ICszODEs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgaGFu
ZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JikgZmluYWw7CiAgICAgYm9vbCBoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKGJvb2wgaXNU
ZXh0T25seSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkltYWdlJiwgYm9vbCBpc0VkaXRhYmxl
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiAvKmF0dGFjaG1lbnRJRCov
KSBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Jikg
ZmluYWw7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggNzNlYzQxNDczMDdhZDI2Y2QwY2Jj
MWU4MmY5YTJhNDYwMjFmOTFmMC4uMzFhMDQ5MTU3Yjc4ODA2ZTg1NWVkZjljNDQzYmQ1MmMyYmI0
NTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCBzdGF0aWMgU3RyaW5nJiBy
ZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKQogICAgIHJldHVybiBzdHJpbmc7CiB9CiAK
K3ZvaWQgV2ViUGFnZTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBFbGVtZW50Q29u
dGV4dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYo
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1
dG8gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGVsZW1lbnRDb250ZXh0KTsKKyAgICBpZiAo
IWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAhPSAmZWxlbWVudC0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZSgqZWxlbWVudCk7CisgICAgaWYgKCFyZXBsYWNlbWVudFJhbmdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5nZSB9KTsKKyAgICByZXBsYWNlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhKTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZXBs
YWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGZvciAoYXV0byYgdHlw
ZSA6IHR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDUyNTMyY2ZkNzE5ZWY5YzJkYWE2ZDU4MTBhMmY1MmQwOTU0ZmE1OWYuLjlkMjZjNjdkNDlh
ZTM0NmI1YjhjNDk4MmUyNmEwZmNjMGIyMWYxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk3MSw2ICs5NzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0
aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CiAjZW5kaWYKIApAQCAtMTIxMCw3ICsxMjExLDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25z
dCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVy
cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZUltYWdlU2Vydmlj
ZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBib29sIGlz
RWRpdGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1l
bnRJRCk7CisgICAgdm9pZCBoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFdlYkNvcmU6OkltYWdlJiwgV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYpOwog
I2VuZGlmCiAKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCAyYzcxZTExYjc3YjlhZGI3OTg5OTNmM2Q5ZjgyYzFkYjI5
MTY3Mzk5Li5iYTllODJiZDY0YTM1NmY2ZDBlZjAzM2U0NWE4ZjM0MTc1ODFhODQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTQ2MCw2ICs0NjAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3RyaW5nIHN0cmluZ1ZhbHVlKSBTeW5j
aHJvbm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlKSBT
eW5jaHJvbm91cwogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBSZXBsYWNlV2l0aFBh
c3RlYm9hcmREYXRhKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0LCBWZWN0
b3I8U3RyaW5nPiB0eXBlcywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVwbGFjZVNl
bGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShWZWN0b3I8U3RyaW5nPiB0eXBlcywgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpCiAKICAgICBTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CmluZGV4IDZjMDk5M2NjZDM2ZDBhNjM2YzY0MGIyYmJmYjcwMzRmOGJkM2EzYTUuLjlkYzAwZGEy
NzcwYzE5Mzk4OTFhMzAwZjIzMzc0OTZhOWM4ZTcwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC03MCw3ICs3MCw5IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9IVE1MQXR0YWNobWVudEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW1hZ2VFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZU92ZXJsYXkuaD4KQEAgLTc1
OSw5ICs3NjEsMTcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2so
RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG8KICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhKHBv
aW50LCBzZWxlY3Rpb25EYXRhVmVjdG9yLCBwaG9uZU51bWJlcnMsIHNlbGVjdGlvbi5zZWxlY3Rp
b24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSwgVXNlckRhdGEoKSkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2Um
IGltYWdlLCBib29sIGlzRWRpdGFibGUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3Qg
U3RyaW5nJiBhdHRhY2htZW50SUQpCit2b2lkIFdlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNs
aWNrKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2UmIGltYWdlLCBIVE1MSW1hZ2VFbGVtZW50
JiBlbGVtZW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRl
eHRNZW51KENvbnRleHRNZW51Q29udGV4dERhdGEocG9pbnQsIGltYWdlLCBpc0VkaXRhYmxlLCBp
bWFnZVJlY3QsIGF0dGFjaG1lbnRJRCksIFVzZXJEYXRhKCkpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhIHsK
KyAgICAgICAgcG9pbnQsCisgICAgICAgIGltYWdlLAorICAgICAgICBlbGVtZW50LmlzQ29udGVu
dEVkaXRhYmxlKCksCisgICAgICAgIGVsZW1lbnQucmVuZGVyQm94KCktPmFic29sdXRlQ29udGVu
dFF1YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpLAorICAgICAgICBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKGVsZW1lbnQpLAorICAgICAgICBjb250ZXh0
Rm9yRWxlbWVudChlbGVtZW50KSwKKyAgICAgICAgaW1hZ2UubWltZVR5cGUoKQorICAgIH0sIHsg
fSkpOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452121</attachid>
            <date>2022-02-15 18:25:56 -0800</date>
            <delta_ts>2022-02-16 01:21:12 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-236628-20220215182555.patch</filename>
            <type>text/plain</type>
            <size>30225</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIyMGI4Mzk4ZTlkY2Ni
ZTQyOTE5OWFmMWJhMzkyOWVmMjgyMmQ3OC4uODZiYWE1MDgwZTM0NWNmZWFkMGNjODk0ZWU5MmYw
NDIzYmU5NDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQWRk
IGFuICJNYXJrdXAgSW1hZ2UiIGl0ZW0gdG8gdGhlIHNoYXJpbmcgc2VydmljZXMgcGlja2VyIGNv
bnRleHQgbWVudQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2NjI4CisgICAgICAgIHJkYXI6Ly84NjQ0NjgxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIG5ldyBjb250ZXh0IG1l
bnUgaXRlbSBpbiB0aGUgc2hhcmluZyBzZXJ2aWNlcyBwaWNrZXI7IHNlZSBXZWJLaXQvQ2hhbmdl
TG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBkb20vbWFjL0ltYWdlQ29udHJvbHNN
YWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc01hYzo6aGFuZGxlRXZlbnQp
OgorCisgICAgICAgIFNpbXBsaWZ5IHRoaXMgY2hyb21lIGNsaWVudCBob29rIGJ5IHBhc3Npbmcg
YWxvbmcgdGhlIGVudGlyZSBIVE1MSW1hZ2VFbGVtZW50LCBpbnN0ZWFkIG9mIHRoZSBhYnNvbHV0
ZSBib3VuZHMsCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVudCBJRCwgYW5kIHdoZXRoZXIgdGhl
IGltYWdlIGhhcyBjb250ZW50ZWRpdGFibGUgc3R5bGUgYXMgc2VwYXJhdGUgYXJndW1lbnRzLiBU
aGlzIG1ha2VzIGl0IGEKKyAgICAgICAgYml0IGVhc2llciB0byBjb21wdXRlIGFuZCBzZW5kIHRo
ZSBpbWFnZSBNSU1FIHR5cGUgYW5kIGFuIEVsZW1lbnRDb250ZXh0IGluIFdlYktpdDIuIFNlZSBj
aGFuZ2VzIGluIFdlYlBhZ2VNYWMKKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOiBFeHBvcnQgYSBtZXRob2QuCisg
ICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2spOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdz
Q29jb2EubW06CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgIk1hcmt1
cCBJbWFnZSIgbWVudSBpdGVtJ3MgbG9jYWxpemVkIHRpdGxlLgorCisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UaXRsZU1hcmt1cEltYWdlKToKKwogMjAyMi0wMi0xNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBh
IGNvbnRleHQgbWVudSBpdGVtIHRvICJDb3B5IENyb3BwZWQgSW1hZ2UiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3
OTQxYjFmNzRhOTVlMTE0ODQ1ZGY4MTVlMjZkMWRjZTM4MDkyYjUuLjE3M2UwNGIwOTYxZTZlMjMx
MDBmOTg2OWQ3YmZjNjViMTUzZDNlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMjIt
MDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXSBBZGQgYW4gIk1hcmt1cCBJbWFnZSIgaXRlbSB0byB0aGUgc2hhcmluZyBzZXJ2aWNl
cyBwaWNrZXIgY29udGV4dCBtZW51CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzY2MjgKKyAgICAgICAgcmRhcjovLzg2NDQ2ODEwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgbmV3
IGNvbnRleHQgbWVudSBpdGVtIGluIHRoZSBzaGFyaW5nIHNlcnZpY2VzIHBpY2tlcjsgdG8gYWNo
aWV2ZSB0aGlzLCB3ZSBwbHVtYiBhbG9uZyBzb21lCisgICAgICAgIG1vcmUgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGNvbnRyb2xsZWQgaW1hZ2UgZWxlbWVudCBmb3IgdGhlIHNlcnZpY2VzIHBpY2tl
ciBtZW51IChpLmUuIE1JTUUgdHlwZSBhbmQgYW4gZWxlbWVudAorICAgICAgICBjb250ZXh0KS4g
SW4gV2ViQ29udGV4dE1lbnVQcm94eU1hYywgd2UgdGhlbiBhcHBlbmQgdGhlICJNYXJrdXAgSW1h
Z2UiIGl0ZW0gaWYgdGhlIHN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsCisgICAgICAgIGFuZCB1
c2UgdGhpcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSBlbGVtZW50IHRv
IHJlcGxhY2UgdGhlIGltYWdlIHVzaW5nIGltYWdlIGRhdGEgcmV0dXJuZWQgZnJvbQorICAgICAg
ICBWaXNpb25LaXQsIHRyYW5zY29kZWQgdG8gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHRoYXQgb2Yg
dGhlIG9yaWdpbmFsIHNvdXJjZSBpbWFnZS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNvbnRleHRNZW51Q29udGV4dERhdGE6OkNvbnRleHRNZW51Q29udGV4dERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OkNv
bnRleHRNZW51Q29udGV4dERhdGE6OmNvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6Y29udHJvbGxlZElt
YWdlTUlNRVR5cGUgY29uc3QpOgorCisgICAgICAgIEFkZCBgbV9jb250cm9sbGVkSW1hZ2VFbGVt
ZW50Q29udGV4dGAsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjb250cm9sbGVk
IGltYWdlIGVsZW1lbnQsIGFuZAorICAgICAgICBgbV9jb250cm9sbGVkSW1hZ2VNSU1FVHlwZWAs
IHRoZSBNSU1FIHR5cGUgb2YgdGhlIGNvbnRyb2xsZWQgaW1hZ2UuIFNlZSBgYXBwbHlNYXJrdXBU
b0NvbnRyb2xsZWRJbWFnZWAgZm9yIG1vcmUKKyAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdXNh
Z2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YSk6
CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0aGF0J3MgbmVhcmx5IGlkZW50aWNhbCB0
byB0aGUgZXh0YW50IGByZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhYCBtZXRob2Qs
IGV4Y2VwdAorICAgICAgICB0aGF0IGl0IHRha2VzIGFuIEVsZW1lbnRDb250ZXh0IGFuZCBhcHBs
aWVzIHRoZSBlZGl0aW5nIHJlcGxhY2VtZW50IHRvIGEgc2VsZWN0aW9uIGNvbnRhaW5pbmcgdGhl
IGVsZW1lbnQKKyAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY29udGV4dCwgcmF0
aGVyIHRoYW4gYXBwbHlpbmcgdGhlIGVkaXQgY29tbWFuZCB0byB0aGUgY3VycmVudCBzZWxlY3Rp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczpdKToKKworICAgICAg
ICBVc2UgdGhlIG5ldyBXZWJDb3JlIGxvY2FsaXplZCBzdHJpbmcgaGVscGVyIGZ1bmN0aW9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlIG1hcmt1cElt
YWdlXSk6CisKKyAgICAgICAgSGFuZGxlIHRoZSBuZXcgY29udGV4dCBtZW51IGludm9jYXRpb24u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlNYWM6OnNldHVwU2VydmljZXNNZW51KToKKwor
ICAgICAgICBJZiB0aGUgY29udHJvbGxlZCBpbWFnZSBpcyBzZXQgYW5kIGBpc0ltYWdlQW5hbHlz
aXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpYCBpcyB0cnVlLCBhcHBlbmQgYSBuZXcgaXRl
bSB0bworICAgICAgICB0aGUgc2VydmljZXMgbWVudSB0byBpbnZva2UgIk1hcmt1cCBJbWFnZSI7
IHdoZW4gYWN0aXZhdGVkLCB0aGlzIG1lbnUgaXRlbSBpbnZva2VzIHRoZQorICAgICAgICBgLVtX
S1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgbWFya3VwSW1hZ2VdYCBtZXRob2QgYWJvdmUs
IHdoaWNoIGluIHR1cm4gY2FsbHMgaW50bworICAgICAgICBgYXBwbHlNYXJrdXBUb0NvbnRyb2xs
ZWRJbWFnZWAgYmVsb3cuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1h
Yzo6YXBwbHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSk6CisKKyAgICAgICAgVGhpcyBtZXRob2Qg
Y29udGFpbnMgdGhlIG1haW4gbG9naWMgZm9yIGNvb3JkaW5hdGluZyAiTWFya3VwIEltYWdlIiBm
cm9tIHRoZSBzZXJ2aWNlcyBtZW51IG9uIG1hY09TLiBVc2luZworICAgICAgICBpbmZvcm1hdGlv
biBhYm91dCB0aGUgY29udHJvbGxlZCBpbWFnZSwgdGhpcyBmaXJzdCBjcmVhdGVzIGEgQ0dJbWFn
ZVJlZiBmcm9tIHRoZSBpbWFnZSBiaXRtYXAsIHBhc3NlcyBpdCB0bworICAgICAgICBWaXNpb25L
aXQgZm9yIGFuYWx5c2lzLCBhbmQgb2J0YWlucyBhIHJlc3VsdGluZyBDR0ltYWdlUmVmOyBpdCB0
aGVuIHRyYW5zY29kZXMgdGhpcyByZXN1bHRpbmcgQ0dJbWFnZVJlZiB0bworICAgICAgICBpbWFn
ZSBkYXRhIGluIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB0aGUgTUlNRSB0eXBlIG9mIHRoZSBzb3Vy
Y2UgaW1hZ2UsIGFuZCByZXBsYWNlcyB0aGUgY29udHJvbGxlZCBpbWFnZSB1c2luZworICAgICAg
ICB0aGlzIGltYWdlIGRhdGEgdmlhIHRoZSBvdmVycmlkZSBwYXN0ZWJvYXJkLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEpOgorCisgICAgICAg
IE1vdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIHN1cnJvdW5kIHRoZSBlbGVtZW50IGlkZW50
aWZpZWQgYnkgdGhlIGdpdmVuIEVsZW1lbnRDb250ZXh0LCBhbmQgdGhlbiBjYWxsIGludG8KKyAg
ICAgICAgYHJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGFgIHRvIHBlcmZvcm0gdGhl
IHJlcGxhY2VtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKToKKworICAgICAgICBBZGRpdGlv
bmFsbHkgY29tcHV0ZSBhbmQgc2VuZCB0aGUgY29udHJvbGxlZCBpbWFnZSBNSU1FIHR5cGUgYW5k
IGl0cyBlbGVtZW50IGNvbnRleHQuCisKIDIwMjItMDItMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgYSBjb250ZXh0IG1lbnUg
aXRlbSB0byAiQ29weSBDcm9wcGVkIEltYWdlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWMvSW1h
Z2VDb250cm9sc01hYy5jcHAKaW5kZXggOTFjYzRkMmYwOTBjODRhNzU1MDM4NjllNzZmNWY3ZTU1
MzRiNWIwNC4uYTVmZmE5ZmYwYWY5NWY3Mzk4YmQwZmQwYzk5MWRhMWE5NzM3OGUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21hYy9JbWFnZUNvbnRyb2xzTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFjL0ltYWdlQ29udHJvbHNNYWMuY3BwCkBAIC0xMzgsMTYgKzEz
OCwxNyBAQCBib29sIGhhbmRsZUV2ZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFdmVudCYgZXZl
bnQpCiAgICAgYXV0byYgbm9kZSA9IGRvd25jYXN0PE5vZGU+KCptb3VzZUV2ZW50LnRhcmdldCgp
KTsKIAogICAgIGlmIChJbWFnZUNvbnRyb2xzTWFjOjppc0ltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50KG5vZGUpKSB7Ci0gICAgICAgIGF1dG8gc2hhZG93SG9zdCA9IG5vZGUuc2hhZG93SG9zdCgp
OwotICAgICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KCpzaGFkb3dIb3N0KSkKKyAgICAg
ICAgUmVmUHRyIHNoYWRvd0hvc3QgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
bm9kZS5zaGFkb3dIb3N0KCkpOworICAgICAgICBpZiAoIXNoYWRvd0hvc3QpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGltYWdlRnJvbUltYWdl
RWxlbWVudE5vZGUoKnNoYWRvd0hvc3QpKSB7Ci0gICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50
JiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pigqc2hhZG93SG9zdCk7
Ci0gICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnRJRCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Z2V0QXR0YWNobWVudElkZW50aWZpZXIoaW1hZ2VFbGVtZW50KTsKLSAgICAgICAgICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHJvdW5kZWRJbnRQb2lu
dChtb3VzZUV2ZW50LmFic29sdXRlTG9jYXRpb24oKSksICppbWFnZSwgaW1hZ2VFbGVtZW50Lmlz
Q29udGVudEVkaXRhYmxlKCksIGltYWdlRWxlbWVudC5yZW5kZXJCb3goKS0+YWJzb2x1dGVDb250
ZW50UXVhZCgpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCksIGF0dGFjaG1lbnRJRCk7Ci0gICAgICAg
ICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KKworICAgICAgICBhdXRvKiBpbWFnZSA9IGltYWdlRnJvbUltYWdlRWxlbWVu
dE5vZGUoKnNoYWRvd0hvc3QpOworICAgICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhbmRsZUltYWdl
U2VydmljZUNsaWNrKHJvdW5kZWRJbnRQb2ludChtb3VzZUV2ZW50LmFic29sdXRlTG9jYXRpb24o
KSksICppbWFnZSwgKnNoYWRvd0hvc3QpOworICAgICAgICBldmVudC5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggZmQzZDFh
MzgxZjM3ZWI1NTlhYjM3ZmU4YzBhMTQwYWQ3ZDljODEwYy4uNTU0OTc5MWMyZTA3ZDBkZDdkMzg1
ZjZkY2UxYTRjNzllMWNlNWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0
dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTElt
YWdlRWxlbWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdl
dEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBzdGF0aWMgVVJM
IGFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCBibG9iVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCAy
ODQ5NjdkZjQ2MjU0NWZlMDZjYzJlYjY2YTI3MTYyODIwNTNmMmYzLi40NDE5ZWQ1NTUzMDUxOTM4
Yjc1ODAwYmRlZWJkNGY2YjQ0NzMwNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTUzNCw3ICs1MzQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNlbGVj
dGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIC8qaXNUZXh0T25s
eSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbWFn
ZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYsIEltYWdlJiwgYm9vbCAvKmlzRWRpdGFibGUq
LywgY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYgLyphdHRhY2htZW50SUQqLykgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50Jiwg
SW1hZ2UmLCBIVE1MSW1hZ2VFbGVtZW50JikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggMTY4
MThjY2E3NDdlNjM1OWJjMWIyNmY4MjQ3OGFlYjFlMzk3MzAzMy4uYjE4MWYxZWQ4YTBiODhjMWZj
ZmNkMGU4NjE3MjM0YmIyOTQ5M2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaApAQCAtMzc5LDYgKzM3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpOwogI2Vu
ZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCmluZGV4
IDYxOGNlYTZhODVhNjg1NzQ2MjdiMGI4N2I1ZjU2MGQyYzRhZjdhZWYuLjNiNTIxODE3OWIwMzNi
ZWMyYTBmYjAzY2Q2OWMyNTQ4NWRmMWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0xvY2FsaXplZFN0cmluZ3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KQEAgLTMyNiw2ICszMjYs
MTEgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlDcm9wcGVkSW1hZ2UoKQogICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJDb3B5IENyb3BwZWQgSW1hZ2UiLCAiVGl0bGUgZm9yIENvcHkg
Q3JvcHBlZCBJbWFnZSIpOwogfQogCi0jZW5kaWYKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UaXRs
ZU1hcmt1cEltYWdlKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTWFya3VwIEltYWdl
IiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1cCBtZW51IGl0ZW0iKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERh
dGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAK
aW5kZXggYWFlOTFhN2Q0M2M3YzA0YWY3YzcwMGQyYTQ5ODk0ODBhZmU3YTlkZi4uNzAwYTg4NTI2
MGNiMDI1ZjQ3ZWQ1MzcwMzc5NzJjZmFmNmVhMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBDb250
ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBtZW51TG9jYQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1D
b250ZXh0TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIFdlYkNvcmU6OkltYWdlJiBpbWFnZSwgYm9vbCBp
c0VkaXRhYmxlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFN0cmlu
ZyYgYXR0YWNobWVudElEKQorQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6Q29udGV4dE1lbnVDb250
ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBXZWJDb3JlOjpJ
bWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW1h
Z2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRpb25hbDxFbGVtZW50
Q29udGV4dD4mJiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFnZU1JTUVU
eXBlKQogICAgIDogbV90eXBlKFR5cGU6OlNlcnZpY2VzTWVudSkKICAgICAsIG1fbWVudUxvY2F0
aW9uKG1lbnVMb2NhdGlvbikKICAgICAsIG1fc2VsZWN0aW9uSXNFZGl0YWJsZShpc0VkaXRhYmxl
KQogICAgICwgbV9jb250cm9sbGVkSW1hZ2VCb3VuZHMoaW1hZ2VSZWN0KQogICAgICwgbV9jb250
cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoYXR0YWNobWVudElEKQorICAgICwgbV9jb250cm9sbGVk
SW1hZ2VFbGVtZW50Q29udGV4dChXVEZNb3ZlKGVsZW1lbnRDb250ZXh0KSkKKyAgICAsIG1fY29u
dHJvbGxlZEltYWdlTUlNRVR5cGUoc291cmNlSW1hZ2VNSU1FVHlwZSkKIHsKICAgICBzZXRJbWFn
ZSgmaW1hZ2UpOwogfQpAQCAtMTA2LDYgKzEwOCw4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250ZXh0
RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBlbmNvZGVyIDw8IG1fY29udHJvbGxlZEltYWdl
Qm91bmRzOwogICAgIGVuY29kZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQ7Cisg
ICAgZW5jb2RlciA8PCBtX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0OworICAgIGVuY29k
ZXIgPDwgbV9jb250cm9sbGVkSW1hZ2VNSU1FVHlwZTsKICNlbmRpZgogfQogCkBAIC0xNDQsNiAr
MTQ4LDEwIEBAIGJvb2wgQ29udGV4dE1lbnVDb250ZXh0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgQ29udGV4dE1lbnVDb250ZXh0RGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1l
bnRJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX2NvbnRyb2xsZWRJbWFnZUVsZW1lbnRDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY29udHJvbGxlZEltYWdlTUlN
RVR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCmluZGV4
IDRjYzM1YzVmOWVkZGVlYmI0NTE4MDYwNjg4MmFmNWM4YzFkZTc0YzIuLmQwMWFlNjdmMDhiOTRj
MTQxN2EyN2QxNWIwN2QyM2VmMmYxNDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b250ZXh0TWVudUNvbnRleHREYXRhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdERhdGEuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRWxlbWVudENvbnRleHQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBuYW1l
c3BhY2UgSVBDIHsKQEAgLTY0LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVu
dUxvY2F0aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCk7CisgICAg
Q29udGV4dE1lbnVDb250ZXh0RGF0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0
aW9uLCBXZWJDb3JlOjpJbWFnZSYsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VJbWFnZU1J
TUVUeXBlKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcCogY29udHJvbGxlZEltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2UuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGNvbnRyb2xsZWRTZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9s
bGVkU2VsZWN0aW9uRGF0YTsgfQpAQCAtNzQsNyArNzUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
b250cm9sbGVkRGF0YUlzRWRpdGFibGUoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNv
bnRyb2xsZWRJbWFnZUJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlZEltYWdlQm91
bmRzOyB9OwogICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VBdHRhY2htZW50SUQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJRDsgfTsKLSNlbmRpZgorICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRyb2xsZWRJbWFnZUVsZW1l
bnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2VFbGVtZW50Q29udGV4
dDsgfQorICAgIFN0cmluZyBjb250cm9sbGVkSW1hZ2VNSU1FVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udHJvbGxlZEltYWdlTUlNRVR5cGU7IH0KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29udGV4
dE1lbnVDb250ZXh0RGF0YSYpOwpAQCAtOTcsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2VsZWN0aW9uSXNFZGl0YWJsZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fY29udHJvbGxl
ZEltYWdlQm91bmRzOwogICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZUF0dGFjaG1lbnRJRDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBtX2NvbnRyb2xsZWRJ
bWFnZUVsZW1lbnRDb250ZXh0OworICAgIFN0cmluZyBtX2NvbnRyb2xsZWRJbWFnZU1JTUVUeXBl
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDNjNDczYTU4ZWVmZGVlNzA5ZmJhNTI1MTJkM2ZkODgw
NzcwZmI3OWQuLjRkYmYyODE1MTE4YzM5YjU2YWI5MDBiNjY4YWUyZjZhYzgxODkwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CkBAIC04NjgsNiArODY4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBl
cywgZGF0YSkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJk
RGF0YShjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVudENv
bnRleHQsIHR5cGVzLCBkYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGIxNjk2ZmYxMWY5OTk0MWRkNDVhODYxZjdkNDdhNmVkZmUwNjEwMGUuLmFm
ZTgxNDY5OTNlNGVkYTg0YTIzMDEzY2Y3YzlhYjU1ODUwNDIwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTg0LDYgKzExODQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik7CiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBVSSBwcm9jZXNzIHdoZW4gaXQgaXMg
cmVhZHkgdG8gc2VuZCBpdHMgdG9rZW5zIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KICAgICB2b2lkIHJl
Z2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsK
KyAgICB2b2lkIHJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoY29uc3QgV2ViQ29yZTo6RWxlbWVu
dENvbnRleHQmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwog
ICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA0MmI5YjU1MTZkMDk4Nzk5NTYxYjQ0NDY0OTIwYTlhODZjNTAxNTc1
Li43OGQ3ZjdkMjMxYzYxMjBkMTNlMjgxYjc5NGI3YzUwNGQ3NmRiYmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTQ2NjcsNyArNDY2Nyw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRo
VG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAgICAg
IGlmIChjdXJyZW50SXRlbSkKICAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2JqZWN0
OmN1cnJlbnRJdGVtXTsKICAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkKLSAgICAgICAgW3Vw
ZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRo
VGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1
cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3Vw
OildKS5nZXQoKV07CisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tV
SU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRp
dGxlTWFya3VwSW1hZ2UoKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFy
a3VwOildKS5nZXQoKV07CiB9CiAKIC0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJr
dXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaAppbmRleCA2ZDQ4OTBjNTQ0OGZiMWVjZjQ0MWJmOTEy
NmI3MjAyMGMwZTZmYWI2Li44YmQ0ZjU0YWJkYTNjYWY2ZTM4MTgyOGNkNGFmMjFiMGQwNzI4ZGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYkNv
bnRleHRNZW51UHJveHlNYWM7CiAtICh2b2lkKXNldEhhbmRsZXNFZGl0aW5nUmVwbGFjZW1lbnQ6
KEJPT0wpaGFuZGxlc0VkaXRpbmdSZXBsYWNlbWVudDsKIC0gKHZvaWQpc2V0U291cmNlRnJhbWU6
KE5TUmVjdClzb3VyY2VGcmFtZTsKIC0gKHZvaWQpc2V0QXR0YWNobWVudElEOihTdHJpbmcpYXR0
YWNobWVudElEOworLSAodm9pZCltYXJrdXBJbWFnZTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5tbQppbmRleCBiMzM3MzFlZmUzM2ZhMDIyYTA4NTQ4YjFlOTZhMGFhYTk2ZTZjODdj
Li4zZWU4MTU5NDVhYzM5NjQwNTZjNDUyMDg5NDIyMTBjYjRiNDE5ODY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUubW0KQEAgLTE4Myw2ICsxODMsMTEgQEAKICAgICByZXR1cm4gX21lbnVQcm94
eS0+d2luZG93KCk7CiB9CiAKKy0gKHZvaWQpbWFya3VwSW1hZ2UKK3sKKyAgICBfbWVudVByb3h5
LT5hcHBseU1hcmt1cFRvQ29udHJvbGxlZEltYWdlKCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLmgKaW5kZXggMzRlMmQwMDc0NmViYjA3OTcx
OWJlY2JlNzgxZjViYzZjZWExZDQ4MC4uMzFiYzA3OTdhMWIwODZiOTM0MmU1NDQ5ZTQ4Y2Y1YjMw
NTA0NjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNZW51UHJveHlNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgY2xlYXJTZXJ2aWNlc01lbnUoKTsKKyAgICB2
b2lkIGFwcGx5TWFya3VwVG9Db250cm9sbGVkSW1hZ2UoKTsKICNlbmRpZgogCiAgICAgTlNXaW5k
b3cgKndpbmRvdygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA2OGFjNzQxMGY1OWVhZTg0NThhZjY0
MjFmYzNmZDJhMDI1OTVmNGQ5Li5hZjcxNGU1ZTA4ZmYzNWU0NzhkN2ViY2EzNGY3YWYyNmYxZTE3
MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1l
bnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1lbnVQcm94eU1hYy5tbQpAQCAtMzAsMTAgKzMwLDEyIEBACiAKICNpbXBvcnQgIkFQSUF0dGFj
aG1lbnQuaCIKICNpbXBvcnQgIkFQSUNvbnRleHRNZW51Q2xpZW50LmgiCisjaW1wb3J0ICJDb2Nv
YUltYWdlLmgiCiAjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50
SW1wbE1hYy5oIgogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJTaGFy
ZWFibGVCaXRtYXAuaCIKKyNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgogI2lt
cG9ydCAiV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTaGFyaW5n
U2VydmljZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIK
QEAgLTQ5LDYgKzUxLDEwIEBACiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAorI2lmIEhBVkUoVU5JRk9STV9UWVBFX0lERU5USUZJRVJTX0ZSQU1F
V09SSykKKyNpbXBvcnQgPFVuaWZvcm1UeXBlSWRlbnRpZmllcnMvVW5pZm9ybVR5cGVJZGVudGlm
aWVycy5oPgorI2VuZGlmCisKIEBpbnRlcmZhY2UgV0tVc2VyRGF0YVdyYXBwZXIgOiBOU09iamVj
dCB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBfd2ViVXNlckRhdGE7CiB9CkBAIC0yNTYsNiAr
MjYyLDIxIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2V0dXBTZXJ2aWNlc01lbnUo
KQogCiAgICAgaWYgKCFoYXNDb250cm9sbGVkSW1hZ2UpCiAgICAgICAgIFttX21lbnUgc2V0U2hv
d3NTdGF0ZUNvbHVtbjpZRVNdOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVO
VFMpCisgICAgZWxzZSBpZiAoaXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJs
ZWQoKSkgeworICAgICAgICBhdXRvIG1hcmt1cEltYWdlSXRlbSA9IGFkb3B0TlMoW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOmNvbnRleHRNZW51SXRlbVRpdGxlTWFya3VwSW1hZ2Uo
KSBhY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKSBrZXlFcXVpdmFsZW50OkAiIl0pOworICAg
ICAgICBbbWFya3VwSW1hZ2VJdGVtIHNldEltYWdlOltOU0ltYWdlIGltYWdlV2l0aFN5c3RlbVN5
bWJvbE5hbWU6QCJwZXJzb24uZmlsbC52aWV3ZmluZGVyIiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b246Y29udGV4dE1lbnVJdGVtVGl0bGVNYXJrdXBJbWFnZSgpXV07CisgICAgICAgIFttYXJrdXBJ
bWFnZUl0ZW0gc2V0VGFyZ2V0OldLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5zaGFyZWRT
aGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlXTsKKyAgICAgICAgW21hcmt1cEltYWdlSXRlbSBz
ZXRBY3Rpb246QHNlbGVjdG9yKG1hcmt1cEltYWdlKV07CisgICAgICAgIGF1dG8gbnVtYmVyT2ZJ
dGVtcyA9IFttX21lbnUgbnVtYmVyT2ZJdGVtc107CisgICAgICAgIGlmIChudW1iZXJPZkl0ZW1z
KQorICAgICAgICAgICAgW21hcmt1cEltYWdlSXRlbSBzZXRJbmRlbnRhdGlvbkxldmVsOlttX21l
bnUgaXRlbUF0SW5kZXg6bnVtYmVyT2ZJdGVtcyAtIDFdLmluZGVudGF0aW9uTGV2ZWxdOworICAg
ICAgICBpZiAobnVtYmVyT2ZJdGVtcyA+PSAxKQorICAgICAgICAgICAgW21fbWVudSBpbnNlcnRJ
dGVtOm1hcmt1cEltYWdlSXRlbS5nZXQoKSBhdEluZGV4Om51bWJlck9mSXRlbXMgLSAxXTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgW21fbWVudSBhZGRJdGVtOm1hcmt1cEltYWdlSXRlbS5n
ZXQoKV07CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVO
VFMpCiAKICAgICAvLyBFeHBsaWNpdGx5IGFkZCBhIG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxlcGhv
bmUgbnVtYmVyIHRoYXQgaXMgaW4gdGhlIHNlbGVjdGlvbi4KICAgICBWZWN0b3I8UmV0YWluUHRy
PE5TTWVudUl0ZW0+PiB0ZWxlcGhvbmVOdW1iZXJNZW51SXRlbXM7CkBAIC0zMDEsNiArMzIyLDM4
IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y2xlYXJTZXJ2aWNlc01lbnUoKQogICAg
IG1fbWVudSA9IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6YXBw
bHlNYXJrdXBUb0NvbnRyb2xsZWRJbWFnZSgpCit7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
X0VOSEFOQ0VNRU5UUykKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBlbGVtZW50Q29udGV4dCA9IG1fY29udGV4dC5jb250cm9sbGVkSW1hZ2VFbGVtZW50Q29u
dGV4dCgpOworICAgIGlmICghZWxlbWVudENvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGltYWdlQml0bWFwID0gbV9jb250ZXh0LmNvbnRyb2xsZWRJbWFnZSgpOworICAgIGlm
ICghaW1hZ2VCaXRtYXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBpbWFn
ZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICByZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChpbWFnZS5nZXQoKSwgW3dlYWtQYWdl
ID0gV2Vha1B0ciB7IHBhZ2UoKSB9LCBwcmVmZXJyZWRNSU1FVHlwZSA9IG1fY29udGV4dC5jb250
cm9sbGVkSW1hZ2VNSU1FVHlwZSgpLCBlbGVtZW50Q29udGV4dCA9IFdURk1vdmUoKmVsZW1lbnRD
b250ZXh0KV0oQ0dJbWFnZVJlZiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyIHByb3RlY3RlZFBh
Z2UgPSB3ZWFrUGFnZS5nZXQoKTsKKyAgICAgICAgaWYgKCFwcm90ZWN0ZWRQYWdlIHx8ICFyZXN1
bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBbZGF0YSwgdHlwZV0gPSB0
cmFuc2NvZGVXaXRoUHJlZmVycmVkTUlNRVR5cGUocmVzdWx0LCBwcmVmZXJyZWRNSU1FVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5p
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHByb3RlY3RlZFBhZ2UtPnJlcGxhY2VXaXRoUGFzdGVib2FyZERhdGEoZWxlbWVudENv
bnRleHQsIHsgU3RyaW5nKHR5cGUuZ2V0KCkpIH0sIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSkpOworICAg
IH0pOworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCit9CisK
IHN0YXRpYyB2b2lkIGdldFN0YW5kYXJkU2hhcmVNZW51SXRlbShOU0FycmF5ICppdGVtcywgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU01lbnVJdGVtICopKQogewogI2lmIEhBVkUoTlNTSEFS
SU5HU0VSVklDRVBJQ0tFUl9BU1lOQ19NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
ZGNhODVlMjIzYzE1YTM0ODg1OGIyOWE2MGVlNGU3ZjVmMWE4YmJhOS4uYzVmNDAzYTZkNDRkNTU0
YjZiZTc5NGQxNjkwM2RkYzg3YzYyMmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTEz
NDYsOSArMTM0Niw5IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNSZWxldmFudFNlbGVjdGlv
blNlcnZpY2VzKGJvb2wgaXNUZXh0T25seSkgY29uc3QKICAgICByZXR1cm4gKGlzVGV4dE9ubHkg
JiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaGFzU2VsZWN0aW9uU2VydmljZXMoKSkgfHwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaGFzUmljaENvbnRlbnRTZXJ2aWNlcygpOwogfQogCi12b2lk
IFdlYkNocm9tZUNsaWVudDo6aGFuZGxlSW1hZ2VTZXJ2aWNlQ2xpY2soY29uc3QgSW50UG9pbnQm
IHBvaW50LCBJbWFnZSYgaW1hZ2UsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJRCkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhjb25zdCBJbnRQb2ludCYgcG9pbnQsIEltYWdlJiBp
bWFnZSwgSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBtX3BhZ2UuaGFuZGxlSW1h
Z2VTZXJ2aWNlQ2xpY2socG9pbnQsIGltYWdlLCBpc0VkaXRhYmxlLCBpbWFnZVJlY3QsIGF0dGFj
aG1lbnRJRCk7CisgICAgbV9wYWdlLmhhbmRsZUltYWdlU2VydmljZUNsaWNrKHBvaW50LCBpbWFn
ZSwgZWxlbWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDg4NDUzYmY3
NGYwMDFkODk1MmRjOTljYzU3MjNjODM3MDY1NzBhNmYuLjc3OWRhNWFjNGZiYWQ1ZTAwZTJkZDdh
ZjBjZGIwYmJjY2M0Y2MwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4MSw3ICszODEsNyBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgIHZvaWQgaGFuZGxl
U2VsZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
ZmluYWw7CiAgICAgYm9vbCBoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0
T25seSkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkltYWdlJiwgYm9vbCBpc0VkaXRhYmxlLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiAvKmF0dGFjaG1lbnRJRCovKSBm
aW5hbDsKKyAgICB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50JikgZmlu
YWw7CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggNzNlYzQxNDczMDdhZDI2Y2QwY2JjMWU4
MmY5YTJhNDYwMjFmOTFmMC4uMzFhMDQ5MTU3Yjc4ODA2ZTg1NWVkZjljNDQzYmQ1MmMyYmI0NTFj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtNDU3LDYgKzQ1NywyNCBAQCBzdGF0aWMgU3RyaW5nJiByZXBs
YWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKQogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6cmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBFbGVtZW50Q29udGV4
dCYgZWxlbWVudENvbnRleHQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIFJlZiBmcmFtZSA9IENoZWNrZWRSZWYobV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGF1dG8g
ZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGVsZW1lbnRDb250ZXh0KTsKKyAgICBpZiAoIWVs
ZW1lbnQgfHwgIWVsZW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAhPSAmZWxlbWVudC0+ZG9jdW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXBsYWNlbWVudFJhbmdlID0gbWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZSgqZWxlbWVudCk7CisgICAgaWYgKCFyZXBsYWNlbWVudFJhbmdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24geyAqcmVwbGFjZW1lbnRSYW5nZSB9KTsKKyAgICByZXBsYWNlU2VsZWN0aW9uV2l0
aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhKTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZXBsYWNl
U2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIGZvciAoYXV0byYgdHlwZSA6
IHR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDUyNTMyY2ZkNzE5ZWY5YzJkYWE2ZDU4MTBhMmY1MmQwOTU0ZmE1OWYuLjlkMjZjNjdkNDlhZTM0
NmI1YjhjNDk4MmUyNmEwZmNjMGIyMWYxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk3MSw2ICs5NzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgcmVwbGFjZVdpdGhQYXN0ZWJvYXJkRGF0YShj
b25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9u
V2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik7CiAjZW5kaWYKIApAQCAtMTIxMCw3ICsxMjExLDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBT
dHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CiAgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVycywg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZUltYWdlU2VydmljZUNs
aWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6SW1hZ2UmLCBib29sIGlzRWRp
dGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRJ
RCk7CisgICAgdm9pZCBoYW5kbGVJbWFnZVNlcnZpY2VDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFdlYkNvcmU6OkltYWdlJiwgV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudCYpOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAyYzcxZTExYjc3YjlhZGI3OTg5OTNmM2Q5ZjgyYzFkYjI5MTY3
Mzk5Li5iYTllODJiZDY0YTM1NmY2ZDBlZjAzM2U0NWE4ZjM0MTc1ODFhODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTQ2MCw2ICs0NjAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSAtPiAoU3RyaW5nIHN0cmluZ1ZhbHVlKSBTeW5jaHJv
bm91cwogICAgIEdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlKSBTeW5j
aHJvbm91cwogICAgIFJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBSZXBsYWNlV2l0aFBhc3Rl
Ym9hcmREYXRhKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBjb250ZXh0LCBWZWN0b3I8
U3RyaW5nPiB0eXBlcywgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVwbGFjZVNlbGVj
dGlvbldpdGhQYXN0ZWJvYXJkRGF0YShWZWN0b3I8U3RyaW5nPiB0eXBlcywgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpCiAKICAgICBTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDZjMDk5M2NjZDM2ZDBhNjM2YzY0MGIyYmJmYjcwMzRmOGJkM2EzYTUuLjlkYzAwZGEyNzcw
YzE5Mzk4OTFhMzAwZjIzMzc0OTZhOWM4ZTcwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC03MCw3ICs3MCw5IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQXR0YWNobWVudEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENv
bnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW1hZ2VFbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0
VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbWFnZU92ZXJsYXkuaD4KQEAgLTc1OSw5
ICs3NjEsMTcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJh
bWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG8KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhKHBvaW50
LCBzZWxlY3Rpb25EYXRhVmVjdG9yLCBwaG9uZU51bWJlcnMsIHNlbGVjdGlvbi5zZWxlY3Rpb24o
KS5pc0NvbnRlbnRFZGl0YWJsZSgpKSwgVXNlckRhdGEoKSkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmhhbmRsZUltYWdlU2VydmljZUNsaWNrKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2UmIGlt
YWdlLCBib29sIGlzRWRpdGFibGUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgU3Ry
aW5nJiBhdHRhY2htZW50SUQpCit2b2lkIFdlYlBhZ2U6OmhhbmRsZUltYWdlU2VydmljZUNsaWNr
KGNvbnN0IEludFBvaW50JiBwb2ludCwgSW1hZ2UmIGltYWdlLCBIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRN
ZW51KENvbnRleHRNZW51Q29udGV4dERhdGEocG9pbnQsIGltYWdlLCBpc0VkaXRhYmxlLCBpbWFn
ZVJlY3QsIGF0dGFjaG1lbnRJRCksIFVzZXJEYXRhKCkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRhIHsKKyAg
ICAgICAgcG9pbnQsCisgICAgICAgIGltYWdlLAorICAgICAgICBlbGVtZW50LmlzQ29udGVudEVk
aXRhYmxlKCksCisgICAgICAgIGVsZW1lbnQucmVuZGVyQm94KCktPmFic29sdXRlQ29udGVudFF1
YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpLAorICAgICAgICBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKGVsZW1lbnQpLAorICAgICAgICBjb250ZXh0Rm9y
RWxlbWVudChlbGVtZW50KSwKKyAgICAgICAgaW1hZ2UubWltZVR5cGUoKQorICAgIH0sIHsgfSkp
OwogfQogCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>