<?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>236422</bug_id>
          
          <creation_ts>2022-02-09 18:14:30 -0800</creation_ts>
          <short_desc>[macOS] Support both versions of ScreenCaptureKit API</short_desc>
          <delta_ts>2022-02-10 10:17:22 -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>WebRTC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1839487</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-09 18:14:30 -0800</bug_when>
    <thetext>Support the new and deprecated ScreenCaptureKit API simultaneously so not everyone has to update at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839488</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-09 18:15:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/88726849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839501</commentid>
    <comment_count>2</comment_count>
      <attachid>451481</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-09 19:08:24 -0800</bug_when>
    <thetext>Created attachment 451481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839607</commentid>
    <comment_count>3</comment_count>
      <attachid>451481</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-10 05:21:09 -0800</bug_when>
    <thetext>Comment on attachment 451481
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:95
&gt;      WeakPtr&lt;ScreenCaptureKitCaptureSource&gt; _callback;

Style question: Is it _callback or callback_ or m_callback that we are supposed to use?

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:180
&gt; +    m_useNewAPI = [PAL::getSCStreamClass() instancesRespondToSelector:@selector(stopCaptureWithCompletionHandler:)];

, m_useNewAPI(...)

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:211
&gt;      if (m_contentStream) {

We could do if (!m_contentStream) return;

&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:447
&gt; +

Not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839689</commentid>
    <comment_count>4</comment_count>
      <attachid>451544</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-10 08:45:05 -0800</bug_when>
    <thetext>Created attachment 451544
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839715</commentid>
    <comment_count>5</comment_count>
      <attachid>451481</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-10 09:14:34 -0800</bug_when>
    <thetext>Comment on attachment 451481
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:95
&gt;&gt;      WeakPtr&lt;ScreenCaptureKitCaptureSource&gt; _callback;
&gt; 
&gt; Style question: Is it _callback or callback_ or m_callback that we are supposed to use?

As far as I can tell, it is usually `_callback` in ObjC code.

&gt;&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:180
&gt;&gt; +    m_useNewAPI = [PAL::getSCStreamClass() instancesRespondToSelector:@selector(stopCaptureWithCompletionHandler:)];
&gt; 
&gt; , m_useNewAPI(...)

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:211
&gt;&gt;      if (m_contentStream) {
&gt; 
&gt; We could do if (!m_contentStream) return;

Oops, I missed this but will change in an upcoming patch.

&gt;&gt; Source/WebCore/platform/mediastream/mac/ScreenCaptureKitCaptureSource.mm:447
&gt;&gt; +
&gt; 
&gt; Not needed

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839740</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 09:48:34 -0800</bug_when>
    <thetext>Committed r289547 (247078@main): &lt;https://commits.webkit.org/247078@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451544.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839766</commentid>
    <comment_count>7</comment_count>
      <attachid>451544</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-10 10:17:22 -0800</bug_when>
    <thetext>Comment on attachment 451544
Patch for landing

This code is macOS only, the Windows failure is unrelated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451481</attachid>
            <date>2022-02-09 19:08:24 -0800</date>
            <delta_ts>2022-02-10 05:21:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236422-20220209190823.patch</filename>
            <type>text/plain</type>
            <size>21035</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM2MjUxMWFlZDlmZWJi
ZDg5N2ZiM2I2MTI2MDk4NTk1ZTBkNWFhNi4uNWYzZWFiMTg0NDgzNjJlODJkMWM3MWRjZTAxYWYy
MGJjODZmZmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAyLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3Vw
cG9ydCBib3RoIHZlcnNpb25zIG9mIFNjcmVlbkNhcHR1cmVLaXQgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MjIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg4NzI2ODQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RlZCBtYW51YWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVNjcmVlbkNhcHR1cmVLaXRIZWxwZXIgaW5pdFdpdGhDYWxsYmFj
azpdKToKKyAgICAgICAgKC1bV2ViQ29yZVNjcmVlbkNhcHR1cmVLaXRIZWxwZXIgc3RyZWFtOmRp
ZE91dHB1dFNhbXBsZUJ1ZmZlcjpvZlR5cGU6XSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5D
YXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0cmVhbUNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVT
b3VyY2U6OnN0YXJ0Q29udGVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0
dXJlS2l0Q2FwdHVyZVNvdXJjZTo6dXBkYXRlU3RyZWFtQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6ZnJhbWVBdmFpbGFibGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpzdHJlYW1EaWRPdXRwdXRTYW1wbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
Q2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmNhcHR1cmVRdWV1ZSk6CisKIDIwMjItMDItMDkgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVmVydGlj
YWwgd3JpdGluZyBtb2RlIHdpdGggUlRMIHRleHQgY29udGVudCBoYXMgaW5jb3JyZWN0IGFkdmFu
Y2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBmYTQ5OTYzZTdkMzg3MWU0MzRiZjFhMzYzMTAzZWZm
N2EwZmQxOGIzLi43YjEwYTRlMTJiM2E4YmZmMDg5NTRmMDQzNzcxOTJhNzMxNzQ2MDIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0wOSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFN1cHBvcnQgYm90
aCB2ZXJzaW9ucyBvZiBTY3JlZW5DYXB0dXJlS2l0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84ODcyNjg0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmg6CisgICAgICAgICogcGFs
L21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExpbmsubW06CisKIDIwMjItMDItMDkgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW21vZGVsXSBpbXByb3ZlIHNp
emluZyBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2Ny
ZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3Jl
ZW5DYXB0dXJlS2l0U29mdExpbmsuaAppbmRleCBlMGJiODgzYTVhNTlkMmNiZjVmY2QxMjU3ODRk
ODZkZGY3YTIyNjBjLi43YTgwNTFkZWEzMTUxMTlkMGIyM2RhMTVkZDM1NGY1YjlhZjAyZjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29m
dExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0
U29mdExpbmsuaApAQCAtMzcsNyArMzcsMTAgQEAgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVJf
V0lUSF9BVkFJTEFCSUxJVFkoUEFMLCBTQ0NvbnRlbnRGaWx0ZXIsIEFQSV9BVkFJTEFCTEUKIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSX1dJVEhfQVZBSUxBQklMSVRZKFBBTCwgU0NTdHJlYW1D
b25maWd1cmF0aW9uLCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMpKSkKIFNPRlRfTElOS19DTEFT
U19GT1JfSEVBREVSX1dJVEhfQVZBSUxBQklMSVRZKFBBTCwgU0NTdHJlYW0sIEFQSV9BVkFJTEFC
TEUobWFjb3MoMTIuMykpKQogCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFNj
cmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5LCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBTY3JlZW5DYXB0dXJl
S2l0LCBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1cywgTlNTdHJpbmcgKikKKyNkZWZpbmUgU0NTdHJl
YW1GcmFtZUluZm9TdGF0dXMgZ2V0X1NjcmVlbkNhcHR1cmVLaXRfU0NTdHJlYW1GcmFtZUluZm9T
dGF0dXMoKQorCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIFNj
cmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5LCBOU1N0cmluZyAqKQog
I2RlZmluZSBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSBnZXRfU2NyZWVuQ2FwdHVyZUtpdF9T
Q1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSgpCiAKICNlbmRpZiAvLyBIQVZFKFNDUkVFTl9DQVBU
VVJFX0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVlbkNh
cHR1cmVLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVlbkNh
cHR1cmVLaXRTb2Z0TGluay5tbQppbmRleCA0MDhlY2ExMDFlMGFkNWVlYmZiOWJkNWQ4MzM5YzJh
MWNiYTM2Y2QyLi4xYTFjODhiMzAyZTdmZmEzOGIwYjI1NzdiMmNkMDNmN2ZjZDNkZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0dXJlS2l0U29mdExp
bmsubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNv
ZnRMaW5rLm1tCkBAIC0zNyw2ICszNyw3IEBAIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09Q
VElPTkFMX1dJVEhfRVhQT1JUX0FORF9BVkFJTEFCSUxJVFkoUEFMLCBTY3JlZW5DYXB0CiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklM
SVRZKFBBTCwgU2NyZWVuQ2FwdHVyZUtpdCwgU0NTdHJlYW1Db25maWd1cmF0aW9uLCBQQUxfRVhQ
T1JULCBBUElfQVZBSUxBQkxFKG1hY29zKDEyLjMpKSkKIFNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFX09QVElPTkFMX1dJVEhfRVhQT1JUX0FORF9BVkFJTEFCSUxJVFkoUEFMLCBTY3JlZW5DYXB0
dXJlS2l0LCBTQ1N0cmVhbSwgUEFMX0VYUE9SVCwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkp
CiAKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU2NyZWVu
Q2FwdHVyZUtpdCwgU0NTdHJlYW1GcmFtZUluZm9TdGF0dXNLZXksIE5TU3RyaW5nICosIFBBTF9F
WFBPUlQpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzLCBOU1N0cmlu
ZyAqLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1
c0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3Jl
ZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmgKaW5kZXggYzE1YjVk
ZTQyN2JlOWIyMjczYWZhZTdjODRkOTNiYWQwY2U2ODQ5OC4uODE1ZTZiNjU3ZGU1MjBkNTViMzI5
MTZkYWFiMjU0M2ZkNDE2MmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0
dXJlU291cmNlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHdpbmRvd0RldmljZXMoVmVjdG9yPERpc3BsYXlDYXB0dXJlTWFuYWdlcjo6
V2luZG93Q2FwdHVyZURldmljZT4mKTsKIAogICAgIHZvaWQgc3RyZWFtRmFpbGVkV2l0aEVycm9y
KFJldGFpblB0cjxOU0Vycm9yPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBlbnVtIGNsYXNzIFNh
bXBsZVR5cGUgeyBWaWRlbyB9OworICAgIHZvaWQgc3RyZWFtRGlkT3V0cHV0U2FtcGxlQnVmZmVy
KFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4sIFNhbXBsZVR5cGUpOwogCiBwcml2YXRlOgog
CkBAIC05Miw2ICs5NCw4IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU0NDb250ZW50U3RyZWFtVXBk
YXRlQ2FsbGJhY2sgPSB2b2lkICheKShTQ1N0cmVhbSAqLCBDTVNhbXBsZUJ1ZmZlclJlZik7CiAg
ICAgU0NDb250ZW50U3RyZWFtVXBkYXRlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCk7
CiAKKyAgICBkaXNwYXRjaF9xdWV1ZV90IGNhcHR1cmVRdWV1ZSgpOworCiAgICAgdXNpbmcgQ29u
dGVudCA9IHN0ZDo6dmFyaWFudDxSZXRhaW5QdHI8U0NXaW5kb3c+LCBSZXRhaW5QdHI8U0NEaXNw
bGF5Pj47CiAgICAgc3RkOjpvcHRpb25hbDxDb250ZW50PiBtX2NvbnRlbnQ7CiAKQEAgLTExMCw2
ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OwogICAgIGZs
b2F0IG1fZnJhbWVSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV91c2VOZXdBUEkgeyBmYWxzZSB9OwogICAgIHN0YXRpYyBib29sIG1fZW5hYmxl
ZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbQpp
bmRleCA2NGJiMTYyZDA0NGQyMDk3NTEzOWZkZDM5NTNlZGI3OWFmYzVjMTkxLi5lOTYxYTU2M2Iy
ZDUxMmU4YjdiNzA5NWVlOWRjZWM0ZTQ0NTNmNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNh
cHR1cmVLaXRDYXB0dXJlU291cmNlLm1tCkBAIC0zOCwzMSArMzgsNjcgQEAKICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL09iakNSdW50aW1lRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
ICNpbXBvcnQgPHBhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLmg+CiAKIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIFdLU0NGcmFtZVN0YXR1cykgewotICAgIFdLU0NGcmFtZVN0YXR1
c0ZyYW1lQ29tcGxldGUsCi0gICAgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVJZGxlLAotICAgIFdLU0NG
cmFtZVN0YXR1c0ZyYW1lQmxhbmssCi0gICAgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVTdXNwZW5kZWQs
Ci0gICAgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVTdGFydGVkLAotICAgIFdLU0NGcmFtZVN0YXR1c0Zy
YW1lU3RvcHBlZAorICAgIFdLU0NGcmFtZVN0YXR1c0NvbXBsZXRlLAorICAgIFdLU0NGcmFtZVN0
YXR1c0lkbGUsCisgICAgV0tTQ0ZyYW1lU3RhdHVzQmxhbmssCisgICAgV0tTQ0ZyYW1lU3RhdHVz
U3VzcGVuZGVkLAorICAgIFdLU0NGcmFtZVN0YXR1c1N0YXJ0ZWQsCisgICAgV0tTQ0ZyYW1lU3Rh
dHVzU3RvcHBlZAogfTsKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTQ1N0cmVhbU91
dHB1dFR5cGUpIHsKKyAgICBXS1NDU3RyZWFtT3V0cHV0VHlwZVNjcmVlbgorfTsKKworQHByb3Rv
Y29sIFdLU0NTdHJlYW1PdXRwdXQ7CitAaW50ZXJmYWNlIFNDU3RyZWFtIChTQ1N0cmVhbV9OZXcp
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGaWx0ZXI6KFNDQ29udGVudEZpbHRlciAqKWNvbnRl
bnRGaWx0ZXIgY29uZmlndXJhdGlvbjooU0NTdHJlYW1Db25maWd1cmF0aW9uICopc3RyZWFtQ29u
ZmlnIGRlbGVnYXRlOihpZDxTQ1N0cmVhbURlbGVnYXRlPilkZWxlZ2F0ZTsKKy0gKHZvaWQpc3Rh
cnRDYXB0dXJlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogZXJyb3Ip
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzdG9wQ2FwdHVyZVdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9p
ZCl1cGRhdGVDb25maWd1cmF0aW9uOihTQ1N0cmVhbUNvbmZpZ3VyYXRpb24gKilzdHJlYW1Db25m
aWcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKiBlcnJvcikpY29tcGxldGlv
bkhhbmRsZXI7CistIChCT09MKWFkZFN0cmVhbU91dHB1dDooaWQ8V0tTQ1N0cmVhbU91dHB1dD4p
b3V0cHV0IHR5cGU6KFdLU0NTdHJlYW1PdXRwdXRUeXBlKXR5cGUgc2FtcGxlSGFuZGxlclF1ZXVl
OihkaXNwYXRjaF9xdWV1ZV90KXNhbXBsZUhhbmRsZXJRdWV1ZSBlcnJvcjooTlNFcnJvciAqKill
cnJvcjsKK0BlbmQKKworQHByb3RvY29sIFdLU0NTdHJlYW1PdXRwdXQgPE5TT2JqZWN0PgorQG9w
dGlvbmFsCistICh2b2lkKXN0cmVhbTooU0NTdHJlYW0gKilzdHJlYW0gZGlkT3V0cHV0U2FtcGxl
QnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgb2ZUeXBlOihXS1NDU3RyZWFt
T3V0cHV0VHlwZSl0eXBlOworQGVuZAorCitAaW50ZXJmYWNlIFNDU3RyZWFtQ29uZmlndXJhdGlv
biAoU0NTdHJlYW1Db25maWd1cmF0aW9uX05ldykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIENNVGltZSBtaW5pbXVtRnJhbWVJbnRlcnZhbDsKK0BlbmQKKworQGludGVyZmFjZSBTQ1N0
cmVhbSAoU0NTdHJlYW1fRGVwcmVjYXRlZCkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZpbHRl
cjooU0NDb250ZW50RmlsdGVyICopY29udGVudEZpbHRlciBjYXB0dXJlT3V0cHV0UHJvcGVydGll
czooU0NTdHJlYW1Db25maWd1cmF0aW9uICopc3RyZWFtQ29uZmlnIGRlbGVnYXRlOihpZDxTQ1N0
cmVhbURlbGVnYXRlPilkZWxlZ2F0ZTsKKy0gKHZvaWQpc3RhcnRDYXB0dXJlV2l0aEZyYW1lSGFu
ZGxlcjoodm9pZCAoXikoU0NTdHJlYW0gKnN0cmVhbSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxl
QnVmZmVyKSlmcmFtZUhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3Ig
KmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc3RvcFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIGVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpdXBkYXRlU3RyZWFtQ29uZmlndXJhdGlvbjooU0NTdHJlYW1Db25maWd1cmF0aW9uICopc3Ry
ZWFtQ29uZmlnIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICplcnJvcikpY29t
cGxldGlvbkhhbmRsZXI7CitAZW5kCisKK0BpbnRlcmZhY2UgU0NTdHJlYW1Db25maWd1cmF0aW9u
IChTQ1N0cmVhbUNvbmZpZ3VyYXRpb25fRGVwcmVjYXRlZCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBhc3NpZ24pIGZsb2F0IG1pbmltdW1GcmFtZVRpbWU7CitAZW5kCisKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmd1
YXJkZWQtYXZhaWxhYmlsaXR5LW5ldyIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci1AaW50
ZXJmYWNlIFdlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVscGVyIDogTlNPYmplY3Q8U0NTdHJlYW1E
ZWxlZ2F0ZT4geworQGludGVyZmFjZSBXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciA6IE5T
T2JqZWN0PFNDU3RyZWFtRGVsZWdhdGUsIFdLU0NTdHJlYW1PdXRwdXQ+IHsKICAgICBXZWFrUHRy
PFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlPiBfY2FsbGJhY2s7CiB9CiAKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihXZWFrUHRyPFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJl
U291cmNlPiYmKWNhbGxiYWNrOwogLSAodm9pZClkaXNjb25uZWN0OwogLSAodm9pZClzdHJlYW06
KFNDU3RyZWFtICopc3RyZWFtIGRpZFN0b3BXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0g
KHZvaWQpc3RyZWFtOihTQ1N0cmVhbSAqKXN0cmVhbSBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENN
U2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBvZlR5cGU6KFdLU0NTdHJlYW1PdXRwdXRUeXBl
KXR5cGU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhl
bHBlcgpAQCAtNzIsNiArMTA4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYg
KCFzZWxmKQogICAgICAgICByZXR1cm4gc2VsZjsKIAorICAgIF9jYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC04OSw2ICsxMjYsMTcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIHN0cm9uZ1NlbGYtPl9jYWxsYmFjay0+c3Ry
ZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUoZXJyb3IpLCAiLVtTQ1N0cmVhbURlbGVnYXRlIHN0
cmVhbTpkaWRTdG9wV2l0aEVycm9yOl0gY2FsbGVkIl9zKTsKICAgICB9KTsKIH0KKworLSAodm9p
ZClzdHJlYW06KFNDU3RyZWFtICopc3RyZWFtIGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1w
bGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIG9mVHlwZTooV0tTQ1N0cmVhbU91dHB1dFR5cGUpdHlw
ZQoreworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2Vs
ZiB9LCBzYW1wbGVCdWZmZXIgPSBSZXRhaW5QdHIgeyBzYW1wbGVCdWZmZXIgfV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fY2FsbGJhY2spCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgc3Ryb25nU2VsZi0+X2NhbGxiYWNrLT5zdHJlYW1EaWRPdXRwdXRTYW1w
bGVCdWZmZXIoV1RGTW92ZShzYW1wbGVCdWZmZXIpLCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNv
dXJjZTo6U2FtcGxlVHlwZTo6VmlkZW8pOworICAgIH0pOworfQorCiBAZW5kCiAKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKQEAgLTEyOSw2ICsxNzcsNyBAQCBTY3JlZW5DYXB0dXJlS2l0
Q2FwdHVyZVNvdXJjZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UoY29uc3QgQ2FwdHVy
ZURldmljZQogICAgICwgbV9jYXB0dXJlRGV2aWNlKGRldmljZSkKICAgICAsIG1fZGV2aWNlSUQo
ZGV2aWNlSUQpCiB7CisgICAgbV91c2VOZXdBUEkgPSBbUEFMOjpnZXRTQ1N0cmVhbUNsYXNzKCkg
aW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHN0b3BDYXB0dXJlV2l0aENvbXBs
ZXRpb25IYW5kbGVyOildOwogfQogCiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6flNj
cmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlKCkKQEAgLTE2MCwxNSArMjA5LDIwIEBAIHZvaWQg
U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0b3AoKQogICAgIG1faXNSdW5uaW5nID0g
ZmFsc2U7CiAKICAgICBpZiAobV9jb250ZW50U3RyZWFtKSB7Ci0gICAgICAgIFttX2NvbnRlbnRT
dHJlYW0gc3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dIChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8gc3RvcEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gUmV0YWluUHRyIHsgZXJyb3Ig
fV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5zdHJlYW1GYWlsZWRXaXRoRXJyb3IoV1RGTW92ZShlcnJvciks
ICItW1NDU3RyZWFtIHN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQiX3MpOworICAg
ICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c3RyZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUo
ZXJyb3IpLCAiLVtTQ1N0cmVhbSBzdG9wQ2FwdHVyZVdpdGhDb21wbGV0aW9uSGFuZGxlcjpdIGZh
aWxlZCJfcyk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSkuZ2V0KCldOworICAgICAgICB9
KTsKKworICAgICAgICBpZiAobV91c2VOZXdBUEkpCisgICAgICAgICAgICBbbV9jb250ZW50U3Ry
ZWFtIHN0b3BDYXB0dXJlV2l0aENvbXBsZXRpb25IYW5kbGVyOnN0b3BIYW5kbGVyLmdldCgpXTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgW21fY29udGVudFN0cmVhbSBzdG9wV2l0aENvbXBs
ZXRpb25IYW5kbGVyOnN0b3BIYW5kbGVyLmdldCgpXTsKICAgICB9CiB9CiAKQEAgLTI0Nyw4ICsz
MDEsMTIgQEAgUmV0YWluUHRyPFNDU3RyZWFtQ29uZmlndXJhdGlvbj4gU2NyZWVuQ2FwdHVyZUtp
dENhcHR1cmVTb3VyY2U6OnN0cmVhbUNvbmZpZ3VyYXQKICAgICBbbV9zdHJlYW1Db25maWd1cmF0
aW9uIHNldENvbG9yU3BhY2VOYW1lOmtDR0NvbG9yU3BhY2VMaW5lYXJTUkdCXTsKICAgICBbbV9z
dHJlYW1Db25maWd1cmF0aW9uIHNldENvbG9yTWF0cml4OmtDR0Rpc3BsYXlTdHJlYW1ZQ2JDck1h
dHJpeF9TTVBURV8yNDBNXzE5OTVdOwogCi0gICAgaWYgKG1fZnJhbWVSYXRlKQotICAgICAgICBb
bV9zdHJlYW1Db25maWd1cmF0aW9uIHNldE1pbmltdW1GcmFtZVRpbWU6MSAvIG1fZnJhbWVSYXRl
XTsKKyAgICBpZiAobV9mcmFtZVJhdGUpIHsKKyAgICAgICAgaWYgKG1fdXNlTmV3QVBJKQorICAg
ICAgICAgICAgW21fc3RyZWFtQ29uZmlndXJhdGlvbiBzZXRNaW5pbXVtRnJhbWVJbnRlcnZhbDpQ
QUw6OkNNVGltZU1ha2VXaXRoU2Vjb25kcygxIC8gbV9mcmFtZVJhdGUsIDEwMDApXTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgW21fc3RyZWFtQ29uZmlndXJhdGlvbiBzZXRNaW5pbXVtRnJh
bWVUaW1lOjEgLyBtX2ZyYW1lUmF0ZV07CisgICAgfQogCiAgICAgaWYgKG1fd2lkdGggJiYgbV9o
ZWlnaHQpIHsKICAgICAgICAgW21fc3RyZWFtQ29uZmlndXJhdGlvbiBzZXRXaWR0aDptX3dpZHRo
XTsKQEAgLTI3MCw3ICszMjgsNyBAQCB2b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpzdGFydENvbnRlbnRTdHJlYW0oKQogCiAgICAgbV9jb250ZW50RmlsdGVyID0gc3dpdGNoT24o
bV9jb250ZW50LnZhbHVlKCksCiAgICAgICAgIFtdIChjb25zdCBSZXRhaW5QdHI8U0NEaXNwbGF5
PiBkaXNwbGF5KSAtPiBSZXRhaW5QdHI8U0NDb250ZW50RmlsdGVyPiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbUEFMOjphbGxvY1NDQ29udGVudEZpbHRlckluc3RhbmNlKCkgaW5pdFdp
dGhEaXNwbGF5OmRpc3BsYXkuZ2V0KCkgZXhjbHVkaW5nV2luZG93czpuaWxdKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFsbG9jU0NDb250ZW50RmlsdGVySW5zdGFuY2UoKSBp
bml0V2l0aERpc3BsYXk6ZGlzcGxheS5nZXQoKSBleGNsdWRpbmdXaW5kb3dzOkBbXV0pOwogICAg
ICAgICB9LAogICAgICAgICBbXSAoY29uc3QgUmV0YWluUHRyPFNDV2luZG93PiB3aW5kb3cpICAt
PiBSZXRhaW5QdHI8U0NDb250ZW50RmlsdGVyPiB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRO
UyhbUEFMOjphbGxvY1NDQ29udGVudEZpbHRlckluc3RhbmNlKCkgaW5pdFdpdGhEZXNrdG9wSW5k
ZXBlbmRlbnRXaW5kb3c6d2luZG93LmdldCgpXSk7CkBAIC0yODUsMTIgKzM0MywyNSBAQCB2b2lk
IFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzdGFydENvbnRlbnRTdHJlYW0oKQogICAg
IGlmICghbV9jYXB0dXJlSGVscGVyKQogICAgICAgICBtX2NhcHR1cmVIZWxwZXIgPSAoW1tXZWJD
b3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7
CiAKLSAgICBtX2NvbnRlbnRTdHJlYW0gPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0NTdHJlYW1JbnN0
YW5jZSgpIGluaXRXaXRoRmlsdGVyOm1fY29udGVudEZpbHRlci5nZXQoKSBjYXB0dXJlT3V0cHV0
UHJvcGVydGllczpzdHJlYW1Db25maWd1cmF0aW9uKCkuZ2V0KCkgZGVsZWdhdGU6bV9jYXB0dXJl
SGVscGVyLmdldCgpXSk7CisgICAgaWYgKG1fdXNlTmV3QVBJKQorICAgICAgICBtX2NvbnRlbnRT
dHJlYW0gPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0NTdHJlYW1JbnN0YW5jZSgpIGluaXRXaXRoRmls
dGVyOm1fY29udGVudEZpbHRlci5nZXQoKSBjb25maWd1cmF0aW9uOnN0cmVhbUNvbmZpZ3VyYXRp
b24oKS5nZXQoKSBkZWxlZ2F0ZTptX2NhcHR1cmVIZWxwZXIuZ2V0KCldKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fY29udGVudFN0cmVhbSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTQ1N0cmVhbUluc3Rh
bmNlKCkgaW5pdFdpdGhGaWx0ZXI6bV9jb250ZW50RmlsdGVyLmdldCgpIGNhcHR1cmVPdXRwdXRQ
cm9wZXJ0aWVzOnN0cmVhbUNvbmZpZ3VyYXRpb24oKS5nZXQoKSBkZWxlZ2F0ZTptX2NhcHR1cmVI
ZWxwZXIuZ2V0KCldKTsKKwogICAgIGlmICghbV9jb250ZW50U3RyZWFtKSB7CiAgICAgICAgIHN0
cmVhbUZhaWxlZFdpdGhFcnJvcihuaWwsICJGYWlsZWQgdG8gYWxsb2NhdGUgU0xDb250ZW50U3Ry
ZWFtIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX3VzZU5ld0FQSSkg
eworICAgICAgICBOU0Vycm9yICplcnJvcjsKKyAgICAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVj
dG9yKGFkZFN0cmVhbU91dHB1dDp0eXBlOnNhbXBsZUhhbmRsZXJRdWV1ZTplcnJvcjopOworICAg
ICAgICBpZiAoIXd0Zk9iakNNc2dTZW5kPEJPT0w+KG1fY29udGVudFN0cmVhbS5nZXQoKSwgc2Vs
ZWN0b3IsIG1fY2FwdHVyZUhlbHBlci5nZXQoKSwgV0tTQ1N0cmVhbU91dHB1dFR5cGVTY3JlZW4s
IGNhcHR1cmVRdWV1ZSgpLCAmZXJyb3IpKSB7CisgICAgICAgICAgICBzdHJlYW1GYWlsZWRXaXRo
RXJyb3IoV1RGTW92ZShlcnJvciksICItW1NDU3RyZWFtIGFkZFN0cmVhbU91dHB1dDp0eXBlOnNh
bXBsZUhhbmRsZXJRdWV1ZTplcnJvcjpdIGZhaWxlZCJfcyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNFcnJvciAqZXJyb3IpIG11
dGFibGUgewogICAgICAgICBpZiAoIWVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAx
LDcgKzM3MiwxMCBAQCB2b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzdGFydENv
bnRlbnRTdHJlYW0oKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIFttX2NvbnRlbnRTdHJl
YW0gc3RhcnRDYXB0dXJlV2l0aEZyYW1lSGFuZGxlcjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKSBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CisgICAgaWYgKG1fdXNl
TmV3QVBJKQorICAgICAgICBbbV9jb250ZW50U3RyZWFtIHN0YXJ0Q2FwdHVyZVdpdGhDb21wbGV0
aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CisgICAgZWxzZQorICAgICAgICBb
bV9jb250ZW50U3RyZWFtIHN0YXJ0Q2FwdHVyZVdpdGhGcmFtZUhhbmRsZXI6ZnJhbWVBdmFpbGFi
bGVIYW5kbGVyKCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwog
CiAgICAgbV9pc1J1bm5pbmcgPSB0cnVlOwogfQpAQCAtMzM5LDcgKzQxMyw3IEBAIHZvaWQgU2Ny
ZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0cmVhbUNvbmZpZ3VyYXRpb24oKQog
ewogICAgIEFTU0VSVChtX2NvbnRlbnRTdHJlYW0pOwogCi0gICAgW21fY29udGVudFN0cmVhbSB1
cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uOnN0cmVhbUNvbmZpZ3VyYXRpb24oKS5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRXJyb3IgKmVy
cm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFlcnJvcikKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMzQ3LDggKzQyMSwxMiBAQCB2b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
Ojp1cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uKCkKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
ICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c3RyZWFtRmFpbGVkV2l0aEVycm9yKFdURk1vdmUo
ZXJyb3IpLCAiLVtTQ1N0cmVhbSB1cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uOl0gZmFpbGVkIl9z
KTsKICAgICAgICAgfSk7Ci0gICAgfSkuZ2V0KCldOworICAgIH0pOwogCisgICAgaWYgKG1fdXNl
TmV3QVBJKQorICAgICAgICBbbV9jb250ZW50U3RyZWFtIHVwZGF0ZUNvbmZpZ3VyYXRpb246c3Ry
ZWFtQ29uZmlndXJhdGlvbigpLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5k
bGVyLmdldCgpXTsKKyAgICBlbHNlCisgICAgICAgIFttX2NvbnRlbnRTdHJlYW0gdXBkYXRlU3Ry
ZWFtQ29uZmlndXJhdGlvbjpzdHJlYW1Db25maWd1cmF0aW9uKCkuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwogfQogCiB2b2lkIFNjcmVlbkNhcHR1cmVL
aXRDYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCkBAIC0zNjYsNTUgKzQ0NCw3OSBAQCB2b2lkIFNjcmVl
bkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyYwogICAgIH0KIH0KIAorCiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJj
ZTo6U0NDb250ZW50U3RyZWFtVXBkYXRlQ2FsbGJhY2sgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVT
b3VyY2U6OmZyYW1lQXZhaWxhYmxlSGFuZGxlcigpCiB7CiAgICAgaWYgKG1fZnJhbWVBdmFpbGFi
bGVIYW5kbGVyKQogICAgICAgICByZXR1cm4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIuZ2V0KCk7
CiAKLSAgICBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKFNDU3RyZWFtICosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlcikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChTQ1N0cmVhbSAqLCBDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIpIG11dGFibGUgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHdlYWtUaGlzLCBzYW1wbGVCdWZmZXIgPSBSZXRhaW5QdHIgeyBzYW1wbGVC
dWZmZXIgfV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICBzdHJlYW1EaWRPdXRwdXRTYW1wbGVCdWZmZXIoV1RGTW92ZShzYW1wbGVCdWZmZXIp
LCBTYW1wbGVUeXBlOjpWaWRlbyk7CisgICAgICAgIH0pOworICAgIH0pOwogCi0gICAgICAgIGlm
ICghc2FtcGxlQnVmZmVyKSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3dlYWtUaGlzLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpmcmFtZUF2YWlsYWJsZUhhbmRsZXI6IE5VTEwgc2FtcGxlIGJ1ZmZlciEiKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgcmV0dXJuIG1fZnJh
bWVBdmFpbGFibGVIYW5kbGVyLmdldCgpOworfQogCi0gICAgICAgIGF1dG8gYXR0YWNobWVudHMg
PSAoX19icmlkZ2UgTlNBcnJheSAqKVBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2ht
ZW50c0FycmF5KHNhbXBsZUJ1ZmZlciwgZmFsc2UpOwotICAgICAgICBXS1NDRnJhbWVTdGF0dXMg
c3RhdHVzID0gV0tTQ0ZyYW1lU3RhdHVzRnJhbWVTdG9wcGVkOwotICAgICAgICBbYXR0YWNobWVu
dHMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6bWFrZUJsb2NrUHRyKFsmXSAoTlNEaWN0aW9u
YXJ5ICphdHRhY2htZW50LCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7Ci0gICAgICAgICAgICBh
dXRvIHN0YXR1c051bWJlciA9IChOU051bWJlciAqKWF0dGFjaG1lbnRbUEFMOjpTQ1N0cmVhbUZy
YW1lSW5mb1N0YXR1c0tleV07Ci0gICAgICAgICAgICBpZiAoIXN0YXR1c051bWJlcikKLSAgICAg
ICAgICAgICAgICByZXR1cm47Cit2b2lkIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpz
dHJlYW1EaWRPdXRwdXRTYW1wbGVCdWZmZXIoUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBz
YW1wbGVCdWZmZXIsIFNhbXBsZVR5cGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgICAgICAgICAgc3RhdHVzID0gKFdLU0NGcmFtZVN0YXR1cylbc3RhdHVzTnVtYmVyIGlu
dGVnZXJWYWx1ZV07Ci0gICAgICAgICAgICAqc3RvcCA9IFlFUzsKLSAgICAgICAgfSkuZ2V0KCld
OworICAgIGlmICghc2FtcGxlQnVmZmVyKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdl
YlJUQywgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzdHJlYW1EaWRPdXRwdXRTYW1w
bGVCdWZmZXI6IE5VTEwgc2FtcGxlIGJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgICAgICBjYXNlIFdLU0NGcmFtZVN0YXR1
c0ZyYW1lU3RhcnRlZDoKLSAgICAgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNGcmFtZUNvbXBsZXRl
OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVJ
ZGxlOgotICAgICAgICBjYXNlIFdLU0NGcmFtZVN0YXR1c0ZyYW1lQmxhbms6Ci0gICAgICAgIGNh
c2UgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVTdXNwZW5kZWQ6Ci0gICAgICAgIGNhc2UgV0tTQ0ZyYW1l
U3RhdHVzRnJhbWVTdG9wcGVkOgotICAgICAgICAgICAgcmV0dXJuOworICAgIHN0YXRpYyBOU1N0
cmluZyogZnJhbWVJbmZvS2V5OworICAgIGlmICghZnJhbWVJbmZvS2V5KSB7CisgICAgICAgIGlm
IChtX3VzZU5ld0FQSSkgeworICAgICAgICAgICAgaWYgKFBBTDo6Y2FuTG9hZF9TY3JlZW5DYXB0
dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3RhdHVzKCkpCisgICAgICAgICAgICAgICAgZnJhbWVJ
bmZvS2V5ID0gUEFMOjpnZXRfU2NyZWVuQ2FwdHVyZUtpdF9TQ1N0cmVhbUZyYW1lSW5mb1N0YXR1
cygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFBBTDo6Y2FuTG9hZF9TY3Jl
ZW5DYXB0dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5KCkpCisgICAgICAgICAgICAg
ICAgZnJhbWVJbmZvS2V5ID0gUEFMOjpnZXRfU2NyZWVuQ2FwdHVyZUtpdF9TQ1N0cmVhbUZyYW1l
SW5mb1N0YXR1c0tleSgpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChmcmFtZUluZm9LZXkp
OworICAgICAgICBpZiAoIWZyYW1lSW5mb0tleSkKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFdlYlJUQywgIlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpzdHJlYW1EaWRPdXRw
dXRTYW1wbGVCdWZmZXI6IHVuYWJsZSB0byBsb2FkIHN0YXR1cyBrZXkhIik7CisgICAgfQorICAg
IGlmICghZnJhbWVJbmZvS2V5KQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcywgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBs
ZUJ1ZmZlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGF0dGFjaG1lbnRzID0gKF9fYnJpZGdlIE5TQXJy
YXkgKilQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVC
dWZmZXIuZ2V0KCksIGZhbHNlKTsKKyAgICBXS1NDRnJhbWVTdGF0dXMgc3RhdHVzID0gV0tTQ0Zy
YW1lU3RhdHVzU3RvcHBlZDsKKyAgICBbYXR0YWNobWVudHMgZW51bWVyYXRlT2JqZWN0c1VzaW5n
QmxvY2s6bWFrZUJsb2NrUHRyKFsmXSAoTlNEaWN0aW9uYXJ5ICphdHRhY2htZW50LCBOU1VJbnRl
Z2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgIGF1dG8gc3RhdHVzTnVtYmVyID0gKE5TTnVtYmVy
ICopYXR0YWNobWVudFtmcmFtZUluZm9LZXldOworICAgICAgICBpZiAoIXN0YXR1c051bWJlcikK
KyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPm1faW50cmluc2lj
U2l6ZSA9IEludFNpemUoUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRp
b25EaW1lbnNpb25zKFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1w
bGVCdWZmZXIuZ2V0KCkpLCB0cnVlLCB0cnVlKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9j
dXJyZW50RnJhbWUgPSBXVEZNb3ZlKHNhbXBsZUJ1ZmZlcik7Ci0gICAgICAgIH0pOwotICAgIH0p
OworICAgICAgICBzdGF0dXMgPSAoV0tTQ0ZyYW1lU3RhdHVzKVtzdGF0dXNOdW1iZXIgaW50ZWdl
clZhbHVlXTsKKyAgICAgICAgKnN0b3AgPSBZRVM7CisgICAgfSkuZ2V0KCldOwogCi0gICAgcmV0
dXJuIG1fZnJhbWVBdmFpbGFibGVIYW5kbGVyLmdldCgpOworICAgIHN3aXRjaCAoc3RhdHVzKSB7
CisgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNTdGFydGVkOgorICAgIGNhc2UgV0tTQ0ZyYW1lU3Rh
dHVzQ29tcGxldGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0tTQ0ZyYW1lU3RhdHVzSWRs
ZToKKyAgICBjYXNlIFdLU0NGcmFtZVN0YXR1c0JsYW5rOgorICAgIGNhc2UgV0tTQ0ZyYW1lU3Rh
dHVzU3VzcGVuZGVkOgorICAgIGNhc2UgV0tTQ0ZyYW1lU3RhdHVzU3RvcHBlZDoKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1faW50cmluc2ljU2l6ZSA9IEludFNpemUoUEFMOjpDTVZp
ZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zKFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGVCdWZmZXIuZ2V0KCkpLCB0cnVlLCB0
cnVlKSk7CisgICAgbV9jdXJyZW50RnJhbWUgPSBXVEZNb3ZlKHNhbXBsZUJ1ZmZlcik7Cit9CisK
K2Rpc3BhdGNoX3F1ZXVlX3QgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmNhcHR1cmVR
dWV1ZSgpCit7CisgICAgaWYgKCFtX2NhcHR1cmVRdWV1ZSkKKyAgICAgICAgbV9jYXB0dXJlUXVl
dWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiQ0dEaXNwbGF5U3RyZWFt
Q2FwdHVyZVNvdXJjZSBDYXB0dXJlIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CisK
KyAgICByZXR1cm4gbV9jYXB0dXJlUXVldWUuZ2V0KCk7CiB9CiAKIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmRldmljZVR5cGUoKSBjb25z
dAo=
</data>
<flag name="review"
          id="478220"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="478235"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451544</attachid>
            <date>2022-02-10 08:45:05 -0800</date>
            <delta_ts>2022-02-10 10:17:22 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236422-20220210084504.patch</filename>
            <type>text/plain</type>
            <size>21777</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM2MjUxMWFlZDlmZWJi
ZDg5N2ZiM2I2MTI2MDk4NTk1ZTBkNWFhNi4uYWQwMWYxZGEzOWU1ZjY0MzMwZmNlOTA1NDViNGUz
NTdhMzc1NjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAyLTA5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3Vw
cG9ydCBib3RoIHZlcnNpb25zIG9mIFNjcmVlbkNhcHR1cmVLaXQgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MjIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzg4NzI2ODQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgVGVzdGVkIG1hbnVhbGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciBpbml0V2l0aENhbGxiYWNr
Ol0pOgorICAgICAgICAoLVtXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciBzdHJlYW06ZGlk
T3V0cHV0U2FtcGxlQnVmZmVyOm9mVHlwZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkNh
cHR1cmVLaXRDYXB0dXJlU291cmNlOjpTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c3RvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c3RyZWFtQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNv
dXJjZTo6c3RhcnRDb250ZW50U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkNhcHR1
cmVLaXRDYXB0dXJlU291cmNlOjp1cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlOjpmcmFtZUF2YWlsYWJsZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6
OnN0cmVhbURpZE91dHB1dFNhbXBsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5D
YXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVF1ZXVlKToKKwogMjAyMi0wMi0wOSAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBWZXJ0aWNh
bCB3cml0aW5nIG1vZGUgd2l0aCBSVEwgdGV4dCBjb250ZW50IGhhcyBpbmNvcnJlY3QgYWR2YW5j
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGZhNDk5NjNlN2QzODcxZTQzNGJmMWEzNjMxMDNlZmY3
YTBmZDE4YjMuLjg3MGFhZjcxNzg2MzRhMzllODkwYmY5ZDYzMDY2ZDRlYjhlMGUxMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA5ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gU3VwcG9ydCBib3Ro
IHZlcnNpb25zIG9mIFNjcmVlbkNhcHR1cmVLaXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg4NzI2ODQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgKiBwYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9t
YWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5rLm1tOgorCiAyMDIyLTAyLTA5ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFttb2RlbF0gaW1wcm92ZSBzaXpp
bmcgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVl
bkNhcHR1cmVLaXRTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVu
Q2FwdHVyZUtpdFNvZnRMaW5rLmgKaW5kZXggZTBiYjg4M2E1YTU5ZDJjYmY1ZmNkMTI1Nzg0ZDg2
ZGRmN2EyMjYwYy4uN2E4MDUxZGVhMzE1MTE5ZDBiMjNkYTE1ZGQzNTRmNWI5YWYwMmY5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRM
aW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNv
ZnRMaW5rLmgKQEAgLTM3LDcgKzM3LDEwIEBAIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSX1dJ
VEhfQVZBSUxBQklMSVRZKFBBTCwgU0NDb250ZW50RmlsdGVyLCBBUElfQVZBSUxBQkxFCiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUl9XSVRIX0FWQUlMQUJJTElUWShQQUwsIFNDU3RyZWFtQ29u
ZmlndXJhdGlvbiwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkpCiBTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUl9XSVRIX0FWQUlMQUJJTElUWShQQUwsIFNDU3RyZWFtLCBBUElfQVZBSUxBQkxF
KG1hY29zKDEyLjMpKSkKIAotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBTY3Jl
ZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFBBTCwgU2NyZWVuQ2FwdHVyZUtp
dCwgU0NTdHJlYW1GcmFtZUluZm9TdGF0dXMsIE5TU3RyaW5nICopCisjZGVmaW5lIFNDU3RyZWFt
RnJhbWVJbmZvU3RhdHVzIGdldF9TY3JlZW5DYXB0dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3Rh
dHVzKCkKKworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBTY3Jl
ZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1c0tleSwgTlNTdHJpbmcgKikKICNk
ZWZpbmUgU0NTdHJlYW1GcmFtZUluZm9TdGF0dXNLZXkgZ2V0X1NjcmVlbkNhcHR1cmVLaXRfU0NT
dHJlYW1GcmFtZUluZm9TdGF0dXNLZXkoKQogCiAjZW5kaWYgLy8gSEFWRShTQ1JFRU5fQ0FQVFVS
RV9LSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0
dXJlS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL21hYy9TY3JlZW5DYXB0
dXJlS2l0U29mdExpbmsubW0KaW5kZXggNDA4ZWNhMTAxZTBhZDVlZWJmYjliZDVkODMzOWMyYTFj
YmEzNmNkMi4uMWExYzg4YjMwMmU3ZmZhMzhiMGIyNTc3YjJjZDAzZjdmY2QzZGUzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9tYWMvU2NyZWVuQ2FwdHVyZUtpdFNvZnRMaW5r
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0
TGluay5tbQpAQCAtMzcsNiArMzcsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJ
T05BTF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklMSVRZKFBBTCwgU2NyZWVuQ2FwdAogU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlRfQU5EX0FWQUlMQUJJTElU
WShQQUwsIFNjcmVlbkNhcHR1cmVLaXQsIFNDU3RyZWFtQ29uZmlndXJhdGlvbiwgUEFMX0VYUE9S
VCwgQVBJX0FWQUlMQUJMRShtYWNvcygxMi4zKSkpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9PUFRJT05BTF9XSVRIX0VYUE9SVF9BTkRfQVZBSUxBQklMSVRZKFBBTCwgU2NyZWVuQ2FwdHVy
ZUtpdCwgU0NTdHJlYW0sIFBBTF9FWFBPUlQsIEFQSV9BVkFJTEFCTEUobWFjb3MoMTIuMykpKQog
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNjcmVlbkNh
cHR1cmVLaXQsIFNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBTY3JlZW5DYXB0dXJlS2l0LCBTQ1N0cmVhbUZyYW1lSW5mb1N0YXR1cywgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgU2NyZWVuQ2FwdHVyZUtpdCwgU0NTdHJlYW1GcmFtZUluZm9TdGF0dXNL
ZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
Q2FwdHVyZUtpdENhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oCmluZGV4IGMxNWI1ZGU0
MjdiZTliMjI3M2FmYWU3Yzg0ZDkzYmFkMGNlNjg0OTguLjgxNWU2YjY1N2RlNTIwZDU1YjMyOTE2
ZGFhYjI1NDNmZDQxNjJhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0dXJlS2l0Q2FwdHVy
ZVNvdXJjZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCB3aW5kb3dEZXZpY2VzKFZlY3RvcjxEaXNwbGF5Q2FwdHVyZU1hbmFnZXI6Oldp
bmRvd0NhcHR1cmVEZXZpY2U+Jik7CiAKICAgICB2b2lkIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihS
ZXRhaW5QdHI8TlNFcnJvcj4mJiwgY29uc3QgU3RyaW5nJik7CisgICAgZW51bSBjbGFzcyBTYW1w
bGVUeXBlIHsgVmlkZW8gfTsKKyAgICB2b2lkIHN0cmVhbURpZE91dHB1dFNhbXBsZUJ1ZmZlcihS
ZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+LCBTYW1wbGVUeXBlKTsKIAogcHJpdmF0ZToKIApA
QCAtOTIsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFNDQ29udGVudFN0cmVhbVVwZGF0
ZUNhbGxiYWNrID0gdm9pZCAoXikoU0NTdHJlYW0gKiwgQ01TYW1wbGVCdWZmZXJSZWYpOwogICAg
IFNDQ29udGVudFN0cmVhbVVwZGF0ZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlcigpOwog
CisgICAgZGlzcGF0Y2hfcXVldWVfdCBjYXB0dXJlUXVldWUoKTsKKwogICAgIHVzaW5nIENvbnRl
bnQgPSBzdGQ6OnZhcmlhbnQ8UmV0YWluUHRyPFNDV2luZG93PiwgUmV0YWluUHRyPFNDRGlzcGxh
eT4+OwogICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudD4gbV9jb250ZW50OwogCkBAIC0xMTAsNiAr
MTE0LDcgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2hlaWdodCB7IDAgfTsKICAgICBmbG9h
dCBtX2ZyYW1lUmF0ZSB7IDAgfTsKICAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fdXNlTmV3QVBJIHsgZmFsc2UgfTsKICAgICBzdGF0aWMgYm9vbCBtX2VuYWJsZWQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2UubW0KaW5k
ZXggNjRiYjE2MmQwNDRkMjA5NzUxMzlmZGQzOTUzZWRiNzlhZmM1YzE5MS4uNzAxNGEwMTBlMDc5
NzA5MzRkMTUyZDJlMGYzNWFjMmUyYThiYTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5DYXB0
dXJlS2l0Q2FwdHVyZVNvdXJjZS5tbQpAQCAtMzgsMzEgKzM4LDY3IEBACiAjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KIAorI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAj
aW1wb3J0IDxwYWwvbWFjL1NjcmVlbkNhcHR1cmVLaXRTb2Z0TGluay5oPgogCiB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBXS1NDRnJhbWVTdGF0dXMpIHsKLSAgICBXS1NDRnJhbWVTdGF0dXNG
cmFtZUNvbXBsZXRlLAotICAgIFdLU0NGcmFtZVN0YXR1c0ZyYW1lSWRsZSwKLSAgICBXS1NDRnJh
bWVTdGF0dXNGcmFtZUJsYW5rLAotICAgIFdLU0NGcmFtZVN0YXR1c0ZyYW1lU3VzcGVuZGVkLAot
ICAgIFdLU0NGcmFtZVN0YXR1c0ZyYW1lU3RhcnRlZCwKLSAgICBXS1NDRnJhbWVTdGF0dXNGcmFt
ZVN0b3BwZWQKKyAgICBXS1NDRnJhbWVTdGF0dXNDb21wbGV0ZSwKKyAgICBXS1NDRnJhbWVTdGF0
dXNJZGxlLAorICAgIFdLU0NGcmFtZVN0YXR1c0JsYW5rLAorICAgIFdLU0NGcmFtZVN0YXR1c1N1
c3BlbmRlZCwKKyAgICBXS1NDRnJhbWVTdGF0dXNTdGFydGVkLAorICAgIFdLU0NGcmFtZVN0YXR1
c1N0b3BwZWQKIH07CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU0NTdHJlYW1PdXRw
dXRUeXBlKSB7CisgICAgV0tTQ1N0cmVhbU91dHB1dFR5cGVTY3JlZW4KK307CisKK0Bwcm90b2Nv
bCBXS1NDU3RyZWFtT3V0cHV0OworQGludGVyZmFjZSBTQ1N0cmVhbSAoU0NTdHJlYW1fTmV3KQor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRmlsdGVyOihTQ0NvbnRlbnRGaWx0ZXIgKiljb250ZW50
RmlsdGVyIGNvbmZpZ3VyYXRpb246KFNDU3RyZWFtQ29uZmlndXJhdGlvbiAqKXN0cmVhbUNvbmZp
ZyBkZWxlZ2F0ZTooaWQ8U0NTdHJlYW1EZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lkKXN0YXJ0
Q2FwdHVyZVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIGVycm9yKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc3RvcENhcHR1cmVXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQp
dXBkYXRlQ29uZmlndXJhdGlvbjooU0NTdHJlYW1Db25maWd1cmF0aW9uICopc3RyZWFtQ29uZmln
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworLSAoQk9PTClhZGRTdHJlYW1PdXRwdXQ6KGlkPFdLU0NTdHJlYW1PdXRwdXQ+KW91
dHB1dCB0eXBlOihXS1NDU3RyZWFtT3V0cHV0VHlwZSl0eXBlIHNhbXBsZUhhbmRsZXJRdWV1ZToo
ZGlzcGF0Y2hfcXVldWVfdClzYW1wbGVIYW5kbGVyUXVldWUgZXJyb3I6KE5TRXJyb3IgKiopZXJy
b3I7CitAZW5kCisKK0Bwcm90b2NvbCBXS1NDU3RyZWFtT3V0cHV0IDxOU09iamVjdD4KK0BvcHRp
b25hbAorLSAodm9pZClzdHJlYW06KFNDU3RyZWFtICopc3RyZWFtIGRpZE91dHB1dFNhbXBsZUJ1
ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIG9mVHlwZTooV0tTQ1N0cmVhbU91
dHB1dFR5cGUpdHlwZTsKK0BlbmQKKworQGludGVyZmFjZSBTQ1N0cmVhbUNvbmZpZ3VyYXRpb24g
KFNDU3RyZWFtQ29uZmlndXJhdGlvbl9OZXcpCitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBDTVRpbWUgbWluaW11bUZyYW1lSW50ZXJ2YWw7CitAZW5kCisKK0BpbnRlcmZhY2UgU0NTdHJl
YW0gKFNDU3RyZWFtX0RlcHJlY2F0ZWQpCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGaWx0ZXI6
KFNDQ29udGVudEZpbHRlciAqKWNvbnRlbnRGaWx0ZXIgY2FwdHVyZU91dHB1dFByb3BlcnRpZXM6
KFNDU3RyZWFtQ29uZmlndXJhdGlvbiAqKXN0cmVhbUNvbmZpZyBkZWxlZ2F0ZTooaWQ8U0NTdHJl
YW1EZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lkKXN0YXJ0Q2FwdHVyZVdpdGhGcmFtZUhhbmRs
ZXI6KHZvaWQgKF4pKFNDU3RyZWFtICpzdHJlYW0sIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1
ZmZlcikpZnJhbWVIYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICpl
cnJvcikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXN0b3BXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRXJyb3IgKiBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lk
KXVwZGF0ZVN0cmVhbUNvbmZpZ3VyYXRpb246KFNDU3RyZWFtQ29uZmlndXJhdGlvbiAqKXN0cmVh
bUNvbmZpZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3IpKWNvbXBs
ZXRpb25IYW5kbGVyOworQGVuZAorCitAaW50ZXJmYWNlIFNDU3RyZWFtQ29uZmlndXJhdGlvbiAo
U0NTdHJlYW1Db25maWd1cmF0aW9uX0RlcHJlY2F0ZWQpCitAcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBmbG9hdCBtaW5pbXVtRnJhbWVUaW1lOworQGVuZAorCiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5ndWFy
ZGVkLWF2YWlsYWJpbGl0eS1uZXciCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotQGludGVy
ZmFjZSBXZWJDb3JlU2NyZWVuQ2FwdHVyZUtpdEhlbHBlciA6IE5TT2JqZWN0PFNDU3RyZWFtRGVs
ZWdhdGU+IHsKK0BpbnRlcmZhY2UgV2ViQ29yZVNjcmVlbkNhcHR1cmVLaXRIZWxwZXIgOiBOU09i
amVjdDxTQ1N0cmVhbURlbGVnYXRlLCBXS1NDU3RyZWFtT3V0cHV0PiB7CiAgICAgV2Vha1B0cjxT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZT4gX2NhbGxiYWNrOwogfQogCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooV2Vha1B0cjxTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNv
dXJjZT4mJiljYWxsYmFjazsKIC0gKHZvaWQpZGlzY29ubmVjdDsKIC0gKHZvaWQpc3RyZWFtOihT
Q1N0cmVhbSAqKXN0cmVhbSBkaWRTdG9wV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2
b2lkKXN0cmVhbTooU0NTdHJlYW0gKilzdHJlYW0gZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNh
bXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgb2ZUeXBlOihXS1NDU3RyZWFtT3V0cHV0VHlwZSl0
eXBlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNjcmVlbkNhcHR1cmVLaXRIZWxw
ZXIKQEAgLTcyLDYgKzEwOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIHNlbGY7CiAKKyAgICBfY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtODksNiArMTI2LDE3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAgICBzdHJvbmdTZWxmLT5fY2FsbGJhY2stPnN0cmVh
bUZhaWxlZFdpdGhFcnJvcihXVEZNb3ZlKGVycm9yKSwgIi1bU0NTdHJlYW1EZWxlZ2F0ZSBzdHJl
YW06ZGlkU3RvcFdpdGhFcnJvcjpdIGNhbGxlZCJfcyk7CiAgICAgfSk7CiB9CisKKy0gKHZvaWQp
c3RyZWFtOihTQ1N0cmVhbSAqKXN0cmVhbSBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxl
QnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBvZlR5cGU6KFdLU0NTdHJlYW1PdXRwdXRUeXBlKXR5cGUK
K3sKKyAgICBjYWxsT25NYWluUnVuTG9vcChbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYg
fSwgc2FtcGxlQnVmZmVyID0gUmV0YWluUHRyIHsgc2FtcGxlQnVmZmVyIH1dKCkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghc3Ryb25nU2VsZi0+X2NhbGxiYWNrKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHN0cm9uZ1NlbGYtPl9jYWxsYmFjay0+c3RyZWFtRGlkT3V0cHV0U2FtcGxl
QnVmZmVyKFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3Vy
Y2U6OlNhbXBsZVR5cGU6OlZpZGVvKTsKKyAgICB9KTsKK30KKwogQGVuZAogCiAjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCkBAIC0xMjgsNiArMTc2LDcgQEAgU2NyZWVuQ2FwdHVyZUtpdENh
cHR1cmVTb3VyY2U6OlNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNlKGNvbnN0IENhcHR1cmVE
ZXZpY2UKICAgICA6IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyKCkKICAgICAs
IG1fY2FwdHVyZURldmljZShkZXZpY2UpCiAgICAgLCBtX2RldmljZUlEKGRldmljZUlEKQorICAg
ICwgbV91c2VOZXdBUEkoW1BBTDo6Z2V0U0NTdHJlYW1DbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRU
b1NlbGVjdG9yOkBzZWxlY3RvcihzdG9wQ2FwdHVyZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkK
IHsKIH0KIApAQCAtMTYwLDE1ICsyMDksMjAgQEAgdm9pZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVy
ZVNvdXJjZTo6c3RvcCgpCiAgICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKIAogICAgIGlmIChtX2Nv
bnRlbnRTdHJlYW0pIHsKLSAgICAgICAgW21fY29udGVudFN0cmVhbSBzdG9wV2l0aENvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdG9wSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRXJyb3IgKmVycm9yKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghZXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgZXJyb3IgPSBSZXRhaW5QdHIgeyBlcnJvciB9XSgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnN0
cmVhbUZhaWxlZFdpdGhFcnJvcihXVEZNb3ZlKGVycm9yKSwgIi1bU0NTdHJlYW0gc3RvcFdpdGhD
b21wbGV0aW9uSGFuZGxlcjpdIGZhaWxlZCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5zdHJlYW1GYWlsZWRXaXRoRXJyb3IoV1RGTW92ZShlcnJvciksICItW1NDU3RyZWFtIHN0
b3BDYXB0dXJlV2l0aENvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVkIl9zKTsKICAgICAgICAgICAg
IH0pOwotICAgICAgICB9KS5nZXQoKV07CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChtX3Vz
ZU5ld0FQSSkKKyAgICAgICAgICAgIFttX2NvbnRlbnRTdHJlYW0gc3RvcENhcHR1cmVXaXRoQ29t
cGxldGlvbkhhbmRsZXI6c3RvcEhhbmRsZXIuZ2V0KCldOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBbbV9jb250ZW50U3RyZWFtIHN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXI6c3RvcEhhbmRs
ZXIuZ2V0KCldOwogICAgIH0KIH0KIApAQCAtMjQ3LDggKzMwMSwxMiBAQCBSZXRhaW5QdHI8U0NT
dHJlYW1Db25maWd1cmF0aW9uPiBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6c3RyZWFt
Q29uZmlndXJhdAogICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24gc2V0Q29sb3JTcGFjZU5hbWU6
a0NHQ29sb3JTcGFjZUxpbmVhclNSR0JdOwogICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24gc2V0
Q29sb3JNYXRyaXg6a0NHRGlzcGxheVN0cmVhbVlDYkNyTWF0cml4X1NNUFRFXzI0ME1fMTk5NV07
CiAKLSAgICBpZiAobV9mcmFtZVJhdGUpCi0gICAgICAgIFttX3N0cmVhbUNvbmZpZ3VyYXRpb24g
c2V0TWluaW11bUZyYW1lVGltZToxIC8gbV9mcmFtZVJhdGVdOworICAgIGlmIChtX2ZyYW1lUmF0
ZSkgeworICAgICAgICBpZiAobV91c2VOZXdBUEkpCisgICAgICAgICAgICBbbV9zdHJlYW1Db25m
aWd1cmF0aW9uIHNldE1pbmltdW1GcmFtZUludGVydmFsOlBBTDo6Q01UaW1lTWFrZVdpdGhTZWNv
bmRzKDEgLyBtX2ZyYW1lUmF0ZSwgMTAwMCldOworICAgICAgICBlbHNlCisgICAgICAgICAgICBb
bV9zdHJlYW1Db25maWd1cmF0aW9uIHNldE1pbmltdW1GcmFtZVRpbWU6MSAvIG1fZnJhbWVSYXRl
XTsKKyAgICB9CiAKICAgICBpZiAobV93aWR0aCAmJiBtX2hlaWdodCkgewogICAgICAgICBbbV9z
dHJlYW1Db25maWd1cmF0aW9uIHNldFdpZHRoOm1fd2lkdGhdOwpAQCAtMjcwLDcgKzMyOCw3IEBA
IHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q29udGVudFN0cmVhbSgp
CiAKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSBzd2l0Y2hPbihtX2NvbnRlbnQudmFsdWUoKSwKICAg
ICAgICAgW10gKGNvbnN0IFJldGFpblB0cjxTQ0Rpc3BsYXk+IGRpc3BsYXkpIC0+IFJldGFpblB0
cjxTQ0NvbnRlbnRGaWx0ZXI+IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFs
bG9jU0NDb250ZW50RmlsdGVySW5zdGFuY2UoKSBpbml0V2l0aERpc3BsYXk6ZGlzcGxheS5nZXQo
KSBleGNsdWRpbmdXaW5kb3dzOm5pbF0pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1BB
TDo6YWxsb2NTQ0NvbnRlbnRGaWx0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRGlzcGxheTpkaXNwbGF5
LmdldCgpIGV4Y2x1ZGluZ1dpbmRvd3M6QFtdXSk7CiAgICAgICAgIH0sCiAgICAgICAgIFtdIChj
b25zdCBSZXRhaW5QdHI8U0NXaW5kb3c+IHdpbmRvdykgIC0+IFJldGFpblB0cjxTQ0NvbnRlbnRG
aWx0ZXI+IHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFsbG9jU0NDb250ZW50
RmlsdGVySW5zdGFuY2UoKSBpbml0V2l0aERlc2t0b3BJbmRlcGVuZGVudFdpbmRvdzp3aW5kb3cu
Z2V0KCldKTsKQEAgLTI4NSwxMiArMzQzLDI1IEBAIHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1
cmVTb3VyY2U6OnN0YXJ0Q29udGVudFN0cmVhbSgpCiAgICAgaWYgKCFtX2NhcHR1cmVIZWxwZXIp
CiAgICAgICAgIG1fY2FwdHVyZUhlbHBlciA9IChbW1dlYkNvcmVTY3JlZW5DYXB0dXJlS2l0SGVs
cGVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKTsKIAotICAgIG1fY29udGVudFN0cmVh
bSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTQ1N0cmVhbUluc3RhbmNlKCkgaW5pdFdpdGhGaWx0ZXI6
bV9jb250ZW50RmlsdGVyLmdldCgpIGNhcHR1cmVPdXRwdXRQcm9wZXJ0aWVzOnN0cmVhbUNvbmZp
Z3VyYXRpb24oKS5nZXQoKSBkZWxlZ2F0ZTptX2NhcHR1cmVIZWxwZXIuZ2V0KCldKTsKKyAgICBp
ZiAobV91c2VOZXdBUEkpCisgICAgICAgIG1fY29udGVudFN0cmVhbSA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NTQ1N0cmVhbUluc3RhbmNlKCkgaW5pdFdpdGhGaWx0ZXI6bV9jb250ZW50RmlsdGVyLmdl
dCgpIGNvbmZpZ3VyYXRpb246c3RyZWFtQ29uZmlndXJhdGlvbigpLmdldCgpIGRlbGVnYXRlOm1f
Y2FwdHVyZUhlbHBlci5nZXQoKV0pOworICAgIGVsc2UKKyAgICAgICAgbV9jb250ZW50U3RyZWFt
ID0gYWRvcHROUyhbUEFMOjphbGxvY1NDU3RyZWFtSW5zdGFuY2UoKSBpbml0V2l0aEZpbHRlcjpt
X2NvbnRlbnRGaWx0ZXIuZ2V0KCkgY2FwdHVyZU91dHB1dFByb3BlcnRpZXM6c3RyZWFtQ29uZmln
dXJhdGlvbigpLmdldCgpIGRlbGVnYXRlOm1fY2FwdHVyZUhlbHBlci5nZXQoKV0pOworCiAgICAg
aWYgKCFtX2NvbnRlbnRTdHJlYW0pIHsKICAgICAgICAgc3RyZWFtRmFpbGVkV2l0aEVycm9yKG5p
bCwgIkZhaWxlZCB0byBhbGxvY2F0ZSBTTENvbnRlbnRTdHJlYW0iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKG1fdXNlTmV3QVBJKSB7CisgICAgICAgIE5TRXJyb3IgKmVy
cm9yOworICAgICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3IoYWRkU3RyZWFtT3V0cHV0OnR5
cGU6c2FtcGxlSGFuZGxlclF1ZXVlOmVycm9yOik7CisgICAgICAgIGlmICghd3RmT2JqQ01zZ1Nl
bmQ8Qk9PTD4obV9jb250ZW50U3RyZWFtLmdldCgpLCBzZWxlY3RvciwgbV9jYXB0dXJlSGVscGVy
LmdldCgpLCBXS1NDU3RyZWFtT3V0cHV0VHlwZVNjcmVlbiwgY2FwdHVyZVF1ZXVlKCksICZlcnJv
cikpIHsKKyAgICAgICAgICAgIHN0cmVhbUZhaWxlZFdpdGhFcnJvcihXVEZNb3ZlKGVycm9yKSwg
Ii1bU0NTdHJlYW0gYWRkU3RyZWFtT3V0cHV0OnR5cGU6c2FtcGxlSGFuZGxlclF1ZXVlOmVycm9y
Ol0gZmFpbGVkIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
ZXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDEsNyArMzcyLDEwIEBAIHZvaWQgU2Ny
ZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0Q29udGVudFN0cmVhbSgpCiAgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgW21fY29udGVudFN0cmVhbSBzdGFydENhcHR1cmVXaXRoRnJh
bWVIYW5kbGVyOmZyYW1lQXZhaWxhYmxlSGFuZGxlcigpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyLmdldCgpXTsKKyAgICBpZiAobV91c2VOZXdBUEkpCisgICAgICAgIFttX2Nv
bnRlbnRTdHJlYW0gc3RhcnRDYXB0dXJlV2l0aENvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25I
YW5kbGVyLmdldCgpXTsKKyAgICBlbHNlCisgICAgICAgIFttX2NvbnRlbnRTdHJlYW0gc3RhcnRD
YXB0dXJlV2l0aEZyYW1lSGFuZGxlcjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKSBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CiAKICAgICBtX2lzUnVubmluZyA9IHRy
dWU7CiB9CkBAIC0zMzksNyArNDEzLDcgQEAgdm9pZCBTY3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNv
dXJjZTo6dXBkYXRlU3RyZWFtQ29uZmlndXJhdGlvbigpCiB7CiAgICAgQVNTRVJUKG1fY29udGVu
dFN0cmVhbSk7CiAKLSAgICBbbV9jb250ZW50U3RyZWFtIHVwZGF0ZVN0cmVhbUNvbmZpZ3VyYXRp
b246c3RyZWFtQ29uZmlndXJhdGlvbigpLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBpZiAoIWVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDcsOCArNDIxLDEyIEBA
IHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnVwZGF0ZVN0cmVhbUNvbmZpZ3Vy
YXRpb24oKQogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5zdHJlYW1GYWlsZWRXaXRoRXJyb3IoV1RGTW92ZShlcnJvciksICItW1NDU3RyZWFtIHVw
ZGF0ZVN0cmVhbUNvbmZpZ3VyYXRpb246XSBmYWlsZWQiX3MpOwogICAgICAgICB9KTsKLSAgICB9
KS5nZXQoKV07CisgICAgfSk7CiAKKyAgICBpZiAobV91c2VOZXdBUEkpCisgICAgICAgIFttX2Nv
bnRlbnRTdHJlYW0gdXBkYXRlQ29uZmlndXJhdGlvbjpzdHJlYW1Db25maWd1cmF0aW9uKCkuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOworICAgIGVsc2UK
KyAgICAgICAgW21fY29udGVudFN0cmVhbSB1cGRhdGVTdHJlYW1Db25maWd1cmF0aW9uOnN0cmVh
bUNvbmZpZ3VyYXRpb24oKS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxl
ci5nZXQoKV07CiB9CiAKIHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmNvbW1p
dENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cykKQEAgLTM2MCwxMCArNDM4LDExIEBAIHZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3Vy
Y2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjCiAgICAgbV9o
ZWlnaHQgPSBzZXR0aW5ncy5oZWlnaHQoKTsKICAgICBtX2ZyYW1lUmF0ZSA9IHNldHRpbmdzLmZy
YW1lUmF0ZSgpOwogCi0gICAgaWYgKG1fY29udGVudFN0cmVhbSkgewotICAgICAgICBtX3N0cmVh
bUNvbmZpZ3VyYXRpb24gPSBudWxscHRyOwotICAgICAgICB1cGRhdGVTdHJlYW1Db25maWd1cmF0
aW9uKCk7Ci0gICAgfQorICAgIGlmICghbV9jb250ZW50U3RyZWFtKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3N0cmVhbUNvbmZpZ3VyYXRpb24gPSBudWxscHRyOworICAgIHVwZGF0ZVN0cmVh
bUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OlND
Q29udGVudFN0cmVhbVVwZGF0ZUNhbGxiYWNrIFNjcmVlbkNhcHR1cmVLaXRDYXB0dXJlU291cmNl
OjpmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKQpAQCAtMzcxLDUwICs0NTAsNzMgQEAgU2NyZWVuQ2Fw
dHVyZUtpdENhcHR1cmVTb3VyY2U6OlNDQ29udGVudFN0cmVhbVVwZGF0ZUNhbGxiYWNrIFNjcmVl
bkNhcHR1cmVLaXRDYXAKICAgICBpZiAobV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIpCiAgICAgICAg
IHJldHVybiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlci5nZXQoKTsKIAotICAgIG1fZnJhbWVBdmFp
bGFibGVIYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoU0NTdHJlYW0gKiwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBtX2ZyYW1l
QXZhaWxhYmxlSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfV0gKFNDU3RyZWFtICosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikg
bXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1Ro
aXMsIHNhbXBsZUJ1ZmZlciA9IFJldGFpblB0ciB7IHNhbXBsZUJ1ZmZlciB9XSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHN0cmVhbURpZE91
dHB1dFNhbXBsZUJ1ZmZlcihXVEZNb3ZlKHNhbXBsZUJ1ZmZlciksIFNhbXBsZVR5cGU6OlZpZGVv
KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiAKLSAgICAgICAgaWYgKCFzYW1wbGVCdWZmZXIpIHsK
LSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMsIHNhbXBsZUJ1
ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OmZyYW1lQXZhaWxhYmxlSGFu
ZGxlcjogTlVMTCBzYW1wbGUgYnVmZmVyISIpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICByZXR1cm4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXIu
Z2V0KCk7Cit9CiAKLSAgICAgICAgYXV0byBhdHRhY2htZW50cyA9IChfX2JyaWRnZSBOU0FycmF5
ICopUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVm
ZmVyLCBmYWxzZSk7Ci0gICAgICAgIFdLU0NGcmFtZVN0YXR1cyBzdGF0dXMgPSBXS1NDRnJhbWVT
dGF0dXNGcmFtZVN0b3BwZWQ7Ci0gICAgICAgIFthdHRhY2htZW50cyBlbnVtZXJhdGVPYmplY3Rz
VXNpbmdCbG9jazptYWtlQmxvY2tQdHIoWyZdIChOU0RpY3Rpb25hcnkgKmF0dGFjaG1lbnQsIE5T
VUludGVnZXIsIEJPT0wgKnN0b3ApIHsKLSAgICAgICAgICAgIGF1dG8gc3RhdHVzTnVtYmVyID0g
KE5TTnVtYmVyICopYXR0YWNobWVudFtQQUw6OlNDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5XTsK
LSAgICAgICAgICAgIGlmICghc3RhdHVzTnVtYmVyKQotICAgICAgICAgICAgICAgIHJldHVybjsK
K3ZvaWQgU2NyZWVuQ2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0cmVhbURpZE91dHB1dFNhbXBs
ZUJ1ZmZlcihSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1ZmZlciwgU2FtcGxl
VHlwZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgICAgICBzdGF0
dXMgPSAoV0tTQ0ZyYW1lU3RhdHVzKVtzdGF0dXNOdW1iZXIgaW50ZWdlclZhbHVlXTsKLSAgICAg
ICAgICAgICpzdG9wID0gWUVTOwotICAgICAgICB9KS5nZXQoKV07CisgICAgaWYgKCFzYW1wbGVC
dWZmZXIpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiU2NyZWVuQ2FwdHVy
ZUtpdENhcHR1cmVTb3VyY2U6OnN0cmVhbURpZE91dHB1dFNhbXBsZUJ1ZmZlcjogTlVMTCBzYW1w
bGUgYnVmZmVyISIpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIHN3aXRjaCAo
c3RhdHVzKSB7Ci0gICAgICAgIGNhc2UgV0tTQ0ZyYW1lU3RhdHVzRnJhbWVTdGFydGVkOgotICAg
ICAgICBjYXNlIFdLU0NGcmFtZVN0YXR1c0ZyYW1lQ29tcGxldGU6Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNGcmFtZUlkbGU6Ci0gICAgICAgIGNhc2Ug
V0tTQ0ZyYW1lU3RhdHVzRnJhbWVCbGFuazoKLSAgICAgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNG
cmFtZVN1c3BlbmRlZDoKLSAgICAgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNGcmFtZVN0b3BwZWQ6
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgc3RhdGljIE5TU3RyaW5nKiBmcmFtZUluZm9LZXk7
CisgICAgaWYgKCFmcmFtZUluZm9LZXkpIHsKKyAgICAgICAgaWYgKG1fdXNlTmV3QVBJKSB7Cisg
ICAgICAgICAgICBpZiAoUEFMOjpjYW5Mb2FkX1NjcmVlbkNhcHR1cmVLaXRfU0NTdHJlYW1GcmFt
ZUluZm9TdGF0dXMoKSkKKyAgICAgICAgICAgICAgICBmcmFtZUluZm9LZXkgPSBQQUw6OmdldF9T
Y3JlZW5DYXB0dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3RhdHVzKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAoUEFMOjpjYW5Mb2FkX1NjcmVlbkNhcHR1cmVLaXRfU0NTdHJl
YW1GcmFtZUluZm9TdGF0dXNLZXkoKSkKKyAgICAgICAgICAgICAgICBmcmFtZUluZm9LZXkgPSBQ
QUw6OmdldF9TY3JlZW5DYXB0dXJlS2l0X1NDU3RyZWFtRnJhbWVJbmZvU3RhdHVzS2V5KCk7CiAg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGZyYW1lSW5mb0tleSk7CisgICAgICAgIGlmICghZnJh
bWVJbmZvS2V5KQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiU2NyZWVu
Q2FwdHVyZUtpdENhcHR1cmVTb3VyY2U6OnN0cmVhbURpZE91dHB1dFNhbXBsZUJ1ZmZlcjogdW5h
YmxlIHRvIGxvYWQgc3RhdHVzIGtleSEiKTsKKyAgICB9CisgICAgaWYgKCFmcmFtZUluZm9LZXkp
CisgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dl
YWtUaGlzLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gYXR0YWNobWVudHMgPSAoX19icmlkZ2UgTlNBcnJheSAqKVBBTDo6Q01TYW1wbGVC
dWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgZmFsc2Up
OworICAgIFdLU0NGcmFtZVN0YXR1cyBzdGF0dXMgPSBXS1NDRnJhbWVTdGF0dXNTdG9wcGVkOwor
ICAgIFthdHRhY2htZW50cyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazptYWtlQmxvY2tQdHIo
WyZdIChOU0RpY3Rpb25hcnkgKmF0dGFjaG1lbnQsIE5TVUludGVnZXIsIEJPT0wgKnN0b3ApIHsK
KyAgICAgICAgYXV0byBzdGF0dXNOdW1iZXIgPSAoTlNOdW1iZXIgKilhdHRhY2htZW50W2ZyYW1l
SW5mb0tleV07CisgICAgICAgIGlmICghc3RhdHVzTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9pbnRyaW5zaWNTaXplID0gSW50U2l6ZShQQUw6
OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMoUEFMOjpD
TVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKHNhbXBsZUJ1ZmZlci5nZXQoKSksIHRy
dWUsIHRydWUpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2N1cnJlbnRGcmFtZSA9IFdURk1v
dmUoc2FtcGxlQnVmZmVyKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgICAgIHN0YXR1cyA9
IChXS1NDRnJhbWVTdGF0dXMpW3N0YXR1c051bWJlciBpbnRlZ2VyVmFsdWVdOworICAgICAgICAq
c3RvcCA9IFlFUzsKKyAgICB9KS5nZXQoKV07CiAKLSAgICByZXR1cm4gbV9mcmFtZUF2YWlsYWJs
ZUhhbmRsZXIuZ2V0KCk7CisgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICBjYXNlIFdLU0NGcmFt
ZVN0YXR1c1N0YXJ0ZWQ6CisgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNDb21wbGV0ZToKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNJZGxlOgorICAgIGNhc2UgV0tTQ0Zy
YW1lU3RhdHVzQmxhbms6CisgICAgY2FzZSBXS1NDRnJhbWVTdGF0dXNTdXNwZW5kZWQ6CisgICAg
Y2FzZSBXS1NDRnJhbWVTdGF0dXNTdG9wcGVkOgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9pbnRyaW5zaWNTaXplID0gSW50U2l6ZShQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
bkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMoUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERl
c2NyaXB0aW9uKHNhbXBsZUJ1ZmZlci5nZXQoKSksIHRydWUsIHRydWUpKTsKKyAgICBtX2N1cnJl
bnRGcmFtZSA9IFdURk1vdmUoc2FtcGxlQnVmZmVyKTsKK30KKworZGlzcGF0Y2hfcXVldWVfdCBT
Y3JlZW5DYXB0dXJlS2l0Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVF1ZXVlKCkKK3sKKyAgICBpZiAo
IW1fY2FwdHVyZVF1ZXVlKQorICAgICAgICBtX2NhcHR1cmVRdWV1ZSA9IGFkb3B0T1NPYmplY3Qo
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlIENhcHR1
cmUgUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKKworICAgIHJldHVybiBtX2NhcHR1
cmVRdWV1ZS5nZXQoKTsKIH0KIAogQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBTY3JlZW5DYXB0
dXJlS2l0Q2FwdHVyZVNvdXJjZTo6ZGV2aWNlVHlwZSgpIGNvbnN0CkBAIC01MzIsNyArNjM0LDcg
QEAgdm9pZCBmb3JFYWNoTlNXaW5kb3coY29uc3QgRnVuY3Rpb248Ym9vbChOU0RpY3Rpb25hcnkg
KmluZm8sIHVuc2lnbmVkIHdpbmRvd0lELAogICAgICAgICBpZiAod2luZG93TGF5ZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gU2tpcCB3aW5kb3dzIHRoYXQgYXJlbid0IG9u
IHNjcmVlbgorICAgICAgICAvLyBTa2lwIHdpbmRvd3MgdGhhdCBhcmVuJ3Qgb24gc2NyZWVuLgog
ICAgICAgICBpZiAoIVsoTlNOdW1iZXIgKil3aW5kb3dJbmZvWyhfX2JyaWRnZSBOU1N0cmluZyAq
KWtDR1dpbmRvd0lzT25zY3JlZW5dIGludGVnZXJWYWx1ZV0pCiAgICAgICAgICAgICByZXR1cm47
CiAK
</data>
<flag name="commit-queue"
          id="478324"
          type_id="3"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>