<?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>177411</bug_id>
          
          <creation_ts>2017-09-23 12:50:37 -0700</creation_ts>
          <short_desc>REGRESSION(r214201): WebProcess hangs during policy decisions</short_desc>
          <delta_ts>2017-10-06 16:35:27 -0700</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>REOPENED</bug_status>
          <resolution></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>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351981</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-23 12:50:37 -0700</bug_when>
    <thetext>REGRESSION(r214201): WebProcess hangs during policy decisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352001</commentid>
    <comment_count>1</comment_count>
      <attachid>321641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-23 16:44:28 -0700</bug_when>
    <thetext>Created attachment 321641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352023</commentid>
    <comment_count>2</comment_count>
      <attachid>321641</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-23 18:08:23 -0700</bug_when>
    <thetext>Comment on attachment 321641
Patch

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

r=me

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3756
&gt; +    m_decidePolicyForResponseRequest = 0;

Should be nullptr.

Why did m_decidePolicyForResponseRequest change to a pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352045</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-23 23:21:13 -0700</bug_when>
    <thetext>That&apos;s how it used to be.  It was an awful mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352046</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-23 23:23:16 -0700</bug_when>
    <thetext>https://trac.webkit.org/r222431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352301</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 12:03:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/r222453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353297</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:19:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357718</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 13:57:52 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357719</commentid>
    <comment_count>8</comment_count>
      <attachid>323042</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 13:57:53 -0700</bug_when>
    <thetext>Created attachment 323042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357722</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-10-06 14:03:28 -0700</bug_when>
    <thetext>The API must behave consistently across platforms and correctly on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357734</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 14:22:38 -0700</bug_when>
    <thetext>(In reply to mitz from comment #9)
&gt; The API must behave consistently across platforms and correctly on all
&gt; platforms.
I agree wholeheartedly.  Unfortunately, that would require https://bugs.webkit.org/show_bug.cgi?id=160677 to land to allow us to wait during redirects and that&apos;s WAAAAY too risky for the branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357818</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-10-06 16:35:27 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; (In reply to mitz from comment #9)
&gt; &gt; The API must behave consistently across platforms and correctly on all
&gt; &gt; platforms.
&gt; I agree wholeheartedly.  Unfortunately, that would require
&gt; https://bugs.webkit.org/show_bug.cgi?id=160677 to land to allow us to wait
&gt; during redirects and that&apos;s WAAAAY too risky for the branch.

Not at all. Your change log says “[…] Mac, which depends on the ability to asynchronously call the completion handlers” but that’s incorrect. There is only one client of the API on macOS that, because it adapted to the changes introduced in r214201, depends on that behavior. All other software expects and works with the long-standing behavior of the API as it was prior to r214201 on all platforms. That behavior must be reinstated. Because one client has come to depend on incorrect behavior, that one client can be accommodated by maintaining the some of all of the incorrect behavior as needed for that client.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321641</attachid>
            <date>2017-09-23 16:44:28 -0700</date>
            <delta_ts>2017-10-06 13:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177411-20170923164427.patch</filename>
            <type>text/plain</type>
            <size>45375</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI0MTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTA5LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjE0MjAxKTogV2ViUHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMzM2MjkyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGFuZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgdXNlZCB0byBoYXZlCisgICAgICAgIGEg
c2hvcnRjdXQgcGF0aCBmb3IgaWYgeW91IGNhbGxlZCB0aGUgZGVjaXNpb25IYW5kbGVyIHN5bmNo
cm9ub3VzbHkgYW5kIGEgZGlmZmVyZW50IHBhdGgKKyAgICAgICAgZm9yIGFzeW5jaHJvbm91cyBk
ZWNpc2lvbkhhbmRsZXIgY2FsbGluZy4gIHIyMTQyMDEgbWFkZSBpdCBzbyB0aGVyZSBpcyBvbmUg
cGF0aCBidXQgdGhlCisgICAgICAgIFdlYlByb2Nlc3MgaGFuZ3MsIHdoaWNoIHByZXZlbnRzIHVz
IGZyb20gZXhlY3V0aW5nIEphdmFTY3JpcHQgaW4gdGhlIFdlYlByb2Nlc3Mgd2hlcmUgd2UKKyAg
ICAgICAgY291bGQgYmVmb3JlLiAgVGhpcyBwYXRjaCBlZmZlY3RpdmVseSByZXZlcnRzIHIyMTQy
MDEgb24gdGhlIGJyYW5jaCBhbmQgcGlwZXMgdGhlIFdlYnNpdGVQb2xpY2llcworICAgICAgICB0
aHJvdWdoIHRoZSBhc3luY2hyb25vdXMgZGVjaXNpb25IYW5kbGVyIHBhdGggdG8gYmUgdXNlZCBv
bmx5IGZvciBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICB3aGljaCBp
cyB0aGUgb25seSBzdWNoIGNhbGxiYWNrIHRoYXQgY2FuIHNldCB0aGUgV2Vic2l0ZVBvbGljaWVz
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBmb3IgdGhlIHNhZmFyaS02MDQtYnJh
bmNoIGJyYW5jaC4gIEknbGwgZml4IHRoaXMgcHJvYmxlbSBvbiB0cnVuayBieSBtYWtpbmcgYWxs
CisgICAgICAgIHBvbGljeSBtZXNzYWdlcyBhc3luYyBhbmQgdXNpbmcgZGlmZmVyZW50IG1lc3Nh
Z2UgdHlwZXMgZm9yIGVhY2ggcG9saWN5IGNoZWNrLCBhbmQgdGhlbiBJJ2xsCisgICAgICAgIGdl
dCB0aGlzIHNhbWUgQVBJIHRlc3Qgd29ya2luZyBvbiB0cnVuay4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
Yyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTA5LTE0
ICBKYXNvbiBNYXJjZWxsICA8am1hcmNlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIENoZXJyeS1w
aWNrIHIyMjE2NDcuIHJkYXI6Ly9wcm9ibGVtLzM0NDM5MTIxCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMjQxMykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNjAs
MzEgKzIyNjAsMzIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwog
ICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09IFBvbGlj
eURvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgotICAgICAg
ICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVh
dGVEb3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0KTsKKyAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkb3dubG9hZFJlcXVlc3QgPSBtX2RlY2lkZVBvbGlj
eUZvclJlc3BvbnNlUmVxdWVzdCA/ICptX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA6
IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KGRvd25sb2FkUmVxdWVz
dCk7CiAgICAgICAgIGRvd25sb2FkSUQgPSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOwogICAgICAg
ICBoYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOwotICAgICAgICBtX2RlY2lkZVBvbGlj
eUZvclJlc3BvbnNlUmVxdWVzdCA9IHsgfTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSByZWNlaXZl
ZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSB0aGUg
ZGVjaXNpb24gd2lsbAogICAgIC8vIGJlIHNlbnQgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgYnkg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UuCi0gICAgaWYgKG1fcmVzcG9uc2VQb2xpY3lSZXBseSkg
ewotICAgICAgICBtX3Jlc3BvbnNlUG9saWN5UmVwbHktPnNlbmQoYWN0aW9uLCBkb3dubG9hZElE
KTsKLSAgICAgICAgQVNTRVJUKCFtX25ld05hdmlnYXRpb25JRCk7Ci0gICAgICAgIG1fcmVzcG9u
c2VQb2xpY3lSZXBseSA9IG51bGxwdHI7CisgICAgaWYgKG1faW5EZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVN5bmMpIHsKKyAgICAgICAgbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkID0g
dHJ1ZTsKKyAgICAgICAgbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb24gPSBhY3Rpb247CisgICAg
ICAgIG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lv
biB3aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIHRoZSBkZWNpc2lvbiB3
aWxsIAogICAgIC8vIGJlIHNlbnQgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgYnkgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbi4gCi0gICAgaWYgKG1fbmF2aWdhdGlvbkFjdGlvblBvbGlj
eVJlcGx5KSB7Ci0gICAgICAgIG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5LT5zZW5kKG1f
bmV3TmF2aWdhdGlvbklELCBhY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyk7Ci0g
ICAgICAgIG1fbmV3TmF2aWdhdGlvbklEID0gMDsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQWN0aW9u
UG9saWN5UmVwbHkgPSBudWxscHRyOworICAgIGlmIChtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbikgeworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9u
SXNWYWxpZCA9IHRydWU7CisgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rp
b24gPSBhY3Rpb247CisgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9h
ZElEID0gZG93bmxvYWRJRDsKKyAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdl
YnNpdGVQb2xpY2llcyA9IHdlYnNpdGVQb2xpY2llczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgd2Vic2l0
ZVBvbGljaWVzKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFn
ZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpAQCAtMzYyNyw3ICszNjI4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFy
Z2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OkRlbGF5ZWRSZXBseT4mJiBy
ZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
Ym9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVp
bnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQsIFdlYnNpdGVQb2xp
Y2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTM2NDIsMjYgKzM2NDMsMjggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlcXVl
c3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG9yaWdpbmFsUmVxdWVzdC51cmwoKSk7
CiAgICAgCi0gICAgbV9uZXdOYXZpZ2F0aW9uSUQgPSAwOwogICAgIFJlZjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94
eShsaXN0ZW5lcklEKTsKICAgICBpZiAoIW5hdmlnYXRpb25JRCAmJiBmcmFtZS0+aXNNYWluRnJh
bWUoKSkgewogICAgICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3Jl
YXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKHJlcXVlc3QpOwotICAgICAgICBtX25ld05hdmlnYXRp
b25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgICAgICBuZXdOYXZpZ2F0aW9u
SUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKICAgICAgICAgbGlzdGVuZXItPnNldE5h
dmlnYXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS0+ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxv
Y2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKG1fbmV3TmF2aWdh
dGlvbklELCBQb2xpY3lJZ25vcmUsIHsgfSwgeyB9KTsKLSAgICAgICAgbV9uZXdOYXZpZ2F0aW9u
SUQgPSAwOworICAgICAgICByZWNlaXZlZFBvbGljeUFjdGlvbiA9IHRydWU7CisgICAgICAgIHBv
bGljeUFjdGlvbiA9IFBvbGljeUlnbm9yZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgogCisgICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CisK
KyAgICBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IHRydWU7CisgICAgbV9z
eW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKICNpZiBFTkFC
TEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25IYXNEb3du
bG9hZEF0dHJpYnV0ZSA9ICFuYXZpZ2F0aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZS5p
c051bGwoKTsKICNlbmRpZgotICAgIG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RG
TW92ZShyZXBseSk7CiAKICAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7CiAKQEAg
LTM2ODMsNiArMzY4NiwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKCp0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUs
IG9yaWdpbmFsUmVxdWVzdCwgcmVxdWVzdCwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAg
ICAgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9u
ID0gZmFsc2U7CisgICAgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBmYWxz
ZTsKKworICAgIC8vIENoZWNrIGlmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIGFscmVh
ZHkuIElmIHdlIGRpZCwgd2UgY2FuIGp1c3QgcGFzcyBpdCBiYWNrLgorICAgIHJlY2VpdmVkUG9s
aWN5QWN0aW9uID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQ7Cisg
ICAgaWYgKG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkKSB7CisgICAg
ICAgIHBvbGljeUFjdGlvbiA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb247Cisg
ICAgICAgIGRvd25sb2FkSUQgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJ
RDsKKyAgICAgICAgd2Vic2l0ZVBvbGljaWVzID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGlj
eVdlYnNpdGVQb2xpY2llczsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKQEAgLTM3MjgsMTQgKzM3NDAsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dN
SU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
Yzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2Vp
dmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3du
bG9hZElEKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVu
dCk7CiAKLSAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IHJlcXVlc3Q7Ci0g
ICAgbV9yZXNwb25zZVBvbGljeVJlcGx5ID0gV1RGTW92ZShyZXBseSk7CisgICAgQVNTRVJUKCFt
X2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKTsKKyAgICAKKyAgICBtX2luRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTeW5jID0gdHJ1ZTsKKyAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNl
UmVxdWVzdCA9ICZyZXF1ZXN0OworICAgIG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxp
ZCA9IGZhbHNlOwogCiAgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZnJhbWVJRCwgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVu
ZXJJRCwgdXNlckRhdGEpOworICAgIAorICAgIG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5
bmMgPSBmYWxzZTsKKyAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IDA7CisK
KyAgICAvLyBDaGVjayBpZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiBhbHJlYWR5LiBJ
ZiB3ZSBkaWQsIHdlIGNhbiBqdXN0IHBhc3MgaXQgYmFjay4KKyAgICByZWNlaXZlZFBvbGljeUFj
dGlvbiA9IG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZDsKKyAgICBpZiAobV9zeW5j
TWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkKSB7CisgICAgICAgIHBvbGljeUFjdGlvbiA9IG1f
c3luY01pbWVUeXBlUG9saWN5QWN0aW9uOworICAgICAgICBkb3dubG9hZElEID0gbV9zeW5jTWlt
ZVR5cGVQb2xpY3lEb3dubG9hZElEOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIyNDEzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNzMsMTAgKzEy
NzMsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0
X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0
aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBE
b3dubG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNl
U3luYzo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
U3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFj
dGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYpOwogICAgIHZvaWQgdW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIHdpbGxTdWJtaXRGb3Jt
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTc5MCwxMCArMTc5MCwxNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc0luUHJpbnRpbmdNb2RlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCi0gICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OkRlbGF5
ZWRSZXBseT4gbV9uYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHk7Ci0gICAgdWludDY0X3QgbV9u
ZXdOYXZpZ2F0aW9uSUQgeyAwIH07Ci0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYzo6RGVsYXllZFJlcGx5PiBtX3Jlc3BvbnNlUG9s
aWN5UmVwbHk7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VSZXF1ZXN0OworICAgIGJvb2wgbV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
YyB7IGZhbHNlIH07CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KiBtX2RlY2lk
ZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fc3luY01p
bWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6UG9saWN5
QWN0aW9uIG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5VXNlIH07
CisgICAgRG93bmxvYWRJRCBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQgeyAwIH07Cisg
ICAgYm9vbCBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCB7IGZhbHNl
IH07CisgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lVc2UgfTsKKyAgICBEb3dubG9hZElEIG1fc3luY05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEIHsgMCB9OworICAgIFdlYnNpdGVQb2xpY2ll
cyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9v
bCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24g
eyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjI0MTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTk5LDgg
Kzk5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQb2xp
Y3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBwb2xpY3lBY3Rpb24s
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSBEZWxheWVkCi0gICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBuZXdO
YXZpZ2F0aW9uSUQsIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMp
IERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9u
LHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisg
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+
IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgdWlu
dDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RydWN0
IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llcykKICAgICBEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCShyZXZpc2lvbiAyMjI0MTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTU5LDE5ICsyMTU5LDE3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAgICBwcml2YXRlOgogICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIFJlZjxXZWJLaXQ6Oldl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKHsgfSk7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoJm5hdmlnYXRpb25BY3Rpb24pLCB0b0FQSShsaXN0ZW5lci5wdHIoKSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwg
UmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKSB7Ci0gICAgICAgICAg
ICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UodG9BUEkoJnBhZ2UpLCB0b0FQSSgmbmF2aWdhdGlvblJlc3BvbnNlKSwg
dG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMjI0MTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDAs
MTkgKzcwMCwyMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAK
ICAgICBib29sIGNhblNob3dNSU1FVHlwZSA9IHdlYlBhZ2UtPmNhblNob3dNSU1FVHlwZShyZXNw
b25zZS5taW1lVHlwZSgpKTsKIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBsaXN0
ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwg
V2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKKyAgICBib29sIHJlY2VpdmVkUG9s
aWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKICAgICBEb3dubG9hZElEIGRv
d25sb2FkSUQ7CiAKICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3QoKm1fZnJhbWUpOwogICAgIFdl
YkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKLSAgICBpZiAo
IXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bUZyYW1lKGNvcmVGcmFtZSksIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYzo6UmVwbHkocG9saWN5QWN0aW9uLCBkb3du
bG9hZElEKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3Jt
UGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CisgICAg
aWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21GcmFtZShjb3JlRnJhbWUpLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBl
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHJlY2VpdmVkUG9saWN5
QWN0aW9uLCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJ
UEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpIHsK
KyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBv
bGljeUlnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Ly8gV2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBDRk5ldHdvcmsgY2FuIG9ubHkg
Y29udmVydCBhIGxvYWRpbmcgY29ubmVjdGlvbiB0byBhIGRvd25sb2FkIGZyb20gaXRzIGRpZFJl
Y2VpdmVSZXNwb25zZSBjYWxsYmFjay4KLSAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24p
LCAwLCBkb3dubG9hZElEKTsKKyAgICBpZiAocmVjZWl2ZWRQb2xpY3lBY3Rpb24pCisgICAgICAg
IG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2Fz
dDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIDAsIGRvd25sb2FkSUQsIHsgfSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCkBAIC03MzUs
NyArNzM3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAg
IH0KIAogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlz
dGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2Zy
YW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9y
TmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUg
PSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CkBAIC03NTIsNiArNzU0LDUyIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1l
LT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojph
cHBseVRvRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNp
ZXMpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgYXV0byogY29y
ZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBXZWJEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBzdGF0
aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5RG9j
dW1lbnRMb2FkZXIoKSk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgZG9jdW1l
bnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGNvcmVGcmFtZS0+bG9h
ZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKTsKKyAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKQorICAgICAgICBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9h
ZGVyKj4oY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKTsKKyAgICBpZiAoIWRv
Y3VtZW50TG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHNldFVzZXJDb250
ZW50RXh0ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBi
eSByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgIGlmIChkb2N1bWVudExv
YWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpKQorICAgICAgICBkb2N1bWVudExv
YWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh3ZWJzaXRlUG9saWNpZXMuY29u
dGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgCisgICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+
IHF1aXJrczsKKyAgICBhdXRvIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNpZXMuYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzOworICAgIAorICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdl
YnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXMpKQorICAgICAgICBxdWly
a3MgfD0gQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzOworICAgIAorICAgIGlm
IChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXpl
ZFBhdXNlRXZlbnRzKSkKKyAgICAgICAgcXVpcmtzIHw9IEF1dG9wbGF5UXVpcms6OlN5bnRoZXNp
emVkUGF1c2VFdmVudHM7CisgICAgCisgICAgZG9jdW1lbnRMb2FkZXItPnNldEFsbG93ZWRBdXRv
cGxheVF1aXJrcyhxdWlya3MpOworICAgIAorICAgIHN3aXRjaCAod2Vic2l0ZVBvbGljaWVzLmF1
dG9wbGF5UG9saWN5KSB7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQ6
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGlj
eTo6RGVmYXVsdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9s
aWN5OjpBbGxvdzoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1
dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1
dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZW55OgorICAg
ICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6OkRl
bnkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0ZSogZm9ybVN0YXRl
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTc3Nyw3ICs4MjUsOCBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RG
TW92ZShmdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlv
bkFjdGlvbjo6WWVzKTsKKyAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRDsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CiAgICAgRG93
bmxvYWRJRCBkb3dubG9hZElEOwpAQCAtODIxLDQzICs4NzAsMTQgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIEZJWE1FOiBEZXRlcm1pbmUgdGhlIG9y
aWdpbmF0aW5nIHBhZ2UgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBvcmlnaW5hdGluZyBmcmFtZSBh
cyBpdCBtYXkgZXhpc3QgZXZlbiBpZgogICAgIC8vIHRoZSBvcmlnaW5hdGluZyBmcmFtZSBkb2Vz
IG5vdCBleGlzdC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBvcmlnaW5hdGluZyBmcmFtZSB3YXMg
cmVtb3ZlZCBmcm9tIHRoZSBwYWdlLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NDUzMT4uCi0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1l
KSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lICYmIG9yaWdpbmF0aW5n
RnJhbWUtPnBhZ2UoKSA/IG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkgOiAwLCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFj
dGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKLSAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUlnbm9yZSwgMCwgeyB9
KTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdh
dGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IG9yaWdpbmF0aW5nRnJhbWUgJiYgb3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpID8gb3JpZ2luYXRp
bmdGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlv
biwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUlnbm9yZSwgMCwgeyB9LCB7
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gT25seSBzZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gZGlzYWJsZWQgYnkg
cmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KLSAgICBpZiAoZG9jdW1lbnRMb2Fk
ZXItPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2Vic2l0ZVBvbGljaWVzLmNvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQpOwotCi0gICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IHF1aXJr
czsKLSAgICBhdXRvIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOwotCi0gICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCi0gICAgICAgIHF1aXJrcyB8PSBBdXRv
cGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7Ci0KLSAgICBpZiAoYWxsb3dlZFF1aXJr
cy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykp
Ci0gICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRz
OwotCi0gICAgZG9jdW1lbnRMb2FkZXItPnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3Mp
OwotCi0gICAgc3dpdGNoICh3ZWJzaXRlUG9saWNpZXMuYXV0b3BsYXlQb2xpY3kpIHsKLSAgICBj
YXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoKLSAgICAgICAgZG9jdW1lbnRMb2Fk
ZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0KTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93OgotICAgICAgICBk
b2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0
aG91dFNvdW5kOgotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0
b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5z
ZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGljeTo6RGVueSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQogICAgIC8vIFdlIGNhbGwgdGhpcyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgV2ViQ29y
ZSBjYW5ub3QgZ3JhY2VmdWxseSBoYW5kbGUgYSBmcmFtZSBsb2FkIHdpdGhvdXQgYSBzeW5jaHJv
bm91cyBuYXZpZ2F0aW9uIHBvbGljeSByZXBseS4KLSAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lB
Y3Rpb24pLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOworICAgIGlmIChyZWNlaXZlZFBv
bGljeUFjdGlvbikKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2
aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkBAIC05MTEsNyArOTMxLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUwogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KCkud2lsbFN1Ym1pdEZvcm0od2ViUGFnZSwgJmZvcm0sIG1fZnJhbWUsIHNvdXJjZUZyYW1lLCB2
YWx1ZXMsIHVzZXJEYXRhKTsKIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBsaXN0
ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwg
V2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKIAogICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbFN1Ym1pdEZvcm0obV9mcmFtZS0+ZnJhbWVJRCgp
LCBzb3VyY2VGcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDIyMjQxMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgV2ViRnJhbWU7
CitzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzOwogICAgIAogY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgpA
QCAtNDgsNiArNDksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xp
ZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpIHsgbV91c2VJY29uTG9hZGluZ0NsaWVudCA9
IHVzZUljb25Mb2FkaW5nQ2xpZW50OyB9CiAKKyAgICB2b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRl
cihjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lTG9h
ZGVyRGVzdHJveWVkKCkgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIyMjQxMykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5
LDcgKzIwOSw3IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGUoKQogICAgIG1fY29yZUZyYW1l
ID0gMDsKIH0KIAotdWludDY0X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIHBvbGljeUZ1bmN0aW9uKQordWludDY0X3QgV2ViRnJh
bWU6OnNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIHBv
bGljeUZ1bmN0aW9uLCBGb3JOYXZpZ2F0aW9uQWN0aW9uIGZvck5hdmlnYXRpb25BY3Rpb24pCiB7
CiAgICAgLy8gRklYTUU6IDxyZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRp
cGxlIGFjdGl2ZSBwb2xpY3kgbGlzdGVuZXJzLgogCkBAIC0yMTcsNiArMjE3LDcgQEAgdWludDY0
X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIoVwogCiAgICAgbV9wb2xpY3lMaXN0ZW5l
cklEID0gZ2VuZXJhdGVMaXN0ZW5lcklEKCk7CiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1v
dmUocG9saWN5RnVuY3Rpb24pOworICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0
aW9uID0gZm9yTmF2aWdhdGlvbkFjdGlvbjsKICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lcklE
OwogfQogCkBAIC0yMjgsOSArMjI5LDEwIEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xp
Y3lMaXN0ZW5lcigKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAgICAgbV9wb2xpY3lM
aXN0ZW5lcklEID0gMDsKICAgICBtX3BvbGljeUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICBtX3Bv
bGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5v
OwogfQogCi12b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYnNpdGVQb2xpY2ll
cyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI0NSw4ICsyNDcsMTMgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKAogCiAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUo
bV9wb2xpY3lGdW5jdGlvbik7CiAKKyAgICBib29sIGZvck5hdmlnYXRpb25BY3Rpb24gPSBtX3Bv
bGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9PSBGb3JOYXZpZ2F0aW9uQWN0aW9uOjpZ
ZXM7CisgICAgCiAgICAgaW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCk7CiAKKyAgICBpZiAoZm9y
TmF2aWdhdGlvbkFjdGlvbiAmJiBtX2ZyYW1lTG9hZGVyQ2xpZW50KQorICAgICAgICBtX2ZyYW1l
TG9hZGVyQ2xpZW50LT5hcHBseVRvRG9jdW1lbnRMb2FkZXIod2Vic2l0ZVBvbGljaWVzKTsKKyAg
ICAKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOwogICAgIGlmIChuYXZpZ2F0
aW9uSUQpIHsKICAgICAgICAgaWYgKFdlYkRvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4obV9jb3JlRnJhbWUtPmxvYWRlcigpLnBv
bGljeURvY3VtZW50TG9hZGVyKCkpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAyMjI0MTMpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3
IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOworc3Ry
dWN0IFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3MgV2ViRnJhbWUgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVGcmFtZT4gewogcHVibGljOgpAQCAtNzks
OSArODAsMTAgQEAgcHVibGljOgogICAgIEZyYW1lSW5mb0RhdGEgaW5mbygpIGNvbnN0OwogICAg
IHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KIAotICAgIHVp
bnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KTsKKyAgICBlbnVtIGNsYXNzIEZvck5hdmlnYXRpb25BY3Rpb24geyBObywgWWVzIH07CisgICAg
dWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
JiYsIEZvck5hdmlnYXRpb25BY3Rpb24pOwogICAgIHZvaWQgaW52YWxpZGF0ZVBvbGljeUxpc3Rl
bmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3du
bG9hZElELCBjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsKIAogICAgIHZvaWQgc3RhcnREb3dubG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CkBAIC0xNzEsNiArMTczLDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5TGlz
dGVuZXJJRCB7IDAgfTsKICAgICBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIG1fcG9saWN5
RnVuY3Rpb247CisgICAgRm9yTmF2aWdhdGlvbkFjdGlvbiBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2
aWdhdGlvbkFjdGlvbiB7IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vIH07CiAgICAgRG93bmxvYWRJ
RCBtX3BvbGljeURvd25sb2FkSUQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+IG1fZnJhbWVMb2FkZXJDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjIyNDEzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3MjMsMTIgKzI3MjMsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vz
c2lvbklEIHNlcwogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlOjpkaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERv
d25sb2FkSUQmIGRvd25sb2FkSUQsIFdlYnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xpY2llcykK
IHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lB
Y3Rpb24+KHBvbGljeUFjdGlvbiksIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCk7CisgICAgZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xp
Y3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0
ZVBvbGljaWVzKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDIyMjQxMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
OwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBw
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYsIFdl
YnNpdGVQb2xpY2llcyYmKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjIyNDEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlbW92ZUJhY2tGb3J3
YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQ
b2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKQot
ICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llcykKIAog
ICAgIENsZWFyU2VsZWN0aW9uKCkKICAgICBSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFi
bGVFbGVtZW50KCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQyNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA5LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjE0MjAxKTogV2Vi
UHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDExCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMzM2MjkyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0phdmFT
Y3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9u
RGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtKU05h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW0pTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFs
ZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoVEVTVCk6CisKIDIwMTctMDktMjAgIEphc29uIE1hcmNlbGwgIDxqbWFyY2Vs
bEBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hlcnJ5LXBpY2sgcjIyMjA5Ny4gcmRhcjovL3Byb2Js
ZW0vMzQ1MDg1MTYKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjI0MTMp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBACiAJCTVDMEJGODk1MURE
NTk5Q0QwMEIwMDMyOCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBO
YXZpZ2F0b3JMYW5ndWFnZS5tbSAqLzsgfTsKIAkJNUMyOTM2OTMxRDVCRjcwRDAwREVBQjFFIC8q
IENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xp
Y3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQwMERFQUIxRSAvKiBDb29raWVNZXNzYWdl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tpZU1lc3NhZ2UuaHRtbCAqLzsgfTsK
KwkJNUM1NzMxMDUxRjc2RDg1MDAwMDgxMzg4IC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9u
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM1NzMx
MDQxRjc2RDgxRjAwMDgxMzg4IC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovOyB9
OwogCQk1QzZFNjU0NDFENUNFRkQ0MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQxMUQ1Q0VGODUwMEY3
ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovOyB9OwogCQk1QzcyNkQ2RjFEM0VFMDZFMDBDNUUxQTEg
LyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzI2RDZFMUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyLm1tICovOyB9OwogCQk1Qzc5NjQxMDFFQjAyNzhEMDA3NUQ3NEMgLyogRXZl
bnRNb2RpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM3OTY0MEYxRUIwMjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLzsg
fTsKQEAgLTEyNjQsNiArMTI2NSw3IEBACiAJCTVDMEJGODhGMURENTk5OUIwMEIwMDMyOCAvKiBX
ZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMyOTM2OTExRDVCRjYzRTAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvb2tpZUFjY2VwdFBv
bGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyOTM2OTQxRDVCRkQxOTAw
REVBQjFFIC8qIENvb2tpZU1lc3NhZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IENvb2tpZU1lc3NhZ2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1NzMx
MDQxRjc2RDgxRjAwMDgxMzg4IC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNjcmlwdER1cmluZ05hdmln
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUU2MzNEMUQwQjY3OTQw
MDg1QTAyNSAvKiBVbmlxdWVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVW5pcXVlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2RTY1
NDExRDVDRUY4NTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzcyNkQ2RDFEM0VFMDY4MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
Lmg7IHBhdGggPSBjb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODcxLDYgKzE4NzMsNyBAQAogCQkJCTUxQjFFRThEMUM4MEY1ODgw
MDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLywKIAkJCQk1MTk4QTIzRjFFQTdF
NTk1MDA4OTEwQjcgLyogSW5pdGlhbFdhcm1lZFByb2Nlc3NVc2VkLm1tICovLAogCQkJCTJEQjAy
MzJFMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSAq
LywKKwkJCQk1QzU3MzEwNDFGNzZEODFGMDAwODEzODggLyogSmF2YVNjcmlwdER1cmluZ05hdmln
YXRpb24ubW0gKi8sCiAJCQkJQzI1Q0NBMDUxRTUxMzgwQjAwMjZDQjhBIC8qIExpbmVCcmVha2lu
Zy5tbSAqLywKIAkJCQkzN0QzNkVENjFBRjQyRUNEMDBCQUY1RDkgLyogTG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcubW0gKi8sCiAJCQkJQTEyNTQ3OEQxREIxOEI5NDAwMzU4NTY0IC8qIExvYWREYXRh
V2l0aE5pbE1JTUVUeXBlLm1tICovLApAQCAtMzEyMCw2ICszMTIzLDcgQEAKIAkJCQk1MUE1ODc4
NjFEMjczQUE5MDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMEJFMUQwQTY1MTMwMEZFQkNGMyAvKiBJbmRleGVkREJNdWx0
aVByb2Nlc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRjFEMEE2NTIyMDBGRUJDRjMg
LyogSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzU3MzEwNTFG
NzZEODUwMDAwODEzODggLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VGQjFBNDExQUU2MDA0NDdDNEMgLyogSW5qZWN0ZWRCdW5kbGVCYXNp
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGQzFBNDExQUU2MDA0NDdDNEMgLyogSW5q
ZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRkQx
QTQxMUFFNjAwNDQ3QzRDIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrV2lucy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0phdmFTY3JpcHRE
dXJpbmdOYXZpZ2F0aW9uLm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNp
ZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uQ29tcGxldGU7CitzdGF0
aWMgc2l6ZV90IGFsZXJ0czsKK3N0YXRpYyBib29sIHJlY2VpdmVkQm90aEFsZXJ0czsKK3N0YXRp
YyBSZXRhaW5QdHI8TlNVUkw+IGZpcnN0VVJMOworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gc2Vj
b25kVVJMOworCitAaW50ZXJmYWNlIEpTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBKU05hdmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24g
KiluYXZpZ2F0aW9uCit7CisgICAgbmF2aWdhdGlvbkNvbXBsZXRlID0gdHJ1ZTsKK30KKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cgoreworICAgIGlmIChbbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCBpc0VxdWFsVG86c2Vj
b25kVVJMLmdldCgpXSkgeworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJh
bGVydChkb2N1bWVudC5sb2NhdGlvbik7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9y
ICopIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sK
KyAgICBpZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwgaXNFcXVhbFRvOnNlY29u
ZFVSTC5nZXQoKV0pIHsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiYWxl
cnQoZG9jdW1lbnQubG9jYXRpb24pOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciAq
KSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lBbGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IEVYUEVDVF9TVFJFUShtZXNzYWdlLlVURjhTdHJpbmcsIFtbZmlyc3RVUkwgYWJzb2x1dGVTdHJp
bmddIFVURjhTdHJpbmddKTsKKyAgICBpZiAoKythbGVydHMgPT0gMikKKyAgICAgICAgcmVjZWl2
ZWRCb3RoQWxlcnRzID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCitAZW5k
CisKK1RFU1QoV2ViS2l0MiwgSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24pCit7CisgICAgZmly
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICBzZWNvbmRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
SlNOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpmaXJzdFVSTC5nZXQoKV1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMLmdldCgpXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEJvdGhBbGVydHMpOworfQorCisjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323042</attachid>
            <date>2017-10-06 13:57:53 -0700</date>
            <delta_ts>2017-10-06 14:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177411-20171006135752.patch</filename>
            <type>text/plain</type>
            <size>43426</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI5ODkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE3LTEwLTA2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjE0MjAxKTogV2ViUHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NDExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNDgxNTk4Nj4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCByZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbiwgdGhpcyBpcyBhIG1vZGlmaWNhdGlvbiB0aGF0IGRvZXNu
J3QgY2hhbmdlIE1hYy4KKworICAgICAgICBUaGlzIGlzIGxpa2UgcjIyMjQzMSB3aGljaCBhbGxv
d3MgdGhlIFdlYlByb2Nlc3MgdG8gbm90IGJlIGh1bmcuICBUaGlzIGZpeGVzIHRoZSBkZXNpcmVk
IGJ1ZyBvbiBpT1MKKyAgICAgICAgYnV0IHdpdGhvdXQgY2hhbmdpbmcgTWFjLCB3aGljaCBkZXBl
bmRzIG9uIHRoZSBhYmlsaXR5IHRvIGFzeW5jaHJvbm91c2x5IGNhbGwgdGhlIGNvbXBsZXRpb24g
aGFuZGxlcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYXBwbGllcyB0byB0aGUgc2FmYXJpLTYw
NC1icmFuY2guCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0x
MC0wNSAgTWF0dGhldyBIYW5zb24gIDxtYXR0aGV3X2hhbnNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHIyMjI0MzEuIHJkYXI6Ly9wcm9ibGVtLzM0ODI2OTk4CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIyMjk4OSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyNjAsMTIgKzIyNjAsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVj
aXNpbwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09
IFBvbGljeURvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgor
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWQgPSBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShtX2RlY2lkZVBvbGljeUZv
clJlc3BvbnNlUmVxdWVzdCk7CisjZWxzZQorICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGRvd25sb2FkUmVxdWVzdCA9IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID8gKm1f
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0IDogUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAg
ICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNy
ZWF0ZURvd25sb2FkUHJveHkoZG93bmxvYWRSZXF1ZXN0KTsKKyNlbmRpZgogICAgICAgICBkb3du
bG9hZElEID0gZG93bmxvYWQtPmRvd25sb2FkSUQoKTsKICAgICAgICAgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KGRvd25sb2FkKTsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIG1fZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9OworI2VuZGlmCiAgICAgfQogCisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGlu
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlIHRoZSBkZWNpc2lvbiB3aWxsCiAgICAgLy8gYmUgc2Vu
dCBiYWNrIHRvIHRoZSB3ZWIgcHJvY2VzcyBieSBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZS4KICAg
ICBpZiAobV9yZXNwb25zZVBvbGljeVJlcGx5KSB7CkBAIC0yMjg1LDYgKzIyOTMsMjQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIH0KICAgICAKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihmcmFtZS5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyNlbHNl
CisgICAgaWYgKG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpIHsKKyAgICAgICAgbV9z
eW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgbV9zeW5jTWlt
ZVR5cGVQb2xpY3lBY3Rpb24gPSBhY3Rpb247CisgICAgICAgIG1fc3luY01pbWVUeXBlUG9saWN5
RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKKyAgICAgICAgbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSB0cnVlOworICAgICAgICBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uID0gYWN0aW9uOworICAgICAgICBtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7CisgICAgICAgIG1f
c3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXMgPSB3ZWJzaXRlUG9saWNp
ZXM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxp
c3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
IDogMCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCkBAIC0zNjI3LDcgKzM2NTMsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVj
b21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBtX21h
aW5GcmFtZSA6IDA7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBj
b25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkp
CisjZWxzZQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25E
YXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
LCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwg
dWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBv
bGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCisjZW5kaWYKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkBAIC0zNjQyLDI2ICszNjcyLDQ2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChyZXF1ZXN0LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChvcmlnaW5hbFJlcXVl
c3QudXJsKCkpOwogICAgIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBtX25ld05hdmlnYXRpb25J
RCA9IDA7CisjZW5kaWYKICAgICBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0
ZW5lciA9IGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7CiAgICAg
aWYgKCFuYXZpZ2F0aW9uSUQgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgYXV0
byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWRSZXF1ZXN0TmF2aWdh
dGlvbihyZXF1ZXN0KTsKKyNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIG1fbmV3TmF2aWdhdGlv
bklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CisjZWxzZQorICAgICAgICBuZXdOYXZp
Z2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKKyNlbmRpZgogICAgICAgICBs
aXN0ZW5lci0+c2V0TmF2aWdhdGlvbihXVEZNb3ZlKG5hdmlnYXRpb24pKTsKICAgICB9CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRIYW5kbGVDb250
ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIHJlcGx5LT5zZW5kKG1fbmV3TmF2aWdhdGlvbklELCBQb2xpY3lJZ25vcmUsIHsg
fSwgeyB9KTsKICAgICAgICAgbV9uZXdOYXZpZ2F0aW9uSUQgPSAwOworI2Vsc2UgLy8gUExBVEZP
Uk0oTUFDKQorICAgICAgICByZWNlaXZlZFBvbGljeUFjdGlvbiA9IHRydWU7CisgICAgICAgIHBv
bGljeUFjdGlvbiA9IFBvbGljeUlnbm9yZTsKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisKKyNpZiAhUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVCghbV9pbkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOworCisgICAgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24gPSB0cnVlOworICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25J
c1ZhbGlkID0gZmFsc2U7CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgRU5BQkxFKERP
V05MT0FEX0FUVFJJQlVURSkKICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uSGFzRG93bmxvYWRB
dHRyaWJ1dGUgPSAhbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNOdWxs
KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCiAgICAgbV9uYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKKyNlbmRpZgogCiAgICAgV2ViRnJhbWVQcm94eSog
b3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLmZyYW1lSUQpOwogCkBAIC0zNjgzLDYgKzM3MzMsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIHJlcXVlc3QsIFdURk1vdmUo
bGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOworI2lmICFQTEFURk9STShNQUMpCisgICAg
bV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBmYWxzZTsKKworICAgIC8vIENo
ZWNrIGlmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIGFscmVhZHkuIElmIHdlIGRpZCwg
d2UgY2FuIGp1c3QgcGFzcyBpdCBiYWNrLgorICAgIHJlY2VpdmVkUG9saWN5QWN0aW9uID0gbV9z
eW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQ7CisgICAgaWYgKG1fc3luY05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkKSB7CisgICAgICAgIHBvbGljeUFjdGlv
biA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb247CisgICAgICAgIGRvd25sb2Fk
SUQgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRDsKKyAgICAgICAgd2Vi
c2l0ZVBvbGljaWVzID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdlYnNpdGVQb2xpY2ll
czsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQpAQCAtMzcyOCwxNCArMzc4OSwzNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU3luYzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQorI2Vsc2UKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlv
biwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCkKKyNlbmRpZgogewogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
bV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIG1fcmVzcG9u
c2VQb2xpY3lSZXBseSA9IFdURk1vdmUocmVwbHkpOworI2Vsc2UKKyAgICBBU1NFUlQoIW1faW5E
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpOworCisgICAgbV9pbkRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU3luYyA9IHRydWU7CisgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Qg
PSAmcmVxdWVzdDsKKyAgICBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxz
ZTsKKyNlbmRpZgogCiAgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZnJhbWVJRCwgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVu
ZXJJRCwgdXNlckRhdGEpOworI2lmICFQTEFURk9STShNQUMpCisgICAgbV9pbkRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU3luYyA9IGZhbHNlOworICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0ID0gbnVsbHB0cjsKKworICAgIC8vIENoZWNrIGlmIHdlIHJlY2VpdmVkIGEgcG9saWN5
IGRlY2lzaW9uIGFscmVhZHkuIElmIHdlIGRpZCwgd2UgY2FuIGp1c3QgcGFzcyBpdCBiYWNrLgor
ICAgIHJlY2VpdmVkUG9saWN5QWN0aW9uID0gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1Zh
bGlkOworICAgIGlmIChtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQpIHsKKyAgICAg
ICAgcG9saWN5QWN0aW9uID0gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb247CisgICAgICAgIGRv
d25sb2FkSUQgPSBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQ7CisgICAgfQorI2VuZGlm
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDIyMjk4OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjczLDEwICsxMjczLDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisjZWxzZQorICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3du
bG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CisjZW5kaWYKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsK
KyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYzo6RGVsYXllZFJlcGx5PiYmKTsKKyNlbHNlCisg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rp
b24sIERvd25sb2FkSUQmKTsKKyNlbmRpZgogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwpAQCAtMTc5MCwxMCArMTc5OCwyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0lu
UHJpbnRpbmdNb2RlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24geyBmYWxzZSB9OwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpEZWxh
eWVkUmVwbHk+IG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5OwogICAgIHVpbnQ2NF90IG1f
bmV3TmF2aWdhdGlvbklEIHsgMCB9OwogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OkRlbGF5ZWRSZXBseT4gbV9yZXNwb25zZVBv
bGljeVJlcGx5OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGljeUZv
clJlc3BvbnNlUmVxdWVzdDsKKyNlbHNlCisgICAgYm9vbCBtX2luRGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTeW5jIHsgZmFsc2UgfTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qq
IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0IHsgbnVsbHB0ciB9OworICAgIGJvb2wg
bV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkIHsgZmFsc2UgfTsKKyAgICBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xp
Y3lVc2UgfTsKKyAgICBEb3dubG9hZElEIG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRCB7
IDAgfTsKKyAgICBib29sIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlk
IHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeVVzZSB9OworICAgIERvd25sb2FkSUQg
bV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQgeyAwIH07CisgICAgV2Vic2l0
ZVBvbGljaWVzIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7Cisj
ZW5kaWYKIAogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyOTg5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw4ICs5OSwxNCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2Vu
ZGlmCiAKICAgICAjIFBvbGljeSBtZXNzYWdlcworI2lmIFBMQVRGT1JNKE1BQykKICAgICBEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpIC0+ICh1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElEKSBEZWxheWVkCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJL
aXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKKyNlbmRpZgorI2lm
ICFQTEFURk9STShNQUMpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGlj
eUFjdGlvbix1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbix1aW50NjRfdCBuZXdOYXZpZ2F0aW9u
SUQsIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMpCisjZW5kaWYK
ICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
ciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMjI5ODkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MDAsMTkgKzcwMCwzNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkCiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZSA9IHdlYlBhZ2UtPmNhblNob3dNSU1F
VHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSk7CisjZWxzZQorICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlv
bkFjdGlvbjo6Tm8pOworICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CisjZW5kaWYKICAg
ICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwogCiAg
ICAgUmVmPFdlYkZyYW1lPiBwcm90ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZSog
Y29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jOjpSZXBseShwb2xpY3lBY3Rpb24s
IGRvd25sb2FkSUQpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJ
bmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpIHsKICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUlnbm9yZSwgMCwgeyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbHNlCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMobV9m
cmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUp
LCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVN5bmM6OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBwb2xpY3lBY3Rpb24s
IGRvd25sb2FkSUQpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJ
bmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCkpIHsKKyAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUlnbm9yZSwgMCwgeyB9LCB7
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgLy8gV2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBDRk5ldHdvcmsgY2Fu
IG9ubHkgY29udmVydCBhIGxvYWRpbmcgY29ubmVjdGlvbiB0byBhIGRvd25sb2FkIGZyb20gaXRz
IGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjay4KICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lB
Y3Rpb24pLCAwLCBkb3dubG9hZElEKTsKKyNlbHNlCisgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0
aW9uKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCAwLCBkb3dubG9hZElE
LCB7IH0pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5h
dmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRl
KiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9u
JiYgZnVuY3Rpb24pCkBAIC03MzUsNyArNzUyLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWQKICAgICB9CiAKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSk7CisjZWxzZQorICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlv
bkFjdGlvbjo6Tm8pOworI2VuZGlmCiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9
IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKQEAgLTc1Miw2ICs3NzMsNTQgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG1fZnJhbWUt
PmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKGNvbnN0IFdlYnNpdGVQb2xp
Y2llcyYgd2Vic2l0ZVBvbGljaWVzKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlm
ICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRv
Y3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUt
PmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOworICAgIGlmICghZG9jdW1lbnRMb2Fk
ZXIpCisgICAgICAgIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2Fk
ZXIqPihjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7Cisg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNf
Y2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gT25seSBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIGlmIGl0IGhhc24ndCBhbHJl
YWR5IGJlZW4gZGlzYWJsZWQgYnkgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4K
KyAgICBpZiAoZG9jdW1lbnRMb2FkZXItPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkK
KyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQo
d2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworCisgICAgT3B0aW9uU2V0
PEF1dG9wbGF5UXVpcms+IHF1aXJrczsKKyAgICBhdXRvIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRl
UG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzOworCisgICAgaWYgKGFsbG93ZWRRdWlya3Mu
Y29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCisg
ICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisK
KyAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3lu
dGhlc2l6ZWRQYXVzZUV2ZW50cykpCisgICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1aXJrOjpT
eW50aGVzaXplZFBhdXNlRXZlbnRzOworCisgICAgZG9jdW1lbnRMb2FkZXItPnNldEFsbG93ZWRB
dXRvcGxheVF1aXJrcyhxdWlya3MpOworCisgICAgc3dpdGNoICh3ZWJzaXRlUG9saWNpZXMuYXV0
b3BsYXlQb2xpY3kpIHsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoK
KyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5
OjpEZWZhdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3k6OkFsbG93OgorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0
b3BsYXlQb2xpY3k6OkFsbG93KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRlQXV0
b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgorICAgICAgICBkb2N1bWVudExvYWRlci0+
c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGljeTo6RGVu
eSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24p
CiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTc3Nyw3ICs4
NDYsMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9u
KSk7CisjZWxzZQorICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGlj
eUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlv
bjo6WWVzKTsKKyAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOworI2VuZGlmCiAgICAgdWlu
dDY0X3QgbmV3TmF2aWdhdGlvbklEOwogICAgIHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKICAgICBE
b3dubG9hZElEIGRvd25sb2FkSUQ7CkBAIC04MjEsMTEgKzg5NSwxOSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgLy8gRklYTUU6IERldGVybWluZSB0aGUg
b3JpZ2luYXRpbmcgcGFnZSBpbmRlcGVuZGVudGx5IGZyb20gdGhlIG9yaWdpbmF0aW5nIGZyYW1l
IGFzIGl0IG1heSBleGlzdCBldmVuIGlmCiAgICAgLy8gdGhlIG9yaWdpbmF0aW5nIGZyYW1lIGRv
ZXMgbm90IGV4aXN0LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIG9yaWdpbmF0aW5nIGZyYW1lIHdh
cyByZW1vdmVkIGZyb20gdGhlIHBhZ2UuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTMxPi4KKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGlu
Z0ZyYW1lICYmIG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2UoKSA/IG9yaWdpbmF0aW5nRnJhbWUtPnBh
Z2UoKS0+cGFnZUlEKCkgOiAwLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCBy
ZXF1ZXN0LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShuZXdO
YXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkp
IHsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IFBvbGljeUlnbm9yZSwgMCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbHNlCisg
ICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lICYmIG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2UoKSA/IG9yaWdpbmF0aW5nRnJh
bWUtPnBhZ2UoKS0+cGFnZUlEKCkgOiAwLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBs
eShyZWNlaXZlZFBvbGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRv
d25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSwgeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IC8vIE9ubHkgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpZiBpdCBoYXNuJ3QgYWxy
ZWFkeSBiZWVuIGRpc2FibGVkIGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMu
CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkp
CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVk
KHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkKTsKQEAgLTg1OCw2ICs5NDAs
MTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgLy8g
V2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBXZWJDb3JlIGNhbm5vdCBncmFjZWZ1
bGx5IGhhbmRsZSBhIGZyYW1lIGxvYWQgd2l0aG91dCBhIHN5bmNocm9ub3VzIG5hdmlnYXRpb24g
cG9saWN5IHJlcGx5LgogICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0
ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIG5ld05hdmln
YXRpb25JRCwgZG93bmxvYWRJRCk7CisjZWxzZQorICAgIGlmIChyZWNlaXZlZFBvbGljeUFjdGlv
bikKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2aWdhdGlvbklE
LCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTkxMSw3ICs5OTcsMTEgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUwogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KCkud2lsbFN1Ym1pdEZvcm0od2ViUGFnZSwgJmZvcm0sIG1fZnJhbWUsIHNvdXJjZUZyYW1lLCB2
YWx1ZXMsIHVzZXJEYXRhKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBsaXN0
ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSk7
CisjZWxzZQorICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6
Tm8pOworI2VuZGlmCiAKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OldpbGxTdWJtaXRGb3JtKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZyYW1lSUQo
KSwgdmFsdWVzLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjI5ODkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUGx1Z2luVmlldzsKIGNsYXNzIFdlYkZyYW1lOworc3RydWN0IFdlYnNpdGVQb2xpY2ll
czsKICAgICAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ4LDYgKzQ5LDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5n
Q2xpZW50KSB7IG1fdXNlSWNvbkxvYWRpbmdDbGllbnQgPSB1c2VJY29uTG9hZGluZ0NsaWVudDsg
fQogCisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihj
b25zdCBXZWJzaXRlUG9saWNpZXMmKTsKKyNlbmRpZgogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1l
TG9hZGVyRGVzdHJveWVkKCkgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIyMjk4OSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA5LDcgKzIwOSwxMSBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRlKCkKICAgICBtX2NvcmVG
cmFtZSA9IDA7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB1aW50NjRfdCBXZWJGcmFtZTo6c2V0
VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgcG9saWN5RnVu
Y3Rpb24pCisjZWxzZQordWludDY0X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIoV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIHBvbGljeUZ1bmN0aW9uLCBGb3JOYXZpZ2F0aW9u
QWN0aW9uIGZvck5hdmlnYXRpb25BY3Rpb24pCisjZW5kaWYKIHsKICAgICAvLyBGSVhNRTogPHJk
YXI6Ly81NjM0MzgxPiBXZSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBvbGljeSBs
aXN0ZW5lcnMuCiAKQEAgLTIxNyw2ICsyMjEsOSBAQCB1aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQ
b2xpY3lMaXN0ZW5lcihXCiAKICAgICBtX3BvbGljeUxpc3RlbmVySUQgPSBnZW5lcmF0ZUxpc3Rl
bmVySUQoKTsKICAgICBtX3BvbGljeUZ1bmN0aW9uID0gV1RGTW92ZShwb2xpY3lGdW5jdGlvbik7
CisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFj
dGlvbiA9IGZvck5hdmlnYXRpb25BY3Rpb247CisjZW5kaWYKICAgICByZXR1cm4gbV9wb2xpY3lM
aXN0ZW5lcklEOwogfQogCkBAIC0yMjgsOSArMjM1LDE2IEBAIHZvaWQgV2ViRnJhbWU6OmludmFs
aWRhdGVQb2xpY3lMaXN0ZW5lcigKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAgICAg
bV9wb2xpY3lMaXN0ZW5lcklEID0gMDsKICAgICBtX3BvbGljeUZ1bmN0aW9uID0gbnVsbHB0cjsK
KyNpZiAhUExBVEZPUk0oTUFDKQorICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0
aW9uID0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm87CisjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JN
KE1BQykKIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBs
aXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCkKKyNlbHNlCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYnNpdGVQ
b2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQorI2VuZGlmCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFt
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0LDkgKzI1OCwxNyBAQCB2b2lkIFdlYkZyYW1lOjpk
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oCiAgICAgQVNTRVJUKG1fcG9saWN5RnVuY3Rpb24pOwog
CiAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5j
dGlvbik7CisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICBib29sIGZvck5hdmlnYXRpb25BY3Rpb24g
PSBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9PSBGb3JOYXZpZ2F0aW9uQWN0
aW9uOjpZZXM7CisjZW5kaWYKIAogICAgIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwogCisj
aWYgIVBMQVRGT1JNKE1BQykKKyAgICBpZiAoZm9yTmF2aWdhdGlvbkFjdGlvbiAmJiBtX2ZyYW1l
TG9hZGVyQ2xpZW50KQorICAgICAgICBtX2ZyYW1lTG9hZGVyQ2xpZW50LT5hcHBseVRvRG9jdW1l
bnRMb2FkZXIod2Vic2l0ZVBvbGljaWVzKTsKKyNlbmRpZgorICAgIAogICAgIG1fcG9saWN5RG93
bmxvYWRJRCA9IGRvd25sb2FkSUQ7CiAgICAgaWYgKG5hdmlnYXRpb25JRCkgewogICAgICAgICBp
ZiAoV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9j
dW1lbnRMb2FkZXIqPihtX2NvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5RG9jdW1lbnRMb2FkZXIo
KSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJ
KHJldmlzaW9uIDIyMjk4OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CiBjbGFz
cyBXZWJQYWdlOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7CitzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVz
OwogCiBjbGFzcyBXZWJGcmFtZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OkJ1bmRsZUZyYW1lPiB7CiBwdWJsaWM6CkBAIC03OSw5ICs4MCwxNSBAQCBwdWJsaWM6
CiAgICAgRnJhbWVJbmZvRGF0YSBpbmZvKCkgY29uc3Q7CiAgICAgdWludDY0X3QgZnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVp
bnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYm
KTsKLSAgICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKTsKKyNlbHNlCisgICAgZW51
bSBjbGFzcyBGb3JOYXZpZ2F0aW9uQWN0aW9uIHsgTm8sIFllcyB9OworICAgIHVpbnQ2NF90IHNl
dFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmLCBGb3JOYXZp
Z2F0aW9uQWN0aW9uKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgRG93bmxvYWRJRCwgY29uc3QgV2Vic2l0ZVBvbGljaWVzJik7CisjZW5kaWYKKyAgICB2b2lk
IGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKQEAg
LTE3MSw2ICsxNzgsOSBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9wb2xpY3lMaXN0ZW5l
cklEIHsgMCB9OwogICAgIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gbV9wb2xpY3lGdW5j
dGlvbjsKKyNpZiAhUExBVEZPUk0oTUFDKQorICAgIEZvck5hdmlnYXRpb25BY3Rpb24gbV9wb2xp
Y3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24geyBGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyB9
OworI2VuZGlmCiAgICAgRG93bmxvYWRJRCBtX3BvbGljeURvd25sb2FkSUQgeyAwIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IG1fZnJhbWVMb2FkZXJDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjIyOTg5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MjMsMTIgKzI3MjMsMjAgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlcwogICAgIG1fcGFnZS0+c2V0U2Vzc2lv
bklEKHNlc3Npb25JRCk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5l
cklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
RG93bmxvYWRJRCYgZG93bmxvYWRJRCkKKyNlbHNlCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50
MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJ
RCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBvbGljaWVzJiYgd2Vic2l0ZVBvbGljaWVzKQorI2VuZGlm
CiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOworI2lmIFBMQVRG
T1JNKE1BQykKICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmF2aWdhdGlvbklELCBk
b3dubG9hZElEKTsKKyNlbHNlCisgICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIG5hdmln
YXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKTsKKyNlbmRpZgogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZFN0YXJ0UGFnZVRyYW5zaXRpb24oKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjIyOTg5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTI3LDcgKzExMjcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNE
aWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIHZvaWQgdXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBEb3dubG9hZElEJik7CisjZWxzZQorICAgIHZvaWQgZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQz
Ml90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElE
JiwgV2Vic2l0ZVBvbGljaWVzJiYpOworI2VuZGlmCisKICAgICB2b2lkIHNldFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyOTg5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTUw
LDcgKzE1MCwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAg
ICBVcGRhdGVXZWJzaXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdl
YnNpdGVQb2xpY2llcykKKyNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBv
bGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCkKKyNlbmRpZgorI2lmICFQTEFURk9STShNQUMpCisgICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2ll
cykKKyNlbmRpZgogCiAgICAgQ2xlYXJTZWxlY3Rpb24oKQogICAgIFJlc3RvcmVTZWxlY3Rpb25J
bkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyOTk0KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyMTQyMDEpOiBXZWJQcm9jZXNzIGhhbmdzIGR1cmluZyBwb2xpY3kgZGVjaXNpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM0ODE1OTg2PgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIHJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRoYXQgZG9l
c24ndCBjaGFuZ2UgTWFjLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW06IEFkZGVkLgorICAg
ICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246
XSk6CisgICAgICAgICgtW0pTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0pTTmF2
aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0xMC0wNSAgTWF0
dGhldyBIYW5zb24gIDxtYXR0aGV3X2hhbnNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IHIyMjI0MzEuIHJkYXI6Ly9wcm9ibGVtLzM0ODI2OTk4CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjIyOTg5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw2ICsy
MTQsNyBAQAogCQk1QzBCRjg5NTFERDU5OUNEMDBCMDAzMjggLyogTmF2aWdhdG9yTGFuZ3VhZ2Uu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlEQjk3
ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gKi87IH07CiAJCTVDMjkz
NjkzMUQ1QkY3MEQwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5MzY5MTFENUJGNjNFMDBERUFC
MUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovOyB9OwogCQk1QzI5MzY5NjFENUMwMEVEMDBE
RUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29r
aWVNZXNzYWdlLmh0bWwgKi87IH07CisJCTVDNTczMTA1MUY3NkQ4NTAwMDA4MTM4OCAvKiBKYXZh
U2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNTczMTA0MUY3NkQ4MUYwMDA4MTM4OCAvKiBKYXZhU2NyaXB0RHVy
aW5nTmF2aWdhdGlvbi5tbSAqLzsgfTsKIAkJNUM2RTY1NDQxRDVDRUZENDAwRjc4NjJFIC8qIFVS
TFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzZFNjU0MTFENUNFRjg1MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCAqLzsgfTsKIAkJNUM3
MjZENkYxRDNFRTA2RTAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzcyNkQ2RTFEM0VFMDY4
MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSAqLzsgfTsKIAkJNUM3OTY0MTAx
RUIwMjc4RDAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBF
dmVudE1vZGlmaWVycy5jcHAgKi87IH07CkBAIC0xMjY0LDYgKzEyNjUsNyBAQAogCQk1QzBCRjg4
RjFERDU5OTlCMDBCMDAzMjggLyogV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjkzNjkxMUQ1QkY2M0UwMERFQUIxRSAv
KiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBDb29raWVBY2NlcHRQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb29raWVNZXNzYWdlLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDNTczMTA0MUY3NkQ4MUYwMDA4MTM4OCAvKiBKYXZhU2NyaXB0RHVy
aW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzVFNjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDNkU2NTQxMUQ1Q0VGODUwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SW5zdGFuY2VNZXRob2RTd2l6emxlci5oOyBwYXRoID0gY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6
emxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg3MSw2ICsxODczLDcgQEAK
IAkJCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2UubW0g
Ki8sCiAJCQkJNTE5OEEyM0YxRUE3RTU5NTAwODkxMEI3IC8qIEluaXRpYWxXYXJtZWRQcm9jZXNz
VXNlZC5tbSAqLywKIAkJCQkyREIwMjMyRTFFNEU4NzE4MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25E
ZWFkbG9ja0FmdGVyQ3Jhc2gubW0gKi8sCisJCQkJNUM1NzMxMDQxRjc2RDgxRjAwMDgxMzg4IC8q
IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovLAogCQkJCUMyNUNDQTA1MUU1MTM4MEIw
MDI2Q0I4QSAvKiBMaW5lQnJlYWtpbmcubW0gKi8sCiAJCQkJMzdEMzZFRDYxQUY0MkVDRDAwQkFG
NUQ5IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tICovLAogCQkJCUExMjU0NzhEMURCMThC
OTQwMDM1ODU2NCAvKiBMb2FkRGF0YVdpdGhOaWxNSU1FVHlwZS5tbSAqLywKQEAgLTMxMjAsNiAr
MzEyMyw3IEBACiAJCQkJNTFBNTg3ODYxRDI3M0FBOTAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFi
YXNlUHJvY2Vzc0tpbGwubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRTFEMEE2NTEzMDBG
RUJDRjMgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwQkYxRDBBNjUyMjAwRkVCQ0YzIC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUM1NzMxMDUxRjc2RDg1MDAwMDgxMzg4IC8qIEphdmFTY3JpcHREdXJpbmdO
YXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRkIxQTQxMUFFNjAwNDQ3QzRD
IC8qIEluamVjdGVkQnVuZGxlQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRkMx
QTQxMUFFNjAwNDQ3QzRDIC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUZEMUE0MTFBRTYwMDQ0N0M0QyAvKiBJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9KYXZhU2NyaXB0RHVyaW5n
TmF2aWdhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9KYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9KYXZhU2NyaXB0RHVyaW5n
TmF2aWdhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oSU9TKQor
CitzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uQ29tcGxldGU7CitzdGF0aWMgc2l6ZV90IGFsZXJ0czsK
K3N0YXRpYyBib29sIHJlY2VpdmVkQm90aEFsZXJ0czsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGZpcnN0VVJMOworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gc2Vjb25kVVJMOworCitAaW50ZXJm
YWNlIEpTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
LCBXS1VJRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU05hdmlnYXRpb25EZWxl
Z2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2
aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7Cisg
ICAgbmF2aWdhdGlvbkNvbXBsZXRlID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdh
dGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGlmIChbbmF2
aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
W3NlY29uZFVSTCBhYnNvbHV0ZVN0cmluZ11dKSB7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAImFsZXJ0KGRvY3VtZW50LmxvY2F0aW9uKTsiIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQsIE5TRXJyb3IgKikgeworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93KTsKKyAgICAgICAgfV07CisgICAgfSBlbHNlCisgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lz
aW9uSGFuZGxlcgoreworICAgIGlmIChbbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5h
YnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6W3NlY29uZFVSTCBhYnNvbHV0ZVN0cmluZ11d
KSB7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImFsZXJ0KGRvY3VtZW50
LmxvY2F0aW9uKTsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IgKikgeworICAgICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwor
ICAgICAgICB9XTsKKyAgICB9IGVsc2UKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RS
RVEobWVzc2FnZS5VVEY4U3RyaW5nLCBbW2ZpcnN0VVJMIGFic29sdXRlU3RyaW5nXSBVVEY4U3Ry
aW5nXSk7CisgICAgaWYgKCsrYWxlcnRzID09IDIpCisgICAgICAgIHJlY2VpdmVkQm90aEFsZXJ0
cyA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVuZAorCitURVNUKFdl
YktpdDIsIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uKQoreworICAgIGZpcnN0VVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAg
c2Vjb25kVVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOworICAgIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0pTTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6Zmlyc3RVUkwuZ2V0KCldXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
Jm5hdmlnYXRpb25Db21wbGV0ZSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTC5nZXQoKV1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRCb3RoQWxlcnRzKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>