<?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>232901</bug_id>
          
          <creation_ts>2021-11-09 13:22:49 -0800</creation_ts>
          <short_desc>Implement serialization and deserialization of redirect and modify headers actions for WKContentRuleList</short_desc>
          <delta_ts>2021-11-10 11:31:26 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813284</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-09 13:22:49 -0800</bug_when>
    <thetext>Implement serialization and deserialization of redirect and modify headers actions for WKContentRuleList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813319</commentid>
    <comment_count>1</comment_count>
      <attachid>443724</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-09 14:01:54 -0800</bug_when>
    <thetext>Created attachment 443724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813722</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-10 11:30:21 -0800</bug_when>
    <thetext>Committed r285599 (244104@main): &lt;https://commits.webkit.org/244104@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443724.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813723</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-10 11:31:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/85263249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443724</attachid>
            <date>2021-11-09 14:01:54 -0800</date>
            <delta_ts>2021-11-10 11:30:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232901-20211109140153.patch</filename>
            <type>text/plain</type>
            <size>34804</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q2YmY0M2JlZmIwYTQw
MDMzZmM5N2RiOGI0MjRjMmY3ZmQzZGIxMi4uMDAyN2ExOWU4MDYwYzJhM2EzYWM4YTc5MDI1ZDAw
ZmQ4OTVlZjMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTExLTA5ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVt
ZW50IHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiBvZiByZWRpcmVjdCBhbmQgbW9k
aWZ5IGhlYWRlcnMgYWN0aW9ucyBmb3IgV0tDb250ZW50UnVsZUxpc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjkwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgc2VyaWFsaXplZCBlYWNoIHR5cGUg
c28gdGhhdCB0aGUgZmlyc3QgNCBieXRlcyBhcmUgdGhlIHRvdGFsIHNlcmlhbGl6ZWQgbGVuZ3Ro
IG9mIHRoYXQgdHlwZS4KKyAgICAgICAgVGhlIG5leHQgdGltZSB3ZSBpbmNyZW1lbnQgQ3VycmVu
dENvbnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uIEkgaW50ZW5kIHRvIGRvIHRoYXQgZm9yIGFsbCBl
eGlzdGluZyBhY3Rpb24gc2VyaWFsaXphdGlvbnMuCisKKyAgICAgICAgSSB1c2VkIFVURi04IGVu
Y29kaW5nIG9uIGRpc2sgYmVjYXVzZSBJIGFudGljaXBhdGUgbW9zdCBvZiB0aGUgdXNlIGhlcmUg
d2lsbCBiZSBBU0NJSSBiZWNhdXNlIHRoZSBzdHJpbmdzIHdpbGwKKyAgICAgICAgZWl0aGVyIGdv
IGludG8gVVJMcyBvciBpbnRvIEhUVFAgaGVhZGVycywgYm90aCBvZiB3aGljaCB1c2Ugb25seSA4
LWJpdCBjaGFyYWN0ZXJzIHdoZW4gYWN0dWFsbHkgdXNlZC4KKworICAgICAgICBVUkxUcmFuc2Zv
cm1BY3Rpb25zIHdpbGwgbGlrZWx5IGhhdmUgbWFueSBjYXNlcyB0aGF0IGRvbid0IGhhdmUgYWxs
IGZpZWxkcywgc28gSSBvcHRpbWl6ZWQgYnkgYWRkaW5nIG9uZSBieXRlCisgICAgICAgIHdpdGgg
OCBib29sZWFucyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpZWxkIGlzIHByZXNlbnQgb3Igbm90
LiAgVGhpcyB3YXksIEkgZG9uJ3QgbmVlZCAzMiBieXRlcyBvZiAwJ3MgZm9yIHRoZQorICAgICAg
ICB1bnVzZWQgZmllbGRzJyBzZXJpYWxpemF0aW9ucy4KKworICAgICAgICBGdXR1cmUgb3B0aW1p
emF0aW9uIGNhbiBiZSBkb25lIGJ5IGFkZGluZyBXVEY6OlN0cmluZzo6dXRmOExlbmd0aCgpIGFu
ZCBXVEY6OlN0cmluZzo6dXRmOEVuY29kZUludG9CdWZmZXIoU3Bhbjx1aW50OF90PikKKyAgICAg
ICAgYnV0IHRoYXQgd2lsbCBqdXN0IHJlZHVjZSBjb3BpZXMgYW5kIGFsbG9jYXRpb25zIGR1cmlu
ZyBjb21waWxpbmcsIG5vdCB0aGUgc2VyaWFsaXplZCBmb3JtYXQuCisKKyAgICAgICAgQW5vdGhl
ciBmdXR1cmUgb3B0aW1pemF0aW9uIHRoYXQgY291bGQgYmUgZG9uZSBpcyB0byB1c2UgbnVsbCB0
ZXJtaW5hdGVkIHN0cmluZ3MgaW5zdGVhZCBvZiBhIDQgYnl0ZSBzaXplIGJlZm9yZSBlYWNoIHN0
cmluZy4KKyAgICAgICAgVGhhdCB3b3VsZCByZWR1Y2UgdGhlIGJpbmFyeSBzaXplIGNvbnNpZGVy
YWJseS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnVuY2hlY2tlZEFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6ZGVzZXJpYWxpemVMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmRlc2VyaWFsaXplVVRGOFN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6d3JpdGVMZW5ndGhUb1Zl
Y3RvckF0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjpzZXJpYWxpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246OmRlc2VyaWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpzZXJp
YWxpemVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Ok1v
ZGlmeUhlYWRlckluZm86OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxp
emVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVj
dEFjdGlvbjo6c2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJh
bnNmb3JtQWN0aW9uOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6c2VyaWFsaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJM
VHJhbnNmb3JtQWN0aW9uOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6c2VyaWFsaXpl
ZExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OnBhcnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNm
b3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6c2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0
aW9uOjpRdWVyeVRyYW5zZm9ybTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5
VHJhbnNmb3JtOjpzZXJpYWxpemVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5z
Zm9ybTo6UXVlcnlLZXlWYWx1ZTo6c2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpR
dWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rp
b246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpzZXJpYWxpemVkTGVuZ3RoKToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Ok1v
ZGlmeUhlYWRlckluZm86OkFwcGVuZE9wZXJhdGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJz
QWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpBcHBlbmRPcGVyYXRpb246Om9wZXJhdG9yPT0gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Ok1vZGlm
eUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86OlNldE9wZXJhdGlvbjo6aXNvbGF0ZWRD
b3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpTZXRPcGVyYXRpb246Om9w
ZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6Ok1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86OlJlbW92ZU9wZXJh
dGlvbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpS
ZW1vdmVPcGVyYXRpb246Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpFeHRlbnNpb25QYXRoQWN0
aW9uOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpFeHRlbnNpb25QYXRoQWN0aW9uOjpvcGVy
YXRvcj09IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpSZWRpcmVjdEFjdGlvbjo6UmVnZXhTdWJzdGl0dXRpb25BY3Rpb246Omlzb2xhdGVkQ29w
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
UmVkaXJlY3RBY3Rpb246OlJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uOjpvcGVyYXRvcj09IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVj
dEFjdGlvbjo6VVJMQWN0aW9uOjppc29sYXRlZENvcHkgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjpVUkxBY3Rpb246
Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTExLTA4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFyc2UgcmVkaXJlY3Qg
YW5kIG1vZGlmeS1oZWFkZXJzIGFjdGlvbnMgZm9yIFdLQ29udGVudFJ1bGVMaXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5jcHAKaW5kZXggNmQ0M2U2YTI4ZGVhZDdhMjI5ODEwMTliNzM0YjliMTJlZDk2
NzJhZC4uNTM1ZjM2YjU3YTI1MWFiNjEyOWZiYjdjZGRiZDhkYTEyYjAzYWU3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmNwcApAQCAtMzMsNiArMzMsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zIHsKIAorc3RhdGljIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYgdmVjdG9yLCBzaXplX3QgbGVuZ3RoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICAgIHVpbnQzMl90IGlu
dGVnZXIgPSBsZW5ndGg7CisgICAgdmVjdG9yLmFwcGVuZChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJmludGVnZXIpLCBzaXplb2YoaW50ZWdl
cikgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHVuY2hlY2tlZEFwcGVuZChWZWN0b3I8dWludDhfdD4m
IHZlY3Rvciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgICB1aW50MzJfdCBpbnRl
Z2VyID0gbGVuZ3RoOworICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoU3Bhbjxjb25zdCB1aW50
OF90PiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZpbnRlZ2VyKSwgc2l6ZW9m
KGludGVnZXIpIH0pOworfQorCitzdGF0aWMgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiB2
ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICB2ZWN0b3IuYXBwZW5kKFNwYW48
Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcu
ZGF0YSgpKSwgc3RyaW5nLmxlbmd0aCgpIH0pOworfQorCitzdGF0aWMgdm9pZCB1bmNoZWNrZWRB
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKK3sK
KyAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwgc3RyaW5nLmxlbmd0aCgp
IH0pOworfQorCitzdGF0aWMgc2l6ZV90IGRlc2VyaWFsaXplTGVuZ3RoKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3Bhbiwgc2l6ZV90IG9mZnNldCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChzcGFuLnNp
emUoKSA+PSBvZmZzZXQgKyBzaXplb2YodWludDMyX3QpKTsKKyAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzcGFuLmRhdGEoKSArIG9mZnNldCk7Cit9CisKK3N0
YXRpYyBTdHJpbmcgZGVzZXJpYWxpemVVVEY4U3RyaW5nKFNwYW48Y29uc3QgdWludDhfdD4gc3Bh
biwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChz
cGFuLnNpemUoKSA+PSBvZmZzZXQgKyBsZW5ndGgpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHNwYW4uZGF0YSgpICsgb2Zmc2V0LCBsZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCB3cml0
ZUxlbmd0aFRvVmVjdG9yQXRPZmZzZXQoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHNpemVfdCBv
ZmZzZXQpCit7CisgICAgYXV0byBsZW5ndGggPSB2ZWN0b3Iuc2l6ZSgpIC0gb2Zmc2V0OworICAg
IFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCkpOworICAgIHVpbnQzMl90IGludGVnZXIgPSBsZW5ndGg7CisgICAgUkVMRUFTRV9BU1NF
UlQodmVjdG9yLnNpemUoKSA+PSBvZmZzZXQgKyBzaXplb2YodWludDMyX3QpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2ZWN0b3IuZGF0YSgpICsg
b2Zmc2V0KSk7CisgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPih2ZWN0b3IuZGF0YSgp
ICsgb2Zmc2V0KSA9IGludGVnZXI7Cit9CisKIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24s
IHN0ZDo6ZXJyb3JfY29kZT4gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6cGFyc2UoY29uc3QgSlNPTjo6
T2JqZWN0JiBtb2RpZnlIZWFkZXJzKQogewogICAgIGF1dG8gcGFyc2VIZWFkZXJzID0gW10gKGNv
bnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVhZGVycywgQVNDSUlMaXRlcmFsIGFycmF5TmFtZSkg
LT4gRXhwZWN0ZWQ8VmVjdG9yPE1vZGlmeUhlYWRlckluZm8+LCBzdGQ6OmVycm9yX2NvZGU+IHsK
QEAgLTc4LDE5ICsxMjQsNDUgQEAgYm9vbCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpvcGVyYXRvcj09
KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mIG90aGVyKSBjb25zdAogICAgICAgICAmJiBvdGhl
ci5yZXNwb25zZUhlYWRlcnMgPT0gdGhpcy0+cmVzcG9uc2VIZWFkZXJzOwogfQogCi0vLyBGSVhN
RTogSW1wbGVtZW50IHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiBvZiBlYWNoIG9m
IHRoZXNlIHR5cGVzLCB0aGVuIGRvIHRoZWlyIGFjdGlvbnMuCi12b2lkIE1vZGlmeUhlYWRlcnNB
Y3Rpb246OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdAordm9pZCBNb2RpZnlIZWFk
ZXJzQWN0aW9uOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7Cisg
ICAgYXV0byBiZWdpbkluZGV4ID0gdmVjdG9yLnNpemUoKTsKKyAgICBhcHBlbmQodmVjdG9yLCAw
KTsKKyAgICBhdXRvIHJlcXVlc3RIZWFkZXJzTGVuZ3RoSW5kZXggPSB2ZWN0b3Iuc2l6ZSgpOwor
ICAgIGFwcGVuZCh2ZWN0b3IsIDApOworICAgIGZvciAoYXV0byYgaGVhZGVySW5mbyA6IHJlcXVl
c3RIZWFkZXJzKQorICAgICAgICBoZWFkZXJJbmZvLnNlcmlhbGl6ZSh2ZWN0b3IpOworICAgIHdy
aXRlTGVuZ3RoVG9WZWN0b3JBdE9mZnNldCh2ZWN0b3IsIHJlcXVlc3RIZWFkZXJzTGVuZ3RoSW5k
ZXgpOworICAgIGZvciAoYXV0byYgaGVhZGVySW5mbyA6IHJlc3BvbnNlSGVhZGVycykKKyAgICAg
ICAgaGVhZGVySW5mby5zZXJpYWxpemUodmVjdG9yKTsKKyAgICB3cml0ZUxlbmd0aFRvVmVjdG9y
QXRPZmZzZXQodmVjdG9yLCBiZWdpbkluZGV4KTsKIH0KIAotTW9kaWZ5SGVhZGVyc0FjdGlvbiBN
b2RpZnlIZWFkZXJzQWN0aW9uOjpkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KQorTW9k
aWZ5SGVhZGVyc0FjdGlvbiBNb2RpZnlIZWFkZXJzQWN0aW9uOjpkZXNlcmlhbGl6ZShTcGFuPGNv
bnN0IHVpbnQ4X3Q+IHNwYW4pCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNlcmlhbGl6
ZWRMZW5ndGggPSBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCAwKTsKKyAgICBhdXRvIHJlcXVlc3RI
ZWFkZXJzTGVuZ3RoID0gZGVzZXJpYWxpemVMZW5ndGgoc3Bhbiwgc2l6ZW9mKHVpbnQzMl90KSk7
CisgICAgc2l6ZV90IHByb2dyZXNzID0gc2l6ZW9mKHVpbnQzMl90KSAqIDI7CisgICAgVmVjdG9y
PE1vZGlmeUhlYWRlckluZm8+IHJlcXVlc3RIZWFkZXJzOworICAgIHdoaWxlIChwcm9ncmVzcyA8
IHJlcXVlc3RIZWFkZXJzTGVuZ3RoICsgc2l6ZW9mKHVpbnQzMl90KSkgeworICAgICAgICBhdXRv
IHN1YnNwYW4gPSBzcGFuLnN1YnNwYW4ocHJvZ3Jlc3MpOworICAgICAgICBwcm9ncmVzcyArPSBN
b2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemVkTGVuZ3RoKHN1YnNwYW4pOworICAgICAgICByZXF1
ZXN0SGVhZGVycy5hcHBlbmQoTW9kaWZ5SGVhZGVySW5mbzo6ZGVzZXJpYWxpemUoc3Vic3Bhbikp
OworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChwcm9ncmVzcyA9PSByZXF1ZXN0SGVhZGVyc0xl
bmd0aCArIHNpemVvZih1aW50MzJfdCkpOworICAgIFZlY3RvcjxNb2RpZnlIZWFkZXJJbmZvPiBy
ZXNwb25zZUhlYWRlcnM7CisgICAgd2hpbGUgKHByb2dyZXNzIDwgc2VyaWFsaXplZExlbmd0aCkg
eworICAgICAgICBhdXRvIHN1YnNwYW4gPSBzcGFuLnN1YnNwYW4ocHJvZ3Jlc3MpOworICAgICAg
ICBwcm9ncmVzcyArPSBNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemVkTGVuZ3RoKHN1YnNwYW4p
OworICAgICAgICByZXNwb25zZUhlYWRlcnMuYXBwZW5kKE1vZGlmeUhlYWRlckluZm86OmRlc2Vy
aWFsaXplKHN1YnNwYW4pKTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQocHJvZ3Jlc3MgPT0g
c2VyaWFsaXplZExlbmd0aCk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyks
IFdURk1vdmUocmVzcG9uc2VIZWFkZXJzKSB9OwogfQogCi1zaXplX3QgTW9kaWZ5SGVhZGVyc0Fj
dGlvbjo6c2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KQorc2l6ZV90IE1vZGlm
eUhlYWRlcnNBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFu
KQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCAw
KTsKIH0KIAogYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpwYXJz
ZShjb25zdCBKU09OOjpWYWx1ZSYgaW5mb1ZhbHVlKSAtPiBFeHBlY3RlZDxNb2RpZnlIZWFkZXJJ
bmZvLCBzdGQ6OmVycm9yX2NvZGU+CkBAIC0xMzYsMTggKzIwOCw1MCBAQCBib29sIE1vZGlmeUhl
YWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Om9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVh
ZGVySW5mbyYgbwogICAgIHJldHVybiBvdGhlci5vcGVyYXRpb24gPT0gdGhpcy0+b3BlcmF0aW9u
OwogfQogCi12b2lkIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86OnNlcmlh
bGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdAotewotfQordm9pZCBNb2RpZnlIZWFkZXJzQWN0
aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3Ip
IGNvbnN0Cit7CisgICAgYXV0byBiZWdpbkluZGV4ID0gdmVjdG9yLnNpemUoKTsKKyAgICBhcHBl
bmQodmVjdG9yLCAwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKG9wZXJhdGlvbi5pbmRleCgpKTsKKyAg
ICBzdGQ6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdIChjb25zdCBSZW1vdmVPcGVyYXRpb24m
IG9wZXJhdGlvbikgeworICAgICAgICBhcHBlbmQodmVjdG9yLCBvcGVyYXRpb24uaGVhZGVyLnV0
ZjgoKSk7CisgICAgfSwgWyZdIChjb25zdCBhdXRvJiBvcGVyYXRpb24pIHsKKyAgICAgICAgYXV0
byB2YWx1ZVVURjggPSBvcGVyYXRpb24udmFsdWUudXRmOCgpOworICAgICAgICBhcHBlbmQodmVj
dG9yLCB2YWx1ZVVURjgubGVuZ3RoKCkpOworICAgICAgICBhcHBlbmQodmVjdG9yLCBvcGVyYXRp
b24uaGVhZGVyLnV0ZjgoKSk7CisgICAgICAgIGFwcGVuZCh2ZWN0b3IsIHZhbHVlVVRGOCk7Cisg
ICAgfSksIG9wZXJhdGlvbik7CisgICAgd3JpdGVMZW5ndGhUb1ZlY3RvckF0T2Zmc2V0KHZlY3Rv
ciwgYmVnaW5JbmRleCk7Cit9CisKK2F1dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVh
ZGVySW5mbzo6ZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSAtPiBNb2RpZnlI
ZWFkZXJJbmZvCit7CisgICAgY29uc3RleHByIGF1dG8gaGVhZGVyU2l6ZSA9IHNpemVvZih1aW50
MzJfdCkgKyBzaXplb2YodWludDhfdCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3Bhbi5zaXplKCkg
Pj0gaGVhZGVyU2l6ZSk7CisgICAgYXV0byBzZXJpYWxpemVkTGVuZ3RoID0gZGVzZXJpYWxpemVM
ZW5ndGgoc3BhbiwgMCk7CisgICAgcmV0dXJuIHsgWyZdICgpIC0+IE9wZXJhdGlvblZhcmlhbnQg
eworICAgICAgICBzd2l0Y2ggKGF1dG8gaW5kZXggPSBzcGFuW3NpemVvZih1aW50MzJfdCldKSB7
CisgICAgICAgIGNhc2UgV1RGOjphbHRlcm5hdGl2ZUluZGV4VjxSZW1vdmVPcGVyYXRpb24sIE9w
ZXJhdGlvblZhcmlhbnQ+OgorICAgICAgICAgICAgcmV0dXJuIFJlbW92ZU9wZXJhdGlvbiB7IGRl
c2VyaWFsaXplVVRGOFN0cmluZyhzcGFuLCBoZWFkZXJTaXplLCBzZXJpYWxpemVkTGVuZ3RoIC0g
aGVhZGVyU2l6ZSkgfTsKKyAgICAgICAgY2FzZSBXVEY6OmFsdGVybmF0aXZlSW5kZXhWPEFwcGVu
ZE9wZXJhdGlvbiwgT3BlcmF0aW9uVmFyaWFudD46CisgICAgICAgIGNhc2UgV1RGOjphbHRlcm5h
dGl2ZUluZGV4VjxTZXRPcGVyYXRpb24sIE9wZXJhdGlvblZhcmlhbnQ+OiB7CisgICAgICAgICAg
ICBhdXRvIHZhbHVlTGVuZ3RoID0gZGVzZXJpYWxpemVMZW5ndGgoc3BhbiwgaGVhZGVyU2l6ZSk7
CisgICAgICAgICAgICBhdXRvIGhlYWRlckxlbmd0aCA9IHNlcmlhbGl6ZWRMZW5ndGggLSBoZWFk
ZXJTaXplIC0gdmFsdWVMZW5ndGggLSBzaXplb2YodWludDMyX3QpOworICAgICAgICAgICAgYXV0
byBoZWFkZXIgPSBkZXNlcmlhbGl6ZVVURjhTdHJpbmcoc3BhbiwgaGVhZGVyU2l6ZSArIHNpemVv
Zih1aW50MzJfdCksIGhlYWRlckxlbmd0aCk7CisgICAgICAgICAgICBhdXRvIHZhbHVlID0gZGVz
ZXJpYWxpemVVVEY4U3RyaW5nKHNwYW4sIGhlYWRlclNpemUgKyBzaXplb2YodWludDMyX3QpICsg
aGVhZGVyTGVuZ3RoLCB2YWx1ZUxlbmd0aCk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gV1RG
OjphbHRlcm5hdGl2ZUluZGV4VjxBcHBlbmRPcGVyYXRpb24sIE9wZXJhdGlvblZhcmlhbnQ+KQor
ICAgICAgICAgICAgICAgIHJldHVybiBBcHBlbmRPcGVyYXRpb24geyBXVEZNb3ZlKGhlYWRlciks
IFdURk1vdmUodmFsdWUpIH07CisgICAgICAgICAgICByZXR1cm4gU2V0T3BlcmF0aW9uIHsgV1RG
TW92ZShoZWFkZXIpLCBXVEZNb3ZlKHZhbHVlKSB9OworICAgICAgICB9CiAKLWF1dG8gTW9kaWZ5
SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6ZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1
aW50OF90PikgLT4gTW9kaWZ5SGVhZGVySW5mbwotewotICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KCkgfTsKIH0K
IAotc2l6ZV90IE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86OnNlcmlhbGl6
ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90PikKK3NpemVfdCBNb2RpZnlIZWFkZXJzQWN0aW9u
OjpNb2RpZnlIZWFkZXJJbmZvOjpzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4g
c3BhbikKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZGVzZXJpYWxpemVMZW5ndGgoc3Bh
biwgMCk7CiB9CiAKIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IFJl
ZGlyZWN0QWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplY3QmIHJlZGlyZWN0T2JqZWN0LCBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRSZWRpcmVjdFVSTFNjaGVtZXMpCkBAIC0xOTMs
MjMgKzI5Nyw1MSBAQCBib29sIFJlZGlyZWN0QWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFJlZGly
ZWN0QWN0aW9uJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gb3RoZXIuYWN0aW9uID09IHRoaXMt
PmFjdGlvbjsKIH0KIAotdm9pZCBSZWRpcmVjdEFjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50
OF90PiYpIGNvbnN0Ci17Ci19Ci0KLVJlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjpkZXNl
cmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KQotewotICAgIHJldHVybiB7IH07Cit2b2lkIFJl
ZGlyZWN0QWN0aW9uOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0Cit7
CisgICAgYXV0byBiZWdpbkluZGV4ID0gdmVjdG9yLnNpemUoKTsKKyAgICBhcHBlbmQodmVjdG9y
LCAwKTsKKyAgICB2ZWN0b3IuYXBwZW5kKGFjdGlvbi5pbmRleCgpKTsKKyAgICBzdGQ6OnZpc2l0
KFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IEV4dGVuc2lvblBhdGhBY3Rpb24mIGFjdGlvbikg
eworICAgICAgICBhcHBlbmQodmVjdG9yLCBhY3Rpb24uZXh0ZW5zaW9uUGF0aC51dGY4KCkpOwor
ICAgIH0sIFsmXShjb25zdCBSZWdleFN1YnN0aXR1dGlvbkFjdGlvbiYgYWN0aW9uKSB7CisgICAg
ICAgIGFwcGVuZCh2ZWN0b3IsIGFjdGlvbi5yZWdleFN1YnN0aXR1dGlvbi51dGY4KCkpOworICAg
IH0sIFsmXShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mIGFjdGlvbikgeworICAgICAgICBhY3Rp
b24uc2VyaWFsaXplKHZlY3Rvcik7CisgICAgfSwgWyZdKGNvbnN0IFVSTEFjdGlvbiYgYWN0aW9u
KSB7CisgICAgICAgIGFwcGVuZCh2ZWN0b3IsIGFjdGlvbi51cmwudXRmOCgpKTsKKyAgICB9KSwg
YWN0aW9uKTsKKyAgICB3cml0ZUxlbmd0aFRvVmVjdG9yQXRPZmZzZXQodmVjdG9yLCBiZWdpbklu
ZGV4KTsKK30KKworUmVkaXJlY3RBY3Rpb24gUmVkaXJlY3RBY3Rpb246OmRlc2VyaWFsaXplKFNw
YW48Y29uc3QgdWludDhfdD4gc3BhbikKK3sKKyAgICBjb25zdGV4cHIgYXV0byBoZWFkZXJTaXpl
ID0gc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZih1aW50OF90KTsKKyAgICBhdXRvIHN0cmluZ0xl
bmd0aCA9IGRlc2VyaWFsaXplTGVuZ3RoKHNwYW4sIDApIC0gaGVhZGVyU2l6ZTsKKyAgICBSRUxF
QVNFX0FTU0VSVChzcGFuLnNpemUoKSA+PSBoZWFkZXJTaXplKTsKKyAgICByZXR1cm4geyBbJl0g
KCkgLT4gQWN0aW9uVmFyaWFudCB7CisgICAgICAgIHN3aXRjaCAoc3BhbltzaXplb2YodWludDMy
X3QpXSkgeworICAgICAgICBjYXNlIFdURjo6YWx0ZXJuYXRpdmVJbmRleFY8RXh0ZW5zaW9uUGF0
aEFjdGlvbiwgQWN0aW9uVmFyaWFudD46CisgICAgICAgICAgICByZXR1cm4gRXh0ZW5zaW9uUGF0
aEFjdGlvbiB7IGRlc2VyaWFsaXplVVRGOFN0cmluZyhzcGFuLCBoZWFkZXJTaXplLCBzdHJpbmdM
ZW5ndGgpIH07CisgICAgICAgIGNhc2UgV1RGOjphbHRlcm5hdGl2ZUluZGV4VjxSZWdleFN1YnN0
aXR1dGlvbkFjdGlvbiwgQWN0aW9uVmFyaWFudD46CisgICAgICAgICAgICByZXR1cm4gUmVnZXhT
dWJzdGl0dXRpb25BY3Rpb24geyBkZXNlcmlhbGl6ZVVURjhTdHJpbmcoc3BhbiwgaGVhZGVyU2l6
ZSwgc3RyaW5nTGVuZ3RoKSB9OworICAgICAgICBjYXNlIFdURjo6YWx0ZXJuYXRpdmVJbmRleFY8
VVJMVHJhbnNmb3JtQWN0aW9uLCBBY3Rpb25WYXJpYW50PjoKKyAgICAgICAgICAgIHJldHVybiBV
UkxUcmFuc2Zvcm1BY3Rpb246OmRlc2VyaWFsaXplKHNwYW4uc3Vic3BhbihoZWFkZXJTaXplKSk7
CisgICAgICAgIGNhc2UgV1RGOjphbHRlcm5hdGl2ZUluZGV4VjxVUkxBY3Rpb24sIEFjdGlvblZh
cmlhbnQ+OgorICAgICAgICAgICAgcmV0dXJuIFVSTEFjdGlvbiB7IGRlc2VyaWFsaXplVVRGOFN0
cmluZyhzcGFuLCBoZWFkZXJTaXplLCBzdHJpbmdMZW5ndGgpIH07CisgICAgICAgIH0KKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KCkgfTsKIH0KIAotc2l6ZV90
IFJlZGlyZWN0QWN0aW9uOjpzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pCitz
aXplX3QgUmVkaXJlY3RBY3Rpb246OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90
PiBzcGFuKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBkZXNlcmlhbGl6ZUxlbmd0aChz
cGFuLCAwKTsKIH0KIAogYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpw
YXJzZShjb25zdCBKU09OOjpPYmplY3QmIHRyYW5zZm9ybSwgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkUmVkaXJlY3RVUkxTY2hlbWVzKSAtPiBFeHBlY3RlZDxVUkxUcmFuc2Zvcm1BY3Rp
b24sIHN0ZDo6ZXJyb3JfY29kZT4KIHsKLSAgICBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3Jt
QWN0aW9uIGFjdGlvbjsKKyAgICBVUkxUcmFuc2Zvcm1BY3Rpb24gYWN0aW9uOwogICAgIGFjdGlv
bi5mcmFnbWVudCA9IHRyYW5zZm9ybS5nZXRTdHJpbmcoImZyYWdtZW50Iik7CiAgICAgYWN0aW9u
Lmhvc3QgPSB0cmFuc2Zvcm0uZ2V0U3RyaW5nKCJob3N0Iik7CiAgICAgYWN0aW9uLnBhc3N3b3Jk
ID0gdHJhbnNmb3JtLmdldFN0cmluZygicGFzc3dvcmQiKTsKQEAgLTI1NiwyMyArMzg4LDE0MCBA
QCBib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Om9wZXJhdG9yPT0oY29u
c3QgVVJMVHJhbnNmb3JtQWN0aW9uJiBvdAogICAgICAgICAmJiBvdGhlci51c2VybmFtZSA9PSB0
aGlzLT51c2VybmFtZTsKIH0KIAotdm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0
aW9uOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3QKLXsKLX0KK3ZvaWQgUmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYg
dmVjdG9yKSBjb25zdAoreworICAgIHVpbnQ4X3QgaGFzRnJhZ21lbnQgPSAhIWZyYWdtZW50Owor
ICAgIHVpbnQ4X3QgaGFzSG9zdCA9ICEhaG9zdDsKKyAgICB1aW50OF90IGhhc1Bhc3N3b3JkID0g
ISFwYXNzd29yZDsKKyAgICB1aW50OF90IGhhc1BhdGggPSAhIXBhdGg7CisgICAgdWludDhfdCBo
YXNQb3J0ID0gISFwb3J0OworICAgIHVpbnQ4X3QgaGFzU2NoZW1lID0gISFzY2hlbWU7CisgICAg
dWludDhfdCBoYXNVc2VybmFtZSA9ICEhdXNlcm5hbWU7CisgICAgYXV0byogcXVlcnlTdHJpbmcg
PSBzdGQ6OmdldF9pZjxTdHJpbmc+KCZxdWVyeVRyYW5zZm9ybSk7CisgICAgdWludDhfdCBoYXNR
dWVyeSA9ICFxdWVyeVN0cmluZyB8fCAhISpxdWVyeVN0cmluZzsKKworICAgIGF1dG8gZnJhZ21l
bnRVVEY4ID0gZnJhZ21lbnQudXRmOCgpOworICAgIGF1dG8gaG9zdFVURjggPSBob3N0LnV0Zjgo
KTsKKyAgICBhdXRvIHBhc3N3b3JkVVRGOCA9IHBhc3N3b3JkLnV0ZjgoKTsKKyAgICBhdXRvIHBh
dGhVVEY4ID0gcGF0aC51dGY4KCk7CisgICAgYXV0byBwb3J0VVRGOCA9IHBvcnQudXRmOCgpOwor
ICAgIGF1dG8gc2NoZW1lVVRGOCA9IHNjaGVtZS51dGY4KCk7CisgICAgYXV0byB1c2VybmFtZVVU
RjggPSB1c2VybmFtZS51dGY4KCk7CisKKyAgICB2ZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KHZlY3Rv
ci5zaXplKCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQ4X3QpCisgICAgICAgICsg
KGhhc0ZyYWdtZW50ID8gc2l6ZW9mKHVpbnQzMl90KSArIGZyYWdtZW50VVRGOC5sZW5ndGgoKSA6
IDApCisgICAgICAgICsgKGhhc0hvc3QgPyBzaXplb2YodWludDMyX3QpICsgaG9zdFVURjgubGVu
Z3RoKCkgOiAwKQorICAgICAgICArIChoYXNQYXNzd29yZCA/IHNpemVvZih1aW50MzJfdCkgKyBw
YXNzd29yZFVURjgubGVuZ3RoKCkgOiAwKQorICAgICAgICArIChoYXNQYXRoID8gc2l6ZW9mKHVp
bnQzMl90KSArIHBhdGhVVEY4Lmxlbmd0aCgpIDogMCkKKyAgICAgICAgKyAoaGFzUG9ydCA/IHNp
emVvZih1aW50MzJfdCkgKyBwb3J0VVRGOC5sZW5ndGgoKSA6IDApCisgICAgICAgICsgKGhhc1Nj
aGVtZSA/IHNpemVvZih1aW50MzJfdCkgKyBzY2hlbWVVVEY4Lmxlbmd0aCgpIDogMCkKKyAgICAg
ICAgKyAoaGFzVXNlcm5hbWUgPyBzaXplb2YodWludDMyX3QpICsgdXNlcm5hbWVVVEY4Lmxlbmd0
aCgpIDogMCkpOworCisgICAgYXV0byBiZWdpbkluZGV4ID0gdmVjdG9yLnNpemUoKTsKKyAgICB1
bmNoZWNrZWRBcHBlbmQodmVjdG9yLCAwKTsKKyAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKAor
ICAgICAgICBoYXNGcmFnbWVudCA8PCA3CisgICAgICAgIHwgaGFzSG9zdCA8PCA2CisgICAgICAg
IHwgaGFzUGFzc3dvcmQgPDwgNQorICAgICAgICB8IGhhc1BhdGggPDwgNAorICAgICAgICB8IGhh
c1BvcnQgPDwgMworICAgICAgICB8IGhhc1NjaGVtZSA8PCAyCisgICAgICAgIHwgaGFzVXNlcm5h
bWUgPDwgMQorICAgICAgICB8IGhhc1F1ZXJ5IDw8IDAKKyAgICApOworICAgIGF1dG8gdW5jaGVj
a2VkQXBwZW5kTGVuZ3RoQW5kU3RyaW5nID0gWyZdIChjb25zdCBDU3RyaW5nJiBzdHJpbmcpIHsK
KyAgICAgICAgdW5jaGVja2VkQXBwZW5kKHZlY3Rvciwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAg
ICAgdW5jaGVja2VkQXBwZW5kKHZlY3Rvciwgc3RyaW5nKTsKKyAgICB9OworICAgIGlmIChoYXNG
cmFnbWVudCkKKyAgICAgICAgdW5jaGVja2VkQXBwZW5kTGVuZ3RoQW5kU3RyaW5nKGZyYWdtZW50
VVRGOCk7CisgICAgaWYgKGhhc0hvc3QpCisgICAgICAgIHVuY2hlY2tlZEFwcGVuZExlbmd0aEFu
ZFN0cmluZyhob3N0VVRGOCk7CisgICAgaWYgKGhhc1Bhc3N3b3JkKQorICAgICAgICB1bmNoZWNr
ZWRBcHBlbmRMZW5ndGhBbmRTdHJpbmcocGFzc3dvcmRVVEY4KTsKKyAgICBpZiAoaGFzUGF0aCkK
KyAgICAgICAgdW5jaGVja2VkQXBwZW5kTGVuZ3RoQW5kU3RyaW5nKHBhdGhVVEY4KTsKKyAgICBp
ZiAoaGFzUG9ydCkKKyAgICAgICAgdW5jaGVja2VkQXBwZW5kTGVuZ3RoQW5kU3RyaW5nKHBvcnRV
VEY4KTsKKyAgICBpZiAoaGFzU2NoZW1lKQorICAgICAgICB1bmNoZWNrZWRBcHBlbmRMZW5ndGhB
bmRTdHJpbmcoc2NoZW1lVVRGOCk7CisgICAgaWYgKGhhc1VzZXJuYW1lKQorICAgICAgICB1bmNo
ZWNrZWRBcHBlbmRMZW5ndGhBbmRTdHJpbmcodXNlcm5hbWVVVEY4KTsKKyAgICBpZiAoaGFzUXVl
cnkpIHsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChxdWVyeVRyYW5zZm9ybS5pbmRleCgpKTsKKyAg
ICAgICAgc3RkOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKSB7CisgICAgICAgICAgICBhdXRvIHF1ZXJ5U3RyaW5nVVRGOCA9IHF1ZXJ5U3RyaW5n
LnV0ZjgoKTsKKyAgICAgICAgICAgIGFwcGVuZCh2ZWN0b3IsIHF1ZXJ5U3RyaW5nVVRGOC5sZW5n
dGgoKSk7CisgICAgICAgICAgICBhcHBlbmQodmVjdG9yLCBxdWVyeVN0cmluZ1VURjgpOworICAg
ICAgICB9LCBbJl0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgeworICAgICAgICAg
ICAgdHJhbnNmb3JtLnNlcmlhbGl6ZSh2ZWN0b3IpOworICAgICAgICB9KSwgcXVlcnlUcmFuc2Zv
cm0pOworICAgIH0KKyAgICB3cml0ZUxlbmd0aFRvVmVjdG9yQXRPZmZzZXQodmVjdG9yLCBiZWdp
bkluZGV4KTsKK30KKworYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpk
ZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIC0+IFVSTFRyYW5zZm9ybUFjdGlv
bgoreworICAgIGNvbnN0ZXhwciBhdXRvIGhlYWRlckxlbmd0aCA9IHNpemVvZih1aW50MzJfdCkg
KyBzaXplb2YodWludDhfdCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3Bhbi5zaXplKCkgPj0gaGVh
ZGVyTGVuZ3RoKTsKKyAgICB1aW50OF90IGZsYWdzID0gc3BhbltzaXplb2YodWludDMyX3QpXTsK
KworICAgIGJvb2wgaGFzRnJhZ21lbnQgPSBmbGFncyAmICgxIDw8IDcpOworICAgIGJvb2wgaGFz
SG9zdCA9IGZsYWdzICYgKDEgPDwgNik7CisgICAgYm9vbCBoYXNQYXNzd29yZCA9IGZsYWdzICYg
KDEgPDwgNSk7CisgICAgYm9vbCBoYXNQYXRoID0gZmxhZ3MgJiAoMSA8PCA0KTsKKyAgICBib29s
IGhhc1BvcnQgPSBmbGFncyAmICgxIDw8IDMpOworICAgIGJvb2wgaGFzU2NoZW1lID0gZmxhZ3Mg
JiAoMSA8PCAyKTsKKyAgICBib29sIGhhc1VzZXJuYW1lID0gZmxhZ3MgJiAoMSA8PCAxKTsKKyAg
ICBib29sIGhhc1F1ZXJ5ID0gZmxhZ3MgJiAoMSA8PCAwKTsKKworICAgIHNpemVfdCBwcm9ncmVz
cyA9IGhlYWRlckxlbmd0aDsKKyAgICBhdXRvIGRlc2VyaWFsaXplU3RyaW5nID0gWyZdIHsKKyAg
ICAgICAgYXV0byBzdHJpbmdMZW5ndGggPSBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCBwcm9ncmVz
cyk7CisgICAgICAgIGF1dG8gc3RyaW5nID0gZGVzZXJpYWxpemVVVEY4U3RyaW5nKHNwYW4sIHBy
b2dyZXNzICsgc2l6ZW9mKHVpbnQzMl90KSwgc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgcHJvZ3Jl
c3MgKz0gc2l6ZW9mKHVpbnQzMl90KSArIHN0cmluZ0xlbmd0aDsKKyAgICAgICAgcmV0dXJuIHN0
cmluZzsKKyAgICB9OworICAgIGF1dG8gZnJhZ21lbnQgPSBoYXNGcmFnbWVudCA/IGRlc2VyaWFs
aXplU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBhdXRvIGhvc3QgPSBoYXNIb3N0ID8gZGVzZXJp
YWxpemVTdHJpbmcoKSA6IFN0cmluZygpOworICAgIGF1dG8gcGFzc3dvcmQgPSBoYXNQYXNzd29y
ZCA/IGRlc2VyaWFsaXplU3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBhdXRvIHBhdGggPSBoYXNQ
YXRoID8gZGVzZXJpYWxpemVTdHJpbmcoKSA6IFN0cmluZygpOworICAgIGF1dG8gcG9ydCA9IGhh
c1BvcnQgPyBkZXNlcmlhbGl6ZVN0cmluZygpIDogU3RyaW5nKCk7CisgICAgYXV0byBzY2hlbWUg
PSBoYXNTY2hlbWUgPyBkZXNlcmlhbGl6ZVN0cmluZygpIDogU3RyaW5nKCk7CisgICAgYXV0byB1
c2VybmFtZSA9IGhhc1VzZXJuYW1lID8gZGVzZXJpYWxpemVTdHJpbmcoKSA6IFN0cmluZygpOwor
ICAgIFF1ZXJ5VHJhbnNmb3JtVmFyaWFudCBxdWVyeVRyYW5zZm9ybTsKKyAgICBpZiAoaGFzUXVl
cnkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3Bhbi5zaXplKCkgPiBwcm9ncmVzcyk7Cisg
ICAgICAgIHVpbnQ4X3QgdmFyaWFudEluZGV4ID0gc3Bhbltwcm9ncmVzcysrXTsKKyAgICAgICAg
aWYgKHZhcmlhbnRJbmRleCA9PSBXVEY6OmFsdGVybmF0aXZlSW5kZXhWPFN0cmluZywgUXVlcnlU
cmFuc2Zvcm1WYXJpYW50PikgeworICAgICAgICAgICAgYXV0byBxdWVyeVN0cmluZ0xlbmd0aCA9
IGRlc2VyaWFsaXplTGVuZ3RoKHNwYW4sIHByb2dyZXNzKTsKKyAgICAgICAgICAgIHF1ZXJ5VHJh
bnNmb3JtID0gZGVzZXJpYWxpemVVVEY4U3RyaW5nKHNwYW4sIHByb2dyZXNzICsgc2l6ZW9mKHVp
bnQzMl90KSwgcXVlcnlTdHJpbmdMZW5ndGgpOworICAgICAgICB9IGVsc2UgaWYgKHZhcmlhbnRJ
bmRleCA9PSBXVEY6OmFsdGVybmF0aXZlSW5kZXhWPFF1ZXJ5VHJhbnNmb3JtLCBRdWVyeVRyYW5z
Zm9ybVZhcmlhbnQ+KQorICAgICAgICAgICAgcXVlcnlUcmFuc2Zvcm0gPSBRdWVyeVRyYW5zZm9y
bTo6ZGVzZXJpYWxpemUoc3Bhbi5zdWJzcGFuKHByb2dyZXNzKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi1hdXRvIFJl
ZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OmRlc2VyaWFsaXplKFNwYW48Y29uc3Qg
dWludDhfdD4pIC0+IFVSTFRyYW5zZm9ybUFjdGlvbgotewotICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIHsKKyAgICAgICAgV1RGTW92ZShmcmFnbWVudCksCisgICAgICAgIFdURk1vdmUoaG9z
dCksCisgICAgICAgIFdURk1vdmUocGFzc3dvcmQpLAorICAgICAgICBXVEZNb3ZlKHBhdGgpLAor
ICAgICAgICBXVEZNb3ZlKHBvcnQpLAorICAgICAgICBXVEZNb3ZlKHF1ZXJ5VHJhbnNmb3JtKSwK
KyAgICAgICAgV1RGTW92ZShzY2hlbWUpLAorICAgICAgICBXVEZNb3ZlKHVzZXJuYW1lKQorICAg
IH07CiB9CiAKLXNpemVfdCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpzZXJp
YWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pCitzaXplX3QgUmVkaXJlY3RBY3Rpb246
OlVSTFRyYW5zZm9ybUFjdGlvbjo6c2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHNwYW4pCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGRlc2VyaWFsaXplTGVuZ3RoKHNw
YW4sIDApOwogfQogCiBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1
ZXJ5VHJhbnNmb3JtOjpwYXJzZShjb25zdCBKU09OOjpPYmplY3QmIHF1ZXJ5VHJhbnNmb3JtKSAt
PiBFeHBlY3RlZDxRdWVyeVRyYW5zZm9ybSwgc3RkOjplcnJvcl9jb2RlPgogewotICAgIFJlZGly
ZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtIHBhcnNlZFF1ZXJ5
VHJhbnNmb3JtOworICAgIFF1ZXJ5VHJhbnNmb3JtIHBhcnNlZFF1ZXJ5VHJhbnNmb3JtOwogCiAg
ICAgaWYgKGF1dG8gcmVtb3ZlUGFyYW1ldGVyc1ZhbHVlID0gcXVlcnlUcmFuc2Zvcm0uZ2V0VmFs
dWUoInJlbW92ZS1wYXJhbWV0ZXJzIikpIHsKICAgICAgICAgYXV0byByZW1vdmVQYXJhbWV0ZXJz
QXJyYXkgPSByZW1vdmVQYXJhbWV0ZXJzVmFsdWUtPmFzQXJyYXkoKTsKQEAgLTMyMCwxOCArNTY5
LDQ5IEBAIGJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFu
c2Zvcm06Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlUCiAgICAgICAgICYmIG90aGVyLnJlbW92ZVBh
cmFtcyA9PSB0aGlzLT5yZW1vdmVQYXJhbXM7CiB9CiAKLXZvaWQgUmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OnNlcmlhbGl6ZShWZWN0b3I8dWludDhf
dD4mKSBjb25zdAordm9pZCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVy
eVRyYW5zZm9ybTo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdAogewor
ICAgIGF1dG8gYmVnaW5JbmRleCA9IHZlY3Rvci5zaXplKCk7CisgICAgYXBwZW5kKHZlY3Rvciwg
MCk7CisgICAgYXV0byBrZXlWYWx1ZUJlZ2luSW5kZXggPSB2ZWN0b3Iuc2l6ZSgpOworICAgIGFw
cGVuZCh2ZWN0b3IsIDApOworICAgIGZvciAoYXV0byYgcXVlcnlLZXlWYWx1ZSA6IGFkZE9yUmVw
bGFjZVBhcmFtcykKKyAgICAgICAgcXVlcnlLZXlWYWx1ZS5zZXJpYWxpemUodmVjdG9yKTsKKyAg
ICB3cml0ZUxlbmd0aFRvVmVjdG9yQXRPZmZzZXQodmVjdG9yLCBrZXlWYWx1ZUJlZ2luSW5kZXgp
OworICAgIGZvciAoYXV0byYgc3RyaW5nIDogcmVtb3ZlUGFyYW1zKSB7CisgICAgICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgICAgIGFwcGVuZCh2ZWN0b3IsIHV0ZjgubGVuZ3Ro
KCkpOworICAgICAgICBhcHBlbmQodmVjdG9yLCB1dGY4KTsKKyAgICB9CisgICAgd3JpdGVMZW5n
dGhUb1ZlY3RvckF0T2Zmc2V0KHZlY3RvciwgYmVnaW5JbmRleCk7CiB9CiAKLWF1dG8gUmVkaXJl
Y3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OmRlc2VyaWFsaXpl
KFNwYW48Y29uc3QgdWludDhfdD4pIC0+IFF1ZXJ5VHJhbnNmb3JtCithdXRvIFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpkZXNlcmlhbGl6ZShTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIC0+IFF1ZXJ5VHJhbnNmb3JtCiB7Ci0gICAgcmV0dXJuIHsg
fTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRMZW5ndGggPSBkZXNlcmlhbGl6ZUxlbmd0aChzcGFuLCAw
KTsKKyAgICBhdXRvIGtleVZhbHVlc1NlcmlhbGl6ZWRMZW5ndGggPSBkZXNlcmlhbGl6ZUxlbmd0
aChzcGFuLCBzaXplb2YodWludDMyX3QpKTsKKyAgICBWZWN0b3I8UXVlcnlLZXlWYWx1ZT4gcXVl
cnlLZXlWYWx1ZXM7CisgICAgYXV0byBxdWVyeUtleVZhbHVlc1Byb2dyZXNzID0gc2l6ZW9mKHVp
bnQzMl90KTsKKyAgICB3aGlsZSAocXVlcnlLZXlWYWx1ZXNQcm9ncmVzcyA8IGtleVZhbHVlc1Nl
cmlhbGl6ZWRMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzdWJzcGFuID0gc3Bhbi5zdWJzcGFuKHNp
emVvZih1aW50MzJfdCkgKyBxdWVyeUtleVZhbHVlc1Byb2dyZXNzKTsKKyAgICAgICAgcXVlcnlL
ZXlWYWx1ZXNQcm9ncmVzcyArPSBRdWVyeUtleVZhbHVlOjpzZXJpYWxpemVkTGVuZ3RoKHN1YnNw
YW4pOworICAgICAgICBxdWVyeUtleVZhbHVlcy5hcHBlbmQoUXVlcnlLZXlWYWx1ZTo6ZGVzZXJp
YWxpemUoc3Vic3BhbikpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChxdWVyeUtleVZhbHVl
c1Byb2dyZXNzID09IGtleVZhbHVlc1NlcmlhbGl6ZWRMZW5ndGgpOworICAgIAorICAgIFZlY3Rv
cjxTdHJpbmc+IHN0cmluZ3M7CisgICAgYXV0byBzdHJpbmdzUHJvZ3Jlc3MgPSBzaXplb2YodWlu
dDMyX3QpICsgcXVlcnlLZXlWYWx1ZXNQcm9ncmVzczsKKyAgICB3aGlsZSAoc3RyaW5nc1Byb2dy
ZXNzIDwgc2VyaWFsaXplZExlbmd0aCkgeworICAgICAgICBhdXRvIHN0cmluZ0xlbmd0aCA9IGRl
c2VyaWFsaXplTGVuZ3RoKHNwYW4sIHN0cmluZ3NQcm9ncmVzcyk7CisgICAgICAgIHN0cmluZ3Mu
YXBwZW5kKGRlc2VyaWFsaXplVVRGOFN0cmluZyhzcGFuLCBzdHJpbmdzUHJvZ3Jlc3MgKyBzaXpl
b2YodWludDMyX3QpLCBzdHJpbmdMZW5ndGgpKTsKKyAgICAgICAgc3RyaW5nc1Byb2dyZXNzICs9
IHNpemVvZih1aW50MzJfdCkgKyBzdHJpbmdMZW5ndGg7CisgICAgfQorICAgIHJldHVybiB7IFdU
Rk1vdmUocXVlcnlLZXlWYWx1ZXMpLCBXVEZNb3ZlKHN0cmluZ3MpIH07CiB9CiAKLXNpemVfdCBS
ZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6c2VyaWFs
aXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KQorc2l6ZV90IFJlZGlyZWN0QWN0aW9uOjpV
UkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpzZXJpYWxpemVkTGVuZ3RoKFNwYW48
Y29uc3QgdWludDhfdD4gc3BhbikKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZGVzZXJp
YWxpemVMZW5ndGgoc3BhbiwgMCk7CiB9CiAKIGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OnBhcnNlKGNvbnN0IEpT
T046OlZhbHVlJiBrZXlWYWx1ZVZhbHVlKSAtPiBFeHBlY3RlZDxRdWVyeUtleVZhbHVlLCBzdGQ6
OmVycm9yX2NvZGU+CkBAIC0zNzEsMTggKzY1MSwzOSBAQCBib29sIFJlZGlyZWN0QWN0aW9uOjpV
UkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpvcGVyYXRv
cgogICAgICAgICAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52YWx1ZTsKIH0KIAotdm9pZCBSZWRp
cmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlW
YWx1ZTo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0Cit2b2lkIFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpz
ZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7CisgICAgY29uc3RleHBy
IGF1dG8gaGVhZGVyTGVuZ3RoID0gc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZih1aW50MzJfdCkg
KyBzaXplb2YoYm9vbCk7CisgICAgLy8gRklYTUU6IEFsbCB0aGVzZSBhbGxvY2F0aW9ucyBhbmQg
Y29waWVzIGFyZW4ndCBzdHJpY3RseSBuZWNlc3NhcnkuCisgICAgLy8gV2Ugd291bGQgbmVlZCBh
IHdheSB0byBxdWVyeSBleGFjdGx5IHdoYXQgdGhlIFVURi04IGVuY29kZWQgbGVuZ3RoIHdvdWxk
IGJlIHRvIHJlbW92ZSB0aGVtLCB0aG91Z2guCisgICAgYXV0byBrZXlVVEY4ID0ga2V5LnV0Zjgo
KTsKKyAgICBhdXRvIHZhbHVlVVRGOCA9IHZhbHVlLnV0ZjgoKTsKKyAgICBhdXRvIHNlcmlhbGl6
ZWRMZW5ndGggPSBoZWFkZXJMZW5ndGggKyBrZXlVVEY4Lmxlbmd0aCgpICsgdmFsdWVVVEY4Lmxl
bmd0aCgpOworICAgIHZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkodmVjdG9yLnNpemUoKSArIHNlcmlh
bGl6ZWRMZW5ndGgpOworICAgIHVuY2hlY2tlZEFwcGVuZCh2ZWN0b3IsIHNlcmlhbGl6ZWRMZW5n
dGgpOworICAgIHVuY2hlY2tlZEFwcGVuZCh2ZWN0b3IsIGtleVVURjgubGVuZ3RoKCkpOworICAg
IHZlY3Rvci51bmNoZWNrZWRBcHBlbmQocmVwbGFjZU9ubHkpOworICAgIHVuY2hlY2tlZEFwcGVu
ZCh2ZWN0b3IsIGtleVVURjgpOworICAgIHVuY2hlY2tlZEFwcGVuZCh2ZWN0b3IsIHZhbHVlVVRG
OCk7CiB9CiAKLWF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlU
cmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OmRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4p
IC0+IFF1ZXJ5S2V5VmFsdWUKK2F1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OmRlc2VyaWFsaXplKFNwYW48Y29uc3Qg
dWludDhfdD4gc3BhbikgLT4gUXVlcnlLZXlWYWx1ZQogewotICAgIHJldHVybiB7IH07CisgICAg
Ly8gRklYTUU6IFVzaW5nIG51bGwgdGVybWluYXRlZCBzdHJpbmdzIHdvdWxkIHJlZHVjZSB0aGUg
YmluYXJ5IHNpemUgY29uc2lkZXJhYmx5LgorICAgIC8vIFdlIHdvdWxkIG5lZWQgdG8gZGlzYWxs
b3cgbnVsbCBzdHJpbmdzIHdoZW4gcGFyc2luZywgdGhvdWdoLgorICAgIGNvbnN0ZXhwciBhdXRv
IGhlYWRlckxlbmd0aCA9IHNpemVvZih1aW50MzJfdCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6
ZW9mKGJvb2wpOworICAgIFJFTEVBU0VfQVNTRVJUKHNwYW4uc2l6ZSgpID49IGhlYWRlckxlbmd0
aCk7CisgICAgYXV0byBzZXJpYWxpemVkTGVuZ3RoID0gZGVzZXJpYWxpemVMZW5ndGgoc3Bhbiwg
MCk7CisgICAgYXV0byBrZXlVVEY4TGVuZ3RoID0gZGVzZXJpYWxpemVMZW5ndGgoc3Bhbiwgc2l6
ZW9mKHVpbnQzMl90KSk7CisgICAgYm9vbCByZXBsYWNlT25seSA9IHNwYW5bc2l6ZW9mKHVpbnQz
Ml90KSArIHNpemVvZih1aW50MzJfdCldOworICAgIGF1dG8ga2V5ID0gZGVzZXJpYWxpemVVVEY4
U3RyaW5nKHNwYW4sIGhlYWRlckxlbmd0aCwga2V5VVRGOExlbmd0aCk7CisgICAgYXV0byB2YWx1
ZSA9IGRlc2VyaWFsaXplVVRGOFN0cmluZyhzcGFuLCBoZWFkZXJMZW5ndGggKyBrZXlVVEY4TGVu
Z3RoLCBzZXJpYWxpemVkTGVuZ3RoIC0gaGVhZGVyTGVuZ3RoIC0ga2V5VVRGOExlbmd0aCk7Cisg
ICAgcmV0dXJuIHsgV1RGTW92ZShrZXkpLCByZXBsYWNlT25seSwgV1RGTW92ZSh2YWx1ZSkgfTsK
IH0KIAotc2l6ZV90IFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJh
bnNmb3JtOjpRdWVyeUtleVZhbHVlOjpzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhf
dD4pCitzaXplX3QgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFu
c2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OnNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90
PiBzcGFuKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBkZXNlcmlhbGl6ZUxlbmd0aChz
cGFuLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQWN0aW9ucy5oCmluZGV4IDlmYzZlZGQxOGY1NDZhZTY0YTUyYTIzY2JiNWI4OTFj
NDAwM2ZmNWIuLjVhMmQwYWY2YmJjMTRjMTQ3NDEyYWRjYjEwODYzMzEyYjE2YjUxNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25B
Y3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkFjdGlvbnMuaApAQCAtNjAsNyArNjAsNyBAQCBzdHJ1Y3QgTm90aWZ5QWN0aW9uIDog
cHVibGljIEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YTxOb3RpZnlBY3Rpb24+IHsgfTsKIHN0cnVj
dCBJZ25vcmVQcmV2aW91c1J1bGVzQWN0aW9uIDogcHVibGljIEFjdGlvbldpdGhvdXRNZXRhZGF0
YTxJZ25vcmVQcmV2aW91c1J1bGVzQWN0aW9uPiB7IH07CiBzdHJ1Y3QgTWFrZUhUVFBTQWN0aW9u
IDogcHVibGljIEFjdGlvbldpdGhvdXRNZXRhZGF0YTxNYWtlSFRUUFNBY3Rpb24+IHsgfTsKIAot
c3RydWN0IE1vZGlmeUhlYWRlcnNBY3Rpb24geworc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1vZGlm
eUhlYWRlcnNBY3Rpb24gewogICAgIHN0cnVjdCBNb2RpZnlIZWFkZXJJbmZvIHsKICAgICAgICAg
c3RydWN0IEFwcGVuZE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwpAQCAt
ODIsNyArODIsOCBAQCBzdHJ1Y3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAgICAgICAgICAgICBS
ZW1vdmVPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNv
bGF0ZWRDb3B5KCkgfTsgfQogICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbW92
ZU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5o
ZWFkZXI7IH0KICAgICAgICAgfTsKLSAgICAgICAgc3RkOjp2YXJpYW50PEFwcGVuZE9wZXJhdGlv
biwgU2V0T3BlcmF0aW9uLCBSZW1vdmVPcGVyYXRpb24+IG9wZXJhdGlvbjsKKyAgICAgICAgdXNp
bmcgT3BlcmF0aW9uVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxBcHBlbmRPcGVyYXRpb24sIFNldE9w
ZXJhdGlvbiwgUmVtb3ZlT3BlcmF0aW9uPjsKKyAgICAgICAgT3BlcmF0aW9uVmFyaWFudCBvcGVy
YXRpb247CiAKICAgICAgICAgc3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlckluZm8sIHN0ZDo6
ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKICAgICAgICAgTW9kaWZ5SGVh
ZGVySW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKQEAgLTk3LDEzICs5OCwxMyBAQCBzdHJ1Y3Qg
TW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAKICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVy
c0FjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKICAg
ICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJikgY29uc3Q7
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mKSBjb25zdDsK
ICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICBzdGF0aWMg
TW9kaWZ5SGVhZGVyc0FjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAg
ICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90Pik7CiB9
OwogCi1zdHJ1Y3QgUmVkaXJlY3RBY3Rpb24geworc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGly
ZWN0QWN0aW9uIHsKICAgICBzdHJ1Y3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiB7CiAgICAgICAgIFN0
cmluZyBleHRlbnNpb25QYXRoOwogCkBAIC0xNDcsNyArMTQ4LDggQEAgc3RydWN0IFJlZGlyZWN0
QWN0aW9uIHsKICAgICAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgICAgICBTdHJpbmcgcGF0aDsK
ICAgICAgICAgU3RyaW5nIHBvcnQ7Ci0gICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFF1ZXJ5
VHJhbnNmb3JtPiBxdWVyeVRyYW5zZm9ybTsKKyAgICAgICAgdXNpbmcgUXVlcnlUcmFuc2Zvcm1W
YXJpYW50ID0gc3RkOjp2YXJpYW50PFN0cmluZywgUXVlcnlUcmFuc2Zvcm0+OworICAgICAgICBR
dWVyeVRyYW5zZm9ybVZhcmlhbnQgcXVlcnlUcmFuc2Zvcm07CiAgICAgICAgIFN0cmluZyBzY2hl
bWU7CiAgICAgICAgIFN0cmluZyB1c2VybmFtZTsKIApAQCAtMTY1LDExICsxNjcsMTIgQEAgc3Ry
dWN0IFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTEFj
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLnVybCA9PSB0aGlzLT51cmw7IH0KICAg
ICB9OwogCi0gICAgc3RkOjp2YXJpYW50PEV4dGVuc2lvblBhdGhBY3Rpb24sIFJlZ2V4U3Vic3Rp
dHV0aW9uQWN0aW9uLCBVUkxUcmFuc2Zvcm1BY3Rpb24sIFVSTEFjdGlvbj4gYWN0aW9uOworICAg
IHVzaW5nIEFjdGlvblZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8RXh0ZW5zaW9uUGF0aEFjdGlvbiwg
UmVnZXhTdWJzdGl0dXRpb25BY3Rpb24sIFVSTFRyYW5zZm9ybUFjdGlvbiwgVVJMQWN0aW9uPjsK
KyAgICBBY3Rpb25WYXJpYW50IGFjdGlvbjsKIAogICAgIHN0YXRpYyBFeHBlY3RlZDxSZWRpcmVj
dEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mKTsKICAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RB
Y3Rpb24mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24m
KSBjb25zdDsKICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAg
ICBzdGF0aWMgUmVkaXJlY3RBY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7
CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRi
MGIyMjgzNGNhMjE0YTBmMTI2NTMwMGQzMDZmM2Y2Yjc1Yzk2MjUuLjg2MzE0M2JhMmE3OGE2ZTQ2
ZWI5MmUwZTVjMDQ4NGExMTEwN2IxNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0wOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBz
ZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgcmVkaXJlY3QgYW5kIG1vZGlmeSBo
ZWFkZXJzIGFjdGlvbnMgZm9yIFdLQ29udGVudFJ1bGVMaXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorCiAyMDIxLTExLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUGFyc2UgcmVkaXJlY3QgYW5kIG1vZGlmeS1oZWFkZXJzIGFjdGlvbnMg
Zm9yIFdLQ29udGVudFJ1bGVMaXN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCA0NWQ5NTdkZjkzZmM2MzA1
MWFmMWIwMWYwMjIwZWFiYWYyOWU0NjM5Li40ZDMyNWViNDFkNDE4YzYzNWI0MWI1ODdlZGI3MDI0
ZmViYjM0ZDA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlV0aWxp
dGllcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbWJpbmVkVVJMRmlsdGVycy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25Db21waWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEV4dGVuc2lvbkVy
cm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmg+CkBAIC05
MDgsNyArOTA5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGpzb25XaXRoU3RyaW5nc1RvQ29tYmlu
ZSA9ICJbIgogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFN0cmluZ1BhcmFtZXRlcnMp
CiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zOwogICAgIGF1dG8gYmFj
a2VuZDEgPSBtYWtlQmFja2VuZCgiW3tcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwi
bm90aWZpY2F0aW9uXCI6XCJ0ZXN0bm90aWZpY2F0aW9uXCJ9LFwidHJpZ2dlclwiOntcInVybC1m
aWx0ZXJcIjpcIm1hdGNoZXNcIn19XSIpOwogICAgIEFTU0VSVF9UUlVFKGFjdGlvbnNFcXVhbChh
bGxBY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGJhY2tlbmQxLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJ0
ZXN0Oi8vL21hdGNoZXMiKSksIFZlY3RvcjxBY3Rpb24+Ojpmcm9tKEFjdGlvbiB7IENvbnRlbnRF
eHRlbnNpb25zOjpOb3RpZnlBY3Rpb24geyB7ICJ0ZXN0bm90aWZpY2F0aW9uIiB9IH0gfSkpKTsK
IApAQCAtMTQ0MCw3ICsxNDQwLDYgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBNYXRj
aGVzRXZlcnl0aGluZykKICAgICAKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgSW52YWxp
ZEpTT04pCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zOwogICAgIGNo
ZWNrQ29tcGlsZXJFcnJvcigiWyIsIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWQp
OwogICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiMTIzIiwgQ29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OVG9wTGV2ZWxTdHJ1Y3R1cmVOb3RBbkFycmF5KTsKICAgICBjaGVja0NvbXBpbGVyRXJyb3Io
Int9IiwgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OVG9wTGV2ZWxTdHJ1Y3R1cmVOb3RBbkFy
cmF5KTsKQEAgLTMwMDgsNCArMzAwNyw0NCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IFZhbGlkU2VsZWN0b3IpCiAgICAgRVhQRUNUX1RSVUUoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OmlzVmFsaWRDU1NTZWxlY3RvcigiYVtocmVmKj1oc3ZdIikpOwogfQogCitURVNUX0YoQ29u
dGVudEV4dGVuc2lvblRlc3QsIFNlcmlhbGl6YXRpb24pCit7CisgICAgYXV0byBjaGVja1JlZGly
ZWN0QWN0aW9uU2VyaWFsaXphdGlvbiA9IFtdIChjb25zdCBSZWRpcmVjdEFjdGlvbiYgYWN0aW9u
LCBzaXplX3QgZXhwZWN0ZWRTZXJpYWxpemVkQnVmZmVyTGVuZ3RoKSB7CisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBidWZmZXI7CisgICAgICAgIGFjdGlvbi5zZXJpYWxpemUoYnVmZmVyKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkU2VyaWFsaXplZEJ1ZmZlckxlbmd0aCwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgIGF1dG8gZGVzZXJpYWxpemVkID0gUmVkaXJlY3RBY3Rpb246OmRlc2Vy
aWFsaXplKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKKyAgICAgICAgRVhQRUNU
X0VRKGRlc2VyaWFsaXplZCwgYWN0aW9uKTsKKyAgICB9OworICAgIGNoZWNrUmVkaXJlY3RBY3Rp
b25TZXJpYWxpemF0aW9uKHsgeyBSZWRpcmVjdEFjdGlvbjo6RXh0ZW5zaW9uUGF0aEFjdGlvbiB7
ICJleHRlbnNpb25QYXRoIiB9IH0gfSwgMTgpOworICAgIGNoZWNrUmVkaXJlY3RBY3Rpb25TZXJp
YWxpemF0aW9uKHsgeyBSZWRpcmVjdEFjdGlvbjo6UmVnZXhTdWJzdGl0dXRpb25BY3Rpb24geyAi
cmVnZXhTdWJzdGl0dXRpb24iIH0gfSB9LCAyMik7CisgICAgY2hlY2tSZWRpcmVjdEFjdGlvblNl
cmlhbGl6YXRpb24oeyB7IFJlZGlyZWN0QWN0aW9uOjpVUkxBY3Rpb24geyAidXJsIiB9IH0gfSwg
OCk7CisgICAgY2hlY2tSZWRpcmVjdEFjdGlvblNlcmlhbGl6YXRpb24oeyB7IFJlZGlyZWN0QWN0
aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb24geworICAgICAgICAiZnLDpGdtZW50IiwKKyAgICAgICAg
Imhvc3QiLAorICAgICAgICAicGFzc3dvcmQiLAorICAgICAgICB7IC8qIHBhdGggKi8gfSwKKyAg
ICAgICAgInBvcnQiLAorICAgICAgICB7IC8qIHF1ZXJ5ICovIH0sCisgICAgICAgICJzY2hlbWUi
LAorICAgICAgICAidXNlcm5hbWUiCisgICAgfSB9IH0sIDc1KTsKKyAgICBjaGVja1JlZGlyZWN0
QWN0aW9uU2VyaWFsaXphdGlvbih7IHsgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
biB7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7ICJxdWVyeSIgfSwgeyB9LCB7IH0gfSB9IH0s
IDIwKTsKKyAgICBjaGVja1JlZGlyZWN0QWN0aW9uU2VyaWFsaXphdGlvbih7IHsgUmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbiB7IHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9LAorICAg
ICAgICB7IFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3Jt
IHsgeyB7ICJrZXkxIiwgZmFsc2UsICJ2YWx1ZTEiIH0sIHsgImtlefCfkqkiLCBmYWxzZSwgInZh
bHVlMiIgfSB9LCB7ICJ0ZXN0U3RyaW5nMSIsICJ0ZXN0U3RyaW5nMiIgfSB9IH0sIHsgfSwgeyB9
LAorICAgIH0gfSB9LCA5NCk7CisKKyAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIG1vZGlmeUhlYWRl
cnMgeyB7CisgICAgICAgIHsgeyBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZv
OjpBcHBlbmRPcGVyYXRpb24geyAia2V5MSIsICJ2YWx1ZTEiIH0gfSB9LAorICAgICAgICB7IHsg
TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6U2V0T3BlcmF0aW9uIHsgImtl
eTIiLCAidmFsdWUyIiB9IH0gfQorICAgIH0sIHsKKyAgICAgICAgeyB7IE1vZGlmeUhlYWRlcnNB
Y3Rpb246Ok1vZGlmeUhlYWRlckluZm86OlJlbW92ZU9wZXJhdGlvbiB7ICLwn5KpIiB9IH0gfQor
ICAgIH0gfTsKKyAgICBWZWN0b3I8dWludDhfdD4gbW9kaWZ5SGVhZGVyc0J1ZmZlcjsKKyAgICBt
b2RpZnlIZWFkZXJzLnNlcmlhbGl6ZShtb2RpZnlIZWFkZXJzQnVmZmVyKTsKKyAgICBFWFBFQ1Rf
RVEobW9kaWZ5SGVhZGVyc0J1ZmZlci5zaXplKCksIDU5dSk7CisgICAgYXV0byBkZXNlcmlhbGl6
ZWRNb2RpZnlIZWFkZXJzID0gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6ZGVzZXJpYWxpemUoeyBtb2Rp
ZnlIZWFkZXJzQnVmZmVyLmRhdGEoKSwgbW9kaWZ5SGVhZGVyc0J1ZmZlci5zaXplKCkgfSk7Cisg
ICAgRVhQRUNUX0VRKG1vZGlmeUhlYWRlcnMsIGRlc2VyaWFsaXplZE1vZGlmeUhlYWRlcnMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>