<?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>236836</bug_id>
          
          <creation_ts>2022-02-18 06:36:00 -0800</creation_ts>
          <short_desc>[TextureMapper] Refactor TextureMapperPlatformLayerProxy into specializable implementations</short_desc>
          <delta_ts>2022-03-09 04:25:57 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alex</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843371</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-18 06:36:00 -0800</bug_when>
    <thetext>[TextureMapper] Refactor TextureMapperPlatformLayerProxy into specializable implementations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843372</commentid>
    <comment_count>1</comment_count>
      <attachid>452514</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-18 06:37:12 -0800</bug_when>
    <thetext>Created attachment 452514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843378</commentid>
    <comment_count>2</comment_count>
      <attachid>452514</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-02-18 07:01:26 -0800</bug_when>
    <thetext>Comment on attachment 452514
Patch

LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843549</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 12:18:59 -0800</bug_when>
    <thetext>Committed r290150 (247489@main): &lt;https://commits.webkit.org/247489@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452514.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843552</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-18 12:20:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/89159803&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452514</attachid>
            <date>2022-02-18 06:37:12 -0800</date>
            <delta_ts>2022-02-18 12:19:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236836-20220218153710.patch</filename>
            <type>text/plain</type>
            <size>51446</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlNzM3ZjY3MDdiNDlm
N2MyYjUzMjgyNWYwNTYxZGU4NGNlYTY1MC4uYmQwY2U0YjYyYmQ5NWM4ZjdhYzZkOWI0YzhlMGFk
NmQzMmU5ZWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIyLTAyLTE4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4dHVyZU1hcHBl
cl0gUmVmYWN0b3IgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSBpbnRvIHNwZWNpYWxp
emFibGUgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzY4MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUdXJuIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgaW50byBh
biBhYnN0cmFjdCBjbGFzcyBmcm9tIHdoaWNoCisgICAgICAgIGRpZmZlcmVudCBzcGVjaWFsaXph
dGlvbnMgY2FuIHRoZW4gYmUgZGVyaXZlZC4gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcworICAg
ICAgICBzcHVuIG9mZiBpbnRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wg
Y2xhc3MsIGFuZCB0eXBlCisgICAgICAgIHRyYWl0cyBzcGVjaWFsaXphdGlvbiBmYWNpbGl0aWVz
IGFyZSBwcm92aWRlZCBmb3IgZnV0dXJlIHBhcmFsbGVsCisgICAgICAgIGltcGxlbWVudGF0aW9u
cyAoZS5nLiBhIERNQUJ1Zi1jb25zdW1pbmcgcHJveHkgY2xhc3MpLgorCisgICAgICAgIEV4aXN0
aW5nIHVzZXMgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSBhcmUgdXBkYXRlZCB0
byB1c2UKKyAgICAgICAgdGhlIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTCBjbGFz
cyBpbnN0ZWFkLiBEb3duY2FzdGluZyBpcworICAgICAgICBkb25lIGFzIG5lY2Vzc2FyeSwgd2l0
aCBhc3NlcnRzIGNoZWNraW5nIGZvciB0aGUgZXhwZWN0ZWQgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgdHlwZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgb25seSByZWZh
Y3RvcmluZyBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVyZU1hcHBl
ci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9GcmFtZUhvbGRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVy
ZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnRyaWdnZXJSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Zmx1c2hDdXJyZW50QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
OjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKE5pY29zaWE6
OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcDoKKyAgICAgICAg
KE5pY29zaWE6OkdDR0xBTkdMRUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6OkdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5
ZXI6OlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OmFwcGVuZFRvVW51c2VkQnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzY2hlZHVsZVJlbGVhc2VVbnVz
ZWRCdWZmZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2Fw
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OmRyb3BDdXJyZW50QnVmZmVyV2hpbGVQcmVzZXJ2aW5nVGV4dHVyZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OjpzY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFk
VXBkYXRlVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmlzR0xCYXNlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojppc0RNQUJ1
ZkJhc2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OldURl9SRVRVUk5TX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6V1RGX0dVQVJERURfQllfTE9DSyk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlHTC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6flRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlHTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5R0w6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OmludmFsaWRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdM
OjpwdXNoTmV4dEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5R0w6OmdldEF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OmFwcGVuZFRvVW51c2VkQnVmZmVycyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OnNj
aGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpz
d2FwQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlHTDo6ZHJvcEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6c2NoZWR1bGVV
cGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eUdMOjpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlHTC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oLgorCiAyMDIyLTAy
LTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtmcmFt
ZS1yYXRlXSBhbmltYXRpb24gd2l0aCBkaWZmZXJlbnQgYnV0IGNvbXBhdGlibGUgZnJhbWUgcmF0
ZXMgc2hvdWxkIGJlIGFsaWduZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFw
cGVyLmNtYWtlCmluZGV4IGY2YzZlZWZkOGE5MjhiODI3YzgyYjg4OGFmMTRhNTdkYmRhNDQ0NjEu
LmUzMmYyNmQ1MjdkZjUxMzFlNzk5ODM4N2M1NDAxYjMwZTU2NzY5MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQpAQCAtMzYsNiArMzYsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eVByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNv
bGlkQ29sb3JMYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmgKQEAgLTYxLDYgKzYyLDcgQEAgaWYgKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJEbWFidWYuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMLmNwcAog
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9s
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9GcmFtZUhvbGRlci5oCmluZGV4IGVjZDFiMTliNjE3NmVhNGNlM2MxN2U5ZjI1YzQz
MThkM2YzNGJkYTkuLmZlNDliNTg0Y2RhOWQxMzUxMzYxMTJmZDdjODhjZmFhNDRmNTg3ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0ZyYW1lSG9sZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvRnJhbWVIb2xkZXIuaApAQCAtMjQsNyArMjQs
NiBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3MGM2
OTZkODg1M2I3ZDdjMjhjNDBlNGZkZDI1ZDU2NTcyNTAwYjBlLi4wZmQzNjdlNGY2OWQ3ZmZmOGU4
MTc4MTFiYTI5NTk0MTZlZDYyMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBACiAjaW5jbHVkZSAiR1N0cmVh
bWVyVmlkZW9GcmFtZUhvbGRlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJDb250ZXh0QXR0
cmlidXRlcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogI2VuZGlmIC8vIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKIAogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYp
CkBAIC0xNjAsNyArMTYwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikKICNpZiBVU0UoTklDT1NJ
QSkKICAgICAsIG1fbmljb3NpYUxheWVyKE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5p
Y29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlz
KSkpCiAjZWxzZQotICAgICwgbV9wbGF0Zm9ybUxheWVyUHJveHkoYWRvcHRSZWYobmV3IFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSkpCisgICAgLCBtX3BsYXRmb3JtTGF5ZXJQcm94
eShhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMKSkKICNlbmRp
ZgogI2VuZGlmCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yOTE5LDcgKzI5MTksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVzaFRleHR1cmVUb0NvbXBvc2l0
b3IoKQogCiAgICAgKyttX3NhbXBsZUNvdW50OwogCi0gICAgYXV0byBpbnRlcm5hbENvbXBvc2l0
aW5nT3BlcmF0aW9uID0gW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHBy
b3h5LCBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4mJiBmcmFtZUhvbGRlcikg
eworICAgIGF1dG8gaW50ZXJuYWxDb21wb3NpdGluZ09wZXJhdGlvbiA9IFt0aGlzXShUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wmIHByb3h5LCBzdGQ6OnVuaXF1ZV9wdHI8R3N0Vmlk
ZW9GcmFtZUhvbGRlcj4mJiBmcmFtZUhvbGRlcikgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwogICAgICAgICBp
ZiAoZnJhbWVIb2xkZXItPmhhc01hcHBlZFRleHR1cmVzKCkpIHsKICAgICAgICAgICAgIGxheWVy
QnVmZmVyID0gZnJhbWVIb2xkZXItPnBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKQEAgLTI5NDEsNyAr
Mjk0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRv
Q29tcG9zaXRvcigpCiAKICNpZiBVU0UoV1BFX1ZJREVPX1BMQU5FX0RJU1BMQVlfRE1BQlVGKQog
ICAgIGF1dG8gcHJveHlPcGVyYXRpb24gPQotICAgICAgICBbdGhpcywgaW50ZXJuYWxDb21wb3Np
dGluZ09wZXJhdGlvbl0oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCisg
ICAgICAgIFt0aGlzLCBpbnRlcm5hbENvbXBvc2l0aW5nT3BlcmF0aW9uXShUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5R0wmIHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgcHJveHkubG9jaygpIH07CiAKQEAgLTI5NTksNyArMjk1OSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAg
ICAgICAgIH07CiAjZWxzZQogICAgIGF1dG8gcHJveHlPcGVyYXRpb24gPQotICAgICAgICBbdGhp
cywgaW50ZXJuYWxDb21wb3NpdGluZ09wZXJhdGlvbl0oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSYgcHJveHkpCisgICAgICAgIFt0aGlzLCBpbnRlcm5hbENvbXBvc2l0aW5nT3BlcmF0
aW9uXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wmIHByb3h5KQogICAgICAgICB7
CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHkubG9jaygpIH07CiAKQEAgLTI5NzIs
NyArMjk3Miw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVy
ZVRvQ29tcG9zaXRvcigpCiAjZW5kaWYgLy8gVVNFKFdQRV9WSURFT19QTEFORV9ESVNQTEFZX0RN
QUJVRikKIAogI2lmIFVTRShOSUNPU0lBKQotICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5p
Y29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1w
bCgpKS5wcm94eSgpKTsKKyAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgp
OworICAgIEFTU0VSVChpczxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5
KSk7CisgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eUdMPihwcm94eSkpOwogI2Vsc2UKICAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9y
bUxheWVyUHJveHkpOwogI2VuZGlmCkBAIC0zMTY4LDEyICszMTcwLDE0IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkK
ICAgICBpZiAobV9pc1VzaW5nRmFsbGJhY2tWaWRlb1NpbmspIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZHJhd0xvY2sgfTsKICAgICAgICAgYXV0byBwcm94eU9wZXJhdGlvbiA9Ci0gICAg
ICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCisg
ICAgICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMJiBwcm94
eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gcHJveHkuc2NoZWR1bGVV
cGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoW3RoaXNdIHsgdGhpcy0+cHVzaFRleHR1cmVUb0NvbXBv
c2l0b3IoKTsgfSk7CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lBKQotICAgICAgICBp
ZiAoIXByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKSkKKyAgICAgICAgYXV0
byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKTsKKyAgICAgICAgQVNTRVJUKGlzPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpKTsKKyAgICAgICAgaWYgKCFw
cm94eU9wZXJhdGlvbihkb3duY2FzdDxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+
KHByb3h5KSkpCiAgICAgICAgICAgICByZXR1cm47CiAjZWxzZQogICAgICAgICBpZiAoIXByb3h5
T3BlcmF0aW9uKCptX3BsYXRmb3JtTGF5ZXJQcm94eSkpCkBAIC0zMjMxLDcgKzMyMzUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Zmx1c2hDdXJyZW50QnVmZmVyKCkKICAg
ICB9CiAKICAgICBib29sIHNob3VsZFdhaXQgPSBtX3ZpZGVvRGVjb2RlclBsYXRmb3JtID09IEdz
dFZpZGVvRGVjb2RlclBsYXRmb3JtOjpWaWRlbzRMaW51eDsKLSAgICBhdXRvIHByb3h5T3BlcmF0
aW9uID0gW3Nob3VsZFdhaXQsIHBpcGVsaW5lID0gcGlwZWxpbmUoKV0oVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpIHsKKyAgICBhdXRvIHByb3h5T3BlcmF0aW9uID0gW3No
b3VsZFdhaXQsIHBpcGVsaW5lID0gcGlwZWxpbmUoKV0oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eUdMJiBwcm94eSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lLCAi
Rmx1c2hpbmcgdmlkZW8gc2FtcGxlICVzIiwgc2hvdWxkV2FpdCA/ICJzeW5jaHJvbm91c2x5IiA6
ICIiKTsKICAgICAgICAgaWYgKHNob3VsZFdhaXQpIHsKICAgICAgICAgICAgIGlmIChwcm94eS5p
c0FjdGl2ZSgpKQpAQCAtMzI0NCw3ICszMjQ4LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcigpCiAgICAgfTsKIAogI2lmIFVTRShOSUNPU0lB
KQotICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKKyAgICBhdXRv
JiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
PihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpOworICAgIGlmIChpczxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KSkKKyAgICAgICAgcHJveHlPcGVyYXRpb24o
ZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihwcm94eSkpOwogI2Vs
c2UKICAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJveHkpOwogI2VuZGlmCkBA
IC0zNDcxLDcgKzM0NzcsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmNyZWF0ZUhvbGVQdW5jaFZpZGVvU2luaygpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogewogICAgIGF1dG8gcHJveHlPcGVy
YXRpb24gPQotICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYg
cHJveHkpCisgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wm
IHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHkubG9j
aygpIH07CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5k
LCBHTF9ET05UX0NBUkUpOwpAQCAtMzQ4MSw3ICszNDg3LDkgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgfTsKIAog
I2lmIFVTRShOSUNPU0lBKQotICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94
eSgpKTsKKyAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpOworICAgIEFT
U0VSVChpczxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KSk7CisgICAg
cHJveHlPcGVyYXRpb24oZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdM
Pihwcm94eSkpOwogI2Vsc2UKICAgICBwcm94eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJv
eHkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwCmluZGV4IDkwMWQ1N2VmZDZmNDEzOWE5ZDNhMmM4YzExYmNjZWNhYmJjMTBjMDcuLmIz
N2Q1Y2MxY2FmZWM2ODljNmIyYWVlZjkyZjc5Mjk4YzU5N2U5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAj
aWYgVVNFKEVYVEVSTkFMX0hPTEVQVU5DSCkKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcg
KzM2LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2goTWVkaWFQbGF5ZXIqIHBsYXllcikKICNpZiBVU0UoTklDT1NJQSkKICAgICAsIG1f
bmljb3NpYUxheWVyKE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzKSkpCiAjZWxzZQot
ICAgICwgbV9wbGF0Zm9ybUxheWVyUHJveHkoYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkoKSkpCisgICAgLCBtX3BsYXRmb3JtTGF5ZXJQcm94eShhZG9wdFJlZihu
ZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMKSkKICNlbmRpZgogewogICAgIHB1
c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCk7CkBAIC03Myw3ICs3Myw3IEBAIEZsb2F0U2l6ZSBNZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2g6Om5hdHVyYWxTaXplKCkgY29uc3QKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiB7CiAgICAg
YXV0byBwcm94eU9wZXJhdGlvbiA9Ci0gICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5JiBwcm94eSkKKyAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlHTCYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBwcm94eS5sb2NrKCkgfTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CkBAIC04MSw3ICs4MSw5IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAg
ICAgIH07CiAKICNpZiBVU0UoTklDT1NJQSkKLSAgICBwcm94eU9wZXJhdGlvbihkb3duY2FzdDxO
aWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmlt
cGwoKSkucHJveHkoKSk7CisgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHko
KTsKKyAgICBBU1NFUlQoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihwcm94
eSkpOworICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlHTD4ocHJveHkpKTsKICNlbHNlCiAgICAgcHJveHlPcGVyYXRpb24oKm1fcGxhdGZv
cm1MYXllclByb3h5KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5j
cHAKaW5kZXggNjM4NDYzZmIzZjI1ZTViZGJkYWY5Nzg5ZTRhZjkwNzE0YTY1Njk2MS4uZDhjYzk4
MTVkOWE4NTdjZDFmY2MxZTEwNzkyNTZlZDE4ZGM2MjU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiTmF0aXZlSW1h
Z2UuaCIKICNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlHTC5oIgogCiAjaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgYXV0byBwcm94eU9wZXJhdGlvbiA9IFt0aGlzXSAoVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eSYgcHJveHkpIG11dGFibGUgewotICAgICAgICAgICAgcmV0dXJuIHByb3h5LnNj
aGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKFt0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+
KHByb3h5KS5zY2hlZHVsZVVwZGF0ZU9uQ29tcG9zaXRvclRocmVhZChbdGhpc10gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHko
KTsKICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHkubG9jaygpIH07CiAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUo
UmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKIAogICAgICAgICAgICAgICAgIGF1dG8gbGF5
ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihX
VEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0RXh0cmFG
bGFncyhUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kKTsKLSAgICAgICAgICAgICAgICBwcm94
eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CisgICAgICAgICAgICAgICAg
ZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihwcm94eSkucHVzaE5l
eHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH07CiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGY2MjNlNjM0MjU0NWE4ODlkMmUwNGFkYjk4ZWExY2Rh
ZDdlOTYwZWYuLjAyMjg0NGIzMjY3MDQ1M2M2Y2M3NzU1NDRjMjk2YjVkNjA4M2M0ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKQogCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1lc3Bh
Y2UgTmljb3NpYSB7CiAKQEAgLTM5LDEyICszOSwxMiBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7
CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbD4oY2xpZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQsIGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMKSk7CiAgICAgICAgIH0pOwogfQogCi1Db250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwoQ2xp
ZW50JiBjbGllbnQpCi0gICAgOiBtX3Byb3h5KGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSkpCitDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bDo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwoQ2xpZW50JiBjbGllbnQsIFJlZjxXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiYmIHByb3h5KQorICAgIDogbV9w
cm94eShXVEZNb3ZlKHByb3h5KSkKICAgICAsIG1fY2xpZW50IHsgeyB9LCAmY2xpZW50IH0KIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggYjAxMDViNzNhYzIyNjRmNTdjYTdiN2U1MDNlY2Y3
MGRhNTI3ZGE3ZS4uOTdlMzA1OTEzY2M4NDI2YjM3YjgzN2M0ZDNlNjlkYTdlM2IzMDc2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEZhY3RvcnkgY3JlYXRlRmFjdG9yeShDbGllbnQmKTsKIAotICAgIGV4cGxpY2l0IENvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsKENsaWVudCYpOworICAgIGV4cGxpY2l0IENvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsKENsaWVudCYsIFJlZjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiYmKTsKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbCgpOwogICAgIGJvb2wgaXNUZXh0dXJlTWFwcGVySW1wbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5H
TEVMYXllci5jcHAKaW5kZXggNzBmOTYyMjQ3OTk4YzU2ZmU0M2JlNWE2ODY5OTEwNWFjYjdhYjE4
Yy4uOTkxNzQxODM2ZDQ0MWJmOTY4MWNkZTk2NjJjMjc1MjhjNWQwNzBiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdD
R0xBTkdMRUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyRG1hYnVmLmgiCi0jaW5jbHVkZSAiVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKQEAgLTYyLDcg
KzYyLDggQEAgdm9pZCBHQ0dMQU5HTEVMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3h5LmxvY2soKSB9OwotICAg
ICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckRtYWJ1Zj4oc2l6ZSwgZm9ybWF0LCBzdHJpZGUsIGZkKSk7CisgICAgICAgICAg
ICBBU1NFUlQoaXM8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihwcm94eSkpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPihw
cm94eSkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckRtYWJ1Zj4oc2l6ZSwgZm9ybWF0LCBzdHJpZGUsIGZkKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpAQCAtNzgsMTQgKzc5LDE1IEBAIHZv
aWQgR0NHTEFOR0xFTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIGF1dG8gZmxhZ3Mg
PSBtX2NvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1
cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWc7CiAgICAgewogICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgcHJveHkubG9jaygpIH07Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFp
bGFibGVCdWZmZXIoc2l6ZSwgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCk7CisgICAg
ICAgIEFTU0VSVChpczxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+KHByb3h5KSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gbGF5ZXJCdWZmZXIgPSBkb3duY2FzdDxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
R0w+KHByb3h5KS5nZXRBdmFpbGFibGVCdWZmZXIoc2l6ZSwgbV9jb250ZXh0Lm1faW50ZXJuYWxD
b2xvckZvcm1hdCk7CiAgICAgICAgIGlmICghbGF5ZXJCdWZmZXIpIHsKICAgICAgICAgICAgIGF1
dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlczo6Z2V0KCksIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0
KTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgZmxhZ3MpOwogICAgICAgICB9CiAK
ICAgICAgICAgbGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpLnNldFBlbmRpbmdDb250ZW50cyhJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSkpOwotICAgICAgICBw
cm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CisgICAgICAgIGRvd25j
YXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTD4ocHJveHkpLnB1c2hOZXh0QnVm
ZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICB9CiAgICAgbV9jb250ZXh0Lm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAK
aW5kZXggMDEwY2M3YzMzYmVjYmIyYjhmNmFiMDcwZmQ3MzVlZmFiMDBlMjdlNC4uYWEyYjFlNjdk
OTBiNjIxNzcwZTcyNTgxMmFlYzQzZGZhMzllNmQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDR0xMYXllci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eUdMLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgpAQCAtODMsNyArODMs
OCBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgewogICAgICAg
ICBhdXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsPihtX2NvbnRlbnRMYXllci0+aW1wbCgpKS5wcm94eSgpOwogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgcHJveHkubG9jaygpIH07Ci0gICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2Nv
bXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFs
Q29sb3JGb3JtYXQpKTsKKyAgICAgICAgQVNTRVJUKGlzPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlHTD4ocHJveHkpKTsKKyAgICAgICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eUdMPihwcm94eSkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUs
IHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOwog
ICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdD
R0xQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IGU1MzM0ZWUyZjc1
NzQ5MjVmMzg2M2I5NWY1MzFmZGM4MjYyOWZlYjIuLmI1NjA2YjM4OGU3NTJlMzQ5MDgzNjhhM2Nj
NDA5MDA3NDNmOGE2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllcjo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dEdMCiAj
ZW5kaWYKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICBtX3BsYXRmb3JtTGF5
ZXJQcm94eSA9IGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCkp
OworICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlHTCk7CiAjZW5kaWYKIH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAK
ICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9j
aygpIH07Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihtYWtl
VW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENv
bG9yRm9ybWF0KSk7CisgICAgICAgIGRvd25jYXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlHTD4oKm1fcGxhdGZvcm1MYXllclByb3h5KS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9y
VGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9y
bWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBi
MDRmOWM2Yjk3YTY5YTY4ZWYzYThkOGEyMWFjNzY1MDllMmQxMGMxLi4wY2UzZDQ1YTA0OWEyNTc5
NDE3OWE3MmE0Zjg0ZDNkMWVlMTcxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC0yOCw4OSArMjgsMTAgQEAKIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAotI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgotI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5o
IgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0KLSNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlv
cml0eS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8d3RmL1Njb3BlLmg+Ci0KLXN0YXRpYyBjb25zdCBT
ZWNvbmRzIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlIHsgMV9zIH07Ci1zdGF0aWMgY29u
c3QgU2Vjb25kcyByZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwgPSB7IDUwMF9tcyB9
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQotICAgIDogbV9jb21wb3NpdG9y
KG51bGxwdHIpCi0gICAgLCBtX3RhcmdldExheWVyKG51bGxwdHIpCi17Ci19Ci0KLVRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
KCkKLXsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgaWYgKG1fdGFyZ2V0TGF5
ZXIpCi0gICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7Ci19
Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBv
c2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvbXBvc2l0b3IsIFRleHR1cmVNYXBwZXJMYXllciog
dGFyZ2V0TGF5ZXIpCi17Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlmICghbV9jb21wb3NpdG9yVGhy
ZWFkKQotICAgICAgICBtX2NvbXBvc2l0b3JUaHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7Ci0j
ZW5kaWYKLSAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7Ci0gICAgQVNTRVJUKGNvbXBvc2l0b3IpOwotICAgIEFTU0VSVCh0YXJnZXRMYXllcik7Ci0g
ICAgRnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKLSAgICB7Ci0gICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICAgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsK
LSAgICAgICAgbV90YXJnZXRMYXllciA9IHRhcmdldExheWVyOwotICAgICAgICBpZiAobV90YXJn
ZXRMYXllciAmJiBtX2N1cnJlbnRCdWZmZXIpCi0gICAgICAgICAgICBtX3RhcmdldExheWVyLT5z
ZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7Ci0KLSAgICAgICAgbV9yZWxl
YXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZp
cmVkKTsKLSAgICAgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVl
PFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21w
b3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7Ci0KLSNpZiBVU0UoR0xJQl9FVkVOVF9MT09Q
KQotICAgICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHkoUnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKLSAgICAg
ICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNl
UHJpb3JpdHk6OlJlbGVhc2VVbnVzZWRSZXNvdXJjZXNUaW1lcik7Ci0jZW5kaWYKLQotICAgICAg
ICBpZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB1cGRhdGVGdW5jdGlvbiA9IFdURk1vdmUobV9jb21wb3NpdG9yVGhyZWFk
VXBkYXRlRnVuY3Rpb24pOwotICAgIH0KLSAgICB1cGRhdGVGdW5jdGlvbigpOwotfQotCi12b2lk
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmludmFsaWRhdGUoKQotewotICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBGdW5j
dGlvbjx2b2lkKCk+IHVwZGF0ZUZ1bmN0aW9uOwotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwotICAgICAgICBtX2NvbXBvc2l0b3IgPSBudWxscHRyOwotICAgICAgICBt
X3RhcmdldExheWVyID0gbnVsbHB0cjsKLQotICAgICAgICBtX2N1cnJlbnRCdWZmZXIgPSBudWxs
cHRyOwotICAgICAgICBtX3BlbmRpbmdCdWZmZXIgPSBudWxscHRyOwotICAgICAgICBtX3JlbGVh
c2VVbnVzZWRCdWZmZXJzVGltZXIgPSBudWxscHRyOwotICAgICAgICBtX3VzZWRCdWZmZXJzLmNs
ZWFyKCk7Ci0KLSAgICAgICAgLy8gQ2xlYXIgdGhlIHRpbWVyIGFuZCBkaXNwYXRjaCB0aGUgdXBk
YXRlIGZ1bmN0aW9uIG1hbnVhbGx5IG5vdy4KLSAgICAgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXIgPSBudWxscHRyOwotICAgICAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0
ZUZ1bmN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB1cGRhdGVGdW5jdGlvbiA9
IFdURk1vdmUobV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pOwotICAgIH0KLQotICAg
IHVwZGF0ZUZ1bmN0aW9uKCk7Ci19CitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCkgPSBkZWZhdWx0OworVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSA9
IGRlZmF1bHQ7CiAKIGJvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aXNBY3Rp
dmUoKQogewpAQCAtMTE4LDE2OCArMzksNiBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OmlzQWN0aXZlKCkKICAgICByZXR1cm4gISFtX3RhcmdldExheWVyICYmICEhbV9j
b21wb3NpdG9yOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnB1
c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4mJiBuZXdCdWZmZXIpCi17Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0jaWYg
VVNFKEFOR0xFKQotICAgIC8vIFdoZW4gdGhlIG5ld0J1ZmZlciBvdmVyd3JpdGVzIG1fcGVuZGlu
Z0J1ZmZlciB0aGF0IGlzIG5vdCBzd2FwcGVkIHlldCwKLSAgICAvLyB0aGUgbGF5ZXIgcmVsYXRl
ZCB0byBtX3BlbmRpbmdCdWZmZXIgaXMgZmxpY2tlcmluZyBzaW5jZSBpdHMgdGV4dHVyZSBpcyBk
ZXN0cm95ZWQuCi0gICAgaWYgKG1fcGVuZGluZ0J1ZmZlciAmJiBtX3BlbmRpbmdCdWZmZXItPmhh
c01hbmFnZWRUZXh0dXJlKCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIG1fcGVuZGlu
Z0J1ZmZlciA9IFdURk1vdmUobmV3QnVmZmVyKTsKLSAgICBtX3dhc0J1ZmZlckRyb3BwZWQgPSBm
YWxzZTsKLQotICAgIGlmIChtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvci0+b25O
ZXdCdWZmZXJBdmFpbGFibGUoKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpnZXRB
dmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0xpbnQgaW50ZXJuYWxGb3JtYXQp
Ci17Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRv
clRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwotCi0gICAgYXV0
byBidWZmZXJzID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKLSAgICBmb3IgKGF1dG8mIGJ1ZmZl
ciA6IGJ1ZmZlcnMpIHsKLSAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0
aG91dFJlc2V0KHNpemUsIGludGVybmFsRm9ybWF0KSkgewotICAgICAgICAgICAgYXZhaWxhYmxl
QnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwotICAgICAgICAgICAgYXZhaWxhYmxlQnVmZmVyLT5t
YXJrVXNlZCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV91
c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1f
dXNlZEJ1ZmZlcnMuaXNFbXB0eSgpKQotICAgICAgICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZm
ZXJzKCk7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUJ1ZmZlcjsKLX0KLQotdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBidWZmZXIpCi17Ci0gICAgQVNT
RVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwotICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Ci0gICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOwotfQotCi12b2lkIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZl
cnMoKQotewotICAgIGlmICghbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLT5pc0FjdGl2ZSgp
KQotICAgICAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXItPnN0YXJ0T25lU2hvdChyZWxl
YXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCgpCi17Ci0g
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBidWZmZXJzID0gV1RGTW92ZShtX3Vz
ZWRCdWZmZXJzKTsKLSAgICBNb25vdG9uaWNUaW1lIG1pblVzZWRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSByZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKLQotICAgIGZvciAoYXV0
byYgYnVmZmVyIDogYnVmZmVycykgewotICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFz
dFVzZWRUaW1lKCkgPj0gbWluVXNlZFRpbWUpCi0gICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgIH0KLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5Ojpzd2FwQnVmZmVyKCkKLXsKLSAgICBBU1NFUlQobV9jb21wb3NpdG9y
VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwotICAgIGlmICghbV90YXJnZXRMYXllciB8fCAhbV9wZW5kaW5nQnVmZmVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIHByZXZCdWZmZXIgPSBXVEZNb3ZlKG1fY3VycmVudEJ1ZmZl
cik7Ci0KLSAgICBtX2N1cnJlbnRCdWZmZXIgPSBXVEZNb3ZlKG1fcGVuZGluZ0J1ZmZlcik7Ci0g
ICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkp
OwotCi0gICAgaWYgKHByZXZCdWZmZXIgJiYgcHJldkJ1ZmZlci0+aGFzTWFuYWdlZFRleHR1cmUo
KSkKLSAgICAgICAgYXBwZW5kVG9VbnVzZWRCdWZmZXJzKFdURk1vdmUocHJldkJ1ZmZlcikpOwot
fQotCi12b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmRyb3BDdXJyZW50QnVm
ZmVyV2hpbGVQcmVzZXJ2aW5nVGV4dHVyZShib29sIHNob3VsZFdhaXQpCi17Ci0gICAgaWYgKCFz
aG91bGRXYWl0KQotICAgICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKLQotICAgIGlmICht
X3BlbmRpbmdCdWZmZXIgJiYgbV9wZW5kaW5nQnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKSB7
Ci0gICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKSk7
Ci0gICAgICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9Ci0gICAgICAgIFt0aGlzLCBzaG91
bGRXYWl0XSB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0KLSAgICAg
ICAgICAgIGF1dG8gbWF5YmVOb3RpZnlTeW5jaHJvbm91c09wZXJhdGlvbiA9IG1ha2VTY29wZUV4
aXQoW3RoaXMsIHNob3VsZFdhaXRdKCkgewotICAgICAgICAgICAgICAgIGlmIChzaG91bGRXYWl0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3dhc0J1ZmZlckRyb3Bw
ZWRMb2NrIH07Ci0gICAgICAgICAgICAgICAgICAgIG1fd2FzQnVmZmVyRHJvcHBlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIG1fd2FzQnVmZmVyRHJvcHBlZENvbmRpdGlvbi5ub3RpZnlB
bGwoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAg
aWYgKCFtX2NvbXBvc2l0b3IgfHwgIW1fdGFyZ2V0TGF5ZXIgfHwgIW1fY3VycmVudEJ1ZmZlcikK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9
IG1fY3VycmVudEJ1ZmZlci0+Y2xvbmUoKTsKLSAgICAgICAgICAgIGF1dG8gcHJldkJ1ZmZlciA9
IFdURk1vdmUobV9jdXJyZW50QnVmZmVyKTsKLSAgICAgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9
IFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKTsKLSAgICAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNl
dENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKLQotICAgICAgICAgICAgaWYg
KHByZXZCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpCi0gICAgICAgICAgICAgICAgYXBwZW5k
VG9VbnVzZWRCdWZmZXJzKFdURk1vdmUocHJldkJ1ZmZlcikpOwotICAgICAgICB9OwotCi0gICAg
aWYgKHNob3VsZFdhaXQpIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fd2FzQnVmZmVyRHJv
cHBlZExvY2sgfTsKLSAgICAgICAgbV93YXNCdWZmZXJEcm9wcGVkID0gZmFsc2U7Ci0gICAgfQot
Ci0gICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwot
ICAgIGlmIChzaG91bGRXYWl0KSB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3dhc0J1ZmZl
ckRyb3BwZWRMb2NrIH07Ci0gICAgICAgIG1fd2FzQnVmZmVyRHJvcHBlZENvbmRpdGlvbi53YWl0
KG1fd2FzQnVmZmVyRHJvcHBlZExvY2ssIFt0aGlzXSB7Ci0gICAgICAgICAgICBhc3NlcnRJc0hl
bGQobV93YXNCdWZmZXJEcm9wcGVkTG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gbV93YXNCdWZm
ZXJEcm9wcGVkOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0KLWJvb2wgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQotewotICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9IFdURk1vdmUodXBk
YXRlRnVuY3Rpb24pOwotCi0gICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGlt
ZXItPnN0YXJ0T25lU2hvdCgwX3MpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZp
cmVkKCkKLXsKLSAgICBGdW5jdGlvbjx2b2lkKCk+IHVwZGF0ZUZ1bmN0aW9uOwotICAgIHsKLSAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwotICAgICAgICBpZiAoIW1fY29tcG9zaXRv
clRocmVhZFVwZGF0ZUZ1bmN0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB1cGRh
dGVGdW5jdGlvbiA9IFdURk1vdmUobV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pOwot
ICAgIH0KLQotICAgIHVwZGF0ZUZ1bmN0aW9uKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGZkYmJkMjRiNzI4YjQ1MjEz
NDFhMTVhNjZhMjYxMjU1ZmZkZjUyY2IuLmUzZmNkMGUxNjk0YjgwYjFjNDBiM2NkOGExMDE0MzMz
NTNkYjg3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHkuaApAQCAtMjcsMTcgKzI3LDggQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
IAotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKLSNpbmNsdWRlIDx3dGYvQ29u
ZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmbmRlZiBOREVCVUcKLSNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01Nyw1MSArNDgsMjcgQEAgcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkoKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
KCk7CiAKLSAgICAvLyBUbyBhdm9pZCBtdWx0aXBsZSBsb2NrL3JlbGVhc2Ugc2l0dWF0aW9uIHRv
IHVwZGF0ZSBhIHNpbmdsZSBmcmFtZSwKLSAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gb2YgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIHNob3VsZAotICAgIC8vIGFxdWly
ZSAvIHJlbGVhc2UgdGhlIGxvY2sgZXhwbGljaXRseSB0byB1c2UgYmVsb3cgbWV0aG9kcy4KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNHTEJhc2VkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNETUFCdWZCYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICBMb2NrJiBsb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhtX2xvY2spIHsgcmV0dXJuIG1fbG9jazsg
fQotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
Z2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7
Ci0gICAgdm9pZCBwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+JiYpOwogICAgIGJvb2wgaXNBY3RpdmUoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqLCBU
ZXh0dXJlTWFwcGVyTGF5ZXIqKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUo
KTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dhcEJ1ZmZlcigpOwotICAgIHZvaWQgZHJv
cEN1cnJlbnRCdWZmZXJXaGlsZVByZXNlcnZpbmdUZXh0dXJlKGJvb2wgc2hvdWxkV2FpdCA9IGZh
bHNlKTsKLQotICAgIGJvb2wgc2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0b3JUaHJlYWQoRnVuY3Rp
b248dm9pZCgpPiYmKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGFwcGVuZFRvVW51c2VkQnVmZmVy
cyhzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KTsKLSAg
ICB2b2lkIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKLSAgICB2b2lkIHJlbGVhc2VV
bnVzZWRCdWZmZXJzVGltZXJGaXJlZCgpOwotCi0gICAgQ29tcG9zaXRvciogbV9jb21wb3NpdG9y
OwotICAgIFRleHR1cmVNYXBwZXJMYXllciogbV90YXJnZXRMYXllcjsKLQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9jdXJyZW50QnVmZmVy
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
bV9wZW5kaW5nQnVmZmVyOworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmF0ZU9uQ29tcG9zaXRpbmdU
aHJlYWQoQ29tcG9zaXRvciosIFRleHR1cmVNYXBwZXJMYXllciopID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcigpID0g
MDsKIAorcHJvdGVjdGVkOgogICAgIExvY2sgbV9sb2NrOwotCi0gICAgTG9jayBtX3dhc0J1ZmZl
ckRyb3BwZWRMb2NrOwotICAgIENvbmRpdGlvbiBtX3dhc0J1ZmZlckRyb3BwZWRDb25kaXRpb247
Ci0gICAgYm9vbCBtX3dhc0J1ZmZlckRyb3BwZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3dhc0J1
ZmZlckRyb3BwZWRMb2NrKSB7IGZhbHNlIH07Ci0KLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4+IG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcjsKLQotI2lmbmRlZiBOREVCVUcKLSAg
ICBSZWZQdHI8VGhyZWFkPiBtX2NvbXBvc2l0b3JUaHJlYWQ7Ci0jZW5kaWYKLQotICAgIHZvaWQg
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+IG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZVRpbWVyOwotICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jb21wb3NpdG9y
VGhyZWFkVXBkYXRlRnVuY3Rpb247CisgICAgQ29tcG9zaXRvciogbV9jb21wb3NpdG9yIHsgbnVs
bHB0ciB9OworICAgIFRleHR1cmVNYXBwZXJMYXllciogbV90YXJnZXRMYXllciB7IG51bGxwdHIg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1RFWFRVUkVNQVBQRVJfUExBVEZPUk1MQVlFUlBST1hZKFRvQ2xhc3NOYW1lLCBw
cmVkaWNhdGUpIFwKKyAgICBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRv
Q2xhc3NOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KSB7IHJldHVybiBwcm94eS5wcmVkaWNh
dGU7IH0gXAorICAgIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJlOTAyYjc2Y2MzYjRkYTRjZTAw
YTNlOTRiZWY3NGUwMjQxNjc2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wu
Y3BwCkBAIC0wLDAgKzEsMjc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5R0wuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKworI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHTC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09Q
KQorI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgorI2VuZGlmCisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHJlbGVhc2VVbnVz
ZWRTZWNvbmRzVG9sZXJhbmNlIHsgMV9zIH07CitzdGF0aWMgY29uc3QgU2Vjb25kcyByZWxlYXNl
VW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwgPSB7IDUwMF9tcyB9OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eUdMKCkgPSBkZWZhdWx0OworCitUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5R0w6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0woKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAobV90YXJnZXRMYXllcikKKyAg
ICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihudWxscHRyKTsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OmFjdGl2YXRlT25Db21wb3NpdGlu
Z1RocmVhZChDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHRhcmdl
dExheWVyKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZCkK
KyAgICAgICAgbV9jb21wb3NpdG9yVGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOworI2VuZGlm
CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
ICAgIEFTU0VSVChjb21wb3NpdG9yKTsKKyAgICBBU1NFUlQodGFyZ2V0TGF5ZXIpOworICAgIEZ1
bmN0aW9uPHZvaWQoKT4gdXBkYXRlRnVuY3Rpb247CisgICAgeworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1fY29tcG9zaXRvciA9IGNvbXBvc2l0b3I7CisgICAg
ICAgIG1fdGFyZ2V0TGF5ZXIgPSB0YXJnZXRMYXllcjsKKyAgICAgICAgaWYgKG1fdGFyZ2V0TGF5
ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29u
dGVudHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkpOworCisgICAgICAgIG1fcmVsZWFzZVVu
dXNlZEJ1ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eUdMPj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmly
ZWQpOworICAgICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IG1ha2VVbmlxdWU8
UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMPj4oUnVuTG9v
cDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpj
b21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CisKKyNpZiBVU0UoR0xJQl9FVkVOVF9M
T09QKQorICAgICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHko
UnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKKyAg
ICAgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291
cmNlUHJpb3JpdHk6OlJlbGVhc2VVbnVzZWRSZXNvdXJjZXNUaW1lcik7CisjZW5kaWYKKworICAg
ICAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB1cGRhdGVGdW5jdGlvbiA9IFdURk1vdmUobV9jb21wb3NpdG9yVGhy
ZWFkVXBkYXRlRnVuY3Rpb24pOworICAgIH0KKyAgICB1cGRhdGVGdW5jdGlvbigpOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAg
IEZ1bmN0aW9uPHZvaWQoKT4gdXBkYXRlRnVuY3Rpb247CisgICAgeworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIG1fY29tcG9zaXRvciA9IG51bGxwdHI7CisgICAg
ICAgIG1fdGFyZ2V0TGF5ZXIgPSBudWxscHRyOworCisgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1f
cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG51bGxwdHI7CisgICAgICAgIG1fdXNlZEJ1ZmZl
cnMuY2xlYXIoKTsKKworICAgICAgICAvLyBDbGVhciB0aGUgdGltZXIgYW5kIGRpc3BhdGNoIHRo
ZSB1cGRhdGUgZnVuY3Rpb24gbWFudWFsbHkgbm93LgorICAgICAgICBtX2NvbXBvc2l0b3JUaHJl
YWRVcGRhdGVUaW1lciA9IG51bGxwdHI7CisgICAgICAgIGlmICghbV9jb21wb3NpdG9yVGhyZWFk
VXBkYXRlRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVwZGF0ZUZ1bmN0
aW9uID0gV1RGTW92ZShtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbik7CisgICAgfQor
CisgICAgdXBkYXRlRnVuY3Rpb24oKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5R0w6OnB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4mJiBuZXdCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fbG9jay5p
c0hlbGQoKSk7CisjaWYgVVNFKEFOR0xFKQorICAgIC8vIFdoZW4gdGhlIG5ld0J1ZmZlciBvdmVy
d3JpdGVzIG1fcGVuZGluZ0J1ZmZlciB0aGF0IGlzIG5vdCBzd2FwcGVkIHlldCwKKyAgICAvLyB0
aGUgbGF5ZXIgcmVsYXRlZCB0byBtX3BlbmRpbmdCdWZmZXIgaXMgZmxpY2tlcmluZyBzaW5jZSBp
dHMgdGV4dHVyZSBpcyBkZXN0cm95ZWQuCisgICAgaWYgKG1fcGVuZGluZ0J1ZmZlciAmJiBtX3Bl
bmRpbmdCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpCisgICAgICAgIHJldHVybjsKKyNlbmRp
ZgorICAgIG1fcGVuZGluZ0J1ZmZlciA9IFdURk1vdmUobmV3QnVmZmVyKTsKKyAgICBtX3dhc0J1
ZmZlckRyb3BwZWQgPSBmYWxzZTsKKworICAgIGlmIChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1f
Y29tcG9zaXRvci0+b25OZXdCdWZmZXJBdmFpbGFibGUoKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5R0w6OmdldEF2YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBHTGlu
dCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKyAgICBB
U1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBhdmFpbGFibGVC
dWZmZXI7CisKKyAgICBhdXRvIGJ1ZmZlcnMgPSBXVEZNb3ZlKG1fdXNlZEJ1ZmZlcnMpOworICAg
IGZvciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghYXZhaWxhYmxlQnVmZmVyICYmIGJ1
ZmZlci0+Y2FuUmV1c2VXaXRob3V0UmVzZXQoc2l6ZSwgaW50ZXJuYWxGb3JtYXQpKSB7CisgICAg
ICAgICAgICBhdmFpbGFibGVCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBh
dmFpbGFibGVCdWZmZXItPm1hcmtVc2VkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IH0KKworICAgIGlmICghbV91c2VkQnVmZmVycy5pc0VtcHR5KCkpCisgICAgICAgIHNjaGVkdWxl
UmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKKyAgICByZXR1cm4gYXZhaWxhYmxlQnVmZmVyOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6YXBwZW5kVG9VbnVzZWRC
dWZmZXJzKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
YnVmZmVyKQoreworICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOworICAgIEFTU0VSVChtX2Nv
bXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBtX3VzZWRCdWZmZXJz
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZl
cnMoKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OnNjaGVk
dWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKQoreworICAgIGlmICghbV9yZWxlYXNlVW51c2VkQnVm
ZmVyc1RpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXItPnN0YXJ0T25lU2hvdChyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwpOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6cmVsZWFzZVVudXNlZEJ1
ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
aWYgKG1fdXNlZEJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGJ1ZmZlcnMgPSBXVEZNb3ZlKG1fdXNlZEJ1ZmZlcnMpOworICAgIE1vbm90b25pY1RpbWUgbWlu
VXNlZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHJlbGVhc2VVbnVzZWRTZWNvbmRzVG9s
ZXJhbmNlOworCisgICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7CisgICAgICAgIGlm
IChidWZmZXIgJiYgYnVmZmVyLT5sYXN0VXNlZFRpbWUoKSA+PSBtaW5Vc2VkVGltZSkKKyAgICAg
ICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfQorfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6c3dhcEJ1ZmZlcigpCit7
CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fdGFyZ2V0TGF5ZXIgfHwg
IW1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwcmV2QnVmZmVy
ID0gV1RGTW92ZShtX2N1cnJlbnRCdWZmZXIpOworCisgICAgbV9jdXJyZW50QnVmZmVyID0gV1RG
TW92ZShtX3BlbmRpbmdCdWZmZXIpOworICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5
ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKKworICAgIGlmIChwcmV2QnVmZmVyICYmIHByZXZC
dWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpCisgICAgICAgIGFwcGVuZFRvVW51c2VkQnVmZmVy
cyhXVEZNb3ZlKHByZXZCdWZmZXIpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5R0w6OmRyb3BDdXJyZW50QnVmZmVyV2hpbGVQcmVzZXJ2aW5nVGV4dHVyZShib29s
IHNob3VsZFdhaXQpCit7CisgICAgaWYgKCFzaG91bGRXYWl0KQorICAgICAgICBBU1NFUlQobV9s
b2NrLmlzSGVsZCgpKTsKKworICAgIGlmIChtX3BlbmRpbmdCdWZmZXIgJiYgbV9wZW5kaW5nQnVm
ZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKSB7CisgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5k
KFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKSk7CisgICAgICAgIHNjaGVkdWxlUmVsZWFzZVVudXNl
ZEJ1ZmZlcnMoKTsKKyAgICB9CisKKyAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5j
dGlvbiA9CisgICAgICAgIFt0aGlzLCBzaG91bGRXYWl0XSB7CisgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICAgICAgICAgIGF1dG8gbWF5YmVOb3RpZnlTeW5jaHJv
bm91c09wZXJhdGlvbiA9IG1ha2VTY29wZUV4aXQoW3RoaXMsIHNob3VsZFdhaXRdKCkgeworICAg
ICAgICAgICAgICAgIGlmIChzaG91bGRXYWl0KSB7CisgICAgICAgICAgICAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3dhc0J1ZmZlckRyb3BwZWRMb2NrIH07CisgICAgICAgICAgICAgICAgICAg
IG1fd2FzQnVmZmVyRHJvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fd2FzQnVm
ZmVyRHJvcHBlZENvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2NvbXBvc2l0b3IgfHwgIW1fdGFyZ2V0
TGF5ZXIgfHwgIW1fY3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIG1fcGVuZGluZ0J1ZmZlciA9IG1fY3VycmVudEJ1ZmZlci0+Y2xvbmUoKTsKKyAg
ICAgICAgICAgIGF1dG8gcHJldkJ1ZmZlciA9IFdURk1vdmUobV9jdXJyZW50QnVmZmVyKTsKKyAg
ICAgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKTsKKyAg
ICAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVy
LmdldCgpKTsKKworICAgICAgICAgICAgaWYgKHByZXZCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJl
KCkpCisgICAgICAgICAgICAgICAgYXBwZW5kVG9VbnVzZWRCdWZmZXJzKFdURk1vdmUocHJldkJ1
ZmZlcikpOworICAgICAgICB9OworCisgICAgaWYgKHNob3VsZFdhaXQpIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fd2FzQnVmZmVyRHJvcHBlZExvY2sgfTsKKyAgICAgICAgbV93YXNCdWZm
ZXJEcm9wcGVkID0gZmFsc2U7CisgICAgfQorCisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRl
VGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOworICAgIGlmIChzaG91bGRXYWl0KSB7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3dhc0J1ZmZlckRyb3BwZWRMb2NrIH07CisgICAgICAgIG1fd2Fz
QnVmZmVyRHJvcHBlZENvbmRpdGlvbi53YWl0KG1fd2FzQnVmZmVyRHJvcHBlZExvY2ssIFt0aGlz
XSB7CisgICAgICAgICAgICBhc3NlcnRJc0hlbGQobV93YXNCdWZmZXJEcm9wcGVkTG9jayk7Cisg
ICAgICAgICAgICByZXR1cm4gbV93YXNCdWZmZXJEcm9wcGVkOworICAgICAgICB9KTsKKyAgICB9
Cit9CisKK2Jvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpzY2hlZHVsZVVw
ZGF0ZU9uQ29tcG9zaXRvclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdXBkYXRlRnVuY3Rpb24p
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIG1fY29tcG9zaXRvclRocmVh
ZFVwZGF0ZUZ1bmN0aW9uID0gV1RGTW92ZSh1cGRhdGVGdW5jdGlvbik7CisKKyAgICBpZiAoIW1f
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdM
Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAgRnVuY3Rpb248dm9p
ZCgpPiB1cGRhdGVGdW5jdGlvbjsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKKyAgICAgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdXBkYXRlRnVuY3Rpb24gPSBXVEZNb3ZlKG1fY29t
cG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uKTsKKyAgICB9CisKKyAgICB1cGRhdGVGdW5jdGlv
bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eUdMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUyMWMxZmU3YmEzMzllMjM3ZjdhMDNiMTUzZDA5NjQ5
Y2UwNDkwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0wuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5oIgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckdMSGVhZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5R0wgZmluYWwgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0woKTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0woKTsKKworICAgIGJvb2wgaXNHTEJhc2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
Y3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciosIFRleHR1cmVNYXBwZXJMYXll
ciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dhcEJ1ZmZlcigpIG92ZXJyaWRlOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBnZXRB
dmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIEdMaW50IGludGVybmFsRm9ybWF0KTsKKyAg
ICB2b2lkIHB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4mJik7CisKKyAgICB2b2lkIGRyb3BDdXJyZW50QnVmZmVyV2hpbGVQcmVz
ZXJ2aW5nVGV4dHVyZShib29sIHNob3VsZFdhaXQgPSBmYWxzZSk7CisKKyAgICBib29sIHNjaGVk
dWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBhcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPik7CisgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRCdWZmZXJzKCk7CisgICAgdm9pZCByZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQo
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gbV9jdXJyZW50QnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworCisgICAgTG9jayBtX3dhc0J1ZmZl
ckRyb3BwZWRMb2NrOworICAgIENvbmRpdGlvbiBtX3dhc0J1ZmZlckRyb3BwZWRDb25kaXRpb247
CisgICAgYm9vbCBtX3dhc0J1ZmZlckRyb3BwZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX3dhc0J1
ZmZlckRyb3BwZWRMb2NrKSB7IGZhbHNlIH07CisKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eUdMPj4gbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOworCisjaWZuZGVmIE5ERUJVRwor
ICAgIFJlZlB0cjxUaHJlYWQ+IG1fY29tcG9zaXRvclRocmVhZDsKKyNlbmRpZgorCisgICAgdm9p
ZCBjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w+PiBtX2Nv
bXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lcjsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1RFWFRVUkVNQVBQRVJfUExBVEZPUk1MQVlFUlBST1hZ
KFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTCwgaXNHTEJhc2VkKCkpOworCisjZW5k
aWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>