<?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>124950</bug_id>
          
          <creation_ts>2013-11-27 15:14:55 -0800</creation_ts>
          <short_desc>[meta] Updating Nix WebCore, WTF and Platform files</short_desc>
          <delta_ts>2014-01-17 09:26:16 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124980</dependson>
    
    <dependson>124981</dependson>
    
    <dependson>124982</dependson>
    
    <dependson>124983</dependson>
    
    <dependson>124984</dependson>
    
    <dependson>124986</dependson>
    
    <dependson>124987</dependson>
    
    <dependson>124989</dependson>
    
    <dependson>125076</dependson>
          <blocked>117657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>benjamin</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>kling</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>954615</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-27 15:14:55 -0800</bug_when>
    <thetext>While Nix WebCore and WTF upstream patches were being accepted, the development was going ahead and files were updated/added.
This only makes our tree identical to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954616</commentid>
    <comment_count>1</comment_count>
      <attachid>217969</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-27 15:24:23 -0800</bug_when>
    <thetext>Created attachment 217969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954717</commentid>
    <comment_count>2</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-28 06:33:41 -0800</bug_when>
    <thetext>I will split this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954761</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-28 09:28:18 -0800</bug_when>
    <thetext>This bug will just keep track of the missing parts in WTF, WebCore and Platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954904</commentid>
    <comment_count>4</comment_count>
      <attachid>217969</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-29 01:23:13 -0800</bug_when>
    <thetext>Comment on attachment 217969
Patch

Is is obsolete since it was split up smaller pieces.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217969</attachid>
            <date>2013-11-27 15:24:23 -0800</date>
            <delta_ts>2013-11-29 01:23:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124950-20131127202420.patch</filename>
            <type>text/plain</type>
            <size>193449</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5ODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NTk1NTBjMzAzMjhl
ZjBiNjJhM2MxZjM4ZDc2MzFiMDEwZTU0ODg5Li44YzczMDZhY2UwMDg1NDVlZmE4NTBlZDM0ODkz
NWZjZjlhOWMyYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMy0xMS0yNyAg
VGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBVcGRhdGluZyBOaXggV2ViQ29yZSBhbmQgV1RGIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5NTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGlsZSBOaXggV2ViQ29yZSBh
bmQgV1RGIHVwc3RyZWFtIHBhdGNoZXMgd2VyZSBiZWluZyBhY2NlcHRlZCwgdGhlIGRldmVsb3Bt
ZW50IHdhcyBnb2luZyBhaGVhZAorICAgICAgICBhbmQgZmlsZXMgd2VyZSB1cGRhdGVkL2FkZGVk
LiBUaGlzIG9ubHkgbWFrZXMgb3VyIHRyZWUgaWRlbnRpY2FsIHRvIHRydW5rLgorCisgICAgICAg
ICogUGxhdGZvcm1OaXguY21ha2U6CisgICAgICAgICogbml4L3B1YmxpYy9BdWRpb0Rlc3RpbmF0
aW9uQ29uc3VtZXIuaDogQWRkZWQuCisgICAgICAgIChOaXg6OkF1ZGlvRGVzdGluYXRpb25Db25z
dW1lcjo6fkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcik6CisgICAgICAgICogbml4L3B1YmxpYy9N
ZWRpYUNvbnN0cmFpbnRzLmg6IEFkZGVkLgorICAgICAgICAoTml4OjpNZWRpYUNvbnN0cmFpbnQ6
Ok1lZGlhQ29uc3RyYWludCk6CisgICAgICAgIChOaXg6Ok1lZGlhQ29uc3RyYWludHM6Ok1lZGlh
Q29uc3RyYWludHMpOgorICAgICAgICAoTml4OjpNZWRpYUNvbnN0cmFpbnRzOjp+TWVkaWFDb25z
dHJhaW50cyk6CisgICAgICAgIChOaXg6Ok1lZGlhQ29uc3RyYWludHM6OmlzTnVsbCk6CisgICAg
ICAgICogbml4L3B1YmxpYy9NZWRpYVN0cmVhbS5oOiBBZGRlZC4KKyAgICAgICAgKE5peDo6TWVk
aWFTdHJlYW06Ok1lZGlhU3RyZWFtKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW06On5NZWRp
YVN0cmVhbSk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIG5peC9wdWJsaWMvTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oOiBBZGRlZC4KKyAgICAgICAg
KE5peDo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSk6Cisg
ICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6On5NZWRpYVN0cmVhbUF1ZGlvU291
cmNlKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6b3BlcmF0b3I9KToK
KyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6aXNOdWxsKToKKyAgICAgICAg
KiBuaXgvcHVibGljL01lZGlhU3RyZWFtQ2VudGVyLmg6IEFkZGVkLgorICAgICAgICAqIG5peC9w
dWJsaWMvTWVkaWFTdHJlYW1Tb3VyY2UuaDogQWRkZWQuCisgICAgICAgIChOaXg6Ok1lZGlhU3Ry
ZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFt
U291cmNlOjp+TWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoTml4OjpNZWRpYVN0cmVhbVNv
dXJjZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1Tb3VyY2U6OmlzTnVs
bCk6CisgICAgICAgICogbml4L3B1YmxpYy9Qcml2YXRlUHRyLmg6IEFkZGVkLgorICAgICAgICAo
Tml4OjpQcml2YXRlUHRyOjpQcml2YXRlUHRyKToKKyAgICAgICAgKE5peDo6UHJpdmF0ZVB0cjo6
flByaXZhdGVQdHIpOgorICAgICAgICAoTml4OjpQcml2YXRlUHRyOjppc051bGwpOgorICAgICAg
ICAoTml4OjpQcml2YXRlUHRyOjpyZXNldCk6CisgICAgICAgIChOaXg6OlByaXZhdGVQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChOaXg6OlByaXZhdGVQdHI6OmdldCk6CisgICAgICAgIChOaXg6
OlByaXZhdGVQdHI6Om9wZXJhdG9yLT4pOgorICAgICAgICAoTml4OjpQcml2YXRlUHRyOjphc3Np
Z24pOgorCiAyMDEzLTExLTI2ICBNYXJjZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3Nh
Lm9yZz4KIAogICAgICAgICBOaXggdXBzdHJlYW1pbmcgLSBBZGRpbmcgYnVpbGQgZmlsZXMgYW5k
IHN1cHBvcnRpbmcgc2NyaXB0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YjZmMWE5YjkwMmVjZjVmZTdkMjZhYWY4ZTgyOWIz
MzU0ZDM5NmJjLi5mZjcxNWNlYTczYzQ2NjRjYWI4N2ZjOTJiZTE0ZTExM2E4M2I3YzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM1IEBACisyMDEzLTExLTI3ICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0
aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFVwZGF0aW5nIE5peCBXZWJD
b3JlIGFuZCBXVEYgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDk1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdoaWxlIE5peCBXZWJDb3JlIGFuZCBXVEYgdXBzdHJlYW0gcGF0Y2hlcyB3ZXJl
IGJlaW5nIGFjY2VwdGVkLCB0aGUgZGV2ZWxvcG1lbnQgd2FzIGdvaW5nIGFoZWFkCisgICAgICAg
IGFuZCBmaWxlcyB3ZXJlIHVwZGF0ZWQvYWRkZWQuIFRoaXMgb25seSBtYWtlcyBvdXIgdHJlZSBp
ZGVudGljYWwgdG8gdHJ1bmsuCisKKyAgICAgICAgKiB3dGYvRGlzYWxsb3dDVHlwZS5oOgorICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybU5peC5jbWFrZToKKyAgICAgICAgKiB3dGYvbml4L0ZlYXR1cmVE
ZWZpbmVzTml4Lmg6CisgICAgICAgICogd3RmL25peC9QbGF0Zm9ybU5peC5oOgorICAgICAgICAq
IHd0Zi9uaXgvUnVuTG9vcE5peC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpS
dW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1bkxvb3ApOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppbm5lcm1vc3RMb29wKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6cHVzaE5lc3RlZE1haW5Mb29wKToKKyAgICAgICAgKFdU
Rjo6UnVuTG9vcDo6cG9wTmVzdGVkTWFpbkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cXVldWVXb3JrKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1l
ckJhc2UpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmNsZWFyVGltZXJTb3VyY2UpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWRDYWxsYmFjayk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6
OmlzQWN0aXZlKToKKwogMjAxMy0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIERvIGJ5dGVjb2RlIHZhbGlkYXRpb24gYXMgcGFydCBvZiB0ZXN0aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMjhlZmU4MzEyYmYxNzUxOGFjOTEwNDA5MWNmYjk5OGNkZDc3YzUyZS4uZjE0
OWMyYTk5ZWJkOTU1NGEwMjBjNzdlM2VjNWM0YzY5MjcwODFmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDMwNiBAQAogMjAxMy0xMS0yNyAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdv
LmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KIAorICAgICAgICBVcGRhdGluZyBOaXggV2ViQ29yZSBh
bmQgV1RGIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ5NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGlsZSBOaXggV2ViQ29yZSBhbmQgV1RGIHVwc3RyZWFtIHBhdGNoZXMgd2VyZSBiZWlu
ZyBhY2NlcHRlZCwgdGhlIGRldmVsb3BtZW50IHdhcyBnb2luZyBhaGVhZAorICAgICAgICBhbmQg
ZmlsZXMgd2VyZSB1cGRhdGVkL2FkZGVkLiBUaGlzIG9ubHkgbWFrZXMgb3VyIHRyZWUgaWRlbnRp
Y2FsIHRvIHRydW5rLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAg
KiBQbGF0Zm9ybU5peC5jbWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
On5Xb3JrZXJTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6c2V0SW5pdFNjcmlwdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjp0ZXJtaW5hdGVTY3Jp
cHRDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzTml4LmNzczoKKyAgICAgICAgKGF1ZGlv
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzKToKKyAgICAgICAgKGF1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3VyZSwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZW5jbG9zdXJlKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWVuY2xvc3VyZSk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAgICAgICAo
dmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEpOgorICAgICAgICAoYXVkaW86LXdlYmtpdC1m
dWxsLXBhZ2UtbWVkaWEsIHZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhKToKKyAgICAgICAg
KGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1vdmVybGF5LXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1vdmVybGF5LXBsYXktYnV0dG9uKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
bGF5LWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1l
bGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNv
bnRhaW5lcik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJl
bWFpbmluZy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFp
bmluZy1kaXNwbGF5KToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSk6CisgICAgICAg
IChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyKToKKyAgICAgICAgKGlucHV0W3R5cGU9
InJhbmdlIl06Oi13ZWJraXQtbWVkaWEtc2xpZGVyLWNvbnRhaW5lcik6CisgICAgICAgIChpbnB1
dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIgPiBkaXYpOgor
ICAgICAgICAoaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIp
OgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRv
biwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbik6CisgICAg
ICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLCB2aWRl
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAgIChh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRv
biwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1i
dXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi12b2x1bWUtc2xpZGVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi12b2x1bWUtbWluLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi12b2x1bWUtbWluLWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0dG9uLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyKToKKyAgICAgICAg
KHZpZGVvOjpjdWUpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1y
ZWdpb24pOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24t
Y29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVn
aW9uLWNvbnRhaW5lci5zY3JvbGxpbmcpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjpjdWUoOmZ1dHVyZSkpOgorICAg
ICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIgYik6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciB1KToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIGkpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvcHlJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL25peC9FZGl0b3JOaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFz
dGVXaXRoUGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNOaXguY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNOaXg6Ok1lZGlhQ29udHJvbHNOaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHNOaXg6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNOaXg6OmluaXRpYWxpemVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xzTml4OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sc05peDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc05p
eDo6cGxheWJhY2tTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNOaXg6
OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzTml4OjpjaGFuZ2VkTXV0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c05peC5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVTY3JvbGxQb3NpdGlv
bkFuZFZpZXdTdGF0ZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVTaW5nbGVUYXApOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vQ3Vyc29yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9u
aXgvQXVkaW9CdXNOaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbml4L01lZGlhUGxheWVyUHJpdmF0ZU5peC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpyZWdpc3Rlck1lZGlhRW5n
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6Z2V0U3VwcG9ydGVkVHlw
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpzdXBwb3J0c1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4Ojptb3ZpZUxvYWRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6aXNMaXZlU3Ry
ZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5peE1lZGlhUGxheWVyQ2xpZW50OjpOaXhNZWRpYVBs
YXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU5peCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVOaXg6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4Ojpj
YW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6cHJl
cGFyZVRvUGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6OnBs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpwYXVzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6OmR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6Y3VycmVudFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpuYXR1cmFsU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6aGFzQXVkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6c2Vla2luZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVOaXg6OnNlZWspOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTml4OjptYXhUaW1lU2Vla2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTml4OjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU5peDo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU5peDo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6
bmV0d29ya1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6
c2V0TmV0d29ya1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5p
eDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6
OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4
OjpidWZmZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVOaXg6OmRp
ZExvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVO
aXg6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTml4Ojpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L01lZGlhUGxheWVyUHJpdmF0
ZU5peC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5peDo6
ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU5p
eDo6Y3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6Z2V0QW5jZXN0b3JTY3JvbGxhYmxlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6Y29tbWl0UGVuZGluZ1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNSZW1vdGVDb250ZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6Omxv
Y2tTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVu
bG9ja1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9uaXgvTWVkaWFTdHJl
YW1DZW50ZXJOaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2Vu
dGVyOjpwbGF0Zm9ybUNlbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRl
ck5peDo6TWVkaWFTdHJlYW1DZW50ZXJOaXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1DZW50ZXJOaXg6On5NZWRpYVN0cmVhbUNlbnRlck5peCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNlbnRlck5peDo6dmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJOaXg6OmNyZWF0ZU1lZGlhU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyTml4OjpnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbml4L01lZGlhU3RyZWFt
Q2VudGVyTml4Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25peC9DdXJzb3JOaXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcik6CisgICAg
ICAgICogcGxhdGZvcm0vbml4L0Vycm9yc05peC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVEb2VzTm90RXhpc3RF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRvd25sb2FkTmV0d29ya0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OmRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZG93bmxv
YWREZXN0aW5hdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJpbnRlck5vdEZvdW5kRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
aW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25peC9FcnJvcnNO
aXguaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbml4L0ZpbGVTeXN0ZW1OaXguY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVu
YW1lRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRXhpc3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
aG9tZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpzaGFyZWRSZXNvdXJjZXNQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFZvbHVt
ZUZyZWVTaXplRm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRl
bXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xvc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNlZWtGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjp1bmxvYWRNb2R1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25p
eC9HYW1lcGFkc05peC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbml4L01JTUVUeXBlUmVnaXN0cnlOaXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVn
aW5NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSW50U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05peFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4
OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU5peDo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5p
eDo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6
cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtRm9jdXNSaW5n
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtVGFwSGln
aGxpZ2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwYWludFRleHRGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6cGFpbnRDaGVja2JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6c2V0Q2hlY2tib3hTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTml4OjpzZXRSYWRpb1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVOaXg6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVO
aXg6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6
OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBhaW50
SW5uZXJTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwYWlu
dE1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpleHRyYU1lZGlhQ29u
dHJvbHNTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTml4OjpwYWlu
dE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6cGFp
bnRNZWRpYU11dGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBh
aW50TWVkaWFTZWVrQmFja0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5p
eDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTml4OjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU5peDo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbik6
CisgICAgICAgICogcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbml4L1NoYXJlZFRpbWVyTml4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpz
ZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6dGltZW91dENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0b3BTaGFyZWRUaW1lcik6CisgICAgICAgICogcGxhdGZvcm0v
bml4L1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0
U3VwcG9ydGVkS2V5U2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYUNv
bnN0cmFpbnRzTml4LmNwcDogQWRkZWQuCisgICAgICAgIChOaXg6OnRvTml4TWVkaWFDb25zdHJh
aW50KToKKyAgICAgICAgKE5peDo6TWVkaWFDb25zdHJhaW50czo6TWVkaWFDb25zdHJhaW50cyk6
CisgICAgICAgIChOaXg6Ok1lZGlhQ29uc3RyYWludHM6OmFzc2lnbik6CisgICAgICAgIChOaXg6
Ok1lZGlhQ29uc3RyYWludHM6OnJlc2V0KToKKyAgICAgICAgKE5peDo6TWVkaWFDb25zdHJhaW50
czo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMpOgorICAgICAgICAoTml4OjpNZWRpYUNvbnN0cmFp
bnRzOjpnZXRPcHRpb25hbENvbnN0cmFpbnRzKToKKyAgICAgICAgKE5peDo6TWVkaWFDb25zdHJh
aW50czo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKToKKyAgICAgICAgKE5peDo6TWVkaWFD
b25zdHJhaW50czo6Z2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUpOgorICAgICAgICAqIHBsYXRm
b3JtL25peC9zdXBwb3J0L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOaXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKE5peDo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZSk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmFzc2lnbik6CisgICAgICAgIChO
aXg6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnJlc2V0KToKKyAgICAgICAgKE5peDo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlPik6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Om9w
ZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UqKToKKyAgICAgICAgKE5peDo6
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6dG9XZWJDb3JlQXVkaW9Tb3VyY2UpOgorICAgICAgICAo
Tml4OjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpkZXZpY2VJZCk6CisgICAgICAgIChOaXg6Ok1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnNldERldmljZUlkKToKKyAgICAgICAgKE5peDo6Q29uc3Vt
ZXJXcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoTml4OjpDb25zdW1lcldyYXBwZXI6OmNvbnN1
bWVyKToKKyAgICAgICAgKE5peDo6Q29uc3VtZXJXcmFwcGVyOjpDb25zdW1lcldyYXBwZXIpOgor
ICAgICAgICAoTml4OjpDb25zdW1lcldyYXBwZXI6OnNldEZvcm1hdCk6CisgICAgICAgIChOaXg6
OkNvbnN1bWVyV3JhcHBlcjo6Y29uc3VtZUF1ZGlvKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJl
YW1BdWRpb1NvdXJjZTo6YWRkQXVkaW9Db25zdW1lcik6CisgICAgICAgIChOaXg6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2U6OnJlbW92ZUF1ZGlvQ29uc3VtZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25peC9zdXBwb3J0L01lZGlhU3RyZWFtQ2VudGVyTml4LmNwcDogQWRkZWQuCisgICAgICAgIChO
aXg6Ok1lZGlhU3RyZWFtQ2VudGVyOjpNZWRpYVN0cmVhbUNlbnRlcik6CisgICAgICAgIChOaXg6
Ok1lZGlhU3RyZWFtQ2VudGVyOjpyZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvc3Vw
cG9ydC9NZWRpYVN0cmVhbU5peC5jcHA6IEFkZGVkLgorICAgICAgICAoTml4OjpNZWRpYVN0cmVh
bTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAoTml4OjpNZWRpYVN0cmVhbTo6cmVzZXQpOgorICAg
ICAgICAoTml4OjpNZWRpYVN0cmVhbTo6aWQpOgorICAgICAgICAoTml4OjpNZWRpYVN0cmVhbTo6
YXVkaW9Tb3VyY2VzKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW06OnZpZGVvU291cmNlcyk6
CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtOjphZGRTb3VyY2UpOgorICAgICAgICAoTml4OjpN
ZWRpYVN0cmVhbTo6cmVtb3ZlU291cmNlKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW06Om9w
ZXJhdG9yPSk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtOjpvcGVyYXRvciBQYXNzUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZT4pOgorICAgICAgICAoTml4OjpNZWRpYVN0cmVh
bTo6b3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlKik6CisgICAgICAgIChOaXg6
Ok1lZGlhU3RyZWFtOjppbml0aWFsaXplKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW06OmFz
c2lnbik6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtOjppc051bGwpOgorICAgICAgICAqIHBs
YXRmb3JtL25peC9zdXBwb3J0L01lZGlhU3RyZWFtU291cmNlTml4LmNwcDogQWRkZWQuCisgICAg
ICAgIChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAg
IChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjpvcGVyYXRvcj0pOgorICAgICAgICAoTml4OjpNZWRp
YVN0cmVhbVNvdXJjZTo6YXNzaWduKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1Tb3VyY2U6
OnJlc2V0KToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1Tb3VyY2U6Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U+KToKKyAgICAgICAgKE5peDo6TWVkaWFT
dHJlYW1Tb3VyY2U6Om9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlKik6CisgICAg
ICAgIChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjppZCk6CisgICAgICAgIChOaXg6Ok1lZGlhU3Ry
ZWFtU291cmNlOjp0eXBlKToKKyAgICAgICAgKE5peDo6TWVkaWFTdHJlYW1Tb3VyY2U6Om5hbWUp
OgorICAgICAgICAoTml4OjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAg
ICAgIChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKE5peDo6
TWVkaWFTdHJlYW1Tb3VyY2U6OnNldEVuYWJsZWQpOgorICAgICAgICAoTml4OjpNZWRpYVN0cmVh
bVNvdXJjZTo6ZW5hYmxlZCk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRN
dXRlZCk6CisgICAgICAgIChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjptdXRlZCk6CisgICAgICAg
IChOaXg6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkb25seSk6CisgICAgICAgIChOaXg6Ok1l
ZGlhU3RyZWFtU291cmNlOjpyZWFkb25seSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2FuVXNl
Rm9yKToKKworMjAxMy0xMS0yNyAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxh
Y2VyZGFAb3BlbmJvc3NhLm9yZz4KKwogICAgICAgICBBZGRpbmcgTWVkaWFDb25zdHJhaW50c01v
Y2sgY2xhc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDkwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm1OaXguY21ha2Ug
Yi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm1OaXguY21ha2UKaW5kZXggZDMxOWQyNDRhY2NiYjhj
Nzc3MWQ5NWRlNDNlNTJmMThmYmQxNmUxMy4uODE4NzY1ODE0NWZlZDE0M2VkMmU2ODAwMGNjNGIy
NDdlODI3NmE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtTml4LmNtYWtl
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybU5peC5jbWFrZQpAQCAtNiw2ICs2LDcgQEAg
c2V0KFBsYXRmb3JtX0lOQ0xVREVTCiApCiAKIHNldChQbGF0Zm9ybV9IRUFERVJTCisgICAgbml4
L3B1YmxpYy9BdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaAogICAgIG5peC9wdWJsaWMvQXVkaW9E
ZXZpY2UuaAogICAgIG5peC9wdWJsaWMvQ2FudmFzLmgKICAgICBuaXgvcHVibGljL0NvbG9yLmgK
QEAgLTEzLDkgKzE0LDE1IEBAIHNldChQbGF0Zm9ybV9IRUFERVJTCiAgICAgbml4L3B1YmxpYy9G
RlRGcmFtZS5oCiAgICAgbml4L3B1YmxpYy9HYW1lcGFkLmgKICAgICBuaXgvcHVibGljL0dhbWVw
YWRzLmgKKyAgICBuaXgvcHVibGljL01lZGlhQ29uc3RyYWludHMuaAogICAgIG5peC9wdWJsaWMv
TWVkaWFQbGF5ZXIuaAorICAgIG5peC9wdWJsaWMvTWVkaWFTdHJlYW0uaAorICAgIG5peC9wdWJs
aWMvTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oCisgICAgbml4L3B1YmxpYy9NZWRpYVN0cmVhbUNl
bnRlci5oCisgICAgbml4L3B1YmxpYy9NZWRpYVN0cmVhbVNvdXJjZS5oCiAgICAgbml4L3B1Ymxp
Yy9NdWx0aUNoYW5uZWxQQ01EYXRhLmgKICAgICBuaXgvcHVibGljL1BsYXRmb3JtLmgKKyAgICBu
aXgvcHVibGljL1ByaXZhdGVQdHIuaAogICAgIG5peC9wdWJsaWMvUmVjdC5oCiAgICAgbml4L3B1
YmxpYy9TaXplLmgKICAgICBuaXgvcHVibGljL1RoZW1lRW5naW5lLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9uaXgvcHVibGljL0F1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oIGIvU291
cmNlL1BsYXRmb3JtL25peC9wdWJsaWMvQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2M5NzhkMmQ4YWY1OGNmMjY3MDAyMjUzNTYwNjYxMWVhOTg3OGM1ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9uaXgvcHVibGljL0F1ZGlvRGVzdGluYXRpb25Db25z
dW1lci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE5peF9BdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXJfaAorI2RlZmluZSBOaXhfQXVkaW9EZXN0
aW5hdGlvbkNvbnN1bWVyX2gKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8dmVjdG9y
PgorCituYW1lc3BhY2UgTml4IHsKKworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0
IHNhbXBsZVJhdGUpID0gMDsKKworICAgIC8vIFRoZSBzaXplIG9mIHRoZSB2ZWN0b3IgaXMgdGhl
IG51bWJlciBvZiBhdWRpbyBjaGFubmVscywgYW5kIG51bWJlck9mRnJhbWVzIGlzIHRoZQorICAg
IC8vIG51bWJlciBvZiBhdWRpbyBmcmFtZXMgaW4gdGhlIChwb3NzaWJseSBtdWx0aS1jaGFubmVs
KSBidWZmZXIgaW4gYSBwbGFuYXIgZm9ybWF0LgorICAgIHZpcnR1YWwgdm9pZCBjb25zdW1lQXVk
aW8oY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgZmxvYXQqPiYgcGNtRGF0YSwgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBOaXgKKworI2VuZGlmIC8vIE5p
eF9BdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXJfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vbml4L3B1YmxpYy9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1
YmxpYy9NZWRpYUNvbnN0cmFpbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTliNGRmYTQ4MTE1ODQ1N2Y1NGEx
OWI1NTg5NmM4YWU4NTZjNWUxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9u
aXgvcHVibGljL01lZGlhQ29uc3RyYWludHMuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOaXhfTWVkaWFDb25zdHJhaW50c19o
CisjZGVmaW5lIE5peF9NZWRpYUNvbnN0cmFpbnRzX2gKKworI2luY2x1ZGUgIkNvbW1vbi5oIgor
I2luY2x1ZGUgIlByaXZhdGVQdHIuaCIKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IE1lZGlhQ29uc3RyYWludDsKK2NsYXNzIE1lZGlhQ29uc3RyYWludHM7Cit9CisKK25hbWVzcGFj
ZSBOaXggeworCitzdHJ1Y3QgTWVkaWFDb25zdHJhaW50IHsKKyAgICBNZWRpYUNvbnN0cmFpbnQo
KQorICAgIHsKKyAgICB9CisKKyAgICBNZWRpYUNvbnN0cmFpbnQoc3RkOjpzdHJpbmcgbmFtZSwg
c3RkOjpzdHJpbmcgdmFsdWUpCisgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgbV9uYW1lOworICAg
IHN0ZDo6c3RyaW5nIG1fdmFsdWU7Cit9OworCitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzIHsKK3B1
YmxpYzoKKyAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CisgICAgfk1lZGlhQ29uc3RyYWludHMo
KSB7IHJlc2V0KCk7IH0KKworICAgIHZvaWQgYXNzaWduKGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
KTsKKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICBOSVhfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBOSVhfRVhQT1JUIHZvaWQg
Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMoc3RkOjp2ZWN0b3I8TWVkaWFDb25zdHJhaW50PiYpIGNv
bnN0OworICAgIE5JWF9FWFBPUlQgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKHN0ZDo6dmVj
dG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdDsKKworICAgIE5JWF9FWFBPUlQgYm9vbCBnZXRN
YW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgY2hhciogbmFtZSwgc3RkOjpzdHJpbmcmIHZh
bHVlKSBjb25zdDsKKyAgICBOSVhfRVhQT1JUIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFs
dWUoY29uc3QgY2hhciogbmFtZSwgc3RkOjpzdHJpbmcmIHZhbHVlKSBjb25zdDsKKworI2lmZGVm
IEJVSUxESU5HX05JWF9fCisgICAgTWVkaWFDb25zdHJhaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRzKFdl
YkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFByaXZh
dGVQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgTml4CisKKyNlbmRpZiAvLyBOaXhfTWVkaWFDb25zdHJhaW50c19oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9uaXgvcHVibGljL01lZGlhU3RyZWFtLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vbml4L3B1YmxpYy9NZWRpYVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjOGExOWE5MWU3
YjgzMDI0ZTEwNjA0ZGQ3OGQxMWQ0ODczZjMwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vbml4L3B1YmxpYy9NZWRpYVN0cmVhbS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5peF9NZWRpYVN0cmVhbV9oCisjZGVmaW5l
IE5peF9NZWRpYVN0cmVhbV9oCisKKyNpbmNsdWRlICJDb21tb24uaCIKKyNpbmNsdWRlICJQcml2
YXRlUHRyLmgiCisKKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOworfQorCituYW1lc3Bh
Y2UgTml4IHsKKworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7CitjbGFzcyBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOworCitjbGFzcyBNZWRpYVN0cmVhbSB7CitwdWJsaWM6CisgICAgTWVkaWFTdHJl
YW0oKSB7IH0KKyAgICBNZWRpYVN0cmVhbShjb25zdCBNZWRpYVN0cmVhbSYgb3RoZXIpIHsgYXNz
aWduKG90aGVyKTsgfQorICAgIH5NZWRpYVN0cmVhbSgpIHsgcmVzZXQoKTsgfQorCisgICAgTWVk
aWFTdHJlYW0mIG9wZXJhdG9yPShjb25zdCBNZWRpYVN0cmVhbSYgb3RoZXIpCisgICAgeworICAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
TklYX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBNZWRpYVN0cmVhbSYpOworCisgICAgLy8gVGFr
ZXMgb3duZXJzaGlwIG9mIHRoZSBNZWRpYVN0cmVhbVNvdXJjZSogcG9pbnRlcnMsIGRlbGV0aW5n
IHRoZW0uCisgICAgTklYX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoc3RkOjp2ZWN0b3I8TWVkaWFT
dHJlYW1Tb3VyY2UqPiYgYXVkaW9UcmFja3MsIHN0ZDo6dmVjdG9yPE1lZGlhU3RyZWFtU291cmNl
Kj4mIHZpZGVvVHJhY2tzKTsKKworICAgIE5JWF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIE5J
WF9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsKKworCisgICAgTklYX0VYUE9SVCBjb25zdCBj
aGFyKiBpZCgpIGNvbnN0OworCisgICAgLy8gQ2FsbGVyIG11c3QgZGVsZXRlIHRoZSByZXR1cm5l
ZCBNZWRpYVN0cmVhbVNvdXJjZSoKKyAgICBOSVhfRVhQT1JUIHN0ZDo6dmVjdG9yPE1lZGlhU3Ry
ZWFtU291cmNlKj4gYXVkaW9Tb3VyY2VzKCkgY29uc3Q7CisgICAgTklYX0VYUE9SVCBzdGQ6OnZl
Y3RvcjxNZWRpYVN0cmVhbVNvdXJjZSo+IHZpZGVvU291cmNlcygpIGNvbnN0OworCisgICAgTklY
X0VYUE9SVCB2b2lkIGFkZFNvdXJjZShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZSYpOworICAgIE5J
WF9FWFBPUlQgdm9pZCByZW1vdmVTb3VyY2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2UmKTsKKwor
I2lmIEJVSUxESU5HX05JWF9fCisgICAgTWVkaWFTdHJlYW0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Q
cml2YXRlKik7CisgICAgTWVkaWFTdHJlYW0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhU3RyZWFtUHJpdmF0ZT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlPigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtUHJpdmF0ZSooKSBjb25zdDsKKyAgICBNZWRpYVN0cmVhbSYgb3BlcmF0b3I9
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU+Jik7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgTml4CisKKyNlbmRpZiAvLyBO
aXhfTWVkaWFTdHJlYW1faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1Ymxp
Yy9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1YmxpYy9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY2N2FjZDc5YzY0YjU4MWNmOWJj
MzBjMTI4NjE2OTcyYzhiMjdmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9u
aXgvcHVibGljL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaApAQCAtMCwwICsxLDc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTml4X01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VfaAorI2RlZmluZSBOaXhfTWVkaWFTdHJlYW1BdWRpb1NvdXJjZV9oCisKKyNp
bmNsdWRlICJDb21tb24uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOworfQorCituYW1l
c3BhY2UgTml4IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcjsKKworY2xhc3MgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZSA6IHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6
CisgICAgTklYX0VYUE9SVCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKCk7CisgICAgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZShjb25zdCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlJiBvdGhlcikgOiBNZWRp
YVN0cmVhbVNvdXJjZShvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9CisgICAgfk1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2UoKSB7IHJlc2V0KCk7IH0KKworICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2Um
IG9wZXJhdG9yPShjb25zdCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlJiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBOSVhfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UmKTsK
KworICAgIE5JWF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CisKKyAgICBOSVhfRVhQT1JUIGNvbnN0IGNo
YXIqIGRldmljZUlkKCkgY29uc3Q7CisgICAgTklYX0VYUE9SVCB2b2lkIHNldERldmljZUlkKGNv
bnN0IGNoYXIqKTsKKworICAgIC8vIFRoZSBOaXg6OkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciBp
cyBub3Qgb3duZWQsIGFuZCBoYXMgdG8gYmUgZGlzcG9zZWQgb2Ygc2VwYXJhdGVseQorICAgIC8v
IGFmdGVyIGNhbGxpbmcgcmVtb3ZlQXVkaW9Db25zdW1lci4KKyAgICBOSVhfRVhQT1JUIHZvaWQg
YWRkQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsKKyAgICBOSVhfRVhQ
T1JUIGJvb2wgcmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqKTsK
KworI2lmIEJVSUxESU5HX05JWF9fCisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4mKTsKKyAgICBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlJiBvcGVyYXRvcj0oV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZSopOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0
cmVhbUF1ZGlvU291cmNlPigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UqKCkgY29uc3Q7Citwcml2YXRlOgorICAgIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UqIHRvV2ViQ29yZUF1ZGlvU291cmNlKCkgY29uc3Q7CisjZW5kaWYKKwor
fTsKKworfSAvLyBuYW1lc3BhY2UgTml4CisKKyNlbmRpZiAvLyBOaXhfTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9uaXgvcHVibGljL01lZGlh
U3RyZWFtQ2VudGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1YmxpYy9NZWRpYVN0cmVhbUNl
bnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE1YjQ3OWRiOTRmNzIxMGNiZTZjY2Q3M2YwMTY1NGMyMGFjOTBl
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1YmxpYy9NZWRpYVN0
cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE5peF9NZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVmaW5lIE5peF9NZWRpYVN0cmVh
bUNlbnRlcl9oCisKKyNpbmNsdWRlICJDb21tb24uaCIKKyNpbmNsdWRlICJQcml2YXRlUHRyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVyOworfQorCitu
YW1lc3BhY2UgTml4IHsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1Tb3Vy
Y2U7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworCitjbGFzcyBOSVhfRVhQT1JUIE1lZGlhU3Ry
ZWFtQ2VudGVyIHsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNlbnRlcigpOworICAgIHZvaWQg
cmVxdWVzdCgpOworICAgIC8vIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmFpbGVkIGNvbnN0cmFp
bnQuIDAgaWYgc3VjY2Vzc2Z1bC4KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHZhbGlkYXRlUmVx
dWVzdENvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlh
Q29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhU3Ry
ZWFtIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsKKworfTsKKworfSAvLyBu
YW1lc3BhY2UgTml4CisKKyNlbmRpZiAvLyBOaXhfTWVkaWFTdHJlYW1DZW50ZXJfaAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vbml4L3B1YmxpYy9NZWRpYVN0cmVhbVNvdXJjZS5oIGIv
U291cmNlL1BsYXRmb3JtL25peC9wdWJsaWMvTWVkaWFTdHJlYW1Tb3VyY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MDA5MmNiYTZhZWE1ZGM1YjkxNGFkNjQ2YTBhZmU1YWQzNWViZDllCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1BsYXRmb3JtL25peC9wdWJsaWMvTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAt
MCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTml4X01lZGlhU3RyZWFtU291cmNlX2gKKyNkZWZpbmUgTml4X01lZGlhU3RyZWFtU291cmNl
X2gKKworI2luY2x1ZGUgIkNvbW1vbi5oIgorI2luY2x1ZGUgIlByaXZhdGVQdHIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7Cit9CisKK25hbWVzcGFj
ZSBOaXggeworCitjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSB7CitwdWJsaWM6CisKKyAgICBlbnVt
IFR5cGUgeworICAgICAgICBBdWRpbywKKyAgICAgICAgVmlkZW8KKyAgICB9OworCisgICAgZW51
bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUxpdmUgPSAwLAorICAgICAgICBSZWFk
eVN0YXRlTXV0ZWQgPSAxLAorICAgICAgICBSZWFkeVN0YXRlRW5kZWQgPSAyCisgICAgfTsKKwor
ICAgIE1lZGlhU3RyZWFtU291cmNlKCkgeyB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3Qg
TWVkaWFTdHJlYW1Tb3VyY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB2aXJ0dWFs
IH5NZWRpYVN0cmVhbVNvdXJjZSgpIHsgcmVzZXQoKTsgfQorCisgICAgTWVkaWFTdHJlYW1Tb3Vy
Y2UmIG9wZXJhdG9yPShjb25zdCBNZWRpYVN0cmVhbVNvdXJjZSYgb3RoZXIpCisgICAgeworICAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
TklYX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBNZWRpYVN0cmVhbVNvdXJjZSYpOworCisgICAg
TklYX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIE5JWF9FWFBPUlQgY29uc3QgY2hhciogaWQo
KSBjb25zdDsKKyAgICBOSVhfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OworICAgIE5JWF9FWFBP
UlQgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OworCisgICAgTklYX0VYUE9SVCB2b2lkIHNldFJl
YWR5U3RhdGUoUmVhZHlTdGF0ZSk7CisgICAgTklYX0VYUE9SVCBSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdDsKKworICAgIE5JWF9FWFBPUlQgYm9vbCBlbmFibGVkKCkgY29uc3Q7CisgICAg
TklYX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisKKyAgICBOSVhfRVhQT1JUIGJvb2wg
bXV0ZWQoKSBjb25zdDsKKyAgICBOSVhfRVhQT1JUIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CisKKyAg
ICBOSVhfRVhQT1JUIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKKyAgICBOSVhfRVhQT1JUIHZvaWQg
c2V0UmVhZG9ubHkoYm9vbCk7CisKKyAgICAvLyBGSVhNRSBBZGQgc3VwcG9ydCBmb3IgY2FwYWJp
bGl0ZXMuCisKKyNpZiBCVUlMRElOR19OSVhfXworICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKyAgICBNZWRp
YVN0cmVhbVNvdXJjZSYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlKik7Cisg
ICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlPigp
IGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlKigpIGNvbnN0
OworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBOaXgKKworI2VuZGlm
IC8vIE5peF9NZWRpYVN0cmVhbVNvdXJjZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9uaXgvcHVibGljL1ByaXZhdGVQdHIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9uaXgvcHVibGljL1By
aXZhdGVQdHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTk3NGJlMDE0MmU3ZjEyYTI5ODU1YWQ0N2ZhNWUxYTMw
MjY3MWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL25peC9wdWJsaWMvUHJp
dmF0ZVB0ci5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTml4X1ByaXZh
dGVQdHJfaAorI2RlZmluZSBOaXhfUHJpdmF0ZVB0cl9oCisKKyNpbmNsdWRlICJDb21tb24uaCIK
KworI2lmIEJVSUxESU5HX05JWF9fCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNlbmRp
ZgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKworbmFtZXNwYWNlIE5peCB7CisKKy8vIFRoaXMgY2xh
c3MgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBOaXggQVBJLiBJdCBleGlzdHMK
Ky8vIHRvIGhlbHAgc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uIG9mIE5peCBpbnRlcmZhY2Vz
IHRoYXQgbWVyZWx5CisvLyB3cmFwIGEgcmVmZXJlbmNlIGNvdW50ZWQgV2ViQ29yZSBjbGFzcy4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJpdmF0ZVB0ciB7CitwdWJsaWM6CisgICAg
UHJpdmF0ZVB0cigpIDogbV9wdHIoMCkgeyB9CisgICAgflByaXZhdGVQdHIoKSB7IGFzc2VydCgh
bV9wdHIpOyB9CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQor
CisjaWYgQlVJTERJTkdfTklYX18KKyAgICBQcml2YXRlUHRyKGNvbnN0IFBhc3NSZWZQdHI8VD4m
IHBycCkKKyAgICAgICAgOiBtX3B0cihwcnAubGVha1JlZigpKQorICAgIHsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGFzc2lnbigwKTsKKyAgICB9CisKKyAgICBQ
cml2YXRlUHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgUHJpdmF0ZVB0cjxUPiYgb3RoZXIpCisgICAg
eworICAgICAgICBUKiBwID0gb3RoZXIubV9wdHI7CisgICAgICAgIGlmIChwKQorICAgICAgICAg
ICAgcC0+cmVmKCk7CisgICAgICAgIGFzc2lnbihwKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIFByaXZhdGVQdHI8VD4mIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFQ+
JiBwcnApCisgICAgeworICAgICAgICBhc3NpZ24ocHJwLmxlYWtSZWYoKSk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisKKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fcHRyOworICAgIH0KKworICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsK
KyAgICAgICAgYXNzZXJ0KG1fcHRyKTsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnbihUKiBwKQorICAgIHsKKyAgICAgICAgLy8gcCBpcyBh
bHJlYWR5IHJlZidkIGZvciB1cyBieSB0aGUgY2FsbGVyCisgICAgICAgIGlmIChtX3B0cikKKyAg
ICAgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAgICAgICBtX3B0ciA9IHA7CisgICAgfQorI2Vu
ZGlmCisKK3ByaXZhdGU6CisKKyAgICBUKiBtX3B0cjsKK307CisKK30gLy8gbmFtZXNwYWNlIE5p
eAorCisjZW5kaWYgLy8gTml4X1ByaXZhdGVQdHJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRGlzYWxsb3dDVHlwZS5oIGIvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oCmluZGV4
IGQ2NjUzMGRhZTllMzA2NWZlODc4NTk4MDVjOGVjOTMzYTQ5NGE5NzQuLjZlZDI1NWEyODYyZDU2
NDQ3MjEyZDQyYTU0M2FkZTk1MDA5MjY0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Rp
c2FsbG93Q1R5cGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmgKQEAgLTQx
LDcgKzQxLDcgQEAKIC8vIG9yIDxnbGliL2dpMThuLWxpYi5oPiwgd2hpY2ggaW4gdHVybiBpbmNs
dWRlIDx4bG9jYWxlL19jdHlwZS5oPiB3aGljaCB1c2VzCiAvLyBpc2FjaWkoKS4gCiAjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+Ci0jaWYgIShPUyhEQVJXSU4pICYmIFBMQVRGT1JNKEdUSykpICYm
ICFPUyhRTlgpICYmICFQTEFURk9STShFRkwpICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikK
KyNpZiAhKE9TKERBUldJTikgJiYgUExBVEZPUk0oR1RLKSkgJiYgIU9TKFFOWCkgJiYgIVBMQVRG
T1JNKEVGTCkgJiYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhUExBVEZPUk0oTklYKQog
CiAjaW5jbHVkZSA8Y3R5cGUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1OaXguY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU5peC5jbWFrZQppbmRleCAwOTU5
ZmExMTM3Yzc4YjY3MmM4NzU5OWNiM2ZmZmVmMWZjZjYzNmQzLi4xZjMxM2EwYTBiNTJmOTVhZDM4
MmVhYmQzODczZGFhNmFlNjhmNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bU5peC5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU5peC5jbWFrZQpAQCAtNCw2
ICs0LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnb2JqZWN0L0dsaWJVdGlsaXRp
ZXMuY3BwCiAKICAgICBndGsvTWFpblRocmVhZEd0ay5jcHAKKworICAgIG5peC9SdW5Mb29wTml4
LmNwcAogKQogCiBsaXN0KEFQUEVORCBXVEZfTElCUkFSSUVTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9uaXgvRmVhdHVyZURlZmluZXNOaXguaCBiL1NvdXJjZS9XVEYvd3RmL25peC9GZWF0
dXJlRGVmaW5lc05peC5oCmluZGV4IGYxNmUxNTRkNTEzNGIxZWY0MjFmMTgzOGM2MjUzMWU1ZDMy
ZGRmYWIuLjkwN2ZhZjVlNDFiOWEzYjI5NDE5ZTlhODg4NTg3MDUyZmI2ZTQ5ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL25peC9GZWF0dXJlRGVmaW5lc05peC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL25peC9GZWF0dXJlRGVmaW5lc05peC5oCkBAIC0xLDE2ICsxLDE2IEBACiAvKgotKiAg
Q29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKiBhcmUgbWV0OgotKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCiAgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVApA
QCAtMzAsNiArMzAsMTAgQEAKICNkZWZpbmUgRU5BQkxFXzNEX1JFTkRFUklORyAxCiAjZW5kaWYK
IAorI2lmICFkZWZpbmVkKEVOQUJMRV84QklUX1RFWFRSVU4pCisjZGVmaW5lIEVOQUJMRV84QklU
X1RFWFRSVU4gMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQogI2RlZmluZSBFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTIDAKICNlbmRpZgpA
QCAtMTU0LDYgKzE1OCwxMCBAQAogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX1NFUlZFUiAxCiAj
ZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpCisjZGVmaW5lIEVOQUJM
RV9JTlBVVF9TUEVFQ0ggMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikKICNkZWZpbmUgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgMQogI2VuZGlm
CkBAIC0xNzgsNiArMTg2LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9NQVRITUwgMQogI2VuZGlmCiAK
KyNpZiAhZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKQorI2RlZmluZSBFTkFCTEVfTUVESUFf
U1RSRUFNIDAKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX01FVEVSX0VMRU1FTlQpCiAj
ZGVmaW5lIEVOQUJMRV9NRVRFUl9FTEVNRU5UIDEKICNlbmRpZgpAQCAtMTk0LDYgKzIwNiwxNCBA
QAogI2RlZmluZSBFTkFCTEVfTkVUV09SS19JTkZPIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQo
RU5BQkxFX05FVFdPUktfUFJPQ0VTUykKKyNkZWZpbmUgRU5BQkxFX05FVFdPUktfUFJPQ0VTUyAw
CisjZW5kaWYKKworI2lmICFkZWZpbmVkKEVOQUJMRV9PUEVOVFlQRV9WRVJUSUNBTCkKKyNkZWZp
bmUgRU5BQkxFX09QRU5UWVBFX1ZFUlRJQ0FMIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5B
QkxFX1BBR0VfVklTSUJJTElUWV9BUEkpCiAjZGVmaW5lIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlf
QVBJIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbml4L1BsYXRmb3JtTml4
LmggYi9Tb3VyY2UvV1RGL3d0Zi9uaXgvUGxhdGZvcm1OaXguaAppbmRleCA3MTBiZTQ0MzdhNmNk
YzE2MjZhNjQzNTYyMTcyY2IzZmE4MWRlYmRmLi44ZTVjNzg1Mzg4YzE5NjE5NmVlYjc3MWIyZDc0
OWQyZjg2ZDNhMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9uaXgvUGxhdGZvcm1OaXgu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9uaXgvUGxhdGZvcm1OaXguaApAQCAtMzksNyArMzksNiBA
QAogI2RlZmluZSBXVEZfVVNFX0hBUkZCVVpaIDEKICNkZWZpbmUgV1RGX1VTRV9IQVJGQlVaWl9O
RyAxCiAjZGVmaW5lIFdURl9VU0VfSUNVX1VOSUNPREUgMQotI2RlZmluZSBXVEZfVVNFX0lPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCiAjZGVmaW5lIFdURl9VU0VfTEVWRUxEQiAxCiAj
ZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQogI2RlZmluZSBXVEZfVVNFX1RFWFRVUkVfTUFQUEVS
IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25peC9SdW5Mb29wTml4LmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL25peC9SdW5Mb29wTml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGRkZjRlZDQ5YmU2ZDUx
ZDBkOGNkY2RiYjE1MDY1NTBjYjFkZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvbml4L1J1bkxvb3BOaXguY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSdW5Mb29wLmgiCisKKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUnVuTG9vcDo6UnVuTG9vcCgpCit7Cisg
ICAgLy8gZ19tYWluX2NvbnRleHRfZGVmYXVsdCgpIGRvZXNuJ3QgYWRkIGFuIGV4dHJhIHJlZmVy
ZW5jZS4KKyAgICBtX3J1bkxvb3BDb250ZXh0ID0gaXNNYWluVGhyZWFkKCkgPyBnX21haW5fY29u
dGV4dF9kZWZhdWx0KCkgOiBhZG9wdEdSZWYoZ19tYWluX2NvbnRleHRfbmV3KCkpOworICAgIEFT
U0VSVChtX3J1bkxvb3BDb250ZXh0KTsKKyAgICBHUmVmUHRyPEdNYWluTG9vcD4gaW5uZXJtb3N0
TG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcobV9ydW5Mb29wQ29udGV4dC5nZXQoKSwg
RkFMU0UpKTsKKyAgICBBU1NFUlQoaW5uZXJtb3N0TG9vcCk7CisgICAgbV9ydW5Mb29wTWFpbkxv
b3BzLmFwcGVuZChpbm5lcm1vc3RMb29wKTsKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQorewor
ICAgIGZvciAoaW50IGkgPSBtX3J1bkxvb3BNYWluTG9vcHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKKyAgICAgICAgaWYgKCFnX21haW5fbG9vcF9pc19ydW5uaW5nKG1fcnVuTG9vcE1haW5M
b29wc1tpXS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZ19tYWluX2xv
b3BfcXVpdChtX3J1bkxvb3BNYWluTG9vcHNbaV0uZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBS
dW5Mb29wOjpydW4oKQoreworICAgIFJ1bkxvb3AqIG1haW5SdW5Mb29wID0gUnVuTG9vcDo6Y3Vy
cmVudCgpOworICAgIEdNYWluTG9vcCogaW5uZXJtb3N0TG9vcCA9IG1haW5SdW5Mb29wLT5pbm5l
cm1vc3RMb29wKCk7CisgICAgaWYgKCFnX21haW5fbG9vcF9pc19ydW5uaW5nKGlubmVybW9zdExv
b3ApKSB7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihpbm5lcm1vc3RMb29wKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbmQgcnVuIGEgbmVzdGVkIGxvb3AgaWYg
dGhlIGlubmVybW9zdCBvbmUgd2FzIGFscmVhZHkgcnVubmluZy4KKyAgICBHTWFpbkxvb3AqIG5l
c3RlZE1haW5Mb29wID0gZ19tYWluX2xvb3BfbmV3KDAsIEZBTFNFKTsKKyAgICBtYWluUnVuTG9v
cC0+cHVzaE5lc3RlZE1haW5Mb29wKG5lc3RlZE1haW5Mb29wKTsKKyAgICBnX21haW5fbG9vcF9y
dW4obmVzdGVkTWFpbkxvb3ApOworICAgIG1haW5SdW5Mb29wLT5wb3BOZXN0ZWRNYWluTG9vcCgp
OworfQorCitHTWFpbkxvb3AqIFJ1bkxvb3A6OmlubmVybW9zdExvb3AoKQoreworICAgIC8vIFRo
ZSBpbm5lcm1vc3QgbWFpbiBsb29wIHNob3VsZCBhbHdheXMgYmUgdGhlcmUuCisgICAgQVNTRVJU
KCFtX3J1bkxvb3BNYWluTG9vcHMuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gbV9ydW5Mb29wTWFp
bkxvb3BzWzBdLmdldCgpOworfQorCit2b2lkIFJ1bkxvb3A6OnB1c2hOZXN0ZWRNYWluTG9vcChH
TWFpbkxvb3AqIG5lc3RlZExvb3ApCit7CisgICAgLy8gVGhlIGlubmVybW9zdCBtYWluIGxvb3Ag
c2hvdWxkIGFsd2F5cyBiZSB0aGVyZS4KKyAgICBBU1NFUlQoIW1fcnVuTG9vcE1haW5Mb29wcy5p
c0VtcHR5KCkpOworICAgIG1fcnVuTG9vcE1haW5Mb29wcy5hcHBlbmQoYWRvcHRHUmVmKG5lc3Rl
ZExvb3ApKTsKK30KKwordm9pZCBSdW5Mb29wOjpwb3BOZXN0ZWRNYWluTG9vcCgpCit7CisgICAg
Ly8gVGhlIGlubmVybW9zdCBtYWluIGxvb3Agc2hvdWxkIGFsd2F5cyBiZSB0aGVyZS4KKyAgICBB
U1NFUlQoIW1fcnVuTG9vcE1haW5Mb29wcy5pc0VtcHR5KCkpOworICAgIG1fcnVuTG9vcE1haW5M
b29wcy5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAgLy8g
VGhlIGlubmVybW9zdCBtYWluIGxvb3Agc2hvdWxkIGFsd2F5cyBiZSB0aGVyZS4KKyAgICBBU1NF
UlQoIW1fcnVuTG9vcE1haW5Mb29wcy5pc0VtcHR5KCkpOworICAgIEdSZWZQdHI8R01haW5Mb29w
PiBsYXN0TWFpbkxvb3AgPSBtX3J1bkxvb3BNYWluTG9vcHMubGFzdCgpOworICAgIGlmIChnX21h
aW5fbG9vcF9pc19ydW5uaW5nKGxhc3RNYWluTG9vcC5nZXQoKSkpCisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQobGFzdE1haW5Mb29wLmdldCgpKTsKK30KKworZ2Jvb2xlYW4gUnVuTG9vcDo6cXVl
dWVXb3JrKFJ1bkxvb3AqIHJ1bkxvb3ApCit7CisgICAgcnVuTG9vcC0+cGVyZm9ybVdvcmsoKTsK
KyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBH
UmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0R1JlZihnX2lkbGVfc291cmNlX25ldygpKTsK
KyAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkoc291cmNlLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFV
TFQpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8R1NvdXJjZUZ1bmM+KCZSdW5Mb29wOjpxdWV1ZVdvcmspLCB0aGlzLCAwKTsKKyAgICBn
X3NvdXJjZV9hdHRhY2goc291cmNlLmdldCgpLCBtX3J1bkxvb3BDb250ZXh0LmdldCgpKTsKKwor
ICAgIGdfbWFpbl9jb250ZXh0X3dha2V1cChtX3J1bkxvb3BDb250ZXh0LmdldCgpKTsKK30KKwor
UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKKyAgICA6IG1f
cnVuTG9vcChydW5Mb29wKQorICAgICwgbV90aW1lclNvdXJjZSgwKQoreworfQorCitSdW5Mb29w
OjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OmNsZWFyVGltZXJTb3VyY2UoKQoreworICAgIG1fdGltZXJTb3VyY2Ug
PSAwOworfQorCitnYm9vbGVhbiBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWRDYWxsYmFj
ayhSdW5Mb29wOjpUaW1lckJhc2UqIHRpbWVyKQoreworICAgIEdTb3VyY2UqIGN1cnJlbnRUaW1l
clNvdXJjZSA9IHRpbWVyLT5tX3RpbWVyU291cmNlLmdldCgpOworICAgIGJvb2wgaXNSZXBlYXRp
bmcgPSB0aW1lci0+aXNSZXBlYXRpbmcoKTsKKyAgICAvLyBUaGlzIGNhbiBjaGFuZ2UgdGhlIHRp
bWVyU291cmNlIGJ5IHN0YXJ0aW5nIGEgbmV3IHRpbWVyIHdpdGhpbiB0aGUgY2FsbGJhY2suCisg
ICAgaWYgKCFpc1JlcGVhdGluZyAmJiBjdXJyZW50VGltZXJTb3VyY2UgPT0gdGltZXItPm1fdGlt
ZXJTb3VyY2UuZ2V0KCkpCisgICAgICAgIHRpbWVyLT5jbGVhclRpbWVyU291cmNlKCk7CisKKyAg
ICB0aW1lci0+ZmlyZWQoKTsKKyAgICByZXR1cm4gaXNSZXBlYXRpbmc7Cit9CisKK3ZvaWQgUnVu
TG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgZmlyZUludGVydmFsLCBib29sIHJlcGVhdCkK
K3sKKyAgICBpZiAobV90aW1lclNvdXJjZSkKKyAgICAgICAgc3RvcCgpOworCisgICAgbV90aW1l
clNvdXJjZSA9IGFkb3B0R1JlZihnX3RpbWVvdXRfc291cmNlX25ldyhzdGF0aWNfY2FzdDxndWlu
dD4oZmlyZUludGVydmFsICogMTAwMCkpKTsKKyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0Owor
ICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3RpbWVyU291cmNlLmdldCgpLCByZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPigmUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkQ2FsbGJh
Y2spLCB0aGlzLCAwKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1lclNvdXJjZS5nZXQoKSwg
bV9ydW5Mb29wLT5tX3J1bkxvb3BDb250ZXh0LmdldCgpKTsKK30KKwordm9pZCBSdW5Mb29wOjpU
aW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmICghbV90aW1lclNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZ19zb3VyY2VfZGVzdHJveShtX3RpbWVyU291cmNlLmdldCgpKTsKKyAgICBj
bGVhclRpbWVyU291cmNlKCk7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGltZXJTb3VyY2U7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU5peC5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlCmluZGV4IDE5NGI0MTUxMTg1MmU5ODI3
NGFhZmY2ZmMwYTFmNjIzOTY3OGQ1ODkuLjY2MDgxMmFlNmZkNmNiZGMxZWE5MDA5MGI4Y2M5ZmQw
YWZhNzMxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTml4LmNtYWtlCkBAIC00LDI2ICs0LDE5IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L2dseCIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovIgot
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvbml4IgotICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcyIKLSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9saW51eCIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyIgogICAgICIke1BMQVRGT1JNX0RJUn0v
bml4LyIKICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgY3NzL1dlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAKLSAgICBjc3MvV2ViS2l0Q1NTTWF0RnVuY3Rpb25WYWx1
ZS5jcHAKLSAgICBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAotICAgIGNzcy9XZWJLaXRDU1NNaXhG
dW5jdGlvblZhbHVlLmNwcAotCiAgICAgZWRpdGluZy9TbWFydFJlcGxhY2VJQ1UuY3BwCiAKKyAg
ICBlZGl0aW5nL25peC9FZGl0b3JOaXguY3BwCisKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzTml4LmNwcAogCiAgICAgcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0zNCwxMSArMjcs
OSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9Db250ZXh0TWVu
dU5vbmUuY3BwCiAgICAgcGxhdGZvcm0vQ3Vyc29yLmNwcAogICAgIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwCi0gICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAogCiAgICAg
cGxhdGZvcm0vY2Fpcm8vV2lkZ2V0QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xT
aGltcy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKIApAQCAt
NjIsOSArNTMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9UaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcAogCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcAot
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS5jcHAKLQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC03Nyw2ICs2NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L0ljb25OaXguY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvbml4L0ltYWdlTml4LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL25p
eC9NZWRpYVBsYXllclByaXZhdGVOaXguY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTkxLDM5ICs4MCwzMCBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ndGsvTG9nZ2luZ0d0
ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcAogCi0gICAgcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAotCi0gICAgcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCi0KICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKIAotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCi0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlUmVhZGVyLmNwcAotCi0gICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAKLQotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKLQotICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCi0KLSAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCi0KICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGlu
dXguY3BwCiAKKyAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9uaXgvTWVkaWFTdHJlYW1DZW50ZXJO
aXguY3BwCisKICAgICBwbGF0Zm9ybS9uaXgvQ3Vyc29yTml4LmNwcAogICAgIHBsYXRmb3JtL25p
eC9EcmFnRGF0YU5peC5jcHAKICAgICBwbGF0Zm9ybS9uaXgvRHJhZ0ltYWdlTml4LmNwcAorICAg
IHBsYXRmb3JtL25peC9FcnJvcnNOaXguY3BwCisgICAgcGxhdGZvcm0vbml4L0ZpbGVTeXN0ZW1O
aXguY3BwCiAgICAgcGxhdGZvcm0vbml4L0dhbWVwYWRzTml4LmNwcAogICAgIHBsYXRmb3JtL25p
eC9MYW5ndWFnZU5peC5jcHAKICAgICBwbGF0Zm9ybS9uaXgvTG9jYWxpemVkU3RyaW5nc05peC5j
cHAKKyAgICBwbGF0Zm9ybS9uaXgvTUlNRVR5cGVSZWdpc3RyeU5peC5jcHAKICAgICBwbGF0Zm9y
bS9uaXgvTml4S2V5Ym9hcmRVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vbml4L1Bhc3RlYm9h
cmROaXguY3BwCiAgICAgcGxhdGZvcm0vbml4L1BsYXRmb3JtS2V5Ym9hcmRFdmVudE5peC5jcHAK
ICAgICBwbGF0Zm9ybS9uaXgvUGxhdGZvcm1TY3JlZW5OaXguY3BwCiAgICAgcGxhdGZvcm0vbml4
L1JlbmRlclRoZW1lTml4LmNwcAogICAgIHBsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVtZU5peC5j
cHAKKyAgICBwbGF0Zm9ybS9uaXgvU2hhcmVkVGltZXJOaXguY3BwCiAgICAgcGxhdGZvcm0vbml4
L1NvdW5kTml4LmNwcAorICAgIHBsYXRmb3JtL25peC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCiAg
ICAgcGxhdGZvcm0vbml4L1dpZGdldE5peC5jcHAKIAogICAgIHBsYXRmb3JtL25peC9zdXBwb3J0
L011bHRpQ2hhbm5lbFBDTURhdGEuY3BwCkBAIC0xMzIsMTcgKzExMiw5IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9uaXgvVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVU5peC5jcHAKIAotICAgIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCi0g
ICAgcGx1Z2lucy9QbHVnaW5EZWJ1Zy5jcHAKICAgICBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
CiAgICAgcGx1Z2lucy9QbHVnaW5QYWNrYWdlTm9uZS5jcHAKLSAgICBwbHVnaW5zL1BsdWdpblN0
cmVhbS5jcHAKLSAgICBwbHVnaW5zL1BsdWdpblZpZXcuY3BwCiAgICAgcGx1Z2lucy9QbHVnaW5W
aWV3Tm9uZS5jcHAKLQotICAgIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5jcHAK
LSAgICByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAotICAgIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZS5jcHAKICkKIAogaWYg
KFdURl9VU0VfT1BFTkdMX0VTXzIpCkBAIC0xNzksOCArMTUxLDggQEAgaWYgKFdURl9VU0VfRUdM
KQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTICR7RUdMX0xJQlJBUll9KQogZWxz
ZSAoKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwotICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWZsCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseAog
ICAgICAgICAke1gxMV9YMTFfSU5DTFVERV9QQVRIfQogICAgICkKICAgICBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKQEAgLTIzNSwxOSArMjA3LDM2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
TElCUkFSSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwot
ICAgICR7Rk9OVENPTkZJR19JTkNMVURFX0RJUn0KICAgICAke0NBSVJPX0lOQ0xVREVfRElSU30K
KyAgICAke0ZPTlRDT05GSUdfSU5DTFVERV9ESVJ9CiAgICAgJHtGUkVFVFlQRV9JTkNMVURFX0RJ
UlN9CisgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICAke0hBUkZCVVpaX0lOQ0xVREVfRElS
U30KICAgICAke0xJQlhNTDJfSU5DTFVERV9ESVJ9CiAgICAgJHtMSUJYU0xUX0lOQ0xVREVfRElS
fQogICAgICR7U1FMSVRFX0lOQ0xVREVfRElSfQotICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiAg
ICAgJHtaTElCX0lOQ0xVREVfRElSU30KLSAgICAke0hBUkZCVVpaX0lOQ0xVREVfRElSU30KICkK
IAogYWRkX2RlZmluaXRpb25zKC1EREFUQV9ESVI9IiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9LyR7
REFUQV9JTlNUQUxMX0RJUn0iKQogCitpZiAoRU5BQkxFX01FRElBX1NUUkVBTSkKKyAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbQorICAgICAgICBwbGF0Zm9ybS9hdWRpbworICAgICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbQorICAgICkKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbml4L1VzZXJNZWRpYUNsaWVudE5peC5jcHAKKworICAgICAgICBw
bGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYUNvbnN0cmFpbnRzTml4LmNwcAorICAgICAgICBwbGF0
Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTml4LmNwcAorICAgICAgICBw
bGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYVN0cmVhbUNlbnRlck5peC5jcHAKKyAgICAgICAgcGxh
dGZvcm0vbml4L3N1cHBvcnQvTWVkaWFTdHJlYW1OaXguY3BwCisgICAgICAgIHBsYXRmb3JtL25p
eC9zdXBwb3J0L01lZGlhU3RyZWFtU291cmNlTml4LmNwcAorICAgICkKK2VuZGlmICgpCisKIGlm
IChFTkFCTEVfV0VCX0FVRElPKQogICBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYXVkaW8vbml4IgpAQCAtMjc3LDYg
KzI2Niw4IEBAIGlmIChXVEZfVVNFX0NVUkwpCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVOb2RlLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llU3Rv
cmFnZUN1cmwuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DcmVkZW50aWFsU3Rv
cmFnZUN1cmwuY3BwCisgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5jcHAKKyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRm9ybURhdGFTdHJlYW1DdXJsLmNwcAogICAgICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMjg0LDEyICsyNzUsMTQgQEAg
aWYgKFdURl9VU0VfQ1VSTCkKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2Vy
dmVyQ3VybC5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKKyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NTTEhhbmRsZS5jcHAKICAg
ICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9TeW5jaHJvbm91c0xvYWRlckNsaWVudEN1cmwu
Y3BwCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKICAgICAgICAg
JHtDVVJMX0xJQlJBUklFU30KKyAgICAgICAgJHtPUEVOU1NMX0xJQlJBUklFU30KICAgICApCiBl
bHNlICgpCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI5
MGIxZjExNDQ0YTZhNGNiMjNlOTc3ZDFkYThiNzk0NWIwYjQzOTguLjQ0OGI3ZTRkYTkxZGUyZGU4
OTVjNTNjMGYzNzI5ZTQ2OGFjNGE3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01Miw2ICs1MiwxMSBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9S
TShOSVgpCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjptX2lu
aXRTY3JpcHRDYWxsYmFjayA9IDA7CitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjptX3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrID0gMDsKKyNlbmRpZiAvLyBQTEFU
Rk9STShOSVgpCisKIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV92bShWTTo6
Y3JlYXRlKCkpCiAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQpA
QCAtNjMsNiArNjgsMTEgQEAgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6V29ya2VyU2NyaXB0Q29u
dHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2MKIAogV29ya2VyU2NyaXB0
Q29udHJvbGxlcjo6fldvcmtlclNjcmlwdENvbnRyb2xsZXIoKQogeworI2lmIFBMQVRGT1JNKE5J
WCkKKyAgICBpZiAodGVybWluYXRlU2NyaXB0Q2FsbGJhY2soKSkKKyAgICAgICAgdGVybWluYXRl
U2NyaXB0Q2FsbGJhY2soKShtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygp
LCBtX3dvcmtlckdsb2JhbFNjb3BlLT5pc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkpOwor
I2VuZGlmIC8vIFBMQVRGT1JNKE5JWCkKKwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwog
ICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmNsZWFyKCk7CiAgICAgbV92bS5jbGVhcigp
OwpAQCAtMTA2LDYgKzExNiwxMSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHQoKQogICAgIH0KICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQo
YXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnByb3RvdHlwZSgpKS0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOworCisjaWYgUExBVEZPUk0o
TklYKQorICAgIGlmIChpbml0U2NyaXB0Q2FsbGJhY2soKSkKKyAgICAgICAgaW5pdFNjcmlwdENh
bGxiYWNrKCkobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgbV93b3Jr
ZXJHbG9iYWxTY29wZS0+aXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyNlbmRpZiAv
LyBQTEFURk9STShOSVgpCiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKQEAgLTIwMyw0ICsyMTgsMjYg
QEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkZXRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVn
Z2VyKiBkZWJ1Z2dlcikKICAgICBkZWJ1Z2dlci0+ZGV0YWNoKG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxPYmplY3QoKSk7CiB9CiAKKyNpZiBQTEFURk9STShOSVgpCit2b2lkIFdv
cmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEluaXRTY3JpcHRDYWxsYmFjayhXb3JrZXJTY3JpcHRD
YWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBtX2luaXRTY3JpcHRDYWxsYmFjayA9IGNhbGxiYWNr
OworfQorCitXb3JrZXJTY3JpcHRDYWxsYmFjayBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0Q2FsbGJhY2soKQoreworICAgIHJldHVybiBtX2luaXRTY3JpcHRDYWxsYmFjazsKK30K
Kwordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRUZXJtaW5hdGVTY3JpcHRDYWxsYmFj
ayhXb3JrZXJTY3JpcHRDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBtX3Rlcm1pbmF0ZVNjcmlw
dENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK1dvcmtlclNjcmlwdENhbGxiYWNrIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4g
bV90ZXJtaW5hdGVTY3JpcHRDYWxsYmFjazsKK30KKyNlbmRpZiAvLyBQTEFURk9STShOSVgpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA4YmI3ZjQ5YjA4NWZjNWNkZDg3MjI3
NzE5ZTMzMTVmMWEyNmI4Zjg1Li5lMmY1ZmZlOTAyNTU2MTdjZDUyZTJiMGJjNDc4MjZlYzVlZGY0
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oCkBAIC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oTklYKQorICAgIHR5cGVkZWYgdm9pZCAoKldv
cmtlclNjcmlwdENhbGxiYWNrKShKU0M6OkV4ZWNTdGF0ZSosIGJvb2wpOworI2VuZGlmIC8vIFBM
QVRGT1JNKE5JWCkKKwogICAgIGNsYXNzIEpTV29ya2VyR2xvYmFsU2NvcGU7CiAgICAgY2xhc3Mg
U2NyaXB0U291cmNlQ29kZTsKICAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKQEAgLTgxLDYgKzg1LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6
OkRlYnVnZ2VyKik7CiAgICAgICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciop
OwogCisjaWYgUExBVEZPUk0oTklYKQorICAgICAgICBzdGF0aWMgdm9pZCBzZXRJbml0U2NyaXB0
Q2FsbGJhY2soV29ya2VyU2NyaXB0Q2FsbGJhY2spOworICAgICAgICBzdGF0aWMgV29ya2VyU2Ny
aXB0Q2FsbGJhY2sgaW5pdFNjcmlwdENhbGxiYWNrKCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHNl
dFRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKFdvcmtlclNjcmlwdENhbGxiYWNrKTsKKyAgICAgICAg
c3RhdGljIFdvcmtlclNjcmlwdENhbGxiYWNrIHRlcm1pbmF0ZVNjcmlwdENhbGxiYWNrKCk7Cisj
ZW5kaWYgLy8gUExBVEZPUk0oTklYKQogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdFNj
cmlwdElmTmVlZGVkKCkKICAgICAgICAgewpAQCAtOTQsNiArMTA0LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgSlNDOjpTdHJvbmc8SlNXb3JrZXJHbG9iYWxTY29wZT4gbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXI7CiAgICAgICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW47
CiAgICAgICAgIG11dGFibGUgTXV0ZXggbV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4OworCisj
aWYgUExBVEZPUk0oTklYKQorICAgICAgICBzdGF0aWMgV29ya2VyU2NyaXB0Q2FsbGJhY2sgbV9p
bml0U2NyaXB0Q2FsbGJhY2s7CisgICAgICAgIHN0YXRpYyBXb3JrZXJTY3JpcHRDYWxsYmFjayBt
X3Rlcm1pbmF0ZVNjcmlwdENhbGxiYWNrOworI2VuZGlmIC8vIFBMQVRGT1JNKE5JWCkKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWVkaWFDb250cm9sc05peC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9s
c05peC5jc3MKaW5kZXggYjViMzY2NTI3YjdlMDU4MTk0YzU0MTcxNWVmNTc4OGVkMDI3NzQ5Yi4u
MDk1NjgwYzJlNDQ3NDJhNWQ1MmYwNGRjNmNhZGNjZTRmOWZmNzZlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNOaXguY3NzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tZWRpYUNvbnRyb2xzTml4LmNzcwpAQCAtMSw3ICsxLDcgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTI3ICsyNCwyMTggQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLyogTml4V2ViS2l0IG1lZGlhIGNvbnRyb2xzLiBFeHRlbmRz
IG1lZGlhQ29udHJvbHMuY3NzICovCisvKiBOaXggZGVmYXVsdCBtZWRpYSBjb250cm9scyAqLwog
CiBhdWRpbyB7CiAgICAgd2lkdGg6IDMwMHB4OwotICAgIGhlaWdodDogMjBweDsKKyAgICBoZWln
aHQ6IDMwcHg7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLAordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMgeworICAgIHdpZHRoOiBpbmhlcml0OworICAgIGhlaWdodDog
aW5oZXJpdDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZGlyZWN0aW9uOiBsdHI7Cisg
ICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWRpcmVjdGlvbjogcm93OworICAgIGp1c3RpZnkt
Y29udGVudDogZmxleC1lbmQ7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKK30KKworYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9zdXJlLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1lbmNsb3N1cmUgeworICAgIHdpZHRoOiAxMDAlOworICAgIG1heC13aWR0aDogODAw
cHg7CisgICAgaGVpZ2h0OiAzMHB4OworICAgIGZsZXgtc2hyaW5rOiAwOworICAgIGJvdHRvbTog
MDsKKyAgICB0ZXh0LWluZGVudDogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJveC1zaXppbmc6
IGJvcmRlci1ib3g7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVuY2xvc3Vy
ZSB7CisgICAgcGFkZGluZzogMHB4IDVweCA1cHggNXB4OworICAgIGhlaWdodDogMzVweDsKKyAg
ICBmbGV4LXNocmluazogMDsKIH0KIAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFu
ZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKLSAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7Ci0gICAgLXdl
YmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIGZsZXgtZGly
ZWN0aW9uOiByb3c7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICAvKiBXZSB1c2UgZmxl
eC1zdGFydCBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBwbGF5IGJ1dHRvbiBpcyB2aXNpYmxlIGV2
ZW4KKyAgICAgKiBpZiB3ZSBhcmUgdG9vIHNtYWxsIHRvIHNob3cgYWxsIGNvbnRyb2xzLgorICAg
ICAqLworICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3R0b206IDA7CiAg
ICAgd2lkdGg6IDEwMCU7CiAgICAgei1pbmRleDogMDsKICAgICBvdmVyZmxvdzogaGlkZGVuOwot
ICAgIGhlaWdodDogMjBweDsKICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICBib3R0b206IGF1
dG87CisgICAgaGVpZ2h0OiAzMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjAsIDIw
LCAyMCwgMC44KTsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhIHsKKyAgICBtYXJnaW46IGF1dG87CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVm
dDogMDsKIH0KIAorYXVkaW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEsIHZpZGVvOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhIHsKKyAgICBtYXgtaGVpZ2h0OiAxMDAlOworICAgIG1heC13aWR0aDog
MTAwJTsKK30KKworYXVkaW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGFuZWwsCiB2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wYW5lbCB7CiAgICAgYm90dG9tOiAwcHg7CiB9CiAKIGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1tdXRlLWJ1dHRvbiB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1tdXRlLWJ1
dHRvbjsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICB3aWR0aDogMjBweDsKLSAgICBo
ZWlnaHQ6IDIwcHg7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIHotaW5kZXg6IDI7Cisg
ICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4OiBub25lOworICAgIGJvcmRlcjogbm9uZTsKKyAg
ICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIHdpZHRoOiAzNXB4OworICAgIGhlaWdodDog
MzBweDsKKyAgICBsaW5lLWhlaWdodDogMzBweDsKKyAgICBtYXJnaW46IDAgNnB4IDAgMDsKKyAg
ICBwYWRkaW5nOiAwOwogICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7Ci0gICAgYm9yZGVy
OiBpbml0aWFsOwogICAgIGNvbG9yOiBpbmhlcml0OwogfQogCithdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1vdmVybGF5LXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1vdmVybGF5LXBsYXktYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCiBhdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtcGxheS1idXR0b24gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
cGxheS1idXR0b247Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgd2lkdGg6IDIwcHg7
Ci0gICAgaGVpZ2h0OiAyMHB4OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogbm9uZTsK
KyAgICBib3JkZXI6IG5vbmU7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICB3aWR0
aDogMzBweDsKKyAgICBoZWlnaHQ6IDMwcHg7CisgICAgbGluZS1oZWlnaHQ6IDMwcHg7CisgICAg
bWFyZ2luLWxlZnQ6IDlweDsKKyAgICBtYXJnaW4tcmlnaHQ6IDlweDsKKyAgICBwYWRkaW5nOiAw
OwogICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7Ci0gICAgYm9yZGVyOiBpbml0aWFsOwog
ICAgIGNvbG9yOiBpbmhlcml0OwogfQogCiBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5l
LWNvbnRhaW5lciB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNr
Z3JvdW5kOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94LW9yaWVu
dDogaG9yaXpvbnRhbDsKLSAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJr
aXQtYm94LXBhY2s6IGVuZDsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGRpc3BsYXk6
IGZsZXg7CisgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKKyAgICBhbGlnbi1pdGVtczogY2VudGVy
OworICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CisgICAgZmxleDogMSAxOwogICAgIC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgaGVpZ2h0OiAyMHB4OworICAgIGhlaWdodDog
MTZweDsKKyAgICBtaW4td2lkdGg6IDA7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1j
dXJyZW50LXRpbWUtZGlzcGxheSB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJy
ZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10
aW1lLWRpc3BsYXksCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmlu
Zy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNw
bGF5OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgZGlzcGxheTogLXdlYmtp
dC1ib3g7Ci0gICAgaGVpZ2h0OiAyMHB4OworICAgIC13ZWJraXQtZmxleDogbm9uZTsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgYm9yZGVyOiBub25lOworICAgIGN1cnNvcjogZGVm
YXVsdDsKIAotICAgIHBhZGRpbmc6IDRweDsKKyAgICBoZWlnaHQ6IDMwcHg7CisgICAgbWFyZ2lu
OiAwIDlweCAwIDA7CisgICAgcGFkZGluZzogMDsKIAotICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
LSAgICBmb250LXNpemU6IDEwcHg7CisgICAgbGluZS1oZWlnaHQ6IDMwcHg7CisgICAgZm9udC1m
YW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CisgICAgZm9udC1zaXplOiAxM3B4
OworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICBj
b2xvcjogd2hpdGU7CiAKLSAgICBjb2xvcjogYmxhY2s7CiAgICAgbGV0dGVyLXNwYWNpbmc6IG5v
cm1hbDsKICAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDsKLSAgICBsaW5lLWhlaWdodDogbm9ybWFs
OworICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAg
IHRleHQtaW5kZW50OiAwOwogICAgIHRleHQtc2hhZG93OiBub25lOwogICAgIHRleHQtZGVjb3Jh
dGlvbjogbm9uZTsKLSAgICBmb250LXN0eWxlOiBub3JtYWw7Ci0gICAgZm9udC13ZWlnaHQ6IG5v
cm1hbDsKLSAgICBmb250LWZhbWlseTogc2VyaWY7Ci19Ci0KLWF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgewotICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAK
IGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy10aW1lbGluZSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1z
bGlkZXI7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgLXdlYmtpdC1ib3gtZmxleDog
MTsKLSAgICBoZWlnaHQ6IDIwcHg7Ci0gICAgcGFkZGluZzogMHB4IDJweDsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBpbml0aWFsOworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogMSAxIGF1
dG87CisgICAgaGVpZ2h0OiA4cHg7CisgICAgbWFyZ2luOiAwIDE1cHggMCAwOworICAgIHBhZGRp
bmc6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgbWluLXdpZHRoOiAyNXB4
OwogICAgIGJvcmRlcjogaW5pdGlhbDsKKyAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgY29s
b3I6IGluaGVyaXQ7Ci0gICAgbWFyZ2luOiBpbml0aWFsOwotfQotCi1hdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgewotICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXI7Ci0gICAgcG9zaXRpb246IGFic29s
dXRlOwotICAgIGhlaWdodDogMTAwcHg7Ci0gICAgd2lkdGg6IDIwcHg7Ci0gICAgYm90dG9tOiAy
MHB4OwotICAgIHotaW5kZXg6IDE7CiB9CiAKIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXZvbHVtZS1zbGlkZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlk
ZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlcjsKLSAgICBk
aXNwbGF5OiBub25lOwotICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7CisgICAgZGlzcGxh
eTogZmxleDsKKyAgICAvKiBUaGUgMS45IHZhbHVlIHdhcyBlbXBpcmljYWxseSBjaG9zZW4gdG8g
bWF0Y2ggb2xkLWZsZXhib3ggYmVoYXZpb3VyCisgICAgICogYW5kIGJlIGFlc3RoZXRpY2FsbHkg
cGxlYXNpbmcuCisgICAgICovCisgICAgZmxleDogMSAxLjkgYXV0bzsKKyAgICBoZWlnaHQ6IDhw
eDsKKyAgICBtYXgtd2lkdGg6IDcwcHg7CisgICAgbWFyZ2luOiAwIDE1cHggMCAwOworICAgIHBh
ZGRpbmc6IDA7CisgICAgbWluLXdpZHRoOiAxNXB4OwogICAgIGJvcmRlcjogaW5pdGlhbDsKICAg
ICBjb2xvcjogaW5oZXJpdDsKLSAgICBtYXJnaW46IGluaXRpYWw7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogYmxhY2s7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworfQorCitpbnB1dFt0eXBlPSJy
YW5nZSJdOjotd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZs
ZXg7CisgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKKyAgICBmbGV4LWRpcmVjdGlvbjogcm93OyAv
KiBUaGlzIHByb3BlcnR5IGlzIHVwZGF0ZWQgYnkgQysrIGNvZGUuICovCisgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyMzAsIDIzMCwgMjMwLCAwLjM1KTsKKyAgICBib3JkZXIt
cmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIEJhY2tn
cm91bmQgZHJhd2luZyBpcyBtYW5hZ2VkIGJ5IEMrKyBjb2RlIHRvIGRyYXcgcmFuZ2VzLiAqLwor
fQorCisvKiBUaGUgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGNhdXNlcyB0aGUgdHJhY2sgdG8gb3Zl
cmZsb3cgaXRzIGNvbnRhaW5lci4gKi8KK2lucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtbWVk
aWEtc2xpZGVyLWNvbnRhaW5lciA+IGRpdiB7CisgICAgbWFyZ2luLXJpZ2h0OiAtMTRweDsKK30K
KworaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIgeworICAg
IG1hcmdpbi1sZWZ0OiAtN3B4OworICAgIG1hcmdpbi1yaWdodDogLTdweDsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7CiB9CiAKIGF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtc2Vlay1iYWNrLWJ1dHRvbjsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICB3
aWR0aDogMjBweDsKLSAgICBoZWlnaHQ6IDIwcHg7CisgICAgZGlzcGxheTogZmxleDsKKyAgICB3
aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5p
dGlhbDsKICAgICBib3JkZXI6IGluaXRpYWw7CiAgICAgY29sb3I6IGluaGVyaXQ7CkBAIC0xNTIs
MjEgKzI0MywyNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0
dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZQogCiBhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLXNlZWstZm9yd2FyZC1idXR0b247Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAg
d2lkdGg6IDIwcHg7Ci0gICAgaGVpZ2h0OiAyMHB4OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAg
d2lkdGg6IDE2cHg7CisgICAgaGVpZ2h0OiAxNnB4OwogICAgIGJhY2tncm91bmQtY29sb3I6IGlu
aXRpYWw7CiAgICAgYm9yZGVyOiBpbml0aWFsOwogICAgIGNvbG9yOiBpbmhlcml0OwogfQogCiBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24gewotICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtZnVsbHNjcmVlbi1idXR0b247Ci0gICAgZGlzcGxheTogLXdlYmtpdC1i
b3g7Ci0gICAgd2lkdGg6IDIwcHg7Ci0gICAgaGVpZ2h0OiAyMHB4OworICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtZW50ZXItZnVsbHNjcmVlbi1idXR0b247CisgICAgZGlzcGxheTogZmxl
eDsKKyAgICBmbGV4OiBub25lOworICAgIGJvcmRlcjogbm9uZTsKKyAgICBib3gtc2l6aW5nOiBi
b3JkZXItYm94OworICAgIHdpZHRoOiAzMHB4OworICAgIGhlaWdodDogMzBweDsKKyAgICBsaW5l
LWhlaWdodDogMzBweDsKKyAgICBtYXJnaW4tbGVmdDogLTVweDsKKyAgICBtYXJnaW4tcmlnaHQ6
IDlweDsKKyAgICBwYWRkaW5nOiAwOwogICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7Ci0g
ICAgYm9yZGVyOiBpbml0aWFsOwogICAgIGNvbG9yOiBpbmhlcml0OwogfQogCkBAIC0xODYsMTEg
KzI4MywxNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXR1cm4tdG8tcmVhbHRp
bWUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jbwogCiBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24gewogICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbWVkaWEtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b247Ci0gICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgd2lkdGg6IDIwcHg7Ci0gICAgaGVpZ2h0OiAyMHB4
OworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgZmxleDogbm9uZTsKKyAgICBib3JkZXI6IG5vbmU7
CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICB3aWR0aDogMzBweDsKKyAgICBoZWln
aHQ6IDMwcHg7CisgICAgbGluZS1oZWlnaHQ6IDMwcHg7CisgICAgbWFyZ2luLWxlZnQ6IC01cHg7
CisgICAgbWFyZ2luLXJpZ2h0OiA5cHg7CisgICAgcGFkZGluZzogMDsKICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBpbml0aWFsOwotICAgIGJvcmRlcjogaW5pdGlhbDsKICAgICBjb2xvcjogaW5oZXJp
dDsKIH0KIApAQCAtMjAxLDMgKzMwNCw5MiBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtc2xpZGVyLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jbwogICAg
IGJvcmRlcjogaW5pdGlhbDsKICAgICBjb2xvcjogaW5oZXJpdDsKIH0KKworYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtc2xpZGVyLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1zbGlkZXIgeworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9s
dW1lLW1pbi1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
dm9sdW1lLW1pbi1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24sIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24geworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29u
dGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
b3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBwYWRkaW5nLWJvdHRvbTogNXB4OworCisgICAgZm9udDog
MjJweCBzYW5zLXNlcmlmOworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICBjb2xvcjogcmdi
YSgyNTUsIDI1NSwgMjU1LCAxKTsKKworICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CisgICAg
d29yZC1zcGFjaW5nOiBub3JtYWw7CisgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CisgICAgdGV4
dC1pbmRlbnQ6IDA7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIHBvaW50ZXItZXZl
bnRzOiBub25lOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CisgICAgd29yZC1icmVh
azogYnJlYWstd29yZDsKKworICAgIGZsZXg6IDEgMTsKK30KKwordmlkZW86OmN1ZSB7CisgICAg
ZGlzcGxheTogaW5saW5lOworCisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAw
LjgpOworICAgIHBhZGRpbmc6IDJweCAycHg7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stcmVnaW9uIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGluZS1oZWln
aHQ6IDUuMzN2aDsKKyAgICB3cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGI7CisgICAgYmFja2dy
b3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpOworICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUs
IDEpOworICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKKyAgICBvdmVyZmxvdy13cmFwOiBicmVh
ay13b3JkOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stcmVnaW9uLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
CisgICAgZGlzcGxheTogZmxleDsKKyAgICBmbGV4LWZsb3c6IGNvbHVtbjsKKyAgICBmbGV4LWRp
cmVjdGlvbjogY29sdW1uOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJl
Z2lvbi1jb250YWluZXIuc2Nyb2xsaW5nIHsKKyAgICB0cmFuc2l0aW9uOiB0b3AgNDMzbXMgbGlu
ZWFyOworfQorCisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7Cisg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUt
c3BhY2U6IHByZS13cmFwOworICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAg
ICBmbGV4OiAwIDAgYXV0bzsKK30KK3ZpZGVvOjpjdWUoOmZ1dHVyZSkgeworICAgIGNvbG9yOiBn
cmF5OworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciBiIHsK
KyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1jb250YWluZXIgdSB7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisK
K3ZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIGkgeworICAgIGZvbnQt
c3R5bGU6IGl0YWxpYzsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDJkNzIw
OGQ1MDA1ZWM5YTNjNDIwOTYwOTgzOWJkNDFjMDM4ZTUzYTIuLjhiMjIwMWI5YzdkOWQ4Yzk5NzVk
YzgwMzMzN2UwM2UwNjAzNDhkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQz
NSw3ICs0MzUsNyBAQCBTdHJpbmcgRWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZChjb25z
dCBQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShN
QUMpICYmICFQTEFURk9STShFRkwpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEVG
TCkgJiYgIVBMQVRGT1JNKE5JWCkKIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiB7CiAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIHZv
aWQgRWRpdG9yOjpjdXQoKQogICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc3RhcnQoKSkpCiAgICAgICAgICAgICBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJlcGxh
Y2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgICAgICBlbHNlIHsKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQogICAgICAgICAgICAgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKICNlbHNl
CiAgICAgICAgICAgICAvLyBGSVhNRTogQ29udmVydCBhbGwgb3RoZXIgcGxhdGZvcm1zIHRvIG1h
dGNoIE1hYyBhbmQgZGVsZXRlIHRoaXMuCkBAIC0xMDg4LDEzICsxMDg4LDEzIEBAIHZvaWQgRWRp
dG9yOjpjb3B5KCkKICAgICAgICAgICAgIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJv
YXJkOjpDYW5TbWFydFJlcGxhY2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQg
PSBpbWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudChkb2N1bWVudCgpKSkgewotI2lmIChQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShJT1MpKSB8fCBQTEFURk9STShFRkwpCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0o
TklYKQogICAgICAgICAgICAgd3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCksICppbWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRv
Y3VtZW50KCkudGl0bGUoKSk7CiAjZWxzZQogICAgICAgICAgICAgUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCktPndyaXRlSW1hZ2UoKmltYWdlRWxlbWVudCwgZG9jdW1lbnQoKS51
cmwoKSwgZG9jdW1lbnQoKS50aXRsZSgpKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgewotI2lm
IChQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpKSB8fCBQTEFURk9STShFRkwpCisjaWYg
KFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExB
VEZPUk0oTklYKQogICAgICAgICAgICAgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKICNlbHNlCiAgICAgICAgICAgICAvLyBG
SVhNRTogQ29udmVydCBhbGwgb3RoZXIgcGxhdGZvcm1zIHRvIG1hdGNoIE1hYyBhbmQgZGVsZXRl
IHRoaXMuCkBAIC0xMTk3LDcgKzExOTcsNyBAQCB2b2lkIEVkaXRvcjo6Y29weUltYWdlKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAg
dXJsID0gcmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFU
Rk9STShOSVgpCiAgICAgd3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCksICplbGVtZW50LCB1cmwsIHJlc3VsdC5hbHREaXNwbGF5U3RyaW5n
KCkpOwogI2Vsc2UKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+d3Jp
dGVJbWFnZSgqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxheVN0cmluZygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDcxNzBiNDFhMDYxYWY5MDE3OGI0MzgzMWJmYmNmNWIwYWM5
MmQ5YjAuLmNlMDNjYzUwZjhkNWMxODhlMGRjZTczMzdkZDQ2ZTFhYTg5ODdjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5U
ZXh0KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKE5JWCkKICAgICB2b2lk
IHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICB2b2lkIHdyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbml4L0VkaXRvck5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL25peC9FZGl0b3JOaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3ZDE0MjQ0MDZhYzE4ZTg3Nzg2ZjRj
NjJmYWNjNTA1NDNhYTg0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL25peC9FZGl0b3JOaXguY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVkaXRv
ci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCmluZGV4IGM0MjFhZWVjMDk5OTFhNjU3OWY2NWZmZDQ4OGJjNTQ5OWY5NTI1
YTMuLjZiNTAzMTkyZjJhYTVlNGMyZmIwNjljYzhkNWE0MThkMmZkM2NhYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIFVTRShDRykKKyNp
ZiBVU0UoQ0cpIHx8IFBMQVRGT1JNKE5JWCkKICNkZWZpbmUgRGVmYXVsdEludGVycG9sYXRpb25R
dWFsaXR5IEludGVycG9sYXRpb25Mb3cKICNlbHNlCiAjZGVmaW5lIERlZmF1bHRJbnRlcnBvbGF0
aW9uUXVhbGl0eSBJbnRlcnBvbGF0aW9uRGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc05peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzTml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmUyNjVmZTI0YzUxY2Ux
MTk3MjYxNjYxOGM4MTM2NjhlNDU2ZmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc05peC5jcHAKQEAgLTAsMCArMSwxOTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUyYjMzk7
JiMzOTsgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250
cm9sc05peC5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01lZGlhQ29udHJvbHNOaXg6Ok1lZGlhQ29udHJvbHNOaXgoRG9jdW1lbnQmIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9scyhkb2N1bWVudCkKKyAgICAsIG1fZHVyYXRpb25EaXNwbGF5
KDApCisgICAgLCBtX2VuY2xvc3VyZSgwKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bHM+IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgcmV0
dXJuIE1lZGlhQ29udHJvbHNOaXg6OmNyZWF0ZUNvbnRyb2xzKGRvY3VtZW50KTsKK30KKworUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xzTml4PiBNZWRpYUNvbnRyb2xzTml4OjpjcmVhdGVDb250cm9s
cyhEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbHNOaXg+IGNvbnRyb2xzID0g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNOaXgoZG9jdW1lbnQpKTsKKworICAgIGlmIChjb250
cm9scy0+aW5pdGlhbGl6ZUNvbnRyb2xzKGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIGNvbnRy
b2xzLnJlbGVhc2UoKTsKKworICAgIHJldHVybiAwOworfQorCitib29sIE1lZGlhQ29udHJvbHNO
aXg6OmluaXRpYWxpemVDb250cm9scyhEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgLy8gQ3Jl
YXRlIGFuIGVuY2xvc2luZyBlbGVtZW50IGZvciB0aGUgcGFuZWwgc28gd2UgY2FuIHZpc3VhbGx5
IG9mZnNldCB0aGUgY29udHJvbHMgY29ycmVjdGx5LgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbEVuY2xvc3VyZUVsZW1lbnQ+IGVuY2xvc3VyZSA9IE1lZGlhQ29udHJvbFBhbmVsRW5jbG9z
dXJlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9wbGF5QnV0dG9uID0g
cGxheUJ1dHRvbi5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxl
YXNlKCksIGV4Y2VwdGlvbkNvZGUsIEF0dGFjaExhemlseSk7CisgICAgaWYgKGV4Y2VwdGlvbkNv
ZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQsIHRoaXMpOworICAgIG1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBleGNlcHRpb25Db2RlLCBB
dHRhY2hMYXppbHkpOworICAgIGlmIChleGNlcHRpb25Db2RlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4g
Y3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRU
aW1lRGlzcGxheS5nZXQoKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+aGlkZSgpOworICAg
IHBhbmVsLT5hcHBlbmRDaGlsZChjdXJyZW50VGltZURpc3BsYXkucmVsZWFzZSgpLCBleGNlcHRp
b25Db2RlLCBBdHRhY2hMYXppbHkpOworICAgIGlmIChleGNlcHRpb25Db2RlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50PiBkdXJhdGlvbkRpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgbV9kdXJhdGlvbkRpc3BsYXkgPSBk
dXJhdGlvbkRpc3BsYXkuZ2V0KCk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKGR1cmF0aW9uRGlz
cGxheS5yZWxlYXNlKCksIGV4Y2VwdGlvbkNvZGUsIEF0dGFjaExhemlseSk7CisgICAgaWYgKGV4
Y2VwdGlvbkNvZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpOworICAgIG1f
cGFuZWxNdXRlQnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOworICAgIHBhbmVsLT5hcHBl
bmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBleGNlcHRpb25Db2RlLCBBdHRhY2hM
YXppbHkpOworICAgIGlmIChleGNlcHRpb25Db2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIg
PSBNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisgICAgbV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CisgICAgbV92b2x1bWVTbGlkZXIt
PnNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbih0cnVlKTsKKyAgICBwYW5lbC0+YXBwZW5k
Q2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZXhjZXB0aW9uQ29kZSwgQXR0YWNoTGF6aWx5KTsKKyAg
ICBpZiAoZXhjZXB0aW9uQ29kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuQnV0dG9uID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgbV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbHNjcmVlbkJ1dHRvbi5nZXQoKTsKKyAgICBwYW5l
bC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkJ1dHRvbi5yZWxlYXNlKCksIGV4Y2VwdGlvbkNvZGUs
IEF0dGFjaExhemlseSk7CisgICAgaWYgKGV4Y2VwdGlvbkNvZGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIG1fcGFuZWwgPSBwYW5lbC5nZXQoKTsKKyAgICBlbmNsb3N1cmUtPmFwcGVu
ZENoaWxkKHBhbmVsLnJlbGVhc2UoKSwgZXhjZXB0aW9uQ29kZSwgQXR0YWNoTGF6aWx5KTsKKyAg
ICBpZiAoZXhjZXB0aW9uQ29kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9lbmNs
b3N1cmUgPSBlbmNsb3N1cmUuZ2V0KCk7CisgICAgYXBwZW5kQ2hpbGQoZW5jbG9zdXJlLnJlbGVh
c2UoKSwgZXhjZXB0aW9uQ29kZSwgQXR0YWNoTGF6aWx5KTsKKyAgICBpZiAoZXhjZXB0aW9uQ29k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc05peDo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZSogY29udHJvbGxlcikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIgPT0gY29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFDb250cm9sczo6c2V0TWVkaWFDb250
cm9sbGVyKGNvbnRyb2xsZXIpOworCisgICAgaWYgKG1fZHVyYXRpb25EaXNwbGF5KQorICAgICAg
ICBtX2R1cmF0aW9uRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IGlmIChtX2VuY2xvc3VyZSkKKyAgICAgICAgbV9lbmNsb3N1cmUtPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzTml4OjpyZXNldCgpCit7Cisg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1
cmF0aW9uKCk7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldElubmVyVGV4dChSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisgICAgbV9kdXJhdGlvbkRpc3BsYXktPnNldEN1cnJlbnRWYWx1
ZShkdXJhdGlvbik7CisKKyAgICBNZWRpYUNvbnRyb2xzOjpyZXNldCgpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbHNOaXg6OnBsYXliYWNrU3RhcnRlZCgpCit7CisgICAgbV9jdXJyZW50VGltZURp
c3BsYXktPnNob3coKTsKKyAgICBtX2R1cmF0aW9uRGlzcGxheS0+aGlkZSgpOworCisgICAgTWVk
aWFDb250cm9sczo6cGxheWJhY2tTdGFydGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc05p
eDo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkKK3sKKyAgICBkb3VibGUgbm93ID0gbV9tZWRp
YUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9tZWRp
YUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7CisKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBZnRlciBz
ZWVrLCBoaWRlIGR1cmF0aW9uIGRpc3BsYXkgYW5kIHNob3cgY3VycmVudCB0aW1lLgorICAgIGlm
IChub3cgPiAwKSB7CisgICAgICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zaG93KCk7CisgICAg
ICAgIG1fZHVyYXRpb25EaXNwbGF5LT5oaWRlKCk7CisgICAgfQorCisgICAgLy8gQWxsb3cgdGhl
IHRoZW1lIHRvIGZvcm1hdCB0aGUgdGltZS4KKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0
SW5uZXJUZXh0KFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9s
c0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2N1
cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sc05peDo6Y2hhbmdlZE11dGUoKQoreworICAgIE1lZGlhQ29udHJvbHM6OmNoYW5nZWRN
dXRlKCk7CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPm11dGVkKCkpCisgICAgICAgIG1f
dm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUoMCk7CisgICAgZWxzZQorICAgICAgICBtX3ZvbHVtZVNs
aWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc05peC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc05peC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMGMy
N2E1OTljNWQ5ZDUyYWRiNTc5Y2UxYjE0ZGIwODQyMTAwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzTml4LmgKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJiMzOTsmIzM5OyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lZGlhQ29udHJvbHNOaXhfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xzTml4X2gK
KworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUNvbnRyb2xzTml4IDogcHVibGljIE1lZGlh
Q29udHJvbHMgeworcHVibGljOgorICAgIC8vIENhbGxlZCBmcm9tIHBvcnQtc3BlY2lmaWMgcGFy
ZW50IGNyZWF0ZSBmdW5jdGlvbiB0byBjcmVhdGUgY3VzdG9tIGNvbnRyb2xzLgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNOaXg+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50Jik7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIGNo
YW5nZWRNdXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1l
RGlzcGxheSgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgTWVkaWFDb250
cm9sc05peChEb2N1bWVudCYpOworCisgICAgYm9vbCBpbml0aWFsaXplQ29udHJvbHMoRG9jdW1l
bnQmKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQqIG1fZHVyYXRpb25EaXNwbGF5OworICAgIE1lZGlhQ29udHJvbFBhbmVsRW5jbG9zdXJl
RWxlbWVudCogbV9lbmNsb3N1cmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoVklERU8pCisKKyNlbmRpZiAvLyBNZWRpYUNvbnRyb2xzTml4X2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZDU2NTk4
ZjQ5NDJhZGRjODEwMGJmZTA5NTcxMTM1NmViNTc3YjQxMS4uY2JkMmVmMzUwZGZlMmRlNDllMzI1
MWRkZDkzNjE0YWFjM2ZiNTczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCkBAIC0xMzksMTEgKzEzOSwyMCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uodmlldyk7CiAg
ICAgICAgIH0KIAorICAgICAgICBkb3VibGUgY3VycmVudFNjYWxlRmFjdG9yID0gbV9jdXJyZW50
SXRlbS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIEludFBvaW50IGN1cnJlbnRTY3JvbGxQ
b2ludCA9IG1fY3VycmVudEl0ZW0tPnNjcm9sbFBvaW50KCk7CisjaWYgUExBVEZPUk0oTklYKQor
ICAgICAgICBkb3VibGUgcHJldmlvdXNTY2FsZUZhY3RvciA9IG1fcHJldmlvdXNJdGVtID8gbV9w
cmV2aW91c0l0ZW0tPnBhZ2VTY2FsZUZhY3RvcigpIDogY3VycmVudFNjYWxlRmFjdG9yOworICAg
ICAgICBJbnRQb2ludCBwcmV2aW91c1Njcm9sbFBvaW50ID0gbV9wcmV2aW91c0l0ZW0gPyBtX3By
ZXZpb3VzSXRlbS0+c2Nyb2xsUG9pbnQoKSA6IGN1cnJlbnRTY3JvbGxQb2ludDsKKworICAgICAg
ICBpZiAocHJldmlvdXNTY2FsZUZhY3RvciAhPSBjdXJyZW50U2NhbGVGYWN0b3IgfHwgcHJldmlv
dXNTY3JvbGxQb2ludCAhPSBjdXJyZW50U2Nyb2xsUG9pbnQpIHsKKyNlbHNlCiAgICAgICAgIGlm
ICghdmlldy0+d2FzU2Nyb2xsZWRCeVVzZXIoKSkgewotICAgICAgICAgICAgaWYgKHBhZ2UgJiYg
bV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1fY3VycmVudEl0ZW0tPnBhZ2VTY2FsZUZhY3Rvcigp
KQotICAgICAgICAgICAgICAgIHBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihtX2N1cnJlbnRJdGVt
LT5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jdXJyZW50SXRlbS0+c2Nyb2xsUG9pbnQoKSk7CisjZW5k
aWYgLy8gUExBVEZPUk0oTklYKQorICAgICAgICAgICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS5pc01h
aW5GcmFtZSgpICYmIGN1cnJlbnRTY2FsZUZhY3RvcikKKyAgICAgICAgICAgICAgICBwYWdlLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoY3VycmVudFNjYWxlRmFjdG9yLCBjdXJyZW50U2Nyb2xsUG9pbnQp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0
aW9uKG1fY3VycmVudEl0ZW0tPnNjcm9sbFBvaW50KCkpOworICAgICAgICAgICAgICAgIHZpZXct
PnNldFNjcm9sbFBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb2ludCk7CiAgICAgICAgIH0KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggY2QwYmY1MzQ2OTY2YmU5
YzE1ZTBkZDIzZDdmNjY0YjIzMDk1NzY5Mi4uNDRhNjA1YWY4MmE5MGExYTQ2YTQ1NmM2OWI0ZTc0
YzRlZTZiYjAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjU2NSw2
ICsyNTY1LDM2IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIo
Tm9kZSogc3RhcnROb2RlLCBXaGVlbEV2ZW50KiB3aGVlbEV2CiAgICAgICAgIG1fcHJldmlvdXNX
aGVlbFNjcm9sbGVkRWxlbWVudCA9IHN0b3BFbGVtZW50OwogfQogCisjaWYgUExBVEZPUk0oTklY
KQordm9pZCBFdmVudEhhbmRsZXI6OmhhbmRsZVNpbmdsZVRhcChkb3VibGUgdGltZXN0YW1wLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQoreworICAgIEludFBvaW50IHRhcmdldFBv
aW50OworI2lmIEVOQUJMRShUT1VDSF9BREpVU1RNRU5UKQorICAgIGJvb2wgcG9zaXRpb25BZGp1
c3RlZCA9IGZhbHNlOworICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkudG91Y2hBZGp1c3RtZW50
RW5hYmxlZCgpKSB7CisgICAgICAgIE5vZGUqIHRhcmdldE5vZGUgPSAwOworICAgICAgICBwb3Np
dGlvbkFkanVzdGVkID0gYmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KHBvaW50LnBvcygp
LCBJbnRTaXplKHBvaW50LnJhZGl1c1goKSwgcG9pbnQucmFkaXVzWSgpKSwgdGFyZ2V0UG9pbnQs
IHRhcmdldE5vZGUpOworICAgIH0KKyAgICBpZiAoIXBvc2l0aW9uQWRqdXN0ZWQpCisgICAgICAg
IHRhcmdldFBvaW50ID0gcG9pbnQucG9zKCk7CisjZWxzZQorICAgIHRhcmdldFBvaW50ID0gcG9p
bnQucG9zKCk7CisjZW5kaWYKKworICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3Zl
KHRhcmdldFBvaW50LCBwb2ludC5zY3JlZW5Qb3MoKSwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMCwKKyAgICBmYWxzZSAvKiBzaGlmdCAqLywg
ZmFsc2UgLyogY3RybCAqLywgZmFsc2UgLyogYWx0ICovLCBmYWxzZSAvKiBtZXRhICovLCB0aW1l
c3RhbXApOworICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CisKKyAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQgZmFrZU1vdXNlRG93bih0YXJnZXRQb2ludCwgcG9pbnQuc2NyZWVuUG9zKCksIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSAvKiB0YXBDb3VudCAqLywK
KyAgICBmYWxzZSAvKiBzaGlmdCAqLywgZmFsc2UgLyogY3RybCAqLywgZmFsc2UgLyogYWx0ICov
LCBmYWxzZSAvKiBtZXRhICovLCB0aW1lc3RhbXApOworICAgIGhhbmRsZU1vdXNlUHJlc3NFdmVu
dChmYWtlTW91c2VEb3duKTsKKworICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcCh0
YXJnZXRQb2ludCwgcG9pbnQuc2NyZWVuUG9zKCksIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlUmVsZWFzZWQsIDEgLyogdGFwQ291bnQgKi8sCisgICAgZmFsc2UgLyogc2hpZnQgKi8s
IGZhbHNlIC8qIGN0cmwgKi8sIGZhbHNlIC8qIGFsdCAqLywgZmFsc2UgLyogbWV0YSAqLywgdGlt
ZXN0YW1wKTsKKyAgICBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7Cit9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oTklYKQorCiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiBi
b29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IElu
dFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50
JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAppbmRleCAzNGMwMDk1OTQxZTgwMTk1OTE5MjgxN2YyMjIzODEzOGQzMzA5ZDY2Li45
ZWMyOTAxYmMxNTQ5OTNmODc2ZGM5ZjYwMmYzZTY0MTY1YWQzZDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIE9wdGlv
bmFsQ3Vyc29yOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1U
b3VjaEV2ZW50OworY2xhc3MgUGxhdGZvcm1Ub3VjaFBvaW50OwogY2xhc3MgUGxhdGZvcm1XaGVl
bEV2ZW50OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckxheWVyOwpAQCAtMTc1
LDYgKzE3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihO
b2RlKiwgV2hlZWxFdmVudCopOwogICAgIGJvb2wgaGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24o
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKKyNpZiBQTEFURk9STShOSVgpCisgICAgdm9p
ZCBoYW5kbGVTaW5nbGVUYXAoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50Jik7CisjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKICAgICBib29sIGJl
c3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIs
IGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUq
JiB0YXJnZXROb2RlKTsKICAgICBib29sIGJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50
KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMs
IEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJzb3IuaAppbmRleCBmMjBmZGZhYjQ4YzFhMTdiZTY4ODhmNmM3ZjBhYTI1ZTg1NTdkZGU2
Li4zMmNkZWRkYjhiMzJiMTE1MTEyMTQ3YmQ0ZmM0NjFiMzNmMDBjZGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJzb3IuaApAQCAtNzcsOCArNzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHR5cGVkZWYgTlNDdXJzb3IgKlBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oR1RLKQog
ICAgIHR5cGVkZWYgR1JlZlB0cjxHZGtDdXJzb3I+IFBsYXRmb3JtQ3Vyc29yOwotI2VsaWYgUExB
VEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpCisjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdHlw
ZWRlZiBjb25zdCBjaGFyKiBQbGF0Zm9ybUN1cnNvcjsKKyNlbGlmIFBMQVRGT1JNKE5JWCkKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExBVEZPUk0oQkxBQ0tC
RVJSWSkKICAgICB0eXBlZGVmIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCbGFja0JlcnJ5Q3Vyc29y
IFBsYXRmb3JtQ3Vyc29yOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5oCmluZGV4IDg5NDhmN2M5MDQ0NDU1ZGRkNDJkMzNkYzAxZGQxM2VhMmVlY2Q2NWUuLjky
NGQ0NzQ5YTUyMDhmNjQwOWM2MDkxNjkzMWFiZjM5YzZiMDUwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApAQCAtMTg0LDcgKzE4NCw2IEBAIHByaXZhdGU6CiAj
ZW5kaWYgLy8gVVNFKFdFQkFVRElPX0lQUCkKIAogI2lmIFBMQVRGT1JNKE5JWCkKLSAgICB2b2lk
IHNjYWxlUGxhbmFyRGF0YShmbG9hdCBzY2FsZSk7CiAgICAgT3duUHRyPE5peDo6RkZURnJhbWU+
IG1fZmZ0RnJhbWU7CiAjZW5kaWYgLy8gUExBVEZPUk0oTklYKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9uaXgvQXVkaW9CdXNOaXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbml4L0F1ZGlvQnVzTml4LmNwcAppbmRleCA3MjEwOTkzNTNh
MTExMmY2ZjJlMTM2N2M1YzQ0MWJmYzlmNDc1N2I5Li5hNGI3NjE3NGQ3YTU3MTcxNTY3YTkxY2Q4
MTlmODU5MDUwMjBkYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9uaXgvQXVkaW9CdXNOaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L25peC9BdWRpb0J1c05peC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdWRpb0J1
cy5oIgogCiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCisjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxwdWJsaWMvTXVsdGlDaGFubmVsUENN
RGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgpAQCAtNTMsOSArNTQsMTEgQEAg
UGFzc1JlZlB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXAKIHsKICAgICAvLyBGSVhNRTogVGhpcyBhc3N1bWVzIHRo
ZSBmaWxlIHN5c3RlbSB1c2VzIGxhdGluMSBvciBVVEYtOCBlbmNvZGluZywgYnV0IHRoaXMgY29t
bWVudCBhbHNvIGFzc3VtZXMKICAgICAvLyB0aGF0IG5vbi1hc2NpaSBmaWxlIG5hbWVzIHdvdWxk
IGFwcGVhciBoZXJlLgotICAgIGNvbnN0IENTdHJpbmcgYWJzb2x1dGVGaWxlbmFtZShtYWtlU3Ry
aW5nKERBVEFfRElSLCAiL3dlYmF1ZGlvL3Jlc291cmNlcy8iLCBuYW1lLCAiLndhdiIpLnV0Zjgo
KSk7CisgICAgQ1N0cmluZyBhYnNvbHV0ZUZpbGVuYW1lKG1ha2VTdHJpbmcoREFUQV9ESVIsICIv
d2ViYXVkaW8vcmVzb3VyY2VzLyIsIG5hbWUsICIud2F2IikudXRmOCgpKTsKICAgICBzdHJ1Y3Qg
c3RhdCBzdGF0RGF0YTsKICAgICBpZiAoOjpzdGF0KGFic29sdXRlRmlsZW5hbWUuZGF0YSgpLCAm
c3RhdERhdGEpID09IC0xKQorICAgICAgICBhYnNvbHV0ZUZpbGVuYW1lID0gbWFrZVN0cmluZyhV
TklOU1RBTExFRF9BVURJT19SRVNPVVJDRVNfRElSLCAiLyIsIG5hbWUsICIud2F2IikudXRmOCgp
OworICAgIGlmICg6OnN0YXQoYWJzb2x1dGVGaWxlbmFtZS5kYXRhKCksICZzdGF0RGF0YSkgPT0g
LTEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRklMRSogZmlsZSA9IGZvcGVuKGFi
c29sdXRlRmlsZW5hbWUuZGF0YSgpLCAicmIiKTsKQEAgLTY0LDcgKzY3LDcgQEAgUGFzc1JlZlB0
cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5h
bWUsIGZsb2F0IHNhbXAKIAogICAgIFdURjo6VmVjdG9yPGNoYXI+IGZpbGVDb250ZW50czsKICAg
ICBmaWxlQ29udGVudHMucmVzaXplKHN0YXREYXRhLnN0X3NpemUpOwotICAgIHNpemVfdCBieXRl
c1JlYWQgPSBmcmVhZCgmZmlsZUNvbnRlbnRzWzBdLCBmaWxlQ29udGVudHMuc2l6ZSgpLCAxLCBm
aWxlKTsKKyAgICBzaXplX3QgYnl0ZXNSZWFkID0gZnJlYWQoJmZpbGVDb250ZW50c1swXSwgMSwg
ZmlsZUNvbnRlbnRzLnNpemUoKSwgZmlsZSk7CiAgICAgZmNsb3NlKGZpbGUpOwogICAgIGlmIChi
eXRlc1JlYWQgPCBmaWxlQ29udGVudHMuc2l6ZSgpKQogICAgICAgICBmaWxlQ29udGVudHMucmVz
aXplKGJ5dGVzUmVhZCk7CkBAIC04OCwzICs5MSw0IEBAIFBhc3NSZWZQdHI8QXVkaW9CdXM+IGNy
ZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IDAz
YjU3YjVlODI0NDQ4OGE1ZjllNjIyZjcwNjQ1OThkNjI4ZjVmMjMuLjRlOWQzOWUzMTVkYTlhNTgy
ZjNiYTAwYWYzZWJhNGU2ZjcxZDA3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dMQ29udGV4dC5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIFVTRShFR0wpICYm
ICFQTEFURk9STShHVEspCisjaWYgVVNFKEVHTCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRG
T1JNKE5JWCkKICNpbmNsdWRlICJlZ2xwbGF0Zm9ybS5oIgogdHlwZWRlZiBFR0xOYXRpdmVXaW5k
b3dUeXBlIEdMTmF0aXZlV2luZG93VHlwZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNmE4OGU0M2YxYzI0NTdkN2Rh
YjMwMzQ4OGQ5ODdmODU1NjYzYjQxMC4uZjk3OTg4ZWIyMTg2ODU1NTE1OWExMzlkY2E3N2E3YmJm
ZTAxMTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcApAQCAtNzAsNiArNzAsOSBAQAogI2VsaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjZGVmaW5lIFBsYXRm
b3JtTWVkaWFFbmdpbmVDbGFzc05hbWUgTWVkaWFQbGF5ZXJQcml2YXRlCisjZWxpZiBQTEFURk9S
TShOSVgpCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlTml4LmgiCisjZGVmaW5lIFBsYXRm
b3JtTWVkaWFFbmdpbmVDbGFzc05hbWUgTWVkaWFQbGF5ZXJQcml2YXRlTml4CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbml4L01lZGlhUGxheWVyUHJpdmF0ZU5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaXgvTWVkaWFQbGF5ZXJQcml2YXRlTml4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMDczMTQ5NDkzYWFjOTU4YzE1M2M0MmRiNWVkNzIwZjBiODliZjFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L01lZGlhUGxheWVyUHJp
dmF0ZU5peC5jcHAKQEAgLTAsMCArMSwyNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJT
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZU5peC5oIgorCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKK3sKKyAgICBhdXRvIG5peFBsYXllciA9IGFkb3B0UHRyKE5peDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlTWVkaWFQbGF5ZXIobnVsbHB0cikpOworICAgIGlm
IChuaXhQbGF5ZXIpCisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVz
LCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOworfQorCitQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpjcmVhdGUoTWVkaWFQbGF5ZXIq
IHBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lZGlhUGxheWVyUHJpdmF0ZU5p
eChwbGF5ZXIpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVOaXg6OmdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYpCit7Cit9CisKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYpCit7CisgICAgLy8gTWVkaWFQbGF5ZXIgY2FsbHMgbG9hZCBldmVu
IGlmIHRoZSBlbmdpbmUgc2F5cyBpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGZvcm1hdCA6LS8KKyAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworfQorCitNZWRpYVBsYXllcjo6
TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVOaXg6Om1vdmllTG9hZFR5cGUoKSBjb25z
dAoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlVua25vd247CisKKyAgICBpZiAoaXNMaXZlU3Ry
ZWFtKCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbTsKKworICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6RG93bmxvYWQ7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
Tml4Ojppc0xpdmVTdHJlYW0oKSBjb25zdAoreworICAgIEFTU0VSVChtX25peFBsYXllcik7Cisg
ICAgcmV0dXJuIG1fbml4UGxheWVyLT5pc0xpdmVTdHJlYW0oKTsKK30KKworY2xhc3MgTml4TWVk
aWFQbGF5ZXJDbGllbnQgOiBwdWJsaWMgTml4OjpNZWRpYVBsYXllckNsaWVudCB7CitwdWJsaWM6
CisgICAgTml4TWVkaWFQbGF5ZXJDbGllbnQoTWVkaWFQbGF5ZXJQcml2YXRlTml4KiBwbGF5ZXIp
CisgICAgICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1f
cGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY3Vy
cmVudFRpbWVDaGFuZ2VkKCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fcGxheWVy
LT5jdXJyZW50VGltZUNoYW5nZWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZHlT
dGF0ZUNoYW5nZWQoUmVhZHlTdGF0ZSBzdGF0ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1f
cGxheWVyLT5zZXRSZWFkeVN0YXRlKChNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSlzdGF0ZSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoTmV0d29ya1N0YXRl
IHN0YXRlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9wbGF5ZXItPnNldE5ldHdvcmtTdGF0
ZSgoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSlzdGF0ZSk7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBNZWRpYVBsYXllclByaXZhdGVOaXgqIG1fcGxheWVyOworfTsKKworTWVkaWFQbGF5ZXJQcml2
YXRlTml4OjpNZWRpYVBsYXllclByaXZhdGVOaXgoTWVkaWFQbGF5ZXIqIHBsYXllcikKKyAgICA6
IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fbml4UGxheWVyKGFkb3B0UHRyKE5peDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+Y3JlYXRlTWVkaWFQbGF5ZXIobmV3IE5peE1lZGlhUGxheWVyQ2xpZW50
KHRoaXMpKSkpCisgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQor
ICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OklkbGUpCisgICAgLCBtX3BhdXNlZCh0
cnVlKQoreworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU5peDo6bG9hZChjb25zdCBXVEY6
OlN0cmluZyYgdXJsKQoreworICAgIFVSTCB1cmxPYmooVVJMKCksIHVybCk7CisgICAgU3RyaW5n
IGNsZWFuVXJsKHVybCk7CisKKyAgICAvLyBDbGVhbiBvdXQgZXZlcnl0aGluZyBhZnRlciBmaWxl
Oi8vIHVybCBwYXRoLgorICAgIGlmICh1cmxPYmouaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgY2xl
YW5VcmwgPSBjbGVhblVybC5zdWJzdHJpbmcoMCwgdXJsT2JqLnBhdGhFbmQoKSk7CisKKyAgICBz
ZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkxvYWRpbmcpOworICAgIHNldFJlYWR5U3RhdGUo
TWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKTsKKyAgICBtX25peFBsYXllci0+bG9hZChjbGVhblVy
bC51dGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVOaXg6OmNhbmNl
bExvYWQoKQoreworICAgIC8vIFRPRE86IEFkZCBjYW5jZWxMb2FkIHRvIE5peDo6TWVkaWFQbGF5
ZXIKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVOaXg6OnByZXBhcmVUb1BsYXkoKQorewor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU5peDo6cGxheSgpCit7CisgICAgbV9uaXhQbGF5
ZXItPnBsYXkoKTsKKyAgICBtX3BhdXNlZCA9IGZhbHNlOworfQorCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU5peDo6cGF1c2UoKQoreworICAgIG1fbml4UGxheWVyLT5wYXVzZSgpOworICAgIG1f
cGF1c2VkID0gdHJ1ZTsKK30KKworZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpkdXJhdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbml4UGxheWVyLT5kdXJhdGlvbigpOworfQorCitm
bG9hdCBNZWRpYVBsYXllclByaXZhdGVOaXg6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9uaXhQbGF5ZXItPmN1cnJlbnRUaW1lKCk7Cit9CisKK0ludFNpemUgTWVkaWFQbGF5
ZXJQcml2YXRlTml4OjpuYXR1cmFsU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUo
KTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVOaXg6Omhhc1ZpZGVvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZU5peDo6aGFzQXVk
aW8oKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU5peDo6c2V0VmlzaWJsZShib29sKQoreworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0
ZU5peDo6c2Vla2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbml4UGxheWVyLT5zZWVraW5n
KCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpzZWVrKGZsb2F0IHRpbWUpCit7
CisgICAgcmV0dXJuIG1fbml4UGxheWVyLT5zZWVrKHRpbWUpOworfQorCitmbG9hdCBNZWRpYVBs
YXllclByaXZhdGVOaXg6Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGR1
cmF0aW9uKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpzZXRSYXRlKGZsb2F0
IHJhdGUpCit7CisgICAgbV9uaXhQbGF5ZXItPnNldFBsYXliYWNrUmF0ZShyYXRlKTsKK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVOaXg6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7Cisg
ICAgbV9uaXhQbGF5ZXItPnNldFZvbHVtZSh2b2x1bWUpOworfQorCitib29sIE1lZGlhUGxheWVy
UHJpdmF0ZU5peDo6cGF1c2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXVzZWQ7Cit9CisK
K01lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpuZXR3b3Jr
U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX25ldHdvcmtTdGF0ZTsKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVOaXg6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIHN0YXRlKQoreworICAgIG1fbmV0d29ya1N0YXRlID0gc3RhdGU7CisgICAgbV9wbGF5
ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
TWVkaWFQbGF5ZXJQcml2YXRlTml4OjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZWFkeVN0YXRlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU5peDo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBtX3JlYWR5U3RhdGUg
PSBzdGF0ZTsKKyAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKK30KKworUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVOaXg6OmJ1ZmZlcmVk
KCkgY29uc3QKK3sKKyAgICAvLyBBZGQgdGhpcyB0byBOaXg6Ok1lZGlhUGxheWVyCisgICAgcmV0
dXJuIDA7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTml4OjpkaWRMb2FkaW5nUHJvZ3Jl
c3MoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU5peDo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikKK3sKK30KKwordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVOaXg6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25peC9NZWRpYVBsYXllclByaXZhdGVOaXguaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25peC9NZWRpYVBsYXllclByaXZhdGVOaXguaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ODIwNThkMzYzNzE1YTFiMDlmMTFkMDlkNDk1MTZiZWQwNTE4YTYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbml4L01lZGlhUGxheWVy
UHJpdmF0ZU5peC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJT
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBNZWRpYVBsYXllclByaXZhdGVOaXhfaAorI2RlZmluZSBNZWRpYVBsYXllclByaXZh
dGVOaXhfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlLmgiCisjaW5jbHVkZSA8cHVibGljL01lZGlhUGxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTml4IDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChj
b25zdCBXVEY6OlN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2Fk
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgZmxvYXQgZHVyYXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2b2lk
IGR1cmF0aW9uQ2hhbmdlZCgpIGNvbnN0IHsgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOyB9
CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZv
aWQgY3VycmVudFRpbWVDaGFuZ2VkKCkgY29uc3QgeyBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsg
fQorCisgICAgdmlydHVhbCBJbnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGhhc0F1ZGlvKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGUoYm9vbCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVh
bCB2b2lkIHNldFJhdGUoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1
bWUoZmxvYXQpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZvaWQgc2V0TmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZvaWQgc2V0UmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdmlydHVhbCBNZWRpYVBsYXll
cjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAg
TWVkaWFQbGF5ZXJQcml2YXRlTml4KE1lZGlhUGxheWVyKik7CisKKyAgICBzdGF0aWMgUGFzc093
blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwor
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYpOworICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25z
dDsKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKKyAgICBPd25QdHI8Tml4OjpNZWRpYVBs
YXllcj4gbV9uaXhQbGF5ZXI7CisKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5
U3RhdGU7CisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKKwor
ICAgIGJvb2wgbV9wYXVzZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pCisKKyNlbmRpZiAvLyBNZWRpYVBsYXllck5peF9oCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggN2U3YmFiYmNkMGM5MWRlNGIyNzIyNjM4MjU1ZTY0
NTU5YTc5Y2I3My4uODk3NjgwOGY0ZmQzNTM2ZDJkNDRhM2VkMDJhOTk0ZmI1N2NkNWJhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTczNiw2ICs3MzYsMTggQEAgdGVtcGxhdGU8
Y2xhc3MgSGl0VGVzdENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmhpdFRlc3QKICAgICByZXR1cm4gY29uZGl0aW9uKHRoaXMsIHBvaW50KSA/IHRoaXMg
OiAwOwogfQogCisjaWYgUExBVEZPUk0oTklYKQorVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmdldEFuY2VzdG9yU2Nyb2xsYWJsZUxheWVyKCkgY29uc3QKK3sKKyAgICBm
b3IgKFRleHR1cmVNYXBwZXJMYXllciogcGFyZW50ID0gbV9wYXJlbnQ7IHBhcmVudDsgcGFyZW50
ID0gcGFyZW50LT5tX3BhcmVudCkgeworICAgICAgICBpZiAocGFyZW50LT5pc1Njcm9sbGFibGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9
CisjZW5kaWYgLy8gUExBVEZPUk0oTklYKQorCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2Ny
b2xsYWJsZUxheWVySGl0VGVzdENvbmRpdGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKICAgICAvLyBzY3JvbGxpbmcgbGF5ZXIncyBtX3Bh
cmVudC0+bV9wYXJlbnQsIHRoZSBwYXJlbnQgb2YgdGhlIHNjcm9sbGluZyBsYXllcywgaXMgdGhl
IG9uZSB0aGF0IGRlZmluZXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggN2I2MmIw
YTBiN2RlZDE0MDg4Nzc4ODM3NjE1NWNjNmU1MDhmYTIyZC4uODNiNGM0NmY1MjAxMGZiOTQ1MGVk
MWJhMDQwYmVmNmM0NGZmYjhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzMsNiAr
NzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50
U2l6ZSYpOwogICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKSB7IG1f
aXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOyB9CiAgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZTsgfQorI2lmIFBMQVRGT1JNKE5JWCkKKyAgICBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGdldEFuY2VzdG9yU2Nyb2xsYWJsZUxheWVyKCkgY29uc3Q7Cisj
ZW5kaWYgLy8gUExBVEZPUk0oTklYKQogCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
cigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXht
YXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDg2NjI3ODhjYzkz
NDY5YzVmZjI4N2U5NDFmNjZmYTAxNTcyYjEwNTUuLjYwZjNjYjU5NTZhZTVjMjBiNjk3YzkwMjll
NzVlYjkzYjYxOTRhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC02MCw2ICs2MCw5IEBAIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZUNsaWVuCiAgICAgLCBtX3Jvb3RMYXllcklEKEludmFsaWRDb29yZGluYXRlZExheWVySUQp
CiAgICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3NldERyYXdz
QmFja2dyb3VuZChmYWxzZSkKKyNpZiBQTEFURk9STShOSVgpCisgICAgLCBtX3N0YXRlTG9ja2Vk
KGZhbHNlKQorI2VuZGlmIC8vIFBMQVRGT1JNKE5JWCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogfQpAQCAtNjA3LDggKzYxMCwyNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKQogICAgIG1fYmFja2lu
Z1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwogfQogCisjaWYgUExBVEZPUk0oTklY
KQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFBlbmRpbmdTdGF0ZUNoYW5n
ZSgpCit7CisgICAgaWYgKG1fc3RhdGVMb2NrZWQgfHwgIW1fcGVuZGluZ1N0YXRlQ2hhbmdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBPd25QdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPiBw
ZW5kaW5nQ2hhbmdlID0gbV9wZW5kaW5nU3RhdGVDaGFuZ2UucmVsZWFzZSgpOworICAgIGNvbW1p
dFNjZW5lU3RhdGUoKnBlbmRpbmdDaGFuZ2UuZ2V0KCkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JN
KE5JWCkKKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUo
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKIHsKKyNpZiBQTEFURk9STShO
SVgpCisgICAgaWYgKG1fc3RhdGVMb2NrZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX3BlbmRpbmdT
dGF0ZUNoYW5nZSk7CisgICAgICAgIG1fcGVuZGluZ1N0YXRlQ2hhbmdlID0gYWRvcHRQdHIobmV3
IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShzdGF0ZSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmIC8vIFBMQVRGT1JNKE5JWCkKKwogICAgIG1fcmVuZGVyZWRDb250ZW50c1Njcm9s
bFBvc2l0aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb247CiAKICAgICBjcmVhdGVMYXllcnMoc3Rh
dGUubGF5ZXJzVG9DcmVhdGUpOwpAQCAtNjU5LDYgKzY4MSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnN5bmNSZW1vdGVDb250ZW50KCkKIHsKICAgICAvLyBXZSBlbnF1ZXVlIG1lc3NhZ2Vz
IGFuZCBleGVjdXRlIHRoZW0gZHVyaW5nIHBhaW50LCBhcyB0aGV5IHJlcXVpcmUgYW4gYWN0aXZl
IEdMIGNvbnRleHQuCisjaWYgUExBVEZPUk0oTklYKQorICAgIGNvbW1pdFBlbmRpbmdTdGF0ZUNo
YW5nZSgpOworI2VuZGlmIC8vIFBMQVRGT1JNKE5JWCkKICAgICBlbnN1cmVSb290TGF5ZXIoKTsK
IAogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gcmVuZGVyUXVldWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggMDdj
ZDU2MzRmY2M3ZDlhNTExN2VhYWI3NTZkOWVjOGVlNjlhZWY4MC4uM2YwYjU3MmJkMzY1MThiZDU0
MWYyZTNhMTQ5NWQ1OTQ3OWFlNWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtODUsNiArODUsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBzZXRE
cmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tncm91bmQgPSBlbmFi
bGU7IH0KIAorI2lmIFBMQVRGT1JNKE5JWCkKKyAgICB2b2lkIGxvY2tTdGF0ZSgpIHsgbV9zdGF0
ZUxvY2tlZCA9IHRydWU7IH0KKyAgICB2b2lkIHVubG9ja1N0YXRlKCkgeyBtX3N0YXRlTG9ja2Vk
ID0gZmFsc2U7IH0KKyNlbmRpZiAvLyBQTEFURk9STShOSVgpCisKIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgY3JlYXRlTGF5
ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+Jik7CkBAIC0xNTEsNiArMTU2LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKFRleHR1cmVN
YXBwZXJMYXllciopOwogICAgIHZvaWQgcmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4dHVy
ZU1hcHBlckxheWVyKik7CiAgICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6
ZShUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyNpZiBQTEFURk9STShOSVgpCisgICAgdm9pZCBjb21t
aXRQZW5kaW5nU3RhdGVDaGFuZ2UoKTsKKyNlbmRpZiAvLyBQTEFURk9STShOSVgpCiAKICAgICB2
b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IElu
dFNpemUmIG9mZnNldCk7CiAKQEAgLTE5OSw2ICsyMDcsMTEgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHNDb3VudGVyOworCisjaWYgUExBVEZP
Uk0oTklYKQorICAgIGJvb2wgbV9zdGF0ZUxvY2tlZDsKKyAgICBPd25QdHI8Q29vcmRpbmF0ZWRH
cmFwaGljc1N0YXRlPiBtX3BlbmRpbmdTdGF0ZUNoYW5nZTsKKyNlbmRpZiAvLyBQTEFURk9STShO
SVgpCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkBAIC0yMDcsNCArMjIwLDMgQEAgcHJp
dmF0ZToKIAogI2VuZGlmIC8vIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZV9oCiAKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbml4L01lZGlhU3RyZWFt
Q2VudGVyTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL25peC9N
ZWRpYVN0cmVhbUNlbnRlck5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjgzNjIwZGM4MTM2MjEyYjMyMDkz
ODc5MjdjMDhkMWQ5NjVmNDk0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL25peC9NZWRpYVN0cmVhbUNlbnRlck5peC5jcHAKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUNlbnRlck5peC5oIgorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVBy
aXZhdGUuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9NZWRpYUNvbnN0cmFpbnRzLmg+CisjaW5jbHVk
ZSA8cHVibGljL01lZGlhU3RyZWFtLmg+CisjaW5jbHVkZSA8cHVibGljL01lZGlhU3RyZWFtQ2Vu
dGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhU3RyZWFtQ2VudGVyJiBN
ZWRpYVN0cmVhbUNlbnRlcjo6cGxhdGZvcm1DZW50ZXIoKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYVN0cmVhbUNlbnRlck5peCwg
Y2VudGVyLCAoKSk7CisgICAgcmV0dXJuIGNlbnRlcjsKK30KKworTWVkaWFTdHJlYW1DZW50ZXJO
aXg6Ok1lZGlhU3RyZWFtQ2VudGVyTml4KCkKKyAgICA6IG1fY2xpZW50KE5peDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoKSkKK3sKK30KKworTWVkaWFTdHJl
YW1DZW50ZXJOaXg6On5NZWRpYVN0cmVhbUNlbnRlck5peCgpCit7Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1DZW50ZXJOaXg6OnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY3JlYXRpb25DbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisKKyAgICBOaXg6
Ok1lZGlhQ29uc3RyYWludHMgbml4QXVkaW9Db25zdHJhaW50cyhhdWRpb0NvbnN0cmFpbnRzKTsK
KyAgICBOaXg6Ok1lZGlhQ29uc3RyYWludHMgbml4VmlkZW9Db25zdHJhaW50cyh2aWRlb0NvbnN0
cmFpbnRzKTsKKyAgICBjb25zdCBjaGFyICpmYWlsZWRDb25zdHJhaW50cyA9IG1fY2xpZW50LT52
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhuaXhBdWRpb0NvbnN0cmFpbnRzLCBuaXhWaWRlb0Nv
bnN0cmFpbnRzKTsKKworICAgIGlmICghZmFpbGVkQ29uc3RyYWludHMpCisgICAgICAgIGNyZWF0
aW9uQ2xpZW50LT5jb25zdHJhaW50c1ZhbGlkYXRlZCgpOworICAgIGVsc2UKKyAgICAgICAgY3Jl
YXRpb25DbGllbnQtPmNvbnN0cmFpbnRzSW52YWxpZChmYWlsZWRDb25zdHJhaW50cyk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1DZW50ZXJOaXg6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY3JlYXRpb25DbGllbnQsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiB2aWRlb0NvbnN0cmFpbnRzKQoreworICAgIE5peDo6TWVkaWFDb25zdHJhaW50cyBuaXhB
dWRpb0NvbnN0cmFpbnRzKGF1ZGlvQ29uc3RyYWludHMpOworICAgIE5peDo6TWVkaWFDb25zdHJh
aW50cyBuaXhWaWRlb0NvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpOworICAgIE5peDo6TWVk
aWFTdHJlYW0gc3RyZWFtID0gbV9jbGllbnQtPmNyZWF0ZU1lZGlhU3RyZWFtKG5peEF1ZGlvQ29u
c3RyYWludHMsIG5peFZpZGVvQ29uc3RyYWludHMpOworICAgIGNyZWF0aW9uQ2xpZW50LT5kaWRD
cmVhdGVTdHJlYW0oc3RyZWFtKTsKK30KKworYm9vbCBNZWRpYVN0cmVhbUNlbnRlck5peDo6Z2V0
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQ+KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbml4L01lZGlhU3RyZWFtQ2Vu
dGVyTml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9uaXgvTWVkaWFT
dHJlYW1DZW50ZXJOaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjZiOWE2OWUxOTYxYjc3MjRjMTBkMGU0OGZl
OWQzYTVhMTZhMjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbml4L01lZGlhU3RyZWFtQ2VudGVyTml4LmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFTdHJlYW1D
ZW50ZXJOaXhfaAorI2RlZmluZSBNZWRpYVN0cmVhbUNlbnRlck5peF9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKKworI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBOaXggeworY2xhc3MgTWVkaWFTdHJlYW1DZW50ZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOworY2xhc3MgTWVkaWFTdHJl
YW1Tb3VyY2U7CisKK2NsYXNzIE1lZGlhU3RyZWFtQ2VudGVyTml4IDogcHVibGljIE1lZGlhU3Ry
ZWFtQ2VudGVyIHsKK3B1YmxpYzoKKyAgICBNZWRpYVN0cmVhbUNlbnRlck5peCgpOworICAgIH5N
ZWRpYVN0cmVhbUNlbnRlck5peCgpOworCisgICAgLy8gTWVkaWFTdHJlYW1DZW50ZXIKKyAgICB2
aXJ0dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0Nv
bnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25z
dHJhaW50cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikg
T1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTml4OjpNZWRpYVN0cmVhbUNlbnRlciogbV9jbGll
bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFTdHJlYW1DZW50ZXJOaXhfaAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvQ3Vyc29yTml4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25peC9DdXJzb3JOaXguY3BwCmluZGV4IDE3N2VmMGNjZTNiZTk3ZmVh
YWQ0OGY2Nzg3MDU1NmRiOGExMTUyYzQuLmViODRiOWJjYzJjOTM5MmExYTNjZTM2M2FkYTgzNjc5
M2U1NDUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9DdXJzb3JO
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9DdXJzb3JOaXguY3BwCkBA
IC02LDcgKzYsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcwogICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICog
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3Vy
c29yLmgiCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEN1cnNvcjo6Q3Vyc29yKGNvbnN0IEN1cnNvciYgb3RoZXIpCkBAIC02MCw2MSArNTgs
MTIgQEAgQ3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogICAg
IHJldHVybiAqdGhpczsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGN1cnNvclN0cmluZyhDdXJz
b3I6OlR5cGUgdHlwZSkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY3Vyc29yU3RyaW5nc1td
ID0gewotICAgICAgICAiY3Vyc29yL3BvaW50ZXIiLAotICAgICAgICAiY3Vyc29yL2Nyb3NzIiwK
LSAgICAgICAgImN1cnNvci9oYW5kIiwKLSAgICAgICAgImN1cnNvci9pX2JlYW0iLAotICAgICAg
ICAiY3Vyc29yL3dhaXQiLAotICAgICAgICAiY3Vyc29yL2hlbHAiLAotICAgICAgICAiY3Vyc29y
L2Vhc3RfcmVzaXplIiwKLSAgICAgICAgImN1cnNvci9ub3J0aF9yZXNpemUiLAotICAgICAgICAi
Y3Vyc29yL25vcnRoX2Vhc3RfcmVzaXplIiwKLSAgICAgICAgImN1cnNvci9ub3J0aF93ZXN0X3Jl
c2l6ZSIsCi0gICAgICAgICJjdXJzb3Ivc291dGhfcmVzaXplIiwKLSAgICAgICAgImN1cnNvci9z
b3V0aF9lYXN0X3Jlc2l6ZSIsCi0gICAgICAgICJjdXJzb3Ivc291dGhfd2VzdF9yZXNpemUiLAot
ICAgICAgICAiY3Vyc29yL3dlc3RfcmVzaXplIiwKLSAgICAgICAgImN1cnNvci9ub3J0aF9zb3V0
aF9yZXNpemUiLAotICAgICAgICAiY3Vyc29yL2Vhc3Rfd2VzdF9yZXNpemUiLAotICAgICAgICAi
Y3Vyc29yL25vcnRoX2Vhc3Rfc291dGhfd2VzdF9yZXNpemUiLAotICAgICAgICAiY3Vyc29yL25v
cnRoX3dlc3Rfc291dGhfZWFzdF9yZXNpemUiLAotICAgICAgICAiY3Vyc29yL2NvbHVtbl9yZXNp
emUiLAotICAgICAgICAiY3Vyc29yL3Jvd19yZXNpemUiLAotICAgICAgICAiY3Vyc29yL21pZGRs
ZV9wYW5uaW5nIiwKLSAgICAgICAgImN1cnNvci9lYXN0X3Bhbm5pbmciLAotICAgICAgICAiY3Vy
c29yL25vcnRoX3Bhbm5pbmciLAotICAgICAgICAiY3Vyc29yL25vcnRoX2Vhc3RfcGFubmluZyIs
Ci0gICAgICAgICJjdXJzb3Ivbm9ydGhfd2VzdF9wYW5uaW5nIiwKLSAgICAgICAgImN1cnNvci9z
b3V0aF9wYW5uaW5nIiwKLSAgICAgICAgImN1cnNvci9zb3V0aF9lYXN0X3Bhbm5pbmciLAotICAg
ICAgICAiY3Vyc29yL3NvdXRoX3dlc3RfcGFubmluZyIsCi0gICAgICAgICJjdXJzb3Ivd2VzdF9w
YW5uaW5nIiwKLSAgICAgICAgImN1cnNvci9tb3ZlIiwKLSAgICAgICAgImN1cnNvci92ZXJ0aWNh
bF90ZXh0IiwKLSAgICAgICAgImN1cnNvci9jZWxsIiwKLSAgICAgICAgImN1cnNvci9jb250ZXh0
X21lbnUiLAotICAgICAgICAiY3Vyc29yL2FsaWFzIiwKLSAgICAgICAgImN1cnNvci9wcm9ncmVz
cyIsCi0gICAgICAgICJjdXJzb3Ivbm9fZHJvcCIsCi0gICAgICAgICJjdXJzb3IvY29weSIsCi0g
ICAgICAgICJjdXJzb3Ivbm9uZSIsCi0gICAgICAgICJjdXJzb3Ivbm90X2FsbG93ZWQiLAotICAg
ICAgICAiY3Vyc29yL3pvb21faW4iLAotICAgICAgICAiY3Vyc29yL3pvb21fb3V0IiwKLSAgICAg
ICAgImN1cnNvci9ncmFiIiwKLSAgICAgICAgImN1cnNvci9ncmFiYmluZyIsCi0gICAgICAgICIi
fTsgLy8gRklYTUU6IEp1c3QgcmV0dXJuICIiIGZvciBjdXN0b20gdHlwZS4gV2UgZG9uJ3Qgc3Vw
cG9ydCBpdCBub3cuCi0gICAgcmV0dXJuIGN1cnNvclN0cmluZ3NbdHlwZV07Ci19Ci0KIHZvaWQg
Q3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxhdGZv
cm1DdXJzb3IpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3Vyc29y
U3RyaW5nKG1fdHlwZSk7CisgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG1fdHlwZTsKIH0KIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uaXgvRXJyb3JzTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9FcnJv
cnNOaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MjliZTRjZWQ5OTQwYzdiY2I1ZTQ1MTgyNzAxOTJmNGJm
MmIwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRXJy
b3JzTml4LmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFcnJvcnNOaXguaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJQcmludENvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yQ2FuY2VsbGVkLCByZXF1ZXN0LnVybCgpLnN0
cmluZygpLCBBU0NJSUxpdGVyYWwoIkxvYWQgcmVxdWVzdCBjYW5jZWxsZWQiKSk7Cit9CisKK1Jl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJy
b3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlM
aXRlcmFsKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7Cit9
CisKK1Jlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGlj
eSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJ
SUxpdGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7Cit9CisKK1Jlc291cmNlRXJyb3IgaW50
ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGlj
eUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJGcmFtZSBsb2FkIHdhcyBpbnRlcnJ1cHRlZCIpKTsKK30K
KworUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUsIHJlc3BvbnNlLnVybCgpLnN0
cmluZygpLCBBU0NJSUxpdGVyYWwoIkNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIE1JTUUgdHlw
ZSBjYW5ub3QgYmUgc2hvd24iKSk7Cit9CisKK1Jlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlz
dEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKGVycm9yRG9tYWluTmV0d29yaywgTmV0d29ya0Vycm9yRmlsZURvZXNOb3RF
eGlzdCwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiRmlsZSBkb2VzIG5v
dCBleGlzdCIpKTsKK30KKworUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUGx1Z2luLCBQbHVnaW5FcnJvcldpbGxIYW5kbGVMb2FkLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJQbHVnaW4gd2lsbCBoYW5kbGUgbG9h
ZCIpKTsKK30KKworUmVzb3VyY2VFcnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBuZXR3b3JrRXJyb3IpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmssIG5ldHdvcmtFcnJvci5mYWls
aW5nVVJMKCksIG5ldHdvcmtFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKK30KKworUmVz
b3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
RG93bmxvYWQsIERvd25sb2FkRXJyb3JDYW5jZWxsZWRCeVVzZXIsIHJlc3BvbnNlLnVybCgpLnN0
cmluZygpLCBBU0NJSUxpdGVyYWwoIlVzZXIgY2FuY2VsbGVkIHRoZSBkb3dubG9hZCIpKTsKK30K
KworUmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0
aW5hdGlvbiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIGVycm9yTWVzc2FnZSk7Cit9CisKK1Jl
c291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRF
cnJvckdlbmVyYWwsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogVVJM
KCksIGVycm9yTWVzc2FnZSk7Cit9CisKK1Jlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJy
b3IoY29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQpCit7CisgICAgRG9jdW1lbnRMb2Fk
ZXIqIGRvY3VtZW50TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpOworCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qcmlu
dCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExv
YWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFsKCJQcmludGVyIG5vdCBmb3VuZCIpKTsK
K30KKworUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBQcmludENv
bnRleHQqIHByaW50Q29udGV4dCkKK3sKKyAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9ySW52
YWxpZFBhZ2VSYW5nZSwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBV
UkwoKSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4
L0Vycm9yc05peC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0Vycm9yc05peC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM3MWIwZWM5MzkzMTNjMWJiYmRhMjJlZGE4MjBjNmU5YzlkMDAzY2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRXJyb3JzTml4LmgKQEAg
LTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEVycm9yc05peF9oCisjZGVmaW5lIEVycm9yc05peF9oCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQcmludENv
bnRleHQ7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKKworc3RhdGljIGNvbnN0IGNoYXIgZXJyb3JEb21haW5OZXR3
b3JrW10gPSAiV2ViS2l0TmV0d29ya0Vycm9yIjsKK3N0YXRpYyBjb25zdCBjaGFyIGVycm9yRG9t
YWluUG9saWN5W10gPSAiV2ViS2l0UG9saWN5RXJyb3IiOworc3RhdGljIGNvbnN0IGNoYXIgZXJy
b3JEb21haW5QbHVnaW5bXSA9ICJXZWJLaXRQbHVnaW5FcnJvciI7CitzdGF0aWMgY29uc3QgY2hh
ciBlcnJvckRvbWFpbkRvd25sb2FkW10gPSAiV2ViS2l0RG93bmxvYWRFcnJvciI7CitzdGF0aWMg
Y29uc3QgY2hhciBlcnJvckRvbWFpblByaW50W10gPSAiV2ViS2l0UHJpbnRFcnJvciI7CisKK2Vu
dW0gTmV0d29ya0Vycm9yIHsKKyAgICBOZXR3b3JrRXJyb3JGYWlsZWQgPSAzOTksCisgICAgTmV0
d29ya0Vycm9yVHJhbnNwb3J0ID0gMzAwLAorICAgIE5ldHdvcmtFcnJvclVua25vd25Qcm90b2Nv
bCA9IDMwMSwKKyAgICBOZXR3b3JrRXJyb3JDYW5jZWxsZWQgPSAzMDIsCisgICAgTmV0d29ya0Vy
cm9yRmlsZURvZXNOb3RFeGlzdCA9IDMwMworfTsKKworLy8gU3luYydkIHdpdGggTWFjJ3MgV2Vi
S2l0IEVycm9ycyBhdDoKKy8vIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3JzW1By
aXZhdGVdLmgKK2VudW0gUG9saWN5RXJyb3IgeworICAgIFBvbGljeUVycm9yRmFpbGVkID0gMTk5
LAorICAgIFBvbGljeUVycm9yQ2Fubm90U2hvd01pbWVUeXBlID0gMTAwLAorICAgIFBvbGljeUVy
cm9yQ2Fubm90U2hvd1VSTCA9IDEwMSwKKyAgICBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVw
dGVkQnlQb2xpY3lDaGFuZ2UgPSAxMDIsCisgICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmlj
dGVkUG9ydCA9IDEwMworfTsKKworZW51bSBQbHVnaW5FcnJvciB7CisgICAgUGx1Z2luRXJyb3JG
YWlsZWQgPSAyOTksCisgICAgUGx1Z2luRXJyb3JDYW5ub3RGaW5kUGx1Z2luID0gMjAwLAorICAg
IFBsdWdpbkVycm9yQ2Fubm90TG9hZFBsdWdpbiA9IDIwMSwKKyAgICBQbHVnaW5FcnJvckphdmFV
bmF2YWlsYWJsZSA9IDIwMiwKKyAgICBQbHVnaW5FcnJvckNvbm5lY3Rpb25DYW5jZWxsZWQgPSAy
MDMsCisgICAgUGx1Z2luRXJyb3JXaWxsSGFuZGxlTG9hZCA9IDIwNAorfTsKKworZW51bSBEb3du
bG9hZEVycm9yIHsKKyAgICBEb3dubG9hZEVycm9yTmV0d29yayA9IDQ5OSwKKyAgICBEb3dubG9h
ZEVycm9yQ2FuY2VsbGVkQnlVc2VyID0gNDAwLAorICAgIERvd25sb2FkRXJyb3JEZXN0aW5hdGlv
biA9IDQwMQorfTsKKworZW51bSBQcmludEVycm9yIHsKKyAgICBQcmludEVycm9yR2VuZXJhbCA9
IDU5OSwKKyAgICBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kID0gNTAwLAorICAgIFByaW50RXJy
b3JJbnZhbGlkUGFnZVJhbmdlID0gNTAxCit9OworCitSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQ
b2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworUmVzb3Vy
Y2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKK1Jlc291cmNlRXJyb3IgZG93bmxvYWROZXR3b3JrRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOworUmVzb3VyY2VFcnJvciBkb3dubG9hZENhbmNlbGxlZEJ5VXNlckVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKK1Jlc291cmNlRXJyb3IgZG93bmxvYWREZXN0aW5hdGlv
bkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7CitSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpOworUmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRFcnJv
cihjb25zdCBQcmludENvbnRleHQqKTsKK1Jlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRv
UHJpbnQoY29uc3QgUHJpbnRDb250ZXh0Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVycm9yc05peF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25peC9GaWxlU3lzdGVtTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9G
aWxlU3lzdGVtTml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzAzOTg1Yzg4MTJmOTNjNzJhMzk5YmNjMmZj
NGI1YmMxYzE4MjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L0ZpbGVTeXN0ZW1OaXguY3BwCkBAIC0wLDAgKzEsMzQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1v
dG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCisKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJVVUlELmgi
CisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGli
L2dzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGll
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBPbiBsaW51eCBmaWxlIG5h
bWVzIGFyZSBqdXN0IHJhdyBieXRlcywgc28gYWxzbyBzdHJpbmdzIHRoYXQgY2Fubm90IGJlIGVu
Y29kZWQgaW4gYW55IHdheQorICogYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRoaXMgbWVhbiB0aGF0
IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEgU3RyaW5nCisgKiBi
dXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCisgKiBPbiBXaW5kb3dzIHRoZSBHTGliIGZpbGUgbmFt
ZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXplIHRoaXMgY2FzZS4g
Ki8KK1N0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQoreworICAg
IGlmICghZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIEdPd25QdHI8
Z2NoYXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlbmFtZSwgIi86Iiwg
ZmFsc2UpKTsKKyAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKK30KKworQ1N0cmluZyBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEdPd25Q
dHI8Z2NoYXI+IGZpbGVuYW1lKGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRh
KCksIDApKTsKKyAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7Cit9CisKKy8vIENvbnZlcnRzIGEg
c3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIu
CitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAg
IENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RyaW5nKTsKKyAg
ICBHT3duUHRyPGdjaGFyPiBkaXNwbGF5KGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFtZS5kYXRh
KCksIDAsIDAsIDAsIDApKTsKKyAgICBpZiAoIWRpc3BsYXkpCisgICAgICAgIHJldHVybiBzdHJp
bmc7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXNwbGF5LmdldCgpKTsKK30KKwor
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBib29sIHJlc3VsdCA9
IGZhbHNlOworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CisKKyAgICBpZiAoIWZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXN1bHQgPSBn
X2ZpbGVfdGVzdChmaWxlbmFtZS5kYXRhKCksIEdfRklMRV9URVNUX0VYSVNUUyk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKworICAgIGlmICghZmlsZW5hbWUuaXNOdWxsKCkp
CisgICAgICAgIHJlc3VsdCA9ICFnX3JlbW92ZShmaWxlbmFtZS5kYXRhKCkpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBDU3RyaW5nIGZpbGVuYW1l
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmaWxlbmFtZS5p
c051bGwoKSkKKyAgICAgICAgcmVzdWx0ID0gIWdfcm1kaXIoZmlsZW5hbWUuZGF0YSgpKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCit7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7CisgICAg
Z2ludCByZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJlc3VsdCk7CisgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0U2l6ZSA9IHN0
YXRSZXN1bHQuc3Rfc2l6ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRUaW1lKQor
eworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBHU3RhdEJ1ZiBzdGF0UmVzdWx0OworICAgIGdpbnQgcmVzdWx0ID0gZ19zdGF0KGZpbGVuYW1l
LmRhdGEoKSwgJnN0YXRSZXN1bHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIG1vZGlmaWVkVGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7CisgICAgcmV0
dXJuIHRydWU7CisKK30KKworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
LCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBzdGF0UmVzdWx0OworICAg
IGdpbnQgcmVzdWx0ID0gZ19zdGF0KGZpbGVuYW1lLmRhdGEoKSwgJnN0YXRSZXN1bHQpOworICAg
IGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1ldGFkYXRhLm1vZGlm
aWNhdGlvblRpbWUgPSBzdGF0UmVzdWx0LnN0X210aW1lOworICAgIG1ldGFkYXRhLmxlbmd0aCA9
IHN0YXRSZXN1bHQuc3Rfc2l6ZTsKKyAgICBtZXRhZGF0YS50eXBlID0gU19JU0RJUihzdGF0UmVz
dWx0LnN0X21vZGUpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRh
OjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKKworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
Cit7CisgICAgaWYgKHBhdGguZW5kc1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQorICAgICAgICBy
ZXR1cm4gcGF0aCArIGNvbXBvbmVudDsKKyAgICByZXR1cm4gcGF0aCArIEdfRElSX1NFUEFSQVRP
Ul9TICsgY29tcG9uZW50OworfQorCitib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGdpbnQgcmVzdWx0ID0gZ19ta2Rpcl93aXRoX3BhcmVudHMoZmlsZW5hbWUu
ZGF0YSgpLCBTX0lSV1hVKTsKKworICAgIHJldHVybiAhcmVzdWx0OworfQorCitTdHJpbmcgaG9t
ZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBmaWxlbmFtZVRvU3RyaW5nKGdfZ2V0X2hv
bWVfZGlyKCkpOworfQorCitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aE5hbWUpCit7CisgICAgaWYgKHBhdGhOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHBh
dGhOYW1lOworCisgICAgQ1N0cmluZyB0bXBGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoTmFtZSk7CisgICAgR093blB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9i
YXNlbmFtZSh0bXBGaWxlbmFtZS5kYXRhKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChiYXNlTmFtZS5nZXQoKSk7Cit9CisKK0NTdHJpbmcgYXBwbGljYXRpb25EaXJlY3RvcnlQYXRo
KCkKK3sKKyAgICBDU3RyaW5nIHBhdGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsKKyAg
ICBpZiAoIXBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBwYXRoOworCisgICAgLy8gSWYg
dGhlIGFib3ZlIGZhaWxzLCBjaGVjayB0aGUgUEFUSCBlbnYgdmFyaWFibGUuCisgICAgR093blB0
cjxjaGFyPiBjdXJyZW50RXhlUGF0aChnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoKGdfZ2V0X3ByZ25h
bWUoKSkpOworICAgIGlmICghY3VycmVudEV4ZVBhdGguZ2V0KCkpCisgICAgICAgIHJldHVybiBD
U3RyaW5nKCk7CisKKyAgICBHT3duUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1l
KGN1cnJlbnRFeGVQYXRoLmdldCgpKSk7CisgICAgcmV0dXJuIGRpcm5hbWUuZ2V0KCk7Cit9CisK
K0NTdHJpbmcgc2hhcmVkUmVzb3VyY2VzUGF0aCgpCit7CisgICAgc3RhdGljIENTdHJpbmcgY2Fj
aGVkUGF0aDsKKyAgICBpZiAoIWNhY2hlZFBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBj
YWNoZWRQYXRoOworCisgICAgR093blB0cjxnY2hhcj4gZGF0YVBhdGgoZ19idWlsZF9maWxlbmFt
ZShEQVRBX0RJUiwgIndlYmtpdG5peCIsIE5VTEwpKTsKKworICAgIGNhY2hlZFBhdGggPSBkYXRh
UGF0aC5nZXQoKTsKKyAgICByZXR1cm4gY2FjaGVkUGF0aDsKK30KKwordWludDY0X3QgZ2V0Vm9s
dW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgR1JlZlB0cjxHRmls
ZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGgpKTsKKyAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSwgMCwg
MCkpOworICAgIGlmICghZmlsZUluZm8pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVfdWludDY0KGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVf
QVRUUklCVVRFX0ZJTEVTWVNURU1fRlJFRSk7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlOYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICAvKiBObyBudWxsIGNoZWNraW5nIG5lZWRlZCAqLwor
ICAgIEdPd25QdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGRpcm5hbWUuZ2V0KCkpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmlu
Zz4gZW50cmllczsKKworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisgICAgR0RpciogZGlyID0gZ19kaXJfb3BlbihmaWxlbmFtZS5kYXRhKCks
IDAsIDApOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIEdQ
YXR0ZXJuU3BlYyogcHNwZWMgPSBnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRh
dGEoKSk7CisgICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGly
KSkgeworICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMsIG5hbWUpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR093blB0cjxnY2hhcj4gZW50cnkoZ19i
dWlsZF9maWxlbmFtZShmaWxlbmFtZS5kYXRhKCksIG5hbWUsIE5VTEwpKTsKKyAgICAgICAgZW50
cmllcy5hcHBlbmQoZmlsZW5hbWVUb1N0cmluZyhlbnRyeS5nZXQoKSkpOworICAgIH0KKyAgICBn
X3BhdHRlcm5fc3BlY19mcmVlKHBzcGVjKTsKKyAgICBnX2Rpcl9jbG9zZShkaXIpOworCisgICAg
cmV0dXJuIGVudHJpZXM7Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJp
bmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgR093blB0cjxn
Y2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRh
KCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR093
blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZp
bGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisKKyAgICBoYW5kbGUgPSBn
X2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAs
IDApOworICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQor
CitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Bl
bk1vZGUgbW9kZSkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOworICAgIGlmIChmc1JlcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisKKyAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNSZXAuZGF0YSgpKSk7CisgICAgR0ZpbGVJT1N0cmVh
bSogaW9TdHJlYW0gPSAwOworICAgIGlmIChtb2RlID09IE9wZW5Gb3JSZWFkKQorICAgICAgICBp
b1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKKyAgICBl
bHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkgeworICAgICAgICBpZiAoZ19maWxlX3Rlc3Qo
ZnNSZXAuZGF0YSgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8
IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKKyAgICAgICAgICAgIGlvU3RyZWFtID0gZ19maWxl
X29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpb1N0cmVhbSA9IGdfZmlsZV9jcmVhdGVfcmVhZHdyaXRlKGZpbGUuZ2V0KCksIEdfRklM
RV9DUkVBVEVfTk9ORSwgMCwgMCk7CisgICAgfQorCisgICAgcmV0dXJuIGlvU3RyZWFtOworfQor
Cit2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19pb19zdHJl
YW1fY2xvc2UoR19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7CisgICAgZ19vYmplY3RfdW5yZWYo
aGFuZGxlKTsKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworfQorCits
b25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9
IEdfU0VFS19TRVQ7CisgICAgc3dpdGNoIChvcmlnaW4pIHsKKyAgICBjYXNlIFNlZWtGcm9tQmVn
aW5uaW5nOgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vla0Zyb21FbmQ6CisgICAgICAgIHNlZWtUeXBl
ID0gR19TRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKCFnX3NlZWthYmxlX3NlZWsoR19T
RUVLQUJMRShnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkp
KSwgb2Zmc2V0LCBzZWVrVHlwZSwgMCwgMCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1
cm4gZ19zZWVrYWJsZV90ZWxsKEdfU0VFS0FCTEUoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVh
bShHX0lPX1NUUkVBTShoYW5kbGUpKSkpOworfQorCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBn
c2l6ZSBieXRlc1dyaXR0ZW47CisgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0
cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwgZGF0YSwgbGVuZ3Ro
LCAmYnl0ZXNXcml0dGVuLCAwLCAwKTsKKyAgICByZXR1cm4gYnl0ZXNXcml0dGVuOworfQorCitp
bnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCit7CisgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIGRvIHsKKyAgICAg
ICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0
X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwgZGF0YSwgbGVuZ3RoLCAwLCAmZXJy
b3Iub3V0UHRyKCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49IDApCisgICAgICAgICAgICBy
ZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm9yICYmIGVycm9yLT5jb2RlID09IEdf
RklMRV9FUlJPUl9JTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK2Jvb2wgdW5sb2FkTW9kdWxl
KFBsYXRmb3JtTW9kdWxlIG1vZHVsZSkKK3sKKyAgICByZXR1cm4gZ19tb2R1bGVfY2xvc2UobW9k
dWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uaXgvR2FtZXBhZHNOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbml4L0dhbWVwYWRzTml4LmNwcAppbmRleCA3Y2JiOGFkMDI1Zjk1NmMyNGI3MTExZDM4
Nzg2MGI4YTE2NDEyNzBiLi4xNDBhNWFhNjJmOTc3MmJjNDIwMWM4NTE4NGFjNzkwZWRhZGNiYmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvR2FtZXBhZHNOaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9HYW1lcGFkc05peC5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0OgpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIHNhbXBsZUdhbWVwYWRzKEdh
bWVwYWRMaXN0KiBpbnRvKQogICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBp
bnRvLT5pdGVtKGkpOwogICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAgICAgICAgICAgICAg
IGdhbWVwYWQgPSBHYW1lcGFkOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIGdhbWVwYWQtPmlkKG5p
eEdhbWVwYWQuaWQpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQoU3RyaW5nOjpmcm9tVVRGOChu
aXhHYW1lcGFkLmlkKSk7CiAgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKICAgICAgICAg
ICAgIGdhbWVwYWQtPnRpbWVzdGFtcChuaXhHYW1lcGFkLnRpbWVzdGFtcCk7CiAgICAgICAgICAg
ICBnYW1lcGFkLT5heGVzKG5peEdhbWVwYWQuYXhlc0xlbmd0aCwgbml4R2FtZXBhZC5heGVzKTsK
QEAgLTU4LDYgKzU5LDcgQEAgdm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykK
ICAgICB9CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShHQU1FUEFEKQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25peC9NSU1FVHlwZVJlZ2lzdHJ5Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25p
eC9NSU1FVHlwZVJlZ2lzdHJ5Tml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTlmNTRhMWIyNWQ5OTA1ZmZi
MGVmZGVhZWY4NDBhZGU0ZDdlYjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbml4L01JTUVUeXBlUmVnaXN0cnlOaXguY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuICBo
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEV4dGVuc2lvbk1hcCB7CisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9u
OworICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlOworfTsKKworc3RhdGljIGNvbnN0IEV4dGVuc2lv
bk1hcCBleHRlbnNpb25NYXBbXSA9IHsKKyAgICB7ICJibXAiLCAiaW1hZ2UvYm1wIiB9LAorICAg
IHsgImNzcyIsICJ0ZXh0L2NzcyIgfSwKKyAgICB7ICJnaWYiLCAiaW1hZ2UvZ2lmIiB9LAorICAg
IHsgImh0bWwiLCAidGV4dC9odG1sIiB9LAorICAgIHsgImh0bSIsICJ0ZXh0L2h0bWwiIH0sCisg
ICAgeyAiaWNvIiwgImltYWdlL3gtaWNvbiIgfSwKKyAgICB7ICJqcGVnIiwgImltYWdlL2pwZWci
IH0sCisgICAgeyAianBnIiwgImltYWdlL2pwZWciIH0sCisgICAgeyAianMiLCAiYXBwbGljYXRp
b24veC1qYXZhc2NyaXB0IiB9LAorICAgIHsgIm1uZyIsICJ2aWRlby94LW1uZyIgfSwKKyAgICB7
ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCisgICAgeyAicGdtIiwgImltYWdl
L3gtcG9ydGFibGUtZ3JheW1hcCIgfSwKKyAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24vcGRmIiB9
LAorICAgIHsgInBuZyIsICJpbWFnZS9wbmciIH0sCisgICAgeyAicHBtIiwgImltYWdlL3gtcG9y
dGFibGUtcGl4bWFwIiB9LAorICAgIHsgInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiB9LAor
ICAgIHsgInN2ZyIsICJpbWFnZS9zdmcreG1sIiB9LAorICAgIHsgInRleHQiLCAidGV4dC9wbGFp
biIgfSwKKyAgICB7ICJ0aWYiLCAiaW1hZ2UvdGlmZiIgfSwKKyAgICB7ICJ0aWZmIiwgImltYWdl
L3RpZmYiIH0sCisgICAgeyAidHh0IiwgInRleHQvcGxhaW4iIH0sCisgICAgeyAieGJtIiwgImlt
YWdlL3gteGJpdG1hcCIgfSwKKyAgICB7ICJ4bWwiLCAidGV4dC94bWwiIH0sCisgICAgeyAieHBt
IiwgImltYWdlL3gteHBtIiB9LAorICAgIHsgInhzbCIsICJ0ZXh0L3hzbCIgfSwKKyAgICB7ICJ4
aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIH0sCisgICAgeyAid21sIiwgInRleHQvdm5k
LndhcC53bWwiIH0sCisgICAgeyAid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiIH0s
CisgICAgeyAwLCAwIH0KK307CisKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlw
ZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcgJmV4dCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKKyAgICBjb25zdCBFeHRlbnNp
b25NYXAgKmUgPSBleHRlbnNpb25NYXA7CisgICAgd2hpbGUgKGUtPmV4dGVuc2lvbikgeworICAg
ICAgICBpZiAocyA9PSBlLT5leHRlbnNpb24pCisgICAgICAgICAgICByZXR1cm4gZS0+bWltZVR5
cGU7CisgICAgICAgICsrZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5p
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguY3BwCmlu
ZGV4IDgwOGYwMGI5MjJmZmVlNWRkOWFhYjM3ODMzNmYwNDI2YjBjMTNlNWQuLjI1NTUyNTY3YjU1
NzU1OWU2NjYxMDA0MmQ3MzNiZjZhMmMyNDlkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5peC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWVOaXguaCIKIAorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCkBAIC00MCwxMSArNDEsMTAgQEAKICNpbmNsdWRlICJIVE1M
TWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKICNlbmRpZgorI2luY2x1
ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgPSAweGZmZGRk
ZGRkOwotCiBzdGF0aWMgdm9pZCBzZXRTaXplSWZBdXRvKFJlbmRlclN0eWxlKiBzdHlsZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSkKQEAgLTUzLDExICs1Myw2IEBAIHN0YXRpYyB2b2lkIHNldFNpemVJZkF1dG8oUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICBzdHlsZS0+c2V0
SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi1Db2xvciB0b0NvbG9y
KGNvbnN0IE5peDo6Q29sb3ImIGNvbG9yKQotewotICAgIHJldHVybiBXZWJDb3JlOjpDb2xvcihS
R0JBMzIoY29sb3IpKTsKLX0KLQogc3RhdGljIE5peDo6VGhlbWVFbmdpbmUqIHRoZW1lRW5naW5l
KCkKIHsKICAgICByZXR1cm4gTml4OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT50aGVtZUVuZ2luZSgp
OwpAQCAtNjgsNiArNjMsMTYgQEAgc3RhdGljIE5peDo6Q2FudmFzKiB3ZWJDYW52YXMoY29uc3Qg
UGFpbnRJbmZvJiBpbmZvKQogICAgIHJldHVybiBpbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogfQogCitzdGF0aWMgSW50U2l6ZSB0b0ludFNpemUoY29uc3QgTml4OjpTaXpl
JiBzaXplKQoreworICAgIHJldHVybiBJbnRTaXplKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTsK
K30KKworc3RhdGljIE5peDo6UmVjdCB0b05peFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICByZXR1cm4gTml4OjpSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKTsKK30KKwogUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6
OnRoZW1lRm9yUGFnZShQYWdlKikKIHsKICAgICByZXR1cm4gUmVuZGVyVGhlbWVOaXg6OmNyZWF0
ZSgpOwpAQCAtMTA1LDYzICsxMTAsNjMgQEAgU3RyaW5nIFJlbmRlclRoZW1lTml4OjpleHRyYVBs
dWdJbnNTdHlsZVNoZWV0KCkKIAogQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9Db2xvcih0
aGVtZUVuZ2luZSgpLT5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgcmV0
dXJuIHRoZW1lRW5naW5lKCktPmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLmFyZ2Iz
MigpOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdp
bmUoKS0+aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgcmV0dXJuIHRo
ZW1lRW5naW5lKCktPmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkuYXJnYjMyKCk7
CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkpOworICAgIHJldHVybiB0aGVtZUVuZ2lu
ZSgpLT5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKS5hcmdiMzIoKTsKIH0KIAogQ29s
b3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdAogewotICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmluYWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkpOworICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5p
bmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpLmFyZ2IzMigpOwogfQogCiBDb2xvciBS
ZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOworICAgIHJldHVybiB0aGVtZUVuZ2lu
ZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkuYXJnYjMyKCk7CiB9
CiAKIENvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdp
bmUoKS0+aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOworICAgIHJl
dHVybiB0aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKS5hcmdiMzIoKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRv
Q29sb3IodGhlbWVFbmdpbmUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpKTsKKyAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpLmFyZ2IzMigpOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZU5peDo6cGxh
dGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewot
ICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpKTsKKyAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+aW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkuYXJnYjMyKCk7CiB9CiAKIENvbG9yIFJl
bmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+YWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCkpOworICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5hY3RpdmVUZXh0
U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKS5hcmdiMzIoKTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVO
aXg6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAogewot
ICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmluYWN0aXZlVGV4dFNlYXJjaEhpZ2hs
aWdodENvbG9yKCkpOworICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZVRleHRTZWFy
Y2hIaWdobGlnaHRDb2xvcigpLmFyZ2IzMigpOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZU5peDo6
cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvQ29sb3IodGhl
bWVFbmdpbmUoKS0+Zm9jdXNSaW5nQ29sb3IoKSk7CisgICAgcmV0dXJuIHRoZW1lRW5naW5lKCkt
PmZvY3VzUmluZ0NvbG9yKCkuYXJnYjMyKCk7CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25z
dAogewotICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPnRhcEhpZ2hsaWdodENvbG9y
KCkpOworICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT50YXBIaWdobGlnaHRDb2xvcigpLmFyZ2Iz
MigpOwogfQogI2VuZGlmCiAKQEAgLTE4NiwxMSArMTkxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU5p
eDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFIKICAgICBOaXg6OlRoZW1lRW5naW5lOjpCdXR0b25FeHRyYVBhcmFtcyBleHRyYVBhcmFt
czsKICAgICBleHRyYVBhcmFtcy5pc0RlZmF1bHQgPSBpc0RlZmF1bHQobyk7CiAgICAgZXh0cmFQ
YXJhbXMuaGFzQm9yZGVyID0gdHJ1ZTsKLSAgICBleHRyYVBhcmFtcy5iYWNrZ3JvdW5kQ29sb3Ig
PSBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENvbG9yOwotICAgIGlmIChvLT5oYXNCYWNrZ3JvdW5k
KCkpCi0gICAgICAgIGV4dHJhUGFyYW1zLmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7Ci0K
LSAgICB0aGVtZUVuZ2luZSgpLT5wYWludEJ1dHRvbih3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1l
U3RhdGUodGhpcywgbyksIE5peDo6UmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOworICAgIHRoZW1l
RW5naW5lKCktPnBhaW50QnV0dG9uKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlz
LCBvKSwgdG9OaXhSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC0xOTgsMTAgKzE5OSwxMCBAQCBib29sIFJlbmRlclRoZW1lTml4OjpwYWludFRleHRG
aWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSQogewogICAg
IC8vIFdlYlRoZW1lRW5naW5lIGRvZXMgbm90IGhhbmRsZSBib3JkZXIgcm91bmRlZCBjb3JuZXIg
YW5kIGJhY2tncm91bmQgaW1hZ2UKICAgICAvLyBzbyByZXR1cm4gdHJ1ZSB0byBkcmF3IENTUyBi
b3JkZXIgYW5kIGJhY2tncm91bmQuCi0gICAgaWYgKG8tPnN0eWxlKCktPmhhc0JvcmRlclJhZGl1
cygpIHx8IG8tPnN0eWxlKCktPmhhc0JhY2tncm91bmRJbWFnZSgpKQorICAgIGlmIChvLT5zdHls
ZSgpLmhhc0JvcmRlclJhZGl1cygpIHx8IG8tPnN0eWxlKCkuaGFzQmFja2dyb3VuZEltYWdlKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRUZXh0Rmll
bGQod2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBOaXg6OlJlY3QocmVj
dCkpOworICAgIHRoZW1lRW5naW5lKCktPnBhaW50VGV4dEZpZWxkKHdlYkNhbnZhcyhpKSwgZ2V0
V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgdG9OaXhSZWN0KHJlY3QpKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTIxNiw3ICsyMTcsNyBAQCBib29sIFJlbmRlclRoZW1lTml4OjpwYWludENo
ZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbgogICAg
IGV4dHJhUGFyYW1zLmNoZWNrZWQgPSBpc0NoZWNrZWQobyk7CiAgICAgZXh0cmFQYXJhbXMuaW5k
ZXRlcm1pbmF0ZSA9IGlzSW5kZXRlcm1pbmF0ZShvKTsKIAotICAgIHRoZW1lRW5naW5lKCktPnBh
aW50Q2hlY2tib3god2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBOaXg6
OlJlY3QocmVjdCksIGV4dHJhUGFyYW1zKTsKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWludENoZWNr
Ym94KHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgdG9OaXhSZWN0KHJl
Y3QpLCBleHRyYVBhcmFtcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMjYsNyArMjI3
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU5peDo6c2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKICAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkg
JiYgIXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50
U2l6ZSBzaXplID0gdGhlbWVFbmdpbmUoKS0+Z2V0Q2hlY2tib3hTaXplKCk7CisgICAgSW50U2l6
ZSBzaXplID0gdG9JbnRTaXplKHRoZW1lRW5naW5lKCktPmdldENoZWNrYm94U2l6ZSgpKTsKICAg
ICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsKIH0KIApAQCAtMjM2LDcgKzIzNyw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlCiAgICAgZXh0cmFQYXJhbXMuY2hlY2tlZCA9IGlzQ2hlY2tl
ZChvKTsKICAgICBleHRyYVBhcmFtcy5pbmRldGVybWluYXRlID0gaXNJbmRldGVybWluYXRlKG8p
OwogCi0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRSYWRpbyh3ZWJDYW52YXMoaSksIGdldFdlYlRo
ZW1lU3RhdGUodGhpcywgbyksIE5peDo6UmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOworICAgIHRo
ZW1lRW5naW5lKCktPnBhaW50UmFkaW8od2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRo
aXMsIG8pLCB0b05peFJlY3QocmVjdCksIGV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTI0NiwxMyArMjQ3LDEzIEBAIHZvaWQgUmVuZGVyVGhlbWVOaXg6OnNldFJhZGlv
U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5p
c0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEludFNpemUgc2l6ZSA9IHRoZW1lRW5naW5lKCktPmdldFJhZGlvU2l6
ZSgpOworICAgIEludFNpemUgc2l6ZSA9IHRvSW50U2l6ZSh0aGVtZUVuZ2luZSgpLT5nZXRSYWRp
b1NpemUoKSk7CiAgICAgc2V0U2l6ZUlmQXV0byhzdHlsZSwgc2l6ZSk7CiB9CiAKIGJvb2wgUmVu
ZGVyVGhlbWVOaXg6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRN
ZW51TGlzdCh3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIE5peDo6UmVj
dChyZWN0KSk7CisgICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZW51TGlzdCh3ZWJDYW52YXMoaSks
IGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHRvTml4UmVjdChyZWN0KSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC0yODYsNyArMjg3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFp
bnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QK
ICAgICBleHRyYVBhcmFtcy5wb3NpdGlvbiA9IHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpOwog
ICAgIGV4dHJhUGFyYW1zLmFuaW1hdGlvblByb2dyZXNzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1h
dGlvblByb2dyZXNzKCk7CiAgICAgZXh0cmFQYXJhbXMuYW5pbWF0aW9uU3RhcnRUaW1lID0gcmVu
ZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblN0YXJ0VGltZSgpOwotICAgIHRoZW1lRW5naW5lKCktPnBh
aW50UHJvZ3Jlc3NCYXIod2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBO
aXg6OlJlY3QocmVjdCksIGV4dHJhUGFyYW1zKTsKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWludFBy
b2dyZXNzQmFyKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgdG9OaXhS
ZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zMDQs
NyArMzA1LDcgQEAgZG91YmxlIFJlbmRlclRoZW1lTml4OjphbmltYXRpb25EdXJhdGlvbkZvclBy
b2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU5peDo6
cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHRoZW1lRW5naW5lKCktPnBhaW50U2xp
ZGVyVHJhY2sod2ViQ2FudmFzKGluZm8pLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG9iamVjdCks
IHJlY3QpOworICAgIHRoZW1lRW5naW5lKCktPnBhaW50U2xpZGVyVHJhY2sod2ViQ2FudmFzKGlu
Zm8pLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG9iamVjdCksIHRvTml4UmVjdChyZWN0KSk7CiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgcGFpbnRTbGlkZXJUaWNrcyhvYmplY3Qs
IGluZm8sIHJlY3QpOwogI2VuZGlmCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU5peDo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLAogCiBib29sIFJlbmRlclRoZW1lTml4OjpwYWludFNsaWRlclRodW1iKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7Ci0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRTbGlkZXJUaHVtYih3ZWJDYW52YXMoaW5mbyks
IGdldFdlYlRoZW1lU3RhdGUodGhpcywgb2JqZWN0KSwgcmVjdCk7CisgICAgdGhlbWVFbmdpbmUo
KS0+cGFpbnRTbGlkZXJUaHVtYih3ZWJDYW52YXMoaW5mbyksIGdldFdlYlRoZW1lU3RhdGUodGhp
cywgb2JqZWN0KSwgdG9OaXhSZWN0KHJlY3QpKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTM4OCw3ICszODksNyBAQCBib29sIFJlbmRlclRoZW1lTml4OjpwYWludElubmVyU3BpbkJ1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgYwogICAgIGV4dHJhUGFyYW1z
LnNwaW5VcCA9IGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobyk7CiAgICAgZXh0cmFQYXJhbXMu
cmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29udHJvbChvKTsKIAotICAgIHRoZW1lRW5naW5lKCktPnBh
aW50SW5uZXJTcGluQnV0dG9uKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBv
KSwgTml4OjpSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CisgICAgdGhlbWVFbmdpbmUoKS0+cGFp
bnRJbm5lclNwaW5CdXR0b24od2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8p
LCB0b05peFJlY3QocmVjdCksIGV4dHJhUGFyYW1zKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTQzMiwxMCArNDMzLDY1IEBAIGJvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWV0ZXIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlCiAgICAgZXh0cmFQ
YXJhbXMuaGlnaCA9IGUtPmhpZ2goKTsKICAgICBleHRyYVBhcmFtcy5vcHRpbXVtID0gZS0+b3B0
aW11bSgpOwogCi0gICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZXRlcih3ZWJDYW52YXMoaSksIGdl
dFdlYlRoZW1lU3RhdGUodGhpcywgbyksIHJlY3QsIGV4dHJhUGFyYW1zKTsKKyAgICB0aGVtZUVu
Z2luZSgpLT5wYWludE1ldGVyKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBv
KSwgdG9OaXhSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSURFTykKK1N0cmluZyBSZW5kZXJUaGVtZU5peDo6ZXh0
cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNv
bnRyb2xzTml4VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNOaXhVc2Vy
QWdlbnRTdHlsZVNoZWV0KSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFQ
bGF5QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIGF1dG8gc3RhdGUgPSB0b0hUTUxNZWRpYUVsZW1lbnQoby0+bm9k
ZSgpLT5zaGFkb3dIb3N0KCkpLT5jYW5QbGF5KCkgPyBOaXg6OlRoZW1lRW5naW5lOjpTdGF0ZVBh
dXNlZCA6IE5peDo6VGhlbWVFbmdpbmU6OlN0YXRlUGxheWluZzsKKyAgICB0aGVtZUVuZ2luZSgp
LT5wYWludE1lZGlhUGxheUJ1dHRvbih3ZWJDYW52YXMoaSksIHN0YXRlLCB0b05peFJlY3QocmVj
dCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRN
ZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgYXV0byBzdGF0ZSA9IHRvSFRNTE1lZGlhRWxlbWVudChv
LT5ub2RlKCktPnNoYWRvd0hvc3QoKSktPm11dGVkKCkgPyBOaXg6OlRoZW1lRW5naW5lOjpTdGF0
ZU11dGVkIDogTml4OjpUaGVtZUVuZ2luZTo6U3RhdGVOb3RNdXRlZDsKKyAgICB0aGVtZUVuZ2lu
ZSgpLT5wYWludE1lZGlhTXV0ZUJ1dHRvbih3ZWJDYW52YXMoaSksIHN0YXRlLCB0b05peFJlY3Qo
cmVjdCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFp
bnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWludE1lZGlhU2Vl
a0JhY2tCdXR0b24od2ViQ2FudmFzKGkpLCB0b05peFJlY3QocmVjdCkpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24od2Vi
Q2FudmFzKGkpLCB0b05peFJlY3QocmVjdCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBSZW5kZXJUaGVtZU5peDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQoreworICAgIHJldHVybiBmYWxzZTsKIH0K
KworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVkaWFWb2x1bWVT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50
TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByZWN0KQoreworICAgIHRoZW1lRW5naW5lKCktPnBhaW50TWVkaWFSZXdpbmRC
dXR0b24od2ViQ2FudmFzKGkpLCB0b05peFJlY3QocmVjdCkpOworICAgIHJldHVybiBmYWxzZTsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguaAppbmRleCBmNDFk
NTA3MDg2YWQ5NjMwNWYzMWQ5YTZjYjk1ZjJlM2ZlMTVkMGY3Li42MWU1ZDAzOWZlMGZiNmMwMGIy
NTQ3YmViYzUyYTc4MjUwNzFiZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvUmVuZGVyVGhlbWVOaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgv
UmVuZGVyVGhlbWVOaXguaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMs
NiArMTAzLDIyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZXRlcihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShWSURFTykKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlh
Q29udHJvbHNTdHlsZVNoZWV0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXNWZXJ0
aWNhbFZvbHVtZVNsaWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VzTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRl
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRp
YVZvbHVtZVNsaWRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1
bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFSZXdpbmRCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURF
OworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOwogCkBAIC0xMjMsNiArMTM5LDYgQEAgcHJp
dmF0ZToKICAgICBSZW5kZXJUaGVtZU5peCgpOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUmVuZGVyVGhlbWVOaXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbml4L1NoYXJlZFRpbWVyTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25peC9TaGFyZWRUaW1lck5peC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM4MTEyMGU4MmMwN2Q4
NTZhMWI2MDljMmRmNzQ5N2Q2NzhmMjAzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25peC9TaGFyZWRUaW1lck5peC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxA
Z21haWwuY29tCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKworI2RlZmluZSBH
REtfUFJJT1JJVFlfUkVEUkFXIChHX1BSSU9SSVRZX0hJR0hfSURMRSArIDIwKQorI2luY2x1ZGUg
PGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBndWludCBzaGFyZWRU
aW1lcjsKK3N0YXRpYyB2b2lkICgqc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKSgpOworCit2b2lk
IHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKK3sKKyAgICBzaGFyZWRU
aW1lckZpcmVkRnVuY3Rpb24gPSBmOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdGltZW91dENhbGxi
YWNrKGdwb2ludGVyKQoreworICAgIGlmIChzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pCisgICAg
ICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbigpOworICAgIHJldHVybiBGQUxTRTsKK30KKwor
dm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAg
QVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisKKyAgICBndWludCBpbnRlcnZhbElu
TVMgPSBzdGF0aWNfY2FzdDxndWludD4oaW50ZXJ2YWwgKiAxMDAwKTsKKworICAgIHN0b3BTaGFy
ZWRUaW1lcigpOworICAgIHNoYXJlZFRpbWVyID0gZ190aW1lb3V0X2FkZF9mdWxsKEdES19QUklP
UklUWV9SRURSQVcsIGludGVydmFsSW5NUywgdGltZW91dENhbGxiYWNrLCAwLCAwKTsKK30KKwor
dm9pZCBzdG9wU2hhcmVkVGltZXIoKQoreworICAgIGlmICghc2hhcmVkVGltZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGdib29sZWFuIHJlbW92ZWRTb3VyY2UgPSBnX3NvdXJjZV9yZW1vdmUo
c2hhcmVkVGltZXIpOworICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFNvdXJjZSwgcmVtb3ZlZFNv
dXJjZSk7CisgICAgc2hhcmVkVGltZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9UZW1wb3JhcnlMaW5r
U3R1YnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWVlN2I2ZTJmMGU5NWMwNDEyZTIzNDRlZmQwOGEyZTMzOTVlNDRh
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9UZW1wb3Jh
cnlMaW5rU3R1YnMuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJp
bmc+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwm
KQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYUNv
bnN0cmFpbnRzTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9zdXBwb3J0L01l
ZGlhQ29uc3RyYWludHNOaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4OGE3ZjA3ODY4ZDgwZGYwZDVjMDA0
ZDYwMGQ0ZDRhYTQ3ZmVmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYUNvbnN0cmFpbnRzTml4LmNwcApAQCAtMCwwICsxLDExNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDxwdWJsaWMvTWVkaWFD
b25zdHJhaW50cy5oPgorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgTml4IHsKKworc3RhdGljIE1lZGlh
Q29uc3RyYWludCB0b05peE1lZGlhQ29uc3RyYWludChjb25zdCBXZWJDb3JlOjpNZWRpYUNvbnN0
cmFpbnQmIG90aGVyKQoreworICAgIE1lZGlhQ29uc3RyYWludCByZXN1bHQ7CisKKyAgICByZXN1
bHQubV9uYW1lID0gb3RoZXIubV9uYW1lLnV0ZjgoKS5kYXRhKCk7CisgICAgcmVzdWx0Lm1fdmFs
dWUgPSBvdGhlci5tX3ZhbHVlLnV0ZjgoKS5kYXRhKCk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitNZWRpYUNvbnN0cmFpbnRzOjpNZWRpYUNvbnN0cmFpbnRzKGNvbnN0IFBhc3NSZWZQdHI8
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mIGNvbnN0cmFpbnRzKQorICAgIDogbV9wcml2YXRl
KGNvbnN0cmFpbnRzKQoreworfQorCitNZWRpYUNvbnN0cmFpbnRzOjpNZWRpYUNvbnN0cmFpbnRz
KFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQorICAgIDogbV9wcml2YXRl
KGNvbnN0cmFpbnRzKQoreworfQorCit2b2lkIE1lZGlhQ29uc3RyYWludHM6OmFzc2lnbihjb25z
dCBNZWRpYUNvbnN0cmFpbnRzJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3By
aXZhdGU7Cit9CisKK3ZvaWQgTWVkaWFDb25zdHJhaW50czo6cmVzZXQoKQoreworICAgIG1fcHJp
dmF0ZS5yZXNldCgpOworfQorCit2b2lkIE1lZGlhQ29uc3RyYWludHM6OmdldE1hbmRhdG9yeUNv
bnN0cmFpbnRzKHN0ZDo6dmVjdG9yPE1lZGlhQ29uc3RyYWludD4mIGNvbnN0cmFpbnRzKSBjb25z
dAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6Ok1l
ZGlhQ29uc3RyYWludD4gbWFuZGF0b3J5Q29uc3RyYWludHM7CisgICAgbV9wcml2YXRlLT5nZXRN
YW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7CisgICAgc3RkOjp2ZWN0
b3I8TWVkaWFDb25zdHJhaW50PiByZXN1bHQobWFuZGF0b3J5Q29uc3RyYWludHMuc2l6ZSgpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsg
KytpKQorICAgICAgICByZXN1bHRbaV0gPSB0b05peE1lZGlhQ29uc3RyYWludChtYW5kYXRvcnlD
b25zdHJhaW50c1tpXSk7CisgICAgY29uc3RyYWludHMuc3dhcChyZXN1bHQpOworfQorCit2b2lk
IE1lZGlhQ29uc3RyYWludHM6OmdldE9wdGlvbmFsQ29uc3RyYWludHMoc3RkOjp2ZWN0b3I8TWVk
aWFDb25zdHJhaW50PiYgY29uc3RyYWludHMpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwo
KSk7CisgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50PiBvcHRpb25hbENv
bnN0cmFpbnRzOworICAgIG1fcHJpdmF0ZS0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25h
bENvbnN0cmFpbnRzKTsKKyAgICBzdGQ6OnZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IHJlc3VsdChv
cHRpb25hbENvbnN0cmFpbnRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
cHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSB0b05p
eE1lZGlhQ29uc3RyYWludChvcHRpb25hbENvbnN0cmFpbnRzW2ldKTsKKyAgICBjb25zdHJhaW50
cy5zd2FwKHJlc3VsdCk7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50czo6Z2V0TWFuZGF0b3J5
Q29uc3RyYWludFZhbHVlKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6c3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBXVEY6OlN0cmluZyByZXN1bHQ7Cisg
ICAgaWYgKG1fcHJpdmF0ZS0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKG5hbWUsIHJlc3Vs
dCkpIHsKKyAgICAgICAgdmFsdWUgPSByZXN1bHQudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNZWRpYUNvbnN0
cmFpbnRzOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBjaGFyKiBuYW1lLCBzdGQ6
OnN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisgICAgV1RG
OjpTdHJpbmcgcmVzdWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdldE9wdGlvbmFsQ29uc3RyYWlu
dFZhbHVlKG5hbWUsIHJlc3VsdCkpIHsKKyAgICAgICAgdmFsdWUgPSByZXN1bHQudXRmOCgpLmRh
dGEoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgTml4CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9zdXBw
b3J0L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2YTkyYmE2OTcw
ZWJiMDI2YWFmZGZiOGM3ZGU0OTQ2YWRmODg4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTml4LmNw
cApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSA8cHVibGljL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaD4KKworI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgPHB1
YmxpYy9BdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIE5peCB7CisKK01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UoKQorICAgIDogTWVk
aWFTdHJlYW1Tb3VyY2UoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKCku
cmVsZWFzZSgpLmxlYWtSZWYoKSkKK3sKK30KKworTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6TWVk
aWFTdHJlYW1BdWRpb1NvdXJjZShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U+JiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlKQorICAgIDogTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSkKK3sKK30KKworTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZSYgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6b3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2UqIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UpCit7CisgICAgbV9wcml2YXRl
ID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6YXNzaWduKGNvbnN0IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0
KCk7Cit9CisKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZT4oKSBjb25zdAoreworICAgIHJldHVybiB0b1dl
YkNvcmVBdWRpb1NvdXJjZSgpOworfQorCitNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpvcGVyYXRv
ciBXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlKigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRvV2ViQ29yZUF1ZGlvU291cmNlKCk7Cit9CisKK1dlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2UqIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnRvV2ViQ29yZUF1ZGlvU291cmNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZHluYW1pY19jYXN0PFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2UqPihtX3ByaXZhdGUuZ2V0KCkpOworfQorCitjb25zdCBjaGFyKiBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpkZXZpY2VJZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNO
dWxsKCkpOworICAgIHJldHVybiB0b1dlYkNvcmVBdWRpb1NvdXJjZSgpLT5kZXZpY2VJZCgpLnV0
ZjgoKS5kYXRhKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0RGV2aWNl
SWQoY29uc3QgY2hhciogZGV2aWNlSWQpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxs
KCkpOworICAgIHRvV2ViQ29yZUF1ZGlvU291cmNlKCktPnNldERldmljZUlkKGRldmljZUlkKTsK
K30KKworY2xhc3MgQ29uc3VtZXJXcmFwcGVyIDogcHVibGljIFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Db25zdW1lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc3VtZXJX
cmFwcGVyPiBjcmVhdGUoTml4OjpBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb25zdW1lcldyYXBwZXIoY29uc3Vt
ZXIpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29uc3VtZUF1ZGlvKFdlYkNvcmU6OkF1ZGlvQnVzKiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKSBP
VkVSUklERTsKKworICAgIE5peDo6QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcigp
IHsgcmV0dXJuIG1fY29uc3VtZXI7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDb25zdW1l
cldyYXBwZXIoTml4OjpBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVyKSA6IG1fY29u
c3VtZXIoY29uc3VtZXIpIHsgfQorCisgICAgLy8gbV9jb25zdW1lciBpcyBub3Qgb3duZWQgYnkg
dGhpcyBjbGFzcy4KKyAgICBOaXg6OkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogbV9jb25zdW1l
cjsKK307CisKK3ZvaWQgQ29uc3VtZXJXcmFwcGVyOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgbV9jb25zdW1lci0+c2V0Rm9ybWF0
KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworfQorCit2b2lkIENvbnN1bWVyV3JhcHBl
cjo6Y29uc3VtZUF1ZGlvKFdlYkNvcmU6OkF1ZGlvQnVzKiBidXMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKK3sKKyAgICBpZiAoIWJ1cykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV3JhcCBB
dWRpb0J1cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyA9IGJ1cy0+bnVtYmVyT2ZDaGFu
bmVscygpOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGZsb2F0Kj4gYnVzVmVjdG9yKG51bWJlck9m
Q2hhbm5lbHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsg
KytpKQorICAgICAgICBidXNWZWN0b3JbaV0gPSBidXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKwor
ICAgIG1fY29uc3VtZXItPmNvbnN1bWVBdWRpbyhidXNWZWN0b3IsIG51bWJlck9mRnJhbWVzKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjphZGRBdWRpb0NvbnN1bWVyKEF1ZGlv
RGVzdGluYXRpb25Db25zdW1lciogY29uc3VtZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSAmJiBjb25zdW1lcik7CisKKyAg
ICB0b1dlYkNvcmVBdWRpb1NvdXJjZSgpLT5hZGRBdWRpb0NvbnN1bWVyKENvbnN1bWVyV3JhcHBl
cjo6Y3JlYXRlKGNvbnN1bWVyKSk7Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6
cmVtb3ZlQXVkaW9Db25zdW1lcihBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNO
dWxsKCkgJiYgY29uc3VtZXIpOworCisgICAgY29uc3QgV1RGOjpWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgY29uc3VtZXJzID0gdG9XZWJDb3JlQXVk
aW9Tb3VyY2UoKS0+YXVkaW9Db25zdW1lcnMoKTsKKyAgICBmb3IgKFdURjo6VmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gY29uc3VtZXJzLmJlZ2luKCk7IGl0ICE9IGNvbnN1bWVycy5lbmQoKTsgKytpdCkgeworICAg
ICAgICBDb25zdW1lcldyYXBwZXIqIHdyYXBwZXIgPSBzdGF0aWNfY2FzdDxDb25zdW1lcldyYXBw
ZXIqPigoKml0KS5nZXQoKSk7CisgICAgICAgIGlmICh3cmFwcGVyLT5jb25zdW1lcigpID09IGNv
bnN1bWVyKSB7CisgICAgICAgICAgICB0b1dlYkNvcmVBdWRpb1NvdXJjZSgpLT5yZW1vdmVBdWRp
b0NvbnN1bWVyKHdyYXBwZXIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBOaXgKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25peC9zdXBwb3J0L01lZGlhU3RyZWFtQ2VudGVyTml4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25peC9zdXBwb3J0L01lZGlhU3RyZWFtQ2VudGVyTml4LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZmZjMDA4OWM5NGUzNzQyZDMzMmExZWRiMmVhMjhlOTQ2MmY3YmMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L3N1cHBvcnQvTWVkaWFTdHJl
YW1DZW50ZXJOaXguY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSA8cHVibGljL01lZGlhU3RyZWFtQ2VudGVyLmg+CisKK25hbWVzcGFjZSBOaXggewor
CitNZWRpYVN0cmVhbUNlbnRlcjo6TWVkaWFTdHJlYW1DZW50ZXIoKQoreworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ2VudGVyOjpyZXF1ZXN0KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgTml4CisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbml4L3N1cHBvcnQvTWVkaWFTdHJlYW1OaXguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbml4L3N1cHBvcnQvTWVkaWFTdHJlYW1OaXguY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgy
MWI4MmJjZjViN2JlNWFhMzQ1ZTcxZTBlMTY4YmQwNzMyZjc0ZmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvc3VwcG9ydC9NZWRpYVN0cmVhbU5peC5jcHAK
QEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8cHVibGlj
L01lZGlhU3RyZWFtLmg+CisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgiCisj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3Vy
Y2UuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmg+CisjaW5j
bHVkZSA8cHVibGljL01lZGlhU3RyZWFtU291cmNlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBOaXggeworCitNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oY29uc3Qg
UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU+JiBtZWRpYVN0cmVhbURlc2Ny
aXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1EZXNjcmlwdG9yKQoreworfQorCitN
ZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlKiBtZWRp
YVN0cmVhbURlc2NyaXB0b3IpCisgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1EZXNjcmlwdG9y
KQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJl
c2V0KCk7Cit9CisKK2NvbnN0IGNoYXIqIE1lZGlhU3RyZWFtOjppZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+aWQoKS51dGY4KCkuZGF0YSgpOworfQorCitzdGQ6OnZlY3RvcjxN
ZWRpYVN0cmVhbVNvdXJjZSo+IE1lZGlhU3RyZWFtOjphdWRpb1NvdXJjZXMoKSBjb25zdAorewor
ICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mQXVkaW9Tb3Vy
Y2VzKCk7CisgICAgc3RkOjp2ZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2UqPiByZXN1bHQobnVtYmVy
T2ZTb3VyY2VzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mU291cmNlczsg
KytpKQorICAgICAgICByZXN1bHRbaV0gPSBuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZShkeW5h
bWljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZSo+KG1fcHJpdmF0ZS0+YXVk
aW9Tb3VyY2VzKGkpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RkOjp2ZWN0b3I8TWVk
aWFTdHJlYW1Tb3VyY2UqPiBNZWRpYVN0cmVhbTo6dmlkZW9Tb3VyY2VzKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRSBBZGQgc3VwcG9ydCBmb3IgdmlkZW8gc291cmNlcy4KKyAgICByZXR1cm4gc3Rk
Ojp2ZWN0b3I8TWVkaWFTdHJlYW1Tb3VyY2UqPigpOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjph
ZGRTb3VyY2UoY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2UmKQoreworICAgIEFTU0VSVCghaXNOdWxs
KCkpOworICAgIC8vIEZJWE1FOiBTZXQgYSBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQgd2hlbiBp
bml0aWFsaXplLgorfQorCit2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVTb3VyY2UoY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2UmKQoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIC8vIEZJWE1F
OiBTZXQgYSBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQgd2hlbiBpbml0aWFsaXplLgorfQorCitN
ZWRpYVN0cmVhbSYgTWVkaWFTdHJlYW06Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZT4mIG1lZGlhU3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBt
X3ByaXZhdGUgPSBtZWRpYVN0cmVhbURlc2NyaXB0b3I7CisgICAgcmV0dXJuICp0aGlzOworfQor
CitNZWRpYVN0cmVhbTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVBy
aXZhdGU+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitNZWRp
YVN0cmVhbTo6b3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlKigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbTo6aW5p
dGlhbGl6ZShzdGQ6OnZlY3RvcjxNZWRpYVN0cmVhbVNvdXJjZSo+JiBhdWRpb1NvdXJjZXMsIHN0
ZDo6dmVjdG9yPE1lZGlhU3RyZWFtU291cmNlKj4mIHZpZGVvU291cmNlcykKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW8sIHZpZGVvOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UqIHNvdXJjZSA9ICooZHluYW1pY19j
YXN0PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UqPihhdWRpb1NvdXJjZXNbaV0pKTsKKyAgICAgICAg
YXVkaW8uYXBwZW5kKHNvdXJjZSk7CisgICAgICAgIGRlbGV0ZSBhdWRpb1NvdXJjZXNbaV07Cisg
ICAgfQorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgTWVkaWFTdHJlYW1WaWRlb1NvdXJj
ZSB3aGVuIGl0J3MgYXZhaWxhYmxlLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9T
b3VyY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNl
KiBzb3VyY2UgPSAqKHZpZGVvU291cmNlc1tpXSk7CisgICAgICAgIHZpZGVvLmFwcGVuZChzb3Vy
Y2UpOworICAgICAgICBkZWxldGUgdmlkZW9Tb3VyY2VzW2ldOworICAgIH0KKyAgICBtX3ByaXZh
dGUgPSBXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpbywgdmlkZW8pOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtOjphc3NpZ24oY29uc3QgTWVkaWFTdHJlYW0mIG90aGVyKQor
eworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKworYm9vbCBNZWRpYVN0cmVh
bTo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBOaXgKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9zdXBwb3J0L01lZGlhU3Ry
ZWFtU291cmNlTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9zdXBwb3J0L01l
ZGlhU3RyZWFtU291cmNlTml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTk2ZjgyYWNlN2IyNTAwODkwODkx
N2Q4Nzg4ZjFhODlmZTJlZmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbml4L3N1cHBvcnQvTWVkaWFTdHJlYW1Tb3VyY2VOaXguY3BwCkBAIC0wLDAgKzEsMTM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHB1YmxpYy9NZWRp
YVN0cmVhbVNvdXJjZS5oPgorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIE5peCB7CisKK01lZGlhU3Ry
ZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtU291cmNlPiYgbWVkaWFTdHJlYW1Tb3VyY2UpCisgICAgOiBtX3ByaXZhdGUobWVk
aWFTdHJlYW1Tb3VyY2UpCit7Cit9CisKK01lZGlhU3RyZWFtU291cmNlJiBNZWRpYVN0cmVhbVNv
dXJjZTo6b3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlKiBtZWRpYVN0cmVhbVNv
dXJjZSkKK3sKKyAgICBtX3ByaXZhdGUgPSBtZWRpYVN0cmVhbVNvdXJjZTsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFzc2lnbihjb25zdCBNZWRpYVN0
cmVhbVNvdXJjZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJl
c2V0KCk7Cit9CisKK01lZGlhU3RyZWFtU291cmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5n
ZXQoKTsKK30KKworTWVkaWFTdHJlYW1Tb3VyY2U6Om9wZXJhdG9yIFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlKigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwor
Y29uc3QgY2hhciogTWVkaWFTdHJlYW1Tb3VyY2U6OmlkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
IW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+aWQoKS51
dGY4KCkuZGF0YSgpOworfQorCitNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZSBNZWRpYVN0cmVhbVNv
dXJjZTo6dHlwZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3ByaXZhdGUuZ2V0KCktPnR5cGUoKSk7Cit9
CisKK2NvbnN0IGNoYXIqIE1lZGlhU3RyZWFtU291cmNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKS0+
bmFtZSgpLnV0ZjgoKS5kYXRhKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJl
YWR5U3RhdGUoUmVhZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051
bGwoKSk7CisgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKHN0YXRpY19jYXN0PFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlPihzdGF0ZSkpOworfQorCitNZWRpYVN0cmVh
bVNvdXJjZTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZHlTdGF0ZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxSZWFkeVN0YXRlPihtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1Tb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIEFTU0VSVCgh
bV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7
Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1Tb3VyY2U6OmVuYWJsZWQoKSBjb25zdAoreworICAgIEFT
U0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5lbmFibGVk
KCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCit7
CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJpdmF0ZS0+c2V0TXV0
ZWQobXV0ZWQpOworfQorCitib29sIE1lZGlhU3RyZWFtU291cmNlOjptdXRlZCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUt
Pm11dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWRvbmx5KGJvb2wg
cmVhZG9ubHkpCit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIG1fcHJp
dmF0ZS0+c2V0UmVhZG9ubHkocmVhZG9ubHkpOworfQorCitib29sIE1lZGlhU3RyZWFtU291cmNl
OjpyZWFkb25seSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUtPnJlYWRvbmx5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE5p
eAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDkwMjE3MTE0YjQ1OTE2ZTljNTQ2
MDgzOTFkZmQ3YzkxYTJiYjU2YjEuLjk3MDcyZDExZmQ1MDgyZTI2ZjM2Yzc5OWVjN2JlODFlNWRk
OWY4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgY2FuVXNlRm9yVGV4dChjb25zdCBSZW5k
ZXJUZXh0JiB0ZXh0UmVuZGVyZXIsIGNvbnN0IFNpbXBsZUZvbnREYXRhJgogCiBib29sIGNhblVz
ZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7Ci0jaWYgIVBMQVRGT1JNKE1BQykg
JiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZPUk0oTklYKQogICAg
IC8vIEZJWE1FOiBOb24tbWFjIHBsYXRmb3JtcyBhcmUgaGl0dGluZyBBU1NFUlQocnVuLmNoYXJh
Y3RlcnNMZW5ndGgoKSA+PSBydW4ubGVuZ3RoKCkpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzMzOAogICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>